Встречается на 33% собеседований по DevOps

Что такое inode

Inode (индексный дескриптор) — это структура данных в файловой системе UNIX и UNIX-подобных операционных систем, которая хранит метаданные о файле, кроме его имени и содержимого. Каждый файл или каталог имеет уникальный inode, описывающий его атрибуты и расположение данных на диске. Inode играет ключевую роль в управлении файлами, определяя права доступа, владельца, размер и физическое размещение блоков данных.

Как это работает

Когда операционная система обращается к файлу, она выполняет следующие шаги:

  1. Каталог, в котором находится файл, содержит записи, связывающие имя файла с номером inode.
  2. Система получает номер inode из каталога и находит соответствующий inode в таблице inode файловой системы.
  3. Из inode система извлекает метаданные и указатели на блоки данных, где хранится содержимое файла.
  4. Далее выполняются операции чтения, записи или изменения на основе этой информации.

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

Что хранится в inode

Inode содержит следующие метаданные:

  • Тип файла: обычный файл, каталог, символическая ссылка, устройство и т.д.
  • Права доступа: разрешения на чтение, запись и выполнение для владельца, группы и остальных пользователей.
  • UID и GID: идентификаторы владельца файла и группы.
  • Размер файла: в байтах.
  • Временные метки: время последнего доступа (atime), модификации (mtime) и изменения inode (ctime).
  • Счётчик ссылок: количество жёстких ссылок на inode.
  • Указатели на блоки данных: адреса блоков на диске, где хранится содержимое файла.

Важно отметить, что имя файла не хранится в inode — оно находится в записи каталога. Это позволяет нескольким жёстким ссылкам указывать на один и тот же inode.

Практическое значение и ограничения

Количество inode в файловой системе фиксируется при её создании. Это означает, что максимальное число файлов ограничено числом inode, даже если на диске ещё есть свободное место. Например, если inode исчерпаны, создание новых файлов станет невозможным, хотя место для данных останется.

Для диагностики и администрирования используются команды:

  • ls -i — показывает номер inode для каждого файла.
  • df -i — отображает использование inode в файловых системах.

Пример вывода df -i:

bash
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda1      6553600 123456 6430144    2% /

Подводные камни

  • Исчерпание inode: часто встречается на файловых системах с множеством мелких файлов (например, кэши, очереди сообщений). Решение — пересоздание файловой системы с большим количеством inode или использование xfs с динамическим выделением.
  • Жёсткие ссылки: не могут указывать на файлы на других файловых системах, так как inode уникален только в пределах одной ФС.
  • Символические ссылки: хранят путь к целевому файлу, а не inode, поэтому могут ссылаться на файлы на других ФС.

Коротко

  • Inode — структура данных с метаданными файла: тип, права, владелец, размер, временные метки, счётчик ссылок и указатели на блоки данных.
  • Имя файла хранится в каталоге и связано с номером inode; содержимое файла находится по указателям из inode.
  • Количество inode ограничено при создании ФС, что может привести к невозможности создавать новые файлы при свободном месте.
  • Для проверки inode используйте ls -i и df -i; понимание inode помогает диагностировать проблемы с диском и оптимизировать хранение.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы