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


Журналируемая файловая система — файловая система, в которой осуществляется ведение журнала, хранящего список изменений и, в той или иной степени, помогающего сохранить целостность файловой системы при сбоях.

В такой системе перед фактическим осуществлением каких-либо изменений их список предварительно сохраняется в отдельной части файловой системы, называемой журналом (англ. journal или англ. log) — аналоге журнала предзаписи для СУБД. Как только изменения внесены в журнал, они применяются к файлам или метаданным, а затем соответствующие записи из журнала удаляются. Записи журнала организованы в наборы связанных изменений файловой системы.

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

Используемая в macOS APFS является журналируемой. Во FreeBSD журналирование транзакций файловой системы UFS может осуществляться на уровне GEOM модулем gjournal. Среди используемых журналируемых систем в Linux — XFS, Reiser4, JFS, ext3, ext4.

Другими подходами обеспечения целостности в файловых системах могут быть механизмы копирования при записи (ZFS, Btrfs), а также журнально-структурированное хранение[en] — когда журнальную организацию имеет непосредственно файловая система и не требуется предзапись (Fossil[en] в Plan9, UDF для оптических накопителей, NOVA для энергонезависимой памяти).