Как часто вызывается fsync в повседневном использовании?

Скажем, я провожу некоторое время как пользователь, взаимодействующий с файловой системой, используя такие команды, как cp , mv , mkdir и rm . Ни одна из этих команд не вызывает fsync при нормальной работе.

Может ли файловая система работать неограниченно без fsyncing? Это ли подвергает мои данные риску? Должен ли я пытаться определить, сколько времени прошло с момента последнего fsync?

  • Где поставить скрипты только для вызова другим скриптом?
  • Поддержка Symlink с сервером Windows / CIFS и клиентом linux
  • Могут ли символические ссылки охватывать разные файловые системы в Unix или Linux?
  • Почему truncate не работает для размеров выше 2043G в ext3?
  • «Первый сиротский индекс» в файле tune2fs
  • Каков безопасный формат жесткого диска для архивирования данных в хранилище данных?
  • Добавить в подкаталог в файле squashfs
  • ext3 vs ext4 - тот же размер диска, менее полезное дисковое пространство под ext4 по сравнению с ext3. Зачем?
  • Можно ли найти исходный исходный объем снимка btrfs, просмотрев этот снимок?
  • Загрузка с использованием initramfs вместо uramdisk
  • Множество ошибок на ext4, однако smart не показывает никаких ошибок
  • zerofree verbose возвращает что?
  • One Solution collect form web for “Как часто вызывается fsync в повседневном использовании?”

    Короткий ответ: да, да, нет.

    Да, файловая система может работать неограниченно без приложений, вызывающих fsync : файловые системы не полагаются на это, чтобы обеспечить хранение данных (в конечном итоге) на диске, есть и другие механизмы. Не имея вызовов fsync , ваши данные немного подвержены риску: например, если вы копируете файл и удаляете оригинал, тогда ваша система теряет мощность, есть небольшая вероятность, что удаление приведет к его удалению, но копия будет неполной ,

    Обычно вы можете изменить параметры конфигурации, чтобы контролировать, как быстро операционная система пытается хранить данные на диске; есть также большая палка, sync , которая заставляет все выдающиеся данные записываться. (Обратите внимание, что во всех случаях операционная система может только обеспечить передачу данных на контроллер диска и, возможно, попросить диски сбросить свои буферы – нет абсолютной гарантии, что данные фактически хранятся на диске.)

    В Linux настройки, которые вы можете настроить, находятся в /proc/sys/vm ; соответствующей документацией является sysctl/vm.txt – найдите dirty_ . Различные настройки позволяют указать, сколько данных можно ожидать, чтобы они были написаны или как долго, до того, как операционная система начнет записывать их на диск. Здесь могут быть два механизма: есть фоновый поток, который записывает ожидающие данные на диск ( dirty_background_... ), и когда процессы начинают производить слишком много данных, операционная система заставит их записи сбрасываться на диск (эффективно внедряя что-то вроде fsync ). Причина заключается в том, что операционная система пытается сохранить баланс между производительностью ввода-вывода и производительностью обработки: пока запущенные процессы не слишком быстро записывают данные, фоновый поток заботится об этом; но как только они начинают записывать слишком много данных, чтобы диски не отставали, они замедляются, что помогает системе догнать ожидающие данные данные и избегает слишком большого количества записываемых данных.

    Если вы беспокоитесь о своих данных, не пытайтесь проверить, вызван ли fsync , просто запустите sync .

    (Игнорировать /proc/sys/vm/dirtytime_expire_seconds , это совсем другое.)

    Linux и Unix - лучшая ОС в мире.