Очистка inodes
Inodes (индексы узлов) представляют собой количество файлов, которые разрешено создать на диске. Это специальные структуры данных в файловой системе, которые содержат информацию о файлах, каталогах и других объектах на диске. Каждый файл или объект в файловой системе занимает один inode. Для проверки количества доступных индексах узлов inodes в файловой системе используйте команду:
df -i
Если вывод аналогичен изображению ниже и у Вас на сервере исчерпались inodes для файловой системы, следует провести освобождения inodes. Это процесс удаления inodes которые больше не используются или превышают лимит, установленный на диске. Это может включать удаление временных файлов, логов, старых резервных копий и других ненужных файлов.
Ежедневный запуск очистки inodes может быть обоснован в случаях, когда у вас есть большое количество сессий, которые не правильно управляются или оставляют временные файлы, в результате чего исчерпывается лимит inodes.
Причины для очистки inodes:
-
Большое количество сессий: Если на вашем веб-сайте или ваших PHP-скриптах неправильно управляются сессии, это может привести к созданию большого количества временных файлов сессий. Со временем эти файлы могут накапливаться и занимать много inodes. Очистка поможет удалить устаревшие сессионные файлы и предотвратить превышение лимита inodes.
-
Неправильно настроенные PHP-скрипты: Некоторые PHP-скрипты или веб-приложения могут создавать временные файлы или кэшировать данные, которые не удаляются автоматически. Если эти файлы накапливаются со временем, это может привести к исчерпанию inodes. Ежедневная очистка поможет удалить такие временные файлы и освободить inodes.
-
Предотвращение ошибок: Предупредительная очистка inodes является проактивной мерой предосторожности для предотвращения сложностей, связанных с исчерпанием inodes. Если вы знаете, что ваш сайт или ваши скрипты могут создавать большое количество временных файлов или сессий, регулярная очистка поможет поддерживать баланс и предотвращать проблемы с исчерпанием inodes.
-
Повышение производительности: Когда inodes исчерпываются, это может привести к ошибкам с функционированием файловой системы. Возможны задержки при чтении, записи или доступе к файлам. Проведение ежедневной/еженедельной очистки поможет поддерживать производительность файловой системы на оптимальном уровне.
-
Устранение ошибок и сбоев: Если inodes исчерпываются, это может вызывать ошибки и сбои в работе различных компонентов системы, особенно если файловая система используется множеством приложений или пользователей. Ежедневная/еженедельная очистка поможет предотвратить подобные сложности и обеспечить стабильную работу системы.
Анализ.
Чтобы определить количество inodes и найти соответствующие папки, можно воспользоваться следующими командами:
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
Очистка inodes для ISPmanager.
ISPmanager - это панель управления хостингом, предоставляющая средства для управления веб-серверами, доменами, почтовыми ящиками, базами данных и другими хостинг-ресурсами. Для очистки inodes в ISPmanager выполните следующие команды:
find /var/www/*/data/mod-tmp -name "sess_*" -type f -exec rm {} \;
find /var/www/*/data/bin-tmp -name "sess_*" -type f -exec rm {} \;
Очистка inodes для VestaCP.
VestaCP - это бесплатная панель управления хостингом, которая предлагает простой и интуитивно понятный интерфейс для управления веб-сервером, доменами, базами данных и другими хостинг-ресурсами. Для очистки inodes в VestaCP используйте следующую команду:
/usr/bin/find /home/admin/tmp/ -type f -name "sess*" -delete
Если в панели VestaCP есть множество пользователей, то следует использовать команду:
/usr/bin/find /home/*/tmp/ -type f -name "sess*" -delete
Очистка inodes по cron при VestaCP. Если есть сайт, который создает много сессий, рекомендуется добавить следующую команду в ежедневную задачу (cron) для автоматического выполнения очистки inodes:
nano /etc/cron
0 0 * * * /usr/bin/find /home/*/tmp/ -type f -name "sess*" -delete
Здесь 0 0 * * *
означает, что задача будет выполняться каждый день в полночь. Вы можете настроить время выполнения задачи по своему усмотрению, используя синтаксис cron.
Скрпит с циклом.
В случае, если в каталоге содержится огромное количество файлов (свыше 50-100 тыс.), и удаление файлов стандартными методами невозможно, можно запустить скрипт с циклом для удаления файлов по очереди в папке `/home/admin/tmp`:
screen
cd /home/admin/tmp
for i in `ls`; do rm -f $i; done
Однако такой процесс длительный и займет несколько часов времени. Рекомендуется запускать в screen-сессии.
Или же:
1. Переименуйте папку `mod_tmp` в `mod_tmp_old`. Для новых сессий создайте новую папку `mod_tmp`.
2. Очистите папку `mod_tmp_old` с помощью команды:
find mod_tmp_old/ -type f -mmin +360 -delete
Команда ищет обычные файлы в директории tmp
, которые были изменены более 6 часов назад, и удаляет их.
Выводы.
Очистка inodes является важным процессом для поддержания эффективности и стабильности работы операционных систем с большим количеством сайтов.