Перейти к основному контенту

Заняты объекты файловой системы (i-node) на VPS

Общая информация

Со временем, число файлов и директорий на сервере неуклонно растет.
В ОС Linux за «файл» считается практически любой объект, будь то обычный файл или папка. Каждому такому объекту ставится в соответствии номер «i-node». И чем больше будет создано файлов и директорий, тем больше «i-node» будет занято.

Узнать ограничение i-node на каждом тарифном плане.

Только для VPS на OpenVZ

Ограничение по i-node учитывается только для тарифных планов VPS на OpenVZ.
Это тарифные планы VPS-X и SSD-VPS-X.

Как узнать текущий процент занятых i-node?

Подключитесь к серверу по SSH и введите команду: df -i.
Вывод будет примерно таким:

-bash-4.1# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/simfs            420000   43870  376130   11% /
none                 6164127     158 6163969    1% /dev

Колонка «IUse%» показывает, что занято только 11% i-node.

При 100% занятых объектов файловой системы i-node сервер не сможет функционировать. При запросе к сайту, попытке зайти в панель управления будет выдаваться ошибка. Чтобы этого избежать, необходимо своевременно чистить ваш сервер от лишних файлов.

VPS с установленной CentOS

Закажите сервер с чистой CentOS или панелью управления ISPmanager всего за пару минут.

Заказать VPS c Centos

Чем заняты i-node?

Наиболее распространенные случаи:

Большая почтовая очередь

Чаще всего проблема актуальна при несанкционированных рассылках писем, т.е. сервер заражен вирусами и с него рассылается спам.

Просмотреть количество сообщений в очереди можно при помощи команды:

## Для Postfix:
postqueue -p| wc -l    

## Для Exim:
exim -bpc              

## Для Sendmail:
mailq | wc -l

Как очистить иноды на хостинге?

Очистить очередь можно командами:

## Для Postfix:
postsuper -d ALL

## Для Exim:
exipick -zi | xargs exim -Mrm    # (очистит все замороженные сообщения)
exipick -i | xargs exim -Mrm     # (очистит вообще все сообщения из очереди)

## Для Sendmail:
find /var/spool/mqueue -type f -exec rm -f {} \;

Все команды вводятся по SSH.

Множество файлов сессий

Следующие команды покажут число файлов сессий:

ls -R /var/www/*/data/mod-tmp | wc -l
ls -R /var/www/*/data/bin-tmp | wc -l

Эти команды удалят все файлы сессий:

find /var/www/*/data/mod-tmp -name "sess_*" -type f -exec rm {} \;
find /var/www/*/data/bin-tmp -name "sess_*" -type f -exec rm {} \;

Команды вводятся по SSH. Время выполнение команд может быть большим (из-за большого количества удаляемых файлов).

Создать CRON-задание на автоматическое удаление файлов сессий

Инструкция подходит для VPS с панелью управления ISPmanager.

  1. 1.
    Войдите в панель управления ISPmanager под пользователем root;
  2. 2.

    Перейдите в раздел Система — Планировщик и нажмите значок Создать:

    очистка файлов сессии vps ispmanager5 1

  3. 3.

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

    find /var/www/*/data/mod-tmp/ -name "sess_*" -exec rm {} \;

    find /var/www/*/data/bin-tmp/ -name "sess_*" -exec rm {} \;

    очистка файлов сессии vps ispmanager5 2

Кэш сайтов

Особенно актуально для CMS Bitrix, рекомендуем периодически очищать директорию /bitrix/cache/. Также проверяйте размер кэша остальных CMS.

Поиск файлов, занимающих больше всего i-node

Авторизуйтесь на сервера по SSH и введите команду:
ls -d1 ./* | while read i; do echo -en "$i\t"; find "$i" -name "*" | wc -l; done;
Команда покажет, в какой директории находится больше всего файлов.

Пример вывода:

-bash-4.1# ls -d1 /* | while read i; do echo -en "$i\t"; find "$i" -name "*" | wc -l; done;
/aquota.group   1
/aquota.user    1
/bin    104
/boot   15
/dev    159
/etc    1186
/home   1
/lib    5618
/lib64  334
/media  1
/mnt    1
/opt    23744
/proc   22216
/root   516
/sbin   142
/selinux        1
/srv    1
/sys    401
/tmp    4
/usr    35401
/var    294395

Видно, что больше всего файлов содержит в себе каталог /var.

Теперь перейдем в этот каталог при помощи команды: cd *имя_директории* и повторим первую команду:

-bash-4.1# cd /var/     # переходим в каталог /var
-bash-4.1# pwd          # проверяем, что мы перешли корректно
/var                    # все верно, мы в каталоге /var. Идем дальше
-bash-4.1# ls -d1 /* | while read i; do echo -en "$i\t"; find "$i" -name "*" | wc -l; done;

В результате вы увидите, какие каталоги внутри /var содержат больше всего файлов. И так, шаг за шагом, вы определите директорию, в которой расположено множество файлов. На этом этапе можно принимать решение об очистке директории. Однако будьте осторожны, не удалите системные файлы.

Что ещё может помочь?

  • повышение тарифного плана: чем выше тариф, тем больше i-node доступно;
  • подключение дополнительного дискового пространства: на каждый дополнительно подключенный ГБ количество i-node увеличивается на 10000.
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0