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

Я слышал, что даже журнальные файловые системы, такие как 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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам