Материал предоставлен http://it.rfet.ru

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

Поскольку благодаря жестким ссылкам у файла может быть несколько имен, понятно, что вся существенная информация о файле в файловой системе привязана не к имени. В файловых системах Linux вся информация, необходимая для работы с файлом, хранится в индексном дескрипторе. Для каждого файла существует индексный дескриптор: не только для обычных файлов, но и для каталогов, файлов-дырок и т. д. Каждому файлу соответствует один индексный дескриптор.

Индексный дескриптор - это описание файла, в котором содержится:

  • тип файла (обычный файл, каталог, файл-дырка и т. д.);
  • права доступа к файлу;
  • информация о том, кому принадлежит файл;
  • отметки о времени создания, модификации, последнего доступа к файлу; размер файла;
  • указатели на физические блоки на диске, принадлежащие этому файлу - в этих блоках хранится “содержимое” файла.

Все индексные дескрипторы пронумерованы, поэтому номер индексного дескриптора - это уникальный идентификатор файла в файловой системе - в отличие от имени файла (жесткой ссылки на него), которых может быть несколько. Узнать номер индексного дескриптора любого файла можно при помощи все той же утилиты ls с ключом -i:

[ivan@localhost ivan]$ ls -i ./text-hardlink
examples/text
127705 examples/text 127705 ./text-hardlink

Пример 4.13. Информация об индексных дескрипторах файлов

Иван решил поинтересоваться номерами индексных дескрипторов файла text и жесткой ссылки на него text-hardlink - он обнаружил, что эти номера совпадают (”127705”), то есть этим двум именам соответствует один индексный дескриптор, т. е. один и тот же файл.

Все операции с файловой системой - создание, удаление и перемещение файлов - производятся на самом деле над индексными дескрипторами, а имена нужны только для того, чтобы пользователь мог легко ориентироваться в файловой системе. (Было бы очень неудобно запоминать многозначный номер каждого нужного файла или каталога.) Более того, имя (или имена) файла в его индексном дескрипторе не указаны. В файловой системе Ext2 имена файлов хранятся в каталогах: каждый каталог представляет собой список имен файлов и номеров их индексных дескрипторов. Жесткую ссылку (имя файла, хранящееся в каталоге) можно представлять как каталожную карточку, на которой указан номер индексного дескриптора - идентификатор файла.

Жесткая ссылка (hard link) — запись вида имя файла+номер индексного дескриптора в каталоге . Жесткие ссылки в Linux - основной способ обратиться к файлу по имени.

Жесткие ссылкиСимвольные ссылки