На каких типах файловых систем или в каких сценариях могут закончиться inode’ы?

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

Ответ

Inode (index node) — это структура метаданных файла (владелец, права, timestamps, указатели на данные). Их количество фиксировано при создании файловой системы. Проблема исчерпания inode возникает, даже если есть свободное дисковое пространство.

Типичные сценарии:

  1. Файловая система, созданная с малым запасом inode. По умолчанию mkfs.ext4 резервирует один inode на каждые 16 КБ пространства. Для раздела в 1 ГБ это ~65k inode. Если хранить миллионы мелких файлов, их не хватит.
  2. Работа с огромным количеством мелких файлов: Кэши пакетных менеджеров (apt/yum), почтовые очереди (Maildir), сессии PHP, лог-файлы приложений, Docker-образы (много слоев).
  3. Жесткие ссылки (hard links): Каждая жесткая ссылка использует один inode.

Диагностика:

df -i  # Показать использование inode по файловым системам

Вывод покажет столбцы IUsed, IFree и IUse%.

Решение:

  • Очистка: Удалите ненужные мелкие файлы: find /path/to/dir -type f -name "*.tmp" -delete.
  • Настройка при создании ФС: Укажите большее соотношение байт/inode: mkfs.ext4 -i 2048 /dev/sdb1 (один inode на каждые 2 КБ).
  • Мониторинг: Добавьте проверку IUse% в вашу систему мониторинга (Zabbix, Prometheus), чтобы предотвратить проблему.