Файловая система ext3
1. Введение в файловую систему ext3
2. Файловые системы Linux. Сухая теория
3. Что такое журналируемая файловая система?
4. Файловая система ext3
5. Различные журналируемые режимы в файловой системе ext3
6. Заключение
Современная, мощная и бесплатная
операционная система Linux предоставляет
широкую территорию для разработки
современных систем и пользовательского
программного обеспечения. Некоторые из
наиболее интересных разработок в недавних
ядрах Linux это новые, высоко
производительные технологии для
управления хранением, размещением и
обновлением данных на диске. Один из
наиболее интересных механизмов - это
файловая система ext3, которая интегрируется
в ядро Linux начиная с версии 2.4.16, и уже
доступна по умолчанию в Linux дистрибутивах
от компаний Red Hat и SuSE.
Файловая система ext3 является
журналируемой файловой системой, 100%
совместимой со всеми утилитами созданными
для создания, управления и тонкой настройки
файловой системы ext2, которая используется в
Linux системах несколько последних лет. Перед
детальным описанием различий между
файловыми системами ext2 и ext3, уточним
терминологию файловых систем и хранения
файлов.
С даты в далеком прошлом, когда
компьютерные системы впервые начали читать
и писать на магнитные носители,
гарантирование целостности файлов и (позднее)
директорий на этих устройства стало
настоящей занозой для системных
администраторов. На системном уровне, все
данные на компьютере существуют как блоки
данных на неком устройстве хранения,
организованных с помощью специальных
структур данных в разделы (логические
наборы на устройстве хранения), которые в
свою очередь организованы в файлы,
директории и неиспользуемое (свободное)
пространство.
Файловые системы созданы на разделах
диска для упрощения хранения и организации
данных в форме файлов и директорий. Linux, как
Unix система, использует иерархическую
файловую систему составленную из файлов и
директорий, которые соответственно
содержат либо файлы либо каталоги. Файлы и
директории в файловой системе Linux
становятся доступным пользователю путем их
монтирования (команда "mount"), которая обычно
является частью процесса загрузки системы.
Список файловых систем доступных для
использования хранится в файле /etc/fstab (FileSystem
TABle). Список файловых систем не
смонтированных в данные момент системой
хранится в файле /etc/mtab (Mount TABle).
В момент монтирования файловой системы в
процессе загрузки, бит в заголовке (<чистый
бит> / <clean bit="">) стирается, это означает что
файловая система используется, и что
структуры данных используемые для
управления размещением и организации
файлов и директорий, в данной файловой
системы могут быть изменены.
Файловая система расценивается как
целостная если все блоки данных в ней либо
используются, либо свободны; каждый
размещенный блок данных занят одним и
только одним файлом или директорией; все
файлы и директории могут быть доступны
после обработки серии других директорий в
файловой системе. Когда система Linux
намеренно прекращает работу используя
команды оператора, все файловые системы
размонтируются. Размонтирование файловой
системы в процессе завершения работы
устанавливает <чистый бит> в заголовок
файловой системы, указывая на то, что
файловая система была размонтирована
должным образом и, тем самым, может
рассматриваться как целостная.
Года отладки и переработки файловой
системы и использование улучшенных
алгоритмов для записи данных на диск в
большой степени уменьшили повреждение
данных вызываемых приложениями или самим
ядром Linux, но устранение повреждения и
потери данных в связи с отключением питания
и другими системными проблемами до сих пор
является сложной задачей. В случае
аварийной остановки или простого
отключения Linux системы без использования
стандартных процедур остановки работы <чистый
бит> в заголовке файловой системы не
устанавливается. При следующей загрузке
системы, процесс монтировки обнаруживает,
что система не маркирована как <чистая>, и
физически проверяет ее целостность
использую Linux/Unix утилиту проверки файловой
системы 'fsck' (File System ChecK).
Запуск проверки системы (fsck) на больших
файловых системах может занять много
времени, что очень плохо, учитывая
сегодняшние высоко скоростные системы.
Причиной, по которой целостность
отсутствует в файловой системе, может
являться не корректное размонтирование,
например в момент прекращения работы на
диск велась запись. Приложения могли
обновлять данные, содержащиеся в файлах и
система могла обновлять мета-данные
файловой системы, которые являются <данными
о данных файловой системы>, иными словами,
информация о том какие блоки связаны с
какими файлами, какие файлы размещены в
каких директориях и тому подобное. Ошибки (отсутствие
целостности) в файлах данных - это плохо, но
куда хуже ошибки в мета-данных файловой
системы, что может привести к потерям
файлов и другим серьезным проблемам.
Для минимизации проблем связанных с
целостностью и минимизации времени
перезапуска системы, журналируемая
файловая система хранит список изменений,
которые она будут проводить с файловой
системой перед фактической записью
изменений. Эти записи хранятся в отдельной
части файловой системы, называемой <журналом>
или <логом>. Как только эти записи журнала (лога)
безопасно записаны, журналируемая файловая
система вносит эти изменения в файловую
систему и затем удаляет эти записи из <лога>
(журнала регистраций). Записи журнала
организованы в наборы связанных изменений
файловой системы, что очень похоже на то,
как изменения добавляемые в базу данных
организованны в транзакции.
Журналируемая файловая система
увеличивает вероятность целостности,
потому что записи в лог-файл ведутся до
проведения изменений файловой системы, и
потому что файловая система хранит эти
записи до тех пор, пока они не будут целиком
и безопасно применены к файловой системе.
При перезагрузке компьютера, который
использует журналируемую файловую систему,
программа монтирования может
гарантировать целостность файловой
системы простой проверкой лог-файла на
наличие ожидаемых, но не произведенных
изменений и записью их в файловую систему. В
большинстве случаев, системе не нужно
проводить проверку целостности файловой
системы, а это означает, что компьютер
использующий журналируемую файловую
систему будет доступен для работы
практически сразу после перезагрузки.
Соответственно шансы потери данных в связи
с проблемами в файловой системе
значительно снижаются.
Существует несколько журналируемых
файловых систем доступных для Linux. Наиболее
известные из них: XFS, журналируемая файловая
система разработанная Silicon Graphics, но сейчас
выпущенная открытым кодом (open source); RaiserFS,
журналируемая файловая система
разработанная специально для Linux; JFS,
журналируемая файловая система
первоначально разработанная IBM, но сейчас
выпущенная как открытый код; ext3 - файловая
система разработанная доктором Стефаном
Твиди (Stephan Tweedie) в Red Hat, и несколько других
систем.
Файловая система ext3 - это журналируемая
версия Linux файловой системы ext2. Файловая
система ext3 имеет одно значительно
преимущество перед другими журналируемыми
файловыми системами - она полностью
совместима с файловой системой ext2. Это
делает возможным использование всех
существующих приложений разработанных для
манипуляции и настройки файловой системы
ext2.
Файловая система ext3 поддерживается ядрами
Linux версии 2.4.16 и более поздними, и должна
быть активизирована использованием
диалога конфигурации файловых систем (Filesystems
Configuration) при сборке ядра. В Linux дистрибутивы,
такие как Red Hat 7.2 и SuSE 7.3 уже включена
встроенная поддержка файловой системы ext3.
Вы можете использовать файловую систему ext3
только в том случае, когда поддержка ext3
встроена в ваше ядро и у вас есть последние
версии утилит "mount" и "e2fsprogs".
В большинстве случаев перевод файловых
систем из одного формата в другой влечет за
собой резервное копирование всех
содержащихся данных, переформатирование
разделов или логических томов, содержащих
файловую систему, и затем восстановление
всех данных на эту файловую систему. В связи
с совместимостью файловых систем ext2 и ext3,
все эти действия можно не проводить, и
перевод может быть сделать с помощью одной
команды (запущенной с полномочиями root):
# /sbin/tune2fs -j <имя-раздела >
Например, перевод файловой системы ext2
расположенной на разделе /dev/hda5 в файловую
систему ext3 может быть осуществлен с помощью
следующей комманды:
# /sbin/tune2fs -j /dev/hda5
Опция '-j' команды 'tune2fs' создает журнал ext3
на существующей ext2 файловой системе. После
перевода файловой системы ext2 в ext3, вы так же
должны внести изменения в записи файла /etc/fstab,
для указания что теперь раздел является
файловой системой 'ext3'. Так же вы можете
использовать авто определение типа раздела
(опция "auto"), но все же рекомендуется явно
указывать тип файловой системы. Следующий
пример файл /etc/fstab показывает изменения до и
после перевода файловой системы для
раздела /dev/hda5:
До:
/dev/hda5 /opt ext2 defaults 1 2
После:
/dev/hda5 /opt ext3 defaults 1 0
Последнее поле в /etc/fstab указывает этап в
загрузке, во время которого целостность
файловой системы должна быть проверена с
помощью утилиты "fsck". При использовании
файловой системы ext3, вы можете установить
это значение в <0>, как показано на
предыдущем примере. Это означает что
программа 'fsck' никогда не будет проверять
целостность файловой системе, в связи с тем
что целостность файловой системы
гарантируется путем отката в журнале.
Перевод корневой файловой системы в ext3
требует особого подхода, и лучше всего его
проводить в режиме одного пользователя (single
user mode) после создания RAM диска
поддерживающего файловую систему ext3.
Кроме совместимости с утилитами файловой
системы ext2 и простым переводом файловой
системы из ext2 в ext3, файловая система ext3 так
же предлагает несколько различных типов
журнилирования.
Классический вид журналируемой файловой
системы это хранение в журнале (логе)
изменений метаданных файловой системы и
хранение изменений всех данных файловой
системы, включая изменения самих файлов.
Файловая система ext3 поддерживает три
различных режима журналирования, которые
могут быть активированы из файла /etc/fstab. Эти
режимы журналирования следующие:
Журнал / journal - запись всех изменений
данных файловой системы и мета-данных.
Наиболее медленный из всех трех режимов
журналирования. Этот режим минимизирует
шанс потери изменений файлов которые вы
проводите в ext3 файловой системе.
Последовательный / ordered -
записываются изменения только мета-данных
файловой системы, но записывает обновления
данных файла на диск перед изменениями
ассоциируемых мета-данных файловой системы.
Этот режим журналирования ext3 установлен по
умолчанию.
Обратная запись / writeback - записываются
только изменения мета-данных файловой
системы, основан на стандартном процессе
записи изменений данных файлов. Это
наиболее быстрый метод журналирования.
Различия между этими режимами
журналирования одновременно и едва заметны,
и основательны. Использование режима <журнал>
требует, что бы файловая система ext3
записывала каждое изменение файловой
системы дважды - первый раз в журнал, а
затем в саму файловую систему. Это может
снизить общую производительность вашей
файловой системы, но этот режим наиболее
любим пользователями, потому что он
минимизирует шанс потери изменения данных
ваших файлов, так как и изменения мета-данных
и изменения данный файлов записывается в
журнал ext3 и может быть повторено при
перезагрузке системы.
Используя <последовательный> режим,
записываются только изменения мета-данных
файловой системы, что понижает
избыточность между записью в файловую
систему и в журнал, именно в связи с эти
метод более быстрый. Не смотря на то, что
изменения данных файла не записываются в
журнал, они должны быть сделаны до
изменений ассоциируемых мета-данных
файловой системы, которые проводит
журналирующий ext3 демон, что может немного
снизить производительность вашей системы.
Использование этого метода журналирования
гарантирует что файлы в файловой системе
никогда не будет рассинхронизированы со
связанными мета-данными файловой системы.
Метод <обратная запись> наиболее быстрый,
чем остальные два журналируемых метода, так
как хранятся данные только о изменениях
мета-данных файловой системы, и нет
ожидания изменения ассоциируемых данных
файла при записи (перед обновлением таких
вещей как размер файла и информация о
директории). Так как обновление данных
файла производиться асинхронно по
отношению к журналируемым изменениям мета-данных
файловой системы, файлы в файловой системе
могут показывать ошибки в мета-данных,
например ошибка в указании владельца
блоков данных (обновление которых к моменту
перезагрузки системы было не закончено).
Это не фатально, но может помешать
пользователю.
Указание журналируемого режима,
используемого в ext3 файловой системе
производиться в файле /etc/fstab для этой
файловой системы. <Последовательный> режим
используется по умолчанию, но вы можете
указать различные режимы журналирования,
путем изменения опций для требуемого
раздела в файле /etc/fstab. Например, запись в /etc/fstab
указывающая на использование режима
журналирования <обратная запись> будет
выглядеть следующим образом:
/dev/hda5 /opt ext3 data=writeback 1 0
Журналируемые файловые системы
предоставляют значительные преимущества
для большого круга пользователей Linux,
минимизирует задержки при перезагрузке Linux
системы, и почти устраняет возможность
появления ошибок в файловой системе.
Файловая система ext3 является
высокопроизводительной журналируемой
файловой системой, которая совместима с
файловой системой ext2, а утилиты ext3 делают
перевод вашей системы из ext2 в ext3 очень
простым. Эта совместимость так же
увеличивает возможность использование
всех утилит, созданных для работы с
файловой системой ext2.
|