Индексный дескриптор

Индексный дескриптор

Индексный дескриптор (информационный узел, information node, или inode) является основой файловой системы ext2. Это запись о физическом расположении и атрибутах каждого файла. Индексные дескрипторы составляют таблицу индексных дескрипторов (таблицу inode, inode table), которая находится в начале каждой группы блоков.

Для хранения адреса файла в индексном дескрипторе выделено 15 полей по 4 байта. В первых 12 полях перечисляются номера блоков, содержащих начало файла. Если файл занимает 12 блоков или меньше, то этим все и ограничивается.

Таким образом, все ссылки на кластеры маленьких файлов содержатся непосредственно в индексном дескрипторе. Что считать «маленьким» файлом, зависит от размера кластера. Если при форматировании раздела размер блока был установлен равным 1024 байта, то «маленькими» являются файлы размером до 12 Кбайт; при размере блока 8120 байтов границей становится уже 98 Кбайт.

Если файл занимает более 12 блоков, 13е поле записи содержит адрес кластера, в котором перечислены номера следующих блоков файла. При размере блока 4096 байтов, в блоке, на который ссылается 13й элемент, может быть записано до 1024 номеров следующих кластеров файла. Это называют косвенной адресацией.

Если размер файла превышает 12 + 1024 блоков, задействуется 14е поле. В нем хранится номер блока, содержащего 1024 номеров блоков, каждый из которых хранит еще по 1024 номеров блоков данных файла. Наконец, если для файла требуется более 12 + 1024 + 1 048 576 = 1 049 612 блоков, то используется последнее 15е поле записи дескриптора. Подобная трехуровневая древовидная структура адресации позволяет, с одной стороны, очень быстро находить файлы небольшого размера, с другой стороны, максимальный размер файла достигает 2 Тбайт.