Что такое inode в Linux

«Что такое inode в Linux» — вопрос из категории Linux, который задают на 45% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Inode (index node) — это фундаментальная структура данных в файловых системах Unix/Linux (ext4, XFS и др.), которая хранит метаданные о файле или каталоге, но не его имя или содержимое.

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

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

Практическая работа с inode:

  • Просмотр inode файла:
    ls -i myfile.txt
    # 1234567 myfile.txt
  • Просмотр всех метаданных:
    stat myfile.txt
  • Поиск файла по его inode (полезно при восстановлении):
    find / -inum 1234567 2>/dev/null

Ключевые моменты для DevOps:

  1. Жесткие ссылки (hard links): Два разных имени файла могут указывать на один и тот же inode. Удаление одного имени лишь уменьшает счетчик ссылок. Файл физически удаляется, только когда счетчик становится 0.
  2. Лимит inode: Файловая система имеет ограниченное количество inode. Можно исчерпать inode, даже если есть свободное место на диске. Проверить можно командой df -i.
  3. Влияние на операции: Переименование или перемещение файла в пределах одной файловой системы — быстрая операция, так как меняется только запись в каталоге, а inode и данные остаются на месте.

Понимание inode критично для диагностики проблем с дисковым пространством, работы с ссылками и глубокого понимания работы файловой системы.