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

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

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

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

По типу внесения в журнал выделяется несколько типов журналируемых файловых систем[1]:

  • в режиме обратной связи (writeback; журналируются только метаданные) XFS, ext3;
  • упорядоченные (ordered; журналируются только метаданные синхронно относительно данных) JFS2, ext3 с настройками по умолчанию, основной режим в ReiserFS;
  • в режиме данных (journal; журналируются как метаданные, так и данные) ext3, ext4.

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

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

Примечания

править
  1. М. Тим Джонс. Анатомия журналируемых файловых систем Linux (7 октября 2008). Дата обращения: 4 августа 2010. Архивировано 26 августа 2011 года.

Литература

править
  • Робачевский А. Н., Немнюгин С. А., Стесик О. Л. Журнальные файловые системы / Глава 4. Файловая система // Операционная система UNIX. — 2-е изд. — СПб.: БХВ-Петербург, 2008. — С. 351—353. — 656 с. — ISBN 978-5-94157-538-1.