Диск занят на 60 процентов, а система пишет «No space left on device». Первая мысль — с...
Диск занят на 60 процентов, а система пишет «No space left on device». Первая мысль — сошла с ума. На самом деле кончились не байты, а inode. Каждый файл, каким бы маленьким он ни был, занимает одну запись в таблице inode. Их количество задаётся при создании файловой системы и не меняется. Миллион крошечных файлов — миллион inode при копеечном объёме. Проверяется командой df -i. Если в колонке использования стоит 100 процентов — диагноз готов. Кто обычно виноват: почтовые очереди, кэш веб-приложений, сессии PHP, забытые задания в /var/spool, каталог с миллионом мелких логов. Искать так: du --inodes -x -d 3 /var | sort -n | tail — покажет каталоги-рекордсмены по числу файлов, а не по размеру. Лечение — вычистить мусор и починить то, что его плодит. Если это штатная нагрузка, файловую систему придётся пересоздавать с другим соотношением, потому что увеличить число inode на живой ext4 нельзя. И в мониторинг обязательно добавьте проверку inode отдельно от места: они кончаются внезапно и без предупреждения. Ловили такое у себя?