Intereting Posts
Слияние 2 файлов и сохранение одного дубликата Как отключить (удалить) специальную ссылку «.», Созданную для папки? Надежное определение свободной памяти Как предотвратить использование оболочки звонящего в sudo Копировать / домой без root Перечисление определенных строк в перечисленных файлах Ручная настройка GRUB2 на загрузочном USB-носителе для Windows XP? Thunar не автомонтирует USB-устройства с настройкой по умолчанию Команда realm не работает корректно при использовании в скрипте (CentOS 7) Как создать файл * .run ./*. Bin в дистрибутивах на основе Debian Почему проверка SHA256 контрольной суммы с `sha256sum` терпит неудачу на Debian и работает на Ubuntu? Судоподобная утилита для ssh или, по крайней мере, git в частности? Принуждение Linux-сервера NFS к повторному подключению к серверу после отключения NFS Невозможно скомпилировать беклок на Arch Почему расположение переменных Enviroment сильно отличается?

Изменения в файлах не отображаются до размонтирования раздела

У меня установлена ​​файловая система FAT32. После изменения файла на нем я могу прочитать файл обратно и по-прежнему видеть старую версию. Мои изменения не сохраняются до тех пор, пока я не размонтирую и не смонтирую раздел. Это нормальное поведение? Если да, то почему это имеет смысл или почему это необходимо? Есть ли способ настроить его, чтобы изменения отображались автоматически?

Линукс, как и большинство других операционных систем, кэширует операции ввода-вывода на диске. Вы можете заставить ядро ​​сбросить свои буферы с помощью команды sync после выполнения изменений файла. Однако это ухудшает производительность всей системы, так как все текущие «грязные» буферы очищаются от дисков с помощью этой команды. Кроме того, вы можете использовать функцию библиотеки fsync C, чтобы очистить внесенные изменения в какой-то конкретный файл, но эта функция не гарантирует целостность всей файловой системы на носителе.

Возможно, вы сможете найти старую версию того же файла даже после ее размонтирования, поскольку файловая система не обязательно должна хранить новый файл в том же месте. Поэтому новый файл не обязательно перезаписывает старый, если он хранится в другом свободном месте.

Изменения, внесенные вами в файловую систему, не сразу записываются на диск из-за причин производительности. Зачем делать программы до тех пор, пока файл не будет полностью физически полностью выписан полностью, если вы также можете сделать ОС в фоновом режиме? Иногда это асинхронное поведение может даже полностью записывать записи, например, когда файл удаляется или перезаписывается сразу после создания, он никогда не нуждался в физическом хранении в первую очередь.

Вы можете отключить это поведение для большинства файловых систем, используя опцию sync mount. Существует также команда sync которая заставляет данные записываться на диск без необходимости.

Однако вы никогда не должны обращаться к исходным данным файловой системы. Если у вас установлена ​​/ dev / sdb1, а затем используйте другую машину для монтирования той же файловой системы (через сетевое блочное устройство или что-то еще), поэтому две системы работают с одними и теми же файловыми данными одновременно, вы в конечном итоге будете иметь коррупцию , Только специальные (кластерные) файловые системы работают таким образом; для всех остальных вам нужна сетевая файловая система (где только один компьютер монтирует диск и прозрачно предоставляет свои файлы по сети).