Закончились inode: почему свободные гигабайты не помогают

2 мин чтения

Как проверить нехватку inode и найти каталоги, где накопилось слишком много маленьких файлов.

Свободное место не всегда означает возможность записи
  1. Блокиdf -h показывает доступные байты
  2. Inodedf -i показывает доступные файловые записи
  3. КаталогиИщем скопления мелких файлов перед очисткой

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

Проверяем оба ограничения

df -h /var/cache
df -i /var/cache
sudo du --inodes -x --max-depth=2 /var/cache

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

Находим причину накопления

Например, кэш миниатюр, где для каждого запроса создаётся отдельный маленький файл, а очистка перестала запускаться. Сравните число объектов в найденном каталоге с правилами приложения. Папка с тысячами нужных документов и папка с забытыми временными результатами требуют разных действий. Возраст файла сам по себе не доказывает, что его можно удалить.

Перед очисткой проверьте владельца данных, ожидаемое время хранения и способ восстановления. Для кэша предпочтительна штатная команда приложения: она может учитывать активные задания и связанные записи. Для почтового хранилища произвольное удаление особенно опасно. Не запускайте массовую очистку только потому, что каталог оказался первым в диагностическом выводе.

Что проверить после очистки

После согласованной очистки повторите df и попробуйте создать небольшой временный файл от имени приложения в его рабочем каталоге. Такая проверка отделяет освобождение inode от проблем доступа и квот. Если число свободных inode не изменилось, уточните файловую систему и проверьте другие ограничения. Затем восстановите задачу обслуживания и добавьте наблюдение за двумя показателями: блоками и inode.

Способ выделения inode зависит от файловой системы, и менять их количество можно не везде. Не пытайтесь форматировать работающий раздел по случайной инструкции. Если маленьких файлов стало слишком много даже при нормальной очистке, подумайте об их упаковке или другом хранилище. Иначе освободившиеся inode скоро закончатся опять.

Источники и дальнейшее чтение