Суперблок
В ExtX основные данные категории файловой системы хранятся в суперблоке. Суперблок хранится со смещением 1024 байта от начала файловой системы и занимает 1024 байта. Его поля перечислены в табл.
15.1.Таблица 15.1. Структура данных суперблока ExtX
Диапазон | Описание | Необходимость |
0-3 | Количество индексных узлов в файловой системе | Да |
4-7 | Количество блоков в файловой системе | Да |
8-11 | Количество блоков, резервируемых для предотвращения переполнения файловой системы | Нет |
12-15 | Количество свободных блоков | Нет |
16-19 | Количество свободных индексных узлов | Нет |
20-23 | Блок, с которого начинается группа блоков 0 | Да |
24-27 | Размер блока (в формате количества разрядов для сдвига величины 1024 влево) | Да |
28-31 | Размер фрагмента (в формате количества разрядов для сдвига величины 1024 влево) | Да |
32-35 | Количество блоков в каждой группе | Да |
36-39 | Количество фрагментов в каждой группе | Да |
40-43 | Количество индексных узлов в каждой группе | Да |
44-47 | Последнее время монтирования | Нет |
48-51 | Последнее время записи | Нет |
52-53 | Текущее количество монтирований | Нет |
54-55 | Максимальное количество монтирований | Нет |
56-57 | Сигнатура (0xef53) | Нет |
58-59 | Состояние файловой системы (см. табл. 15.2) | Нет |
Таблица 15.1 (продолжение)
Диапазон | />Описание | Необходимость |
60-61 | Метод обработки ошибок (см. табл. 15.3) | Нет |
62-63 | Дополнительная версия | Нет |
64-67 | Время последней проверки целостности | Нет |
68-71 | Интервал между принудительными проверками целостности | Нет |
72-75 | ОС, создавшая файловую систему (см. табл. 15.4) | Нет |
76-79 | Основная версия (см. табл. 15.5) | Да |
80-81 | UID, которому разрешено использовать зарезервированные блоки | Нет |
82-83 | GID, которому разрешено использовать зарезервированные блоки | Нет |
84-87 | Первый незарезервированный индексный узел в файловой системе | Нет |
88-89 | Размер структуры индексного узла | Да |
90-91 | Группа блоков, в которую входит данный суперблок (для резервных копий) | Нет |
92-95 | Флаги совместимых функций (см. табл. 15.6) | Нет |
96-99 | Флаги несовместимых функций (см. табл. 15.7) | Да |
100-103 | Флаги совместимых функций только для чтения (см. табл. 15.8) | Нет |
104-119 | Идентификатор файловой системы | Нет |
120-135 | Имя тома | Нет |
136-199 | Путь последнего монтирования | Нет |
200-203 | Битовая карта использования алгоритма | Нет |
204-204 | Количество блоков, предварительно выделяемых файлам | Нет |
205-205 | Количество блоков, предварительно выделяемых каталогам | Нет |
206-207 | Не используется | Нет |
208-223 | Идентификатор журнала | Нет |
224-227 | Индексный узел журнала | Нет |
228-231 | Журнальное устройство | Нет |
232-235 | Начало списка зависших индексных узлов | Нет |
236-1023 | Не используется | Нет |
Байты 58-59 содержат флаги состояния системы.
Допустимые значения флагов приведены в табл. 15.2.Таблица 15.2. Флаги состояния файловой системы в суперблоке
Диапазон | Описание | Необходимость |
0x0001 | Проверенная файловая система | Нет |
0x0002 | Файловая система содержит ошибки | Нет |
0x0004 | Обнаружены зависшие узлы | Нет |
Метод обработки ошибок в байтах 60-61 определяет, как должна поступать ОС при обнаружении ошибки файловой системы. Эти значения задаются в момент
создания файловой системы. Поле содержит одно из трех значений, приведенных в табл. 15.3.
Таблица 15.3. Значения поля метода обработки ошибок в суперблоке
Диапазон | Описание | Необходимость |
1 | Продолжение | Нет |
2 | Перемонтирование файловой системы как доступной только для чтения | Нет |
3 | Паника | Нет |
Поле в байтах 72-75 определяет ОС, которая могла создать файловую систему. Многие средства создания файловых систем для Linux позволяют задать значение на усмотрение пользователя. Пять определенных значений этого поля приведены в табл. 15.4.
Таблица 15.4. Значения поля создателя в суперблоке
Диапазон | Описание | Необходимость |
0 | Linux | Нет |
1 | GNU Hurd | Нет |
2 | Masix | />Нет |
3 | FreeBSD | Нет |
4 | Lites | Нет |
Для поля основной версии (байты 76-79) определены значения, перечислен- ше в табл. 15.5. | ||
Таблица 15.5. Значения поля основной версии в суперблоке | ||
Диапазон | Описание | Необходимость |
0 | Исходная версия | Да |
1 | «Динамическая» версия | Да |
Если в поле не выставлен признак динамической версии, то содержимое суперблока, начиная с байта 84, может быть неточным. Слово «динамический» в данном случае означает, что индексные узлы могут обладать динамическим размером и его точное значение задается в байтах 88-89 суперблока. Текущая версия ядра Linux не поддерживает динамические индексные узлы, но использует динамическую версию для установки полей совместимых/несовместимых функций.
Концепция функций — совместимых, несовместимых и совместимых только для чтения — обсуждалась в главе 14. В суперблоке для каждого типа функций существует отдельное поле. Следует отметить, что некоторые флаги были определены, но никогда не использовались в коде Linux. Следовательно, не все они будут встречаться в стандартной системе Linux. В табл. 15.6 перечислены флаги совместимых функций, в табл. 15.7 — флаги несовместимых функций, а в табл. 15.8 — флаги функций, совместимых только для чтения.
Таблица 15.6. Флаги поля совместимых функций в суперблоке
Флаг | Описание | Необходимость |
0x0001 | Для каталогов используется предварительное выделение блоков с целью сокращения фрагментации | Нет |
0x0002 | Индексные узлы серверов AFS существуют | Нет |
0x0004 | Файловая система содержит журнал (Ext3) | Нет |
0x0008 | Индексные узлы обладают расширенными атрибутами | Нет |
0x0010 | Допускается изменение размеров файловой системы для больших разделов | Нет |
0x0020 | Каталоги используют хешированные индексы | Нет |
Таблица 15.7.
Флаги поля несовместимых функций в суперблоке Флаг | Описание | Необходимость |
0x0001 | Сжатие (пока не поддерживается) | Да |
0x0002 | Записи каталогов содержат поле типа файла | Да |
0x00034 | Файловая система нуждается в восстановлении | Нет |
0x0008 | Файловая система использует журнальное устройство | Нет |
Таблица 15.8. Флаги поля совместимых функций только для чтения в суперблоке | ||
Флаг | Описание | Необходимость |
0x0001 | Разреженные суперблоки и таблицы дескрипторов групп | Нет |
0x0002 | Файловая система содержит большой файл | Нет |
0x0004 | Каталоги используют В-деревья (не реализовано) | Нет |
После знакомства со структурами данных и флагами можно рассмотреть реальный пример суперблока Ext3. Мы воспользуемся программой dd для извлечения 1024 байт, начиная со смещения 1024: dd if=ext3.dd bs-1024 skiр=1 count=l | xxd
0000000: c053 ldOO ff9d 3a00 4cee 0200 4708 ObOO .S....:.L...6...
0000016: 6745 ldOO 0000 0000 0200 0000 0200 0000 gE
0000032: 0080 0000 0080 0000 a03f 0000 c9fd 1141 ? A
0000048: c9fd 1141 3601 2500 53ef 0100 0100 0000 ...A6.X.S
0000064: da9d e83e 004e edOO 0000 0000 0100 0000 ...gt;.N
0000080: 0000 0000 ObOO 0000 8000 0000 0400 0000
0000096: 0600 0000 0300 0000 077a 06a5 1795 486e z....Hn
0000112: 9485 ecc4 486f 63e4 0000 0000 0000 0000 ....Hoc
0000128: 0000 0000 0000 0000 0000 0000 0000 0000
[...]
0000224: 0800 0000 0000 0000 0000 0000 0000 0000
[...]
0001008: 0000 0000 0000 0000 0000 0000 0000 0000
Из листинга видно, что файловая система содержит 1 921 984 (0x001d53c0) индексных узла (байты 0-3) и 3 841 535 (0x003a9dff) блоков (байты 4-7).
Байты 20-23 показывают, что группа блоков 0 начинается с байта 0. Байты 24-27 и 28-31
содержат величину поразрядного сдвига числа 1024 (0x0400) для вычисления размеров блока и фрагмента соответственно. Оба значения равны 2; это означает, что размеры блока и фрагмента равны 4096 (0x1000) байт. Байты 32-35 показывают, что каждая группа состоит из 32 768 (0x8000) блоков, а байты 40-43 — что на группу приходится 16 288 (0x3fa0) индексных узлов. Располагая этими сведениями, мы знаем общий размер файловой системы, начальные адреса каждой группы блоков и количество индексных узлов в одной группе.
Байты 76-79 показывают, что используется динамическая версия Ext, так что байты со смещением 84 должны содержать действительную информацию. Из байтов 88-91 можно определить, что размер каждого индексного узла равен 128 (0x80) байтам. Байты 92-95 содержат флаги совместимых функций; в этом поле установлен флаг журнала (0x0004), следовательно, мы имеем дело с файловой системой Ext3. В поле флагов несовместимых функций (байты 96-99) содержится значение 0x0006; оно означает, что при следующей загрузке должно выполняться восстановление (0x004) и файловая система содержит специальные записи каталогов (0x0003). Байты 100-103 содержат флаги функций, совместимых только для чтения; значение 0x003 указывает на то, что в системе присутствуют большие файлы (0x0002) и не каждая группа блоков содержит резервную копию суперблока (0x0001). Байты 224-227 показывают, что журнал находится в индексном узле 8.
Суперблок содержит много других параметров, которые нами отдельно не рассматривались. Смысл этих параметров будет обсуждаться в соответствующих разделах; их можно увидеть в выходных данных программы fsstat, приведенных в главе 14.
Еще по теме Суперблок:
- Суперблок UFS1
- Суперблок UFS2
- Методы анализа
- Категория данных файловой системы
- Таблица дескрипторов групп
- Снятие данных и анализ
- Категория прикладных данных
- Категория содержимого
- Структуры данных журнала
- Категория метаданных
- Методы анализа
- Дескриптор группы UFS1
- Факторы анализа
- Индексные узлы UFS1
- Конкретные файловые системы
- Общая картина
- Общая картина
- Запись каталога
- Введение