Средства системы EXT2fs

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

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

Возможно, наиболее интересным инструментом является программа проверки файловой системы. E2fsck предназначена для устранения несоответствий в файловой системе после неаккуратного завершения работы всей системы. Начальная версия программы e2fsck основана на программе Linus Torvald fsck для файловой системы Minix. Однако, текущая версия программы переписана с использованием библиотеки EXT2fs и является более быстрой, исправляя больше ошибок в системе при проверке по сравнению с первоначальной версией.

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

На первом этапе e2fsck проходит по всем индексным дескрипторам файловой системы и проверяет каждый дескриптор как отдельный элемент системы. При этом другие объекты файловой системы не проверяются. Одной из целей этой проверки является убедиться в существовании типа проверяемого файла и соответствии всех блоков в дескрипторе с блоками с существующими номерами. На первом этапе проверяются карты битов, указывающие на использование блоков и дескрипторов.

Если e2fsck обнаруживает блоки данных, номера которых содержатся в более чем одном дескрипторе, запускаются этапы с 1B по 1D для устранения несоответствий – либо путем увеличения разделяемых блоков, либо удалением одного или нескольких дескрипторов.

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

На втором этапе каталоги проверяются как отдельные элементы файловой системы. Блок каждого каталога проверяется индивидуально, без ссылки на другие блоки каталогов. Это позволяет e2fsck отсортировать все блоки каталогов по номерам блоков и проверить их в порядке возрастания, тем самым уменьшая время доступа к диску. Блоки каталогов проверяются на соответствие их записям, и на то, содержат ли они ссылки на дескрипторы с существующими номерами, как было определено на первом этапе.

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

Следует отметить, что к концу второго этапа завершаются почти все операции ввода/вывода с диском. Вся информация, требуемая для третьего, четвертого и пятого этапов, содержится в памяти. Однако оставшиеся этапы нагружают процессор и занимают менее 5-10% времени от общего выполнения e2fsck.

На третьем этапе проверяются связи каталогов. E2fsck проверяет пути каждого каталога в направлении к корневому, используя информацию, полученную во время второго этапа. Здесь также проверяется запись '..' для каждого каталога. Все каталоги, обнаруженные после проверки и не имеющие связи с корневым, помещаются в каталог /lost+found.

На четвертом этапе e2fsck проверяет счетчики ссылок для каждого индексного дескриптора, просматривая все дескрипторы и сравнивая счетчики ссылок (эта информация сохраняется с первого этапа) с внутренними счетчиками, значения которых были вычислены во время второго и третьего этапов. Все неудаленные файлы с нулевым счетчиком ссылок также помещаются в каталог /lost+found.

И, наконец, на пятом этапе e2fsck проверяет соответствие всей информации о файловой системе. Здесь сравниваются карты битов блоков и дескрипторов, которые были получены на предыдущих этапах, с фактическими значениями, и при необходимости, информация на диске соответствующим образом корректируется.

Другим полезным инструментом является отладчик файловой системы. Debugfs — это мощная программа, позволяющая определять и устанавливать состояние файловой системы. По сути, она является интерактивным интерфейсом к библиотеке EXT2fs, то есть транслирует введенные команды в вызовы функций библиотеки.

Debugfs может быть использована для определения внутренней структуры файловой системы, ручного восстановления поврежденной системы или создания условных тестов для e2fsck. К сожалению, этой программой можно навредить файловой системе, если неправильно ей пользоваться. С помощью этого инструмента можно легко уничтожить файловую систему. Поэтому debugfs открывает файловую систему в режиме read-only по умолчанию. Для доступа в режиме read/write следует указать опцию -w.