Какие режимы журналирования файловых систем в Linux ты знаешь?

«Какие режимы журналирования файловых систем в Linux ты знаешь?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При администрировании серверов выбор режима журналирования для файловых систем (например, ext3/ext4) — это компромисс между производительностью и целостностью данных, особенно после сбоя питания. Основные режимы:

  1. journal: Журналируются и метаданные, и содержимое файлов (данные). Это самый надежный режим, гарантирующий целостность данных, но и самый медленный из-за двойной записи (данные пишутся и в журнал, и на основное место). Используется редко, только для критичных данных, где производительность не важна.

  2. ordered (режим по умолчанию для ext4): Журналируются только метаданные. Однако данные записываются на диск перед тем, как связанные с ними метаданные будут зафиксированы в журнале. Это обеспечивает хороший баланс: при сбое вы не потеряете сами данные, но может возникнуть «старая» версия файла (данные записались, а метаданные о новом местоположении — нет). Это стандартный выбор для большинства рабочих серверов.

  3. writeback: Журналируются только метаданные. Данные могут быть записаны на диск в любое время, до или после журнала метаданных. Это самый быстрый режим, но и самый рискованный в плане целостности данных — после сбоя данные в файле могут не соответствовать ожидаемому состоянию (например, появиться «нулевые» блоки). Может подойти для временных файловых систем (например, /tmp).

Как это применяется в DevOps:

  • При монтировании диска можно явно указать режим: mount -o data=journal /dev/sdb1 /var/db.
  • В файле /etc/fstab для раздела: /dev/sdb1 /var/log ext4 defaults,data=ordered 0 2.
  • Для XFS, которая часто используется для больших томов данных, журналируются только метаданные, но она использует механизм логгирования транзакций. Btrfs вообще не использует классическое журналирование, а полагается на механизм Copy-on-Write (CoW) и контрольные суммы.
  • В облачных средах важно выбирать тип диска (например, gp3 с достаточным IOPS) и режим ФС, соответствующий нагрузке приложения (база данных vs. статический контент).