Ответ
Inode (index node) — это структура метаданных файла (владелец, права, timestamps, указатели на данные). Их количество фиксировано при создании файловой системы. Проблема исчерпания inode возникает, даже если есть свободное дисковое пространство.
Типичные сценарии:
- Файловая система, созданная с малым запасом inode. По умолчанию
mkfs.ext4резервирует один inode на каждые 16 КБ пространства. Для раздела в 1 ГБ это ~65k inode. Если хранить миллионы мелких файлов, их не хватит. - Работа с огромным количеством мелких файлов: Кэши пакетных менеджеров (apt/yum), почтовые очереди (Maildir), сессии PHP, лог-файлы приложений, Docker-образы (много слоев).
- Жесткие ссылки (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), чтобы предотвратить проблему.