Кое-что по теме :
http://www.citforum.ru/operating_system ... fs07.shtml
===================
Журналирование только метаданных
Интересно то, что ext3 выполняет журналирование совсем иначе, чем ReiserFS и другие журналируемые файловые системы. В ReiserFS, XFS и JFS журналируются метаданные их и не предусмотрено какое либо журналирование самих данных. При при журналировании метаданных (metadata-only journaling) метаданные хранятся так надежно, что, скорее всего вам не придется пользоваться fsck. Однако, неожиданные перезагрузки и сбои в электропитании могут приводить к утере данных, которые в момент сбоя записывались на диск. Ext3 использует несколько творческих решений для избежания таких проблем.
Сначала поясним ситуацию с журналированием только метаданных. Например, вы редактировали файл /tmp/myfile.txt в момент, когда машина неожиданно блокировалась. В случае с журналируемыми системами, журналирующими только метаданные (например, ReiserFS, XFS или JFS), метаданные вашей файловой системы утрачены не будут и запуска fsck не потребуется.
Однако, в случае такого сбоя имеется высокая вероятность, что в файле /tmp/myfile.txt останется один мусор, а то и просто он станет нечитабельным.
Причина в следующем. "Обычные" журналируемые файловые системы, подобные ReiserFS, XFS и JFS опекают метаданные, но для повышения производительности заботу о данных не проявляют. В нашем примере происходила модификация некоторых блоков и соответствующих им метаданных, но синхронизация была неожиданно прервана. "Непротиворечивость" файловых блоков будет восстановлена, чего нельзя сказать об их "наполнении".
Журнализация в ext3
Теперь, когда имеется общее понимание проблемы, посмотрим, как ext3 осуществляет журналирование. В коде журнализации для ext3 используется специальный API, называемый Уровень журналирования блочного устройства (Journaling Block Device layer или JBD). JBD был разработан для журнализации на любых блочных устройств. Ext3 привязана к JBD API. При этом код файловой системы ext3 сообщает JBD о необходимости проведения модификации и запрашивает у JBD разрешение на ее проведение. Журналом управляет JBD от имени драйвера файловой системы ext3. Такое соглашение очень удобно, так как JBD развивается как отдельный, универсальный объект и может использоваться в будущем для журналирования в других файловых систем.
Имеется два важных момента в управлении журналом ext3 через JBD, вытекающих из хранения журнала в inode файле (в базовом варианте). Первое, в зависимости от ключей монтирования файловой системы ext3, этот файл можно "видеть" или "не видеть" (расположен в /.journal). Второе, такое хранение журнала делает возможным переход к ext3 через простое добавление единственного файла (и замену драйвера) без использования несовместимых расширений к метаданным ext2. Это ключ к пониманию "обратной совместимости" файловой системы ext3 с ext2 метаданными и "прямой совместимости" ext2 с ext3 драйвером.
Различные подходы к journaling
Нетрудно догадаться, что имеется несколько способов ведения журнала. Например, разработчик файловой системы может спроектировать журнал, который хранит промежуточные байты, подлежащие модификации в файловой системе. Преимущество такого подхода в том, что журнал хранил бы большое число крошечных модификаций очень эффективным способом, так как требуется запись только отдельных байтов и ничего больше.
JBD использует иной подход. Вместо регистрации промежуточных байтов сохраняются полностью измененные блоки файловой системы. Драйвер Ext3, аналогично, хранит полные точные копии модифицируемых блоков (1КБ, 2КБ или 4КБ) в памяти до завершения операции ввода/вывода. Это может показаться расточительным. Полные блоки содержат не только изменившиеся данные, но и не модифицированные.
Подход, используемый JBD, называется "физическим журналированием", что отражает использование JBD "физических блоков" как основную единицу ведения журнала. Подход, когда хранятся только изменяемые байты, а не целые блоки, называется "логическим журналированием" (используется XFS). Поскольку ext3 использует "физическое журналирование", журнал в ext3 имеет размер больший, чем в XFS. За счет использования в ext3 полных блоков, как драйвером, так и подсистемой журналирования нет сложностей, которые возникают при "логическом журналировании". Кроме того, использование полных блоков позволяет исполнение некоторой дополнительной оптимизации, например объединение нескольких ожидающих обработки операции ввода/вывода в пределах моноблока в одной структуре оперативной памяти. Это позволяет ext3 записывать на диск несколько смежных модификаций одной операцией. Как дополнение, при операциях записи существенно сокращается нагрузка на CPU.
Защита данных в Ext3
Теперь можно поговорить о том, как файловая система ext3 обеспечивает журналирование и данных, и метаданных. Фактически в ext3 имеются два метода достижения гарантии непротиворечивости.
Первоначально ext3 разрабатывалась для журналирования и всех данных, и метаданных. В этом режиме (называется "data=journal" mode), JBD журналирует все изменения в файловой системе, связанные как с данными, так и с метаданными. При этом JBD может использовать журнал для отката и восстановления метаданных и данных. Недостаток "полного" журналирования в достаточно низкой производительности и расходе большого объема дискового пространства под журнал.
Недавно для ext3 был добавлен новый режим журналирования, который сочетает высокую производительность и гарантию непротиворечивости структуры файловой системы после сбоя (как у "обычных" журналируемых файловых систем). Новый режим работы обслуживает только метаданные. Однако драйвер файловой системы ext3 по-прежнему отслеживает обработку целых блоков данных (если они связаны с модификацией метаданных), и группирует их в отдельный объект, называемый тразакцией (transaction). Транзакция будет завершена только после записи на диск всех данных. "Побочный" эффект такой "грубой" методики (называемой "data=ordered" mode) - ext3 обеспечивает более высокую вероятность сохранности данных (по сравнению с "продвинутыми" журналируемыми файловыми системами) при гарантии непротиворечивости метаданных. При этом происходит журналирование изменений только структуры файловой системы. Ext3 использует этот режим по умолчанию.
Заключение
В настоящее время многие пытаются определиться, какая из поддержанных в Linux журналируемых файловых систем является "лучшей". По большому счету, все определяется тем, для каких целей и каких приложений файловую систему планируется использовать; каждая имеет свои достоинства и недостатки. Безусловное преимущество пользователей Linux - возможность выбора между файловыми системами нового поколения. Вместо приклеивания ярлыка "лучшей" файловой системы, следует понять силу и слабость каждой и принять обоснованное решение.
Ext3 имеет множество преимуществ. Она разработана для максимальной простоты развертывания. Она основана на годами проверенном коде ext2 и получила "по наследству" замечательный инструментарий fsck. Ext3 в первую очередь предназначена для приложений, не имеющих встроенных возможностей по гарантированию сохранности данных. В целом, ext3 - замечательная файловая система и достойное продолжение ext2. В моей следующей статье будет описана установка и работа с ext3.
=================
Еще ссылки :
http://linux.yaroslavl.ru/docs/conf/fs/ ... s8_ru.html
http://www.ibm.com/developerworks/linux ... aling.html
http://citforum.univ.kiev.ua/operating_ ... fs11.shtml