Структура файловой системы JFS
Файловая система - это набор файлов, каталогов и других структур.
Файловые системы предназначены для хранения информации и распределения по дискам данных файлов и каталогов. Помимо файлов и каталогов, файловые системы JFS включают загрузочный блок, главный блок, битовые образы и одну или несколько групп размещения. Каждая файловая система занимает один логический том.
Загрузочный блок JFS
Загрузочный блок занимает на диске первые 4096 байт файловой системы, начиная с байта со смещением 0. Этот блок может применяться для запуска операционной системы.
Главный блок JFS
Главный блок занимает 4096 байт на диске и располагается, начиная с байта со смещением 4096. В следующих полях главного блока хранится информация обо всей файловой системе:
- Размер файловой системы
- Число блоков данных в файловой системе
- Флаг состояния файловой системы
- Размеры групп размещения
Битовые карты размещения JFS
- Карта размещения фрагментов, которая содержит записи о состоянии размещения всех фрагментов.
- Карта размещения дисковых i-узлов, которая содержит информацию о состоянии всех i-узлов.
Фрагменты JFS
Многие файловые системы организованы в виде блоков дисковой памяти или блоков данных. В этом случае диск разделяется на блоки равного размера; данные хранятся в файлах или логических блоках каталогов. В свою очередь, блок на диске можно разделить на более мелкие единицы фиксированного размера, называемые фрагментами. В некоторых системах фрагменты не могут выходить за границы дискового блока. Другими словами, логический блок не может содержать фрагменты из других дисковых блоков.
Однако, в журнализированной файловой системе (JFS) файловая система рассматривается как непрерывная последовательность фрагментов. Фрагмент JFS представляет собой основную единицу выделения памяти, а адресация на диске реализована на уровне фрагментов. Следовательно, фрагменты могут выходить за границы возможных дисковых блоков. По умолчанию размер фрагмента JFS равен 4096 байт, хотя можно задать и меньший размер. Помимо данных для файлов и каталогов, фрагменты содержат также дисковые адреса и данные для косвенных блоков.
Группы размещения JFS
Множество фрагментов, образующих файловую систему, разбивается на один или несколько блоков фиксированного размера, объединяющих смежные фрагменты. Эти блоки называются группой размещения. Первая группа начинает файловую систему и включает резервную область, которая занимает первые 32 х 4096 байт в группе. Первые 4096 байт этой области выделяются под загрузочный блок, следующие 4096 байт - под главный блок файловой системы.
Каждая группа размещения содержит постоянное число смежных дисковых i-узлов, занимающих несколько фрагментов группы. Эти фрагменты резервируются под i-узлы при создании и расширении файловой системы. В первой группе размещения дисковые i-узлы занимают фрагменты, следующие непосредственно за резервной областью. В следующих областях дисковые i-узлы располагаются в начале каждой группы. Дисковые i-узлы имеют размер 128 байт и идентифицируются уникальным номером дискового i-узла или просто i-номером. i-номер задает расположение дискового i-узла на диске или в группе размещения.
Размер группы размещения фрагментов и размер группы размещения дисковых i-узлов определяется как число фрагментов и дисковых i-узлов, существующих в каждой группе размещения. По умолчанию размер группы размещения составляет 8 Мб. Максимальный размер группы размещения равен 64 Мб. Эти значения хранятся в главном блоке файловой системы и задаются при ее создании.
Применение групп размещения позволяет использовать в стратегиях выделения ресурсов JFS эффективные методы повышения производительности при выполнении операций ввода/вывода в файловой системе. Эти стратегии основаны на объединении блоков и дисковых i-узлов, содержащих связанные данные, в кластеры, что позволило бы достичь оптимального размещения данных на диске. Чтение и запись файлов часто происходит последовательно, и файлы в одном каталоге часто используются один за другим. Кроме того, стратегии размещения распределяют несвязанные данные в файловой системе таким образом, чтобы минимизировать фрагментацию свободного дискового пространства.
Дисковые i-узлы JFS
Данные файла или каталога хранятся в логическом блоке пакетами по 4096 байт. Для хранения этих данных в логическом блоке выделяются фрагменты. Каждому файлу и каталогу соответствует i-узел, содержащий информацию о доступе, такую как тип файла, права доступа, ИД владельца и число связей с данным файлом. Кроме того, эти i-узлы содержат "адреса", позволяющие находить на диске данные логических блоков.
i-узел состоит из последовательности пронумерованных разделов. Каждый раздел содержит адрес одного из логических блоков файла или каталога. Эти адреса указывают начальный фрагмент и полное число фрагментов в блоке. Например, файл с размером 4096 байт имеет в массиве i-узла один адрес. Эти 4096 байт данных хранятся в одном логическом блоке. Файл с размером 6144 байта имеет два адреса. Один адрес указывает на первые 4096 байт, а второй - на оставшиеся 2048 байт (частичный логический блок). Если файл занимает большое число логических блоков, то в i-узел не записываются адреса дисковой памяти. Вместо этого в i-узел помещается ссылка на косвенный блок, содержащий дополнительные адреса.