[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Структура файловой системы JFS

Файловая система - это набор файлов, каталогов и других структур. Файловые системы предназначены для хранения информации и распределения по дискам данных файлов и каталогов. Помимо файлов и каталогов файловые системы включают загрузочный блок, главный блок, битовые образы и одну или несколько групп размещения. Группа размещения состоит из дисковых i-узлов и фрагментов. Каждая файловая система занимает один логический том.

Загрузочный блок

Загрузочный блок занимает на диске первые 4096 байт файловой системы, начиная с байта со смещением 0. Этот блок может применяться для запуска операционной системы.

Главный блок

Главный блок занимает 4096 байт на диске и располагается, начиная с байта со смещением 4096. В следующих полях главного блока хранится информация обо всей файловой системе:

Битовые карты размещения

В файловой системе предусмотрено две битовых карты размещения:

Фрагменты

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

Однако, в журнализированной файловой системе (JFS) файловая система рассматривается как непрерывная последовательность фрагментов. Фрагмент JFS представляет собой основную единицу выделения памяти, а адресация на диске реализована на уровне фрагментов. Следовательно, фрагменты могут выходить за границы возможных дисковых блоков. По умолчанию размер фрагмента JFS равен 4096 байт, хотя можно задать и меньший размер. Помимо данных для файлов и каталогов, фрагменты содержат также дисковые адреса и данные для косвенных блоков. В разделе Распределение памяти в JFS описан механизм выделения фрагментов операционной системой.

Дисковые I-узлы

Данные файла или каталога хранятся в логическом блоке пакетами по 4096 байт. Для хранения этих данных в логическом блоке выделяются фрагменты. Каждому файлу и каталогу соответствует i-узел, содержащий информацию о доступе, такую как тип файла, права доступа, ИД владельца и число связей с данным файлом. Кроме того, эти i-узлы содержат "адреса", позволяющие находить на диске данные логических блоков.

i-узел состоит из последовательности пронумерованных разделов. Каждый раздел содержит адрес одного из логических блоков файла или каталога. Эти адреса указывают начальный фрагмент и полное число фрагментов в блоке. Например, файл с размером 4096 байт имеет в массиве i-узла один адрес. Эти 4096 байт данных хранятся в одном логическом блоке. Файл с размером 6144 байта имеет два адреса. Один адрес указывает на первые 4096 байт, а второй - на оставшиеся 2048 байт (частичный логический блок). Если файл занимает большое число логических блоков, то в i-узел не записываются адреса дисковой памяти. Вместо этого в i-узел помечается ссылка на косвенный блок, содержащий дополнительные адреса.

Группы размещения

Множество фрагментов, образующих файловую систему, разбивается на один или несколько блоков фиксированного размера, объединяющих смежные фрагменты. Эти блоки называются группами размещения. Первая группа начинает файловую систему и включает резервную область, которая занимает первые 32 х 4096 байт в группе. Первые 4096 байт этой области выделяются под загрузочный блок, следующие 4096 байт - под главный блок файловой системы.

Каждая группа размещения содержит постоянное число смежных дисковых i-узлов, занимающих несколько фрагментов группы. Эти фрагменты для i-узлов устанавливаются отдельно при создании или расширении файловой системы. В первой группе размещения дисковые i-узлы занимают фрагменты, следующие непосредственно за резервной областью. В следующих областях дисковые i-узлы располагаются в начале каждой группы. Дисковые i-узлы имеют размер 128 байт и идентифицируются уникальным номером дискового i-узла или просто i-номером. i-номер задает расположение дискового i-узла на диске или в группе размещения.

Группы размещения файловой системы характеризуются тремя размерами:

Эти три значения хранятся в главном блоке файловой системы и устанавливаются при ее создании.

Применение групп размещения позволяет использовать в стратегиях выделения ресурсов JFS эффективные методы повышения производительности при выполнении операций ввода/вывода в файловой системе. Эти стратегии основаны на объединении блоков и дисковых i-узлов, содержащих связанные данные, в кластеры, что позволило бы достичь оптимального размещения данных на диске. Очень часто файлы считываются или записываются последовательно, а ко всем файлам одного каталога обычно устанавливается одинаковый режим доступа. Кроме того, стратегии размещения распределяют несвязанные данные в файловой системе таким образом, чтобы минимизировать фрагментацию свободного дискового пространства.

Использование функций работы с файловой системой

При работе с файловой системой наиболее часто используются следующие функции:

fscntl Выполняет операции по управлению файловой системой
getfsent, getfsspec, getfsfile, getfstype, setfsent и endfsent
  Позволяют получать информацию о файловой системе
lseek Перемещает указатель чтения/записи
mntctl Возвращает информацию о состоянии монтирования
vmount и mount Переводят файловую систему в состояние готовности к работе
statfs, fstsfs и ustat Позволяют получить статистическую информацию о файловой системе
sync Записывает обновления в файловой системе на диск

Для работы с виртуальными файловыми системами (VFS) предназначены следующие функции:

getvfsent, getvfsbytype, getvfsbyname, getvfsbyflag, sevfsent и endvfsent
  Считывают запись VFS
umount и uvmount Удаляют VFS из дерева файлов

Связанная информация

Команда mkfs

Работа с i-узлами JFS

Глава 5, Файловые системы и каталоги

Глава 13, Создание программ, работающих с логическими томами

Создание журнализированной файловой системы на новом логическом томе

Создание новых типов файловых систем

Распределение памяти в JFS


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]