<<
>>

Суперблок

В 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. 

<< | >>
Источник: Кэрриэ Б.. Криминалистический анализ файловых систем. 2007

Еще по теме Суперблок:

  1. Суперблок UFS1
  2. Суперблок UFS2
  3. Методы анализа
  4. Категория данных файловой системы
  5. Таблица дескрипторов групп
  6. Снятие данных и анализ
  7. Категория прикладных данных
  8. Категория содержимого
  9. Структуры данных журнала
  10. Категория метаданных
  11. Методы анализа
  12. Дескриптор группы UFS1
  13. Факторы анализа
  14. Индексные узлы UFS1
  15. Конкретные файловые системы
  16. Общая картина
  17. Общая картина
  18. Запись каталога
  19. Введение