Назад | Перейти на главную страницу

Журналируемые файловые системы и сбой питания

Я слышал, что даже журналируемые файловые системы, такие как EXT3 / EXT4, могут быть повреждены во время сбоя питания, например из википедии [1]:

In the event of a system crash or power failure, 
such file systems are quicker to bring back online and 
less likely to become corrupted.

Может ли кто-нибудь предоставить более подробную информацию, приведя примеры, например

  1. коррупция может произойти
  2. журналируемые файловые системы позволяют избежать повреждений

[1] http://en.wikipedia.org/wiki/Journaling_file_system

Повреждение может также произойти на большинстве современных дисков из-за переупорядочения на диске.

Современные диски обычно переупорядочивают запросы, которые используются для повышения производительности (переупорядочивая записи, чтобы сделать весь список запросов менее сложным), это называется Tagged Command Queuing.

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

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

mount -o barrier=1 /dev/sda /mntpnt

Большим недостатком барьеров является то, что они имеют тенденцию замедлять ввод-вывод, иногда резко (около 30%), поэтому они не включены по умолчанию. В дополнение к этому ситуация становится двойной плюсом, когда вы начинаете добавлять логические слои поверх стандартных дисков, таких как LVM или Raid. LVM (относительно недавно) добавил поддержку барьеров для большинства конфигураций LV, и mdadm, похоже, имел это некоторое время.

Большинство журналируемых файловых систем (ext3 / 4, ntfs) только транзакционно защищают метаданные. В случае отключения электроэнергии пользовательские данные могут оказаться несовместимыми, но метаданные в порядке.

Zfs и я думаю, что xfs защищает как метаданные, так и пользовательские данные с помощью транзакций и журналов.

Барьер это способ избежать повреждения при отключении электроэнергии, но эта функция безопасности поставляется с хит производительности. Лучшее из обоих миров (производительность / барьер = выключено, практически отсутствует риск повреждения) стоит немного дороже: используйте устройства с энергонезависимыми кэшами записи с резервным питанием от батареи.