Журналируемая файловая система — файловая система (ФС), в которой осуществляется ведение журнала, хранящего список изменений и, в той или иной степени, помогающего сохранить целостность файловой системы при сбоях.
Принцип работы
Журналируемая файловая система сохраняет список изменений, которые она будет проводить с файловой системой, перед фактическим их осуществлением. Эти записи хранятся в отдельной части файловой системы, называемой журналом (англ. journal) или логом (англ. log). Как только изменения файловой системы внесены в журнал, она применяет эти изменения к файлам или метаданным, а затем удаляет эти записи из журнала. Записи журнала организованы в наборы связанных изменений файловой системы.
При перезагрузке компьютера программа монтирования может гарантировать целостность журналируемой файловой системы простой проверкой лог-файла на наличие ожидаемых, но не произведённых изменений и последующей записью их в файловую систему. То есть, при наличии журнала в большинстве случаев системе не нужно проводить проверку целостности файловой системы. Соответственно, шансы потери данных в связи с проблемами в файловой системе значительно снижаются.
По типу внесения в журнал журналируемые ФС подразделяются на:
- в режиме обратной связи (журналируются только метаданные): XFS, ext3;
- упорядоченные (журналируются только метаданные синхронно относительно данных): JFS2, ext3 (по умолчанию), ReiserFS (основной);
- в режиме данных (журналируются как метаданные, так и данные): ext3;
Примеры
В Mac OS X — APFS.
Во FreeBSD журналирование транзакций файловой системы UFS может осуществляться на уровне GEOM модулем gjournal.
В Linux существует несколько доступных журналируемых файловых систем. Наиболее известные из них:
- XFS — журналируемая файловая система, разработанная Silicon Graphics, но сейчас выпущенная с открытым исходным кодом;
- ReiserFS (Reiser4) — журналируемая файловая система разработанная специально для Linux;
- JFS (JFS1 и JFS2) (Smart File System) — журналируемая файловая система, первоначально разработанная IBM, но сейчас выпущенная с открытым исходным кодом;
- ext3 (extended file system) — журналируемое расширение (можно подключать и отключать (tune2fs), а также выбирать режим журналирования) файловой системы ext2, используемой на большинстве версий GNU/Linux;
- ext4 — логическое продолжение ext3;
- btrfs — новая файловая система, изначально позиционирующаяся как аналог ZFS. Позволяет создавать RAID-массивы, подтома, снимки, сжимать данные на лету без использования сторонних инструментов. Считается стабильной с версии ядра Linux 4.3.1 (16.11.2015).