Rain WikiWindows · Linux · Android

Иноды и ошибка «No space left on device»

Понятиеext4 и похожие файловые системы

Инод (inode) — это структура данных, которую файловые системы в стиле Unix используют для хранения информации о файле, такой как владелец, права доступа, размер и расположение данных. Каждый файл использует один инод, а во многих файловых системах их количество фиксировано, поэтому миллионы крошечных файлов могут вызвать ошибку «No space left on device», даже если df -h показывает наличие свободного места.

1Как это проверить

Команда df -i выводит общее количество, использованные и свободные иноды для каждой файловой системы. ls -i показывает номер инода файла, а stat <file> — подробную информацию о нем.

2Типичные причины

Директории сессий или кэша веб-приложений, очереди почтовых сообщений, неротированные мелкие лог-файлы и кэши сборок могут создавать миллионы файлов.

3Поиск директории

GNU du умеет считать иноды: du --inodes -x / | sort -n | tail выводит директории с наибольшим количеством записей.

Как исправить исчерпание инодов

  1. Подтверждение: df -i (IUse% близко к 100%).
  2. Поиск директории: sudo du --inodes -x --max-depth=3 / | sort -n | tail -20
  3. Прежде чем что-либо удалять, проверьте, какой процесс создает эти файлы.
  4. Удалите старые файлы приложения с помощью его собственных инструментов или команды find, например: find /path -type f -mtime +7 -delete после предварительного запуска без ключа -delete.

Осторожно

  • Всегда сначала запускайте find без -delete и просматривайте список.
  • Количество инодов в ext4 фиксируется при создании файловой системы.

Источники

  1. inode(7) man7.org
  2. df(1) man7.org
  3. du(1) man7.org
  4. find(1) man7.org

Последняя проверка: