LiteSpeed незаметно стал серьезным конкурентом среди веб-серверов, сочетая в себе гибкость Apache и высокую скорость Nginx. Благодаря событийно-ориентированной ...
Блог компании 3v-Hosting
6 мин.
Вопреки обычному стилю статей в нашем блоге - эта статья написана в формате короткого конкретного мануала, так как затронутый в ней вопрос решается конкретными действиями и не требует долгих размышлений об истории вопроса и его философии, как мы это любим :)
Мы только лишь подчеркнём, что этот мануал рассчитан прежде всего на пользователей Debian и Ubuntu. Конечно, команды диагностики df, du, find и lsof подходят и для большинства других Linux-систем, но вот команды apt актуальны для Debian-подобных дистрибутивов, а работа с journalctl - для систем с systemd.
Итак, первое, с чего стоит начать если вы получили сообщение и No space left on device - НЕ начинайте сразу удалять файлы из /var. Для начала нужно провести небольшое расследование и найти, что именно заполнило свободное место в данном разделе.
Первым делом проверяем действительное заполнение раздела, чтобы исключить ошибочные уведомления:
df -h /var
Если Use% близок к 100%, то файловая система действительно заполнена.
Заодно проверим inode:
df -i /var
и если IUse% достиг 100%, то проблема в количестве файлов. Такое бывает при миллионах мелких session-, cache- или временных файлов.
sudo du -xhd1 /var | sort -h
Например:
120M /var/cache 380M /var/log 1.1G /var/www 18G /var/lib 20G /var
В этом случае мы идём в /var/lib и повторяем команду для найденного крупного каталога:
sudo du -xhd1 /var/lib | sort -h
Отдельные файлы больше 500 МБ можно найти так:
sudo find /var -xdev -type f -size +500M -exec ls -lh {} \;
Смотрим размеры:
sudo du -h --max-depth=1 /var/log | sort -h
Ищем самые большие логи:
sudo find /var/log -type f -printf '%s %p\n' | sort -n | tail -20
Активный лог лучше обнулить, а не удалять, так как не все сервисы могут создавать логи самостоятельно и это может привести к падению некоторых сервисов:
sudo truncate -s 0 /var/log/example.log
После этого проверьте причину роста конкретного лога, а также проверьте настройки logrotate - ну или настройте его, если ещё этого не сделали. Если же приложение снова пишет гигабайты ошибок, то очевидно, что свободное место скоро снова быстро закончится.
Размер журнала:
sudo journalctl --disk-usage
Удалить записи старше 14 дней:
sudo journalctl --vacuum-time=14d
Или ограничить текущий объём:
sudo journalctl --rotate sudo journalctl --vacuum-size=500M
Постоянный лимит можно задать в конфигурации journald в файле /etc/systemd/journald.conf:
[Journal] SystemMaxUse=500M
Сначала проверяем:
docker system df
Если нужно подробнее:
docker system df -v
Удалить стандартный набор неиспользуемых объектов:
docker system prune
!Не удаляйте содержимое /var/lib/docker/overlay2 вручную.
С docker system prune -a и особенно --volumes тоже будьте осторожны, так как Docker может считать volume неиспользуемым, хотя внутри остались нужные данные.
Проверяем:
sudo du -sh /var/cache/apt
И очищаем скачанные пакеты:
sudo apt clean
Также можно проверить ненужные зависимости:
sudo apt autoremove
Перед подтверждением autoremove прочитайте список пакетов, которые будут удалены.
Проверяем:
sudo du -xhd1 /var/lib | sort -h
Здесь осторожно. В /var/lib находятся рабочие данные Docker, PostgreSQL, MySQL/MariaDB и других сервисов.
Внимание! Никогда не выполняйте полную очистку данного каталога!
Если много места занимает /var/lib/mysql или /var/lib/postgresql, то ищите причину средствами самой СУБД. Файлы работающей базы вручную не удаляйте.
Удалённый файл может продолжать занимать диск, если его держит открытым работающий процесс.
Проверяем:
sudo lsof +L1
Если там обнаружился большой удалённый лог, найдите удерживающий его процесс и корректно перезапустите соответствующий сервис. После закрытия файлового дескриптора место освободится.
df -h /var df -i /var
Проверяем упавшие сервисы:
systemctl --failed
По сути, схема диагностики получается достаточно простой:

Ну а если вам понадобится Linux VPS для тестов или развёртывания своего проекта, то вы знаете куда обратиться.
Настройка gzip и Brotli в Nginx: сжатие HTML, CSS и JavaScript, выбор уровня компрессии, снижение нагрузки на сервер, проверка и решение типичных проблем.
Что такое epoll и почему Nginx считается одним из самых быстрых веб-серверов? Разбираем работу epoll, отличия от select и poll, событийную модель и настройку Ng...
Безопасное удаление старых ядер Linux в Ubuntu, Debian, AlmaLinux, Rocky Linux и CentOS. Очистка раздела /boot, работа с APT и DNF, обновление GRUB и защита сер...