Syncsync — утилита Unix, предназначенная для обновления файловых систем и для синхронизации данных на диске с данными в памяти[1]. При этом выполняется системный вызов sync, который вызывает запись всех буферизованных изменений метаданных файлов и данных в базовые файловые системы. Он гарантирует, что все, что хранилось в памяти, будет записано на диск, предотвращая потерю данных, хранящихся в кеше, при аварийном завершении работы. Также существует связный системный вызов Описание sync [--help] [--version]
Утилита sync инициирует сброс менеджером файловой системы из оперативной памяти всех измененных индексных дескрипторов и всех незаписанных системных буферов на диск. При этом обеспечивается сохранение всех изменений в файлах на этот запланированный момент. sync сперва записывает индексные дескрипторы (inode) в буферы и затем буферы на диск[2] В Linux sync всего-лишь гарантирует, что будет составлен список «грязных» блоков, которые нужно записать. Прежде чем они действительно будут записаны, пройдет еще некоторое время. Команды reboot и halt учитывают это, делая паузу в несколько секунд после вызова После выполнения команды sync необходимо обеспечить достаточную паузу для освобождения очередей драйверов и полного сохранения всех данных на диске. Длительность этой паузы зависит от скорости жесткого диска (дисков), количества буферов, которые необходимо обработать, и активности системы в данный период. Операция sync расходует незначительный объем ресурсов CPU. Помимо этого, у нее есть следующие преимущества[3]:
БагиВозврат из системного вызова См. такжеПримечания
СсылкиInformation related to Sync |