Первый элемент этой структуры (суперблок) - одинаков для всех групп, а все остальные - индивидуальны для каждой группы. Суперблок хранится в первом блоке каждой группы блоков (за исключением группы 1, в которой в первом блоке расположена загрузочная запись). Суперблок является начальной точкой файловой системы. Он имеет размер 1024 байта и всегда располагается по смещению 1024 байта от начала файловой системы. Наличие нескольких копий суперблока объясняется чрезвычайной важностью этого элемента файловой системы. Дубликаты суперблока используются при восстановлении файловой системы после сбоев.
Информация, хранимая в суперблоке, используется для организации доступа к остальным данным на диске. В суперблоке определяется размер файловой системы, максимальное число файлов в разделе, объем свободного пространства и содержится информация о том, где искать незанятые участки. При запуске ОС суперблок считывается в память и все изменения файловой системы вначале находят отображение в копии суперблока, находящейся в ОП, и записываются на диск только периодически. Это позволяет повысить производительность системы, так как многие пользователи и процессы постоянно обновляют файлы. С другой стороны, при выключении системы суперблок обязательно должен быть записан на диск, что не позволяет выключать компьютер простым выключением питания. В противном случае, при следующей загрузке информация, записанная в суперблоке, окажется не соответствующей реальному состоянию файловой системы.
Суперблок имеет следующую структуру.
Название поля | Тип | Комментарий | |
1.2ems_inodes_count |
ULONG |
Число индексных дескрипторов в файловой системе | |
s_blocks_count |
ULONG |
Число блоков в файловой системе | |
s_r_blocks_count |
ULONG |
Число блоков, зарезервированных для суперпользователя | |
s_free_blocks_count |
ULONG |
Счетчик числа свободных блоков | |
s_free_inodes_count |
ULONG |
Счетчик числа свободных индексных дескрипторов | |
s_first_data_block |
ULONG |
Первый блок, который содержит данные. В зависимости от размера блока, это поле может быть равно 0 или 1 | |
s_log_block_size |
ULONG |
Индикатор размера логического блока: 0 = 1 Кб; 1 = 2 Кб; 2 = 4 Кб | |
s_log_frag_size |
LONG |
Индикатор размера фрагментов (кажется, понятие фрагмента в настоящее время не используется) | |
s_blocks_per_group |
ULONG |
Число блоков в каждой группе блоков | |
s_frags_per_group |
ULONG |
Число фрагментов в каждой группе блоков | |
s_inodes_per_group |
ULONG |
Число индексных дескрипторов (inodes) в каждой группе блоков | |
s_mtime |
ULONG |
Время, когда в последний раз была смонтирована файловая система | |
s_wtime |
ULONG |
Время, когда в последний раз производилась запись в файловую систему
s_mnt_count USHORT Счетчик числа монтирований файловой
системы. Если этот счетчик достигает значения, указанного в следующем
поле (s_max_mnt_count ), файловая система должна быть проверена (это
делается при перезапуске), а счетчик обнуляется |
|
s_max_mnt_count |
SHORT |
Число, определяющее, сколько раз может быть смонтирована файловая система | |
s_magic |
USHORT |
``Магическое число'' (0xEF53 ), указывающее, что файловая система
принадлежит к типу ex2fs |
|
s_state |
USHORT |
Флаги, указывающее текущее состояние файловой системы (является ли она
чистой (clean ) и т.п.) |
|
s_errors |
USHORT |
Флаги, задающие процедуры обработки сообщений об ошибках (что делать, если найдены ошибки) | |
s_pad |
USHORT |
Заполнение s_lastcheck ULONG Время последней проверки
файловой системы |
|
s_checkinterval |
ULONG |
Максимальный период времени между проверками файловой системы |
s_creator_os |
ULONG |
Указание на тип ОС, в которой создана файловая система | |
s_rev_level |
ULONG |
Версия (revision level) файловой системы | |
s_reserved |
ULONG[235] |
Заполнение до 1024 байт |