Существует множество определений журналируемых файловых систем,
однако давайте приведем формулировку, понятную каждому: журналируемая
файловая система — это систем для тех, кому надоела программа проверки fsck
во время загрузки. Также это система для тех, кому близка идея
устойчивых к сбоям систем. Если некорректно отключить питание в обычной
системе, где отсутствует журналирование, то ОС обнаруживает этот факт и
запускает утилиту проверки целостности диска fsck при
следующей загрузке. Эта утилита сканирует файловую систему и пытается
устранить проблемы, не нанося вреда данным. Процесс проверки может
занять довольно много времени. Иногда файловая система повреждается
настолько сильно, что ОС загружается только в однопользовательском
режиме и предлагает пользователю провести дальнейшее восстановление.

Анатомия файловых систем Linux для флеш-памяти (EN)
  • Анатомия Linux с улучшенной безопасностью (Security-Enhanced Linux, SELinux)
  • Анатомия архитектур реального времени для Linux (EN)
  • Анатомия подсистемы SCSI в Linux
  • Анатомия файловых систем Linux
  • Анатомия сетевого стека в Linux
  • Анатомия ядра Linux
  • Анатомия распределителя памяти slab в Linux
  • Анатомия методов синхронизации Linux

  • Все статьи Тима серии Анатомия…
    (EN)
  • Все статьи Тима на developerWorks(EN)
  • Все
    журналируемые файловые системы ведут журнал для буферизации изменений
    файловой системы (который также нужен для аварийного восстановления),
    однако существуют различные стратегии того, что и когда заносить в
    журнал. Существует три наиболее распространенные стратегии — режим
    обратной записи, режим упорядочивания и режим данных.

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

    Правила
    применения изменений, зафиксированных в журнале, также могут быть
    разными в разных подходах. Например, когда следует применять изменения?
    Когда журнал полон? Или когда истекает некий таймаут?

    Ресурсы).

    Будущее журналируемых файловых систем

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

    Reiser4

    После
    успешного внедрения ReiserFS в ядро и применения во многих
    дистрибутивах Linux компания Namesys (которая стоит за ReiserFS) начала
    работу над новой журналируемой файловой системой, Reiser4, которая была
    создана полностью с нуля и включает в себя множество передовых
    возможностей.

    Улучшенное журналирование в Reiser4
    достигается за счет использования блуждающих записей и отложенного
    размещения блоков до момента переноса данных журнала (как это было
    сделано в XFS). В архитектуре Reiser4 предусматривалась гибкая
    поддержка плагинов (например, чтобы добавить функции сжатия или
    шифрования), но эта идея была отвергнута Linux-сообществом, которое
    считало, что место этим расширенным функциям — в подсистеме виртуальной
    файловой системы (VFS).

    После вынесения обвинения
    владельцу Namesys и одновременно автору ReiserFS вся коммерческая
    деятельность вокруг Reiser4 была приостановлена.

    Четвертая расширенная файловая система

    Четвертая
    расширенная файловая система (ext4fs) — это дальнейшее развитие ext3fs.
    Ext4fs была задумана как замена ext3fs, имеющая с ней прямую и обратную
    совместимость, но включающая в себя множество улучшений (некоторые из
    которых нарушают эту совместимость). На практике можно монтировать
    раздел ext4 как ext3 и наоборот.

    Во-первых, ext4fs — это
    64-разрядная файловая система с поддержкой томов огромного размера (до
    1 эксабайта). Она также может использовать экстенты, но в этом случае
    теряется совместимость с ext3fs. Аналогично XFS и Reiser4, в ext4fs
    размещение блоков на диске задерживается и происходит по необходимости
    (что уменьшает фрагментацию). Журнал также хранит контрольные суммы
    содержимого для большей надежности. Вместо B+- или B*-деревьев
    применяется специальная разновидность B-дерева, т.н. H-дерево, что позволяет поддиректориям иметь намного больший размер (в ext3 он ограничен 32Кб).

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

    Еще
    одно интересное отличие ext4fs от ext3fs заключается в точности
    временной метки файлов. В ext3 размерность временной метки — одна
    секунда. Ext4fs смотрит в будущее: при непрекращающемся росте скоростей
    процессора и интерфейсов требуется более точное измерение. Поэтому в
    качестве размерности времени была взята одна наносекунда.

    Хотя
    ext4fs включена в ядро Linux в версии 2.6.19, она уже может считаться
    стабильной. Эта система, разработка которой продолжается, является
    отправной точкой для создания журналируемой файловой системой будущего
    в Linux.

    Двигаясь дальше

    Журналируемые
    файловые системы обеспечивают надежность и защиту от повреждения данных
    при крахе системы или потере питания. Помимо этого, время
    восстановления в таких системах намного меньше, чем в традиционных
    файловых системах (например таких в которых применяется fsck).
    Разработка новых методов журналирования основывается как на прошлом
    опыте, идущем от JFS и XFS, так и на поиске новых алгоритмов и
    структур. Не совсем ясно, как будут развиваться журналируемые файловые
    системы в будущем, однако их полезность очевидна, и они уже стали новым
    стандартом файловых систем.

    Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34