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

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

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

  • Файловая система для Gentoo root?
  • Монтаж только определенного пути файловой системы
  • Почему fstrim, похоже, не обрезает блоки данных на btrfs (+ ecrypts)?
  • Найдите, где используются индексные дескрипторы
  • Как найти каталоги, размер которых превышает 4K?
  • Как ограничить общий размер всех установленных tmpfs?
  • не может создать символическую ссылку на CentOS 5.6 - Ошибка файла
  • Почему отчет по размерам для каталогов отличается от других файлов?
  • 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 - лучшая ОС в мире.