disk quota exceeded или как очистить Inodes в debian

Впс на Debian 6 стала жестко тормозить.

Перезагрузка ничего не изменила. В ISPmanager при изменении параметров стала вылетать ошибка:

disk quota exceeded

Проверяем место на жестком:

df -h
#Filesystem            Size  Used Avail Use% Mounted on
#/dev/simfs            100G  4.2G   96G   5% /
df -i
#Filesystem            Inodes   IUsed   IFree IUse% Mounted on
#/dev/simfs            700000   700000  0     100%    /

Вот и проблема, все inodes заняты.
Inodes — это количество файлов разрешенное создавать на диске.
Чтобы подсчитать количество и найти папку воспользуемся командами:

cd /
find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
#      1 .codepage
#      1 home
#      2 backupvse
#      2 tmp
#     10 root
#     88 bin
#     91 sbin
#    237 lib
#    840 etc
#  20580 usr
# 700000 var

Папка var. Можно двигаться постепенно cd var повторяя команду выше, но скорее всего это папка
/var/www/имя_пользователя/data/mod-tmp (либо /var/www/имя_пользователя/data/bin-tmp).
Идем

cd /var/www/имя_пользователя/data

Повторяем команду и убеждаемся в что mod-tmp забита по полной сессиями.
Для очистки папки mod-tmp:

find /var/www -wholename "*/data/mod-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm
find /var/www -wholename "*/data/bin-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm #(если есть папка bin-tmp)

-cmin +360 — время, все файлы старше которого будут удалятся.
Update 10.11.2015
Аналогичным образом чистятся inodes, если сайты лежат не в /var/www/имя_пользователя/data, а в папке /home/имя_пользователя/data

find /home -wholename "*/data/mod-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm
find /home -wholename "*/data/bin-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm

Ждем завершения. Процесс довольно длительный, так что попейте чая))
После завершения смотрим:

df -i
#Filesystem            Inodes   IUsed   IFree IUse% Mounted on
#/dev/simfs            700000   68769  631231   10% /

Чтобы такого не повторялось идем в /etc/php5/apache2/php.ini и включаем авто удаление сессий.
Однако в связи с особенностями системы безопасности, включение этих параметров допустимо при работе веб-сервера apache в режиме mpm_itk или mod_fcgi.
Посмотреть режим работы можно с помощью команды:

apachectl -M | grep mpm
# mpm_itk_module (static)
Syntax OK

Если apache у вас в режиме mpm_itk (как перейти на такой режим работы читать в статье переводим Apache в режим mpm-ITK + ISPmanager) или mod_fcgi, то

session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440

Если apache у вас в режиме mpm_prefork, то

session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440

и делаем рестарт apache

/etc/init.d/apache2 restart

Профит!

Запись опубликована в рубрике Администрирование. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

code