В какой ситуации файл записывается в блок-устройство во время umount?

У меня есть карта памяти с флэш-памятью, обнаруженная как блок-устройство /dev/sdb . Он имеет один раздел FAT16. Теперь, если я смонтирую файловую систему FAT16, напишите что-нибудь в файловой системе и umount файловой системы, тогда фактическая запись файла происходит во время umount :

 # mount | grep sdb /dev/sdb1 on /media type vfat (rw) # time cp image.bin /media/ real 0m0.179s user 0m0.000s sys 0m0.104s # time umount /media real 0m18.185s user 0m0.004s sys 0m0.032s # 

Я видел подобное поведение с флеш-памятью USB. Что определяет, будет ли файл записываться в файловую систему сразу или во время отсоединения файловой системы?

2 Solutions collect form web for “В какой ситуации файл записывается в блок-устройство во время umount?”

Ядро хранит данные в кэше в памяти, чтение данных имеет решающее значение (кто-то его ждет), запись может выполняться лениво (никто не спешит, данные просто могут быть снова использованы / изменены заново). Поскольку устройства могут считывать или записывать одновременно, он рассчитывает отложить запись как можно больше. Таким образом, данные записываются «добровольно» ядром только в том случае, если нет выхода (нужно место сейчас ). Вы можете заставить руку ядра открывать файлы синхронно (пишите, как только что-то меняется), вызывая fsync(2) в файле, чтобы вывести данные. Когда вы размонтируете устройство, очевидно, что все данные, кэшированные для него, должны быть записаны заранее.

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

Записи делаются сразу, если файл открыт синхронно, или файловая система, смонтированная с опцией синхронизации.

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

Вы можете попросить ОС сбросить все эти кеши с помощью команды sync

  • Не удается установить долю Samba: невозможно найти подходящий адрес
  • установка локальной сетевой папки в Ubuntu
  • Настроена собственная файловая система вместо USB?
  • Установить каталог на корневой каталог
  • Почему USB-накопитель монтируется только для чтения после копирования образа диска на него?
  • NTFS диск ESATA должен быть «partprobe» d при каждой перезагрузке
  • Как я могу отключить плохой монтаж?
  • Необходимо переместить полный диск unix из старого HP в новый блок
  • не может использовать mount.cifs: ошибка монтирования (2): нет такого файла или каталога
  • Получить имя устройства и точку подключения, если известна метка раздела
  • почему права собственности на файловую систему не влияют после монтирования?
  • Linux и Unix - лучшая ОС в мире.