Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRILOZhYeNIYe_2.doc
Скачиваний:
11
Добавлен:
10.07.2019
Размер:
337.92 Кб
Скачать

Формат индексного дескриптора

Формат индексного дескриптора описан в заголовочном файле ext4.h как структура ext4_inode, формат приведен в табл. П.2.6.

Ext4, как и предыдущая файловая система, резервирует некоторые индексные дескрипторы, например 2-й отводится для корневой директории, 8-й – для журнала транзакций. В ext4 по умолчанию используются 256-байтные индексные дескрипторы. Чтобы не переписывать заново многочисленные функции ядра и утилиту проверки файловой системы e2fsck, первые 128 байтов индексного дескриптора оставили фактически без изменений [15]. Обобщенная структура индексного дескриптора представлена на рис. П.2.5.

Рис. П.2.5. Индексный дескриптор в ext4

Фиксированные поля выделяются динамически, в зависимости от того, какая информация есть у текущего ядра об этих полях. Размер области фиксированных полей хранится в каждом индексном дескрипторе в поле i_extra_isize. В самом суперблоке также содержатся два поля: s_min_extra_isize, которое гарантирует минимальный объем области фиксированных полей в каждом индексном дескрипторе, и s_want_extra_isize, которое указывает на желаемый размер области фиксированных полей во вновь создаваемом индексном дескрипторе, но вовсе не гарантирует, что именно такой объем будет в нем выделен [18].

Таблица П.2.6

Формат индексного дескриптора

Размер,

байт

Смещение (dec)

Смещение (hex)

Назначение

2

0

0

Тип файла и права доступа к нему

2

2

2h

Младшие 16 бит идентификатора пользователя

4

4

4h

Размер файла в байтах

4

8

8h

Время последнего доступа

4

12

Ch

Время изменения индексного дескриптора

4

16

10h

Время последнего изменения данных файла

4

20

14h

Время удаления файла

2

24

18h

Младшие 16 бит идентификатора группы

2

26

1Ah

Число жестких ссылок на файл

4

28

1Ch

Число блоков или секторов, занимаемых файлом

4

32

20h

Флаги файла

4

36

24h

Зарезервировано для ОС

15х4 или 5х12

40

28h

В зависимости от способа адресации 15 указателей на блоки данных или 1 заголовок экстента (12 байтов) и непосредственно 4 экстента

4

100

64h

Версия файла (для NFS)

4

104

68h

ACL файла

4

108

6Ch

Старшие 32 бита размера файла в байтах

4

112

70h

Устаревшее поле: адрес фрагмента

12

116

74h

Структура, зависящая от типа ОС, определяющая номера фрагментов

2

128

80h

Размер фиксированных полей inode

2

130

82h

Зарезервировано

4

132

84h

Дополнительные 32 бита ctime

4

136

88h

Дополнительные 32 бита mtime

4

140

8Ch

Дополнительные 32 бита atime

4

144

90h

Время создания файла

4

148

94h

Дополнительные 32 бита к ВО создания файла

4

152

98h

Старшие 32 бита версии файла

Оставшееся пространство в индексном дескрипторе может быть использовано для хранения быстрых расширенных атрибутов файла. Это позволяет не искать каждый раз внешний блок данных с расширенными атрибутами, что для некоторых приложений может весьма увеличить производительность [15].

В ext4 поле, где располагалось время создания файла, заменили на поле с временной отметкой последнего изменения индексного дескриптора. Время создания файла вынесено за пределы стандартных полей.

Индексный дескриптор содержит флаги, которые называются файловыми атрибутами и выводятся утилитой lsattr. Эти флаги приведены в табл. П.2.7.

Таблица П.2.7

Флаги индексного дескриптора

Флаг

Название

Описание

0х00000001

SECRM_FL

Безопасное удаление файла

0x00000002

UNRM_FL

Неудаляемый файл

0x00000004

COMPR_FL

Сжатый файл

0х00000008

SYNC_FL

Синхронное обновление

0х00000010

IMMUTABLE_FL

Неизменяемый файл

0х00000020

APPEND_FL

Любая запись может только добавляться в конец файла

0х00000040

NODUMP_FL

Не дампировать данные файла

0х00000080

NOATIME_FL

Не обновлять время последнего доступа к файлу

0х00004000

JOURNAL_DATA_FL

Данные файла должны журналироваться

0х00040000

HUGE_FILE_FL

Гигантский файл. Размер файла указывается в логических блоках, а не в секторах

0х00080000

EXTENTS_FL

Файл использует экстенты

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]