X

Переполнение диска по количеству inode

Процентов 80 всех проблем с unix ОС связно со внезапно закончившимся местом. Симптомы всегда разные, в зависимости от наблюдаемого сервиса. Как правило это невозможность записи файла, создания сессии, обнуление размера файла.
Проверить наличие свободного места можно командой
df –h

Но я расскажу о проблеме, с аналогичными симптомами, при которой команда df –h будет показывать наличие свободного места в системе.
Дело может быть в переполнении inod. Inode – это индексные дескрипторы, в них хранится метаинформация о файлах. На inode выделяется примерно 1% от объема диска. Обычно, этого вполне хватает, но бывают случаи и сбои, когда inodы переполняются. Подробнее об этом можно почитать здесь.
Проверить количество inode можно командой
df –i

Если диагностировано переполнение inode, надо найти какой именно сервис за это отвечает. В веб-разработки это чаще всего неудаляющиеся файлы сессий и неправильно настроенный кеш.
Далее необходимо найти, в какой папке создается много файлов. Можно это сделать эмпирически, можно воспользоваться командой:
find <точка монтирования файловой системы> -type d | ( while read A; do B=`ls -l «$A» | wc -l`; if [ «$B» -gt 12345 ] ; then echo $B $A; fi ; done)
точка монтирования файловой системы — например корень / или /my/dir/
12345 — это условие проверки, если кол-во файлов больше этого числа, то показать путь к директории, чтобы потом можно было почистить эту директорию.
После того, как найдена причина рекомендуется остановить генерирующий файлы сервис и решить проблему системно.
После чего уже смело можно удалять многочисленные файлы. Однако и это не так просто: такое действие начинает очень сильно нагружать жесткий диск. Все остальные задачи скорее всего выполняться не будут.

По практике не стоит удалять файлы командами в лоб rm -rf ./* или find . -type f -exec rm -v {} \; в результате их выполнения сервер скорее всего повиснет. На практике удаление через Midnight Commander при условии, что сервис генерирующий файлы остановлен вполне неплохо справляется с задачей.

Категории: unix
mgordeev:
Disqus Comments Loading...