Какую информацию хранит inode в Linux?

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

Ответ

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

Основная информация в inode включает:

  • Идентификаторы: Уникальный номер inode (inode number).
  • Тип файла и права доступа: Регулярный файл, каталог, символьная ссылка, блочное/символьное устройство, FIFO, сокет. Права доступа (rwx) для владельца, группы и остальных.
  • Владелец и группа: User ID (UID) и Group ID (GID) владельца.
  • Размер файла: Размер в байтах.
  • Временные метки (timestamps):
    • atime — время последнего доступа к данным файла.
    • mtime — время последнего изменения данных файла.
    • ctime — время последнего изменения метаданных inode (например, прав доступа).
  • Счетчик ссылок: Количество жёстких ссылок (hard links), указывающих на данный inode. Файл удаляется с диска, когда этот счётчик становится равным нулю.
  • Указатели на данные: Структура указателей на блоки данных файла на диске (прямые, косвенные, двойные косвенные и т.д.).

Как посмотреть информацию из inode:

# Показать номер inode файла
ls -i myfile.txt

# Вывести подробную информацию из inode (все метаданные)
stat myfile.txt

# Для каталога: посмотреть inode текущей и родительской директории (`.` и `..`)
ls -ldi . ..

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