Inode
100%

Файловая система · Урок 11

Inode

Узнайте, как номера inode связывают имена в каталогах с метаданными и данными объектов файловой системы.

В основанных на inode файловых системах Unix каталог сопоставляет имя каждой записи с номером inode. Inode представляет объект файловой системы и хранит метаданные, необходимые для поиска и интерпретации его данных. Поэтому путь не хранится как собственная основная идентичность объекта.

Метаданные inode

Распространённые метаданные, связанные с inode:

  • тип объекта и режим разрешений;
  • владелец-пользователь и группа;
  • логический размер и учёт выделенных блоков;
  • количество жёстких ссылок;
  • время доступа, изменения содержимого и изменения состояния;
  • ссылки на данные файла или специфичные для файловой системы структуры экстентов.

Inode обычно не хранит имя записи каталога. Файловая система также может хранить расширенные атрибуты, списки контроля доступа, время рождения, встроенные данные и другую информацию через структуры конкретного формата.

ctime — время изменения состояния inode, а не обязательно время создания файла. Отдельная временная метка рождения или создания необязательна и может отсутствовать.

Где компонент пути обычного файла обычно связывается с номером inode?

Номера inode и область файловой системы

Покажите номера inode:

$ ls -li

Номер inode находится в первом поле. Подробно изучите один объект:

$ stat path

Номер inode уникален лишь внутри одной файловой системы в конкретный момент. Такой же номер может существовать в другой файловой системе, а после освобождения inode номер может использоваться повторно. Для надёжной идентификации объекта учитывайте и идентичность файловой системы, и номер inode.

В какой области номер inode служит идентификатором объекта?

Жёсткие ссылки и открытые ссылки

Несколько записей каталогов могут ссылаться на один inode — это жёсткие ссылки. Создание ещё одной жёсткой ссылки увеличивает счётчик ссылок объекта. Удаление одного имени уменьшает счётчик, но не удаляет данные, пока остаётся другая ссылка.

Даже после удаления последней записи каталога открытый файл остаётся выделенным до закрытия последней ссылки процесса. Его счётчик ссылок может быть равен нулю, пока файловый дескриптор всё ещё обращается к нему. Поэтому удаление большого открытого журнала может не сразу уменьшить использование в df.

Когда обычно освобождаются ресурсы файла, утратившего имена?

Ёмкость inode

В файловых системах с конечным или отображаемым пулом inode миллионы мелких файлов могут исчерпать ёмкость метаданных раньше блоков данных. Проверьте учёт inode смонтированных систем:

$ df -i

Если свободных inode нет, создание файла может завершиться ошибкой, даже когда df -h показывает свободные блоки. Стратегии распределения различаются: одни файловые системы заранее создают структуры inode, другие динамически управляют метаданными и могут иначе сообщать ёмкость inode.

Что сообщает df -i, если файловая система предоставляет учёт inode?

Зависимое от файловой системы отображение данных

Не считайте, что у каждого inode ровно 12 прямых указателей и три косвенных. Это полезное описание некоторых классических компоновок, но современная ext4 может использовать экстенты, а XFS, Btrfs и другие системы — иные структуры. Встроенные данные, сжатые экстенты и copy-on-write дополнительно меняют взаимосвязь.

Когда внутреннее отображение действительно важно, используйте специфичные для файловой системы диагностические средства только в режиме чтения или документированном режиме. Для обычного администрирования stat, find -inum, df -i и учитывающие ссылки инструменты предоставляют более безопасные абстракции.

Почему нельзя предполагать одну фиксированную компоновку указателей для каждого inode?

Урок завершён

Вы завершили Inode

Теперь вы можете связывать пути, inode, ссылки и ёмкость файловой системы.

  • Считать записи каталогов сопоставлениями имён и номеров inode.

  • Читать метаданные и временные метки, не путая ctime с созданием.

  • Ограничивать область номера inode одной файловой системой и моментом.

  • Учитывать жёсткие ссылки и открытые файловые дескрипторы.

  • Использовать модели конкретных файловых систем вместо универсальной схемы указателей.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Файловая система