К основному содержимому

Диск заполнен на VDS: как найти пожирателя места

VDS / VPS серверы · 29.09.2026

Как быстро проверить, что место на диске закончилось

Если сайт или база данных на VDS вдруг перестали отвечать, а в логах видны ошибки записи — в первую очередь проверьте свободное место на диске. Команда df -h показывает использование по разделам в удобном виде, с процентами и объёмом в гигабайтах.

df -h

Если раздел / или /var показывает 100%, дальше нужно искать конкретные файлы и папки, которые съели место. Сообщение "диск заполнен" ничего не говорит о причине — причину ищут отдельно, шаг за шагом.

Как найти, какие папки занимают больше всего места

Утилита du считает размер каталогов рекурсивно. Чтобы не листать длинный список, сортируйте вывод и ограничивайте глубину:

du -h --max-depth=1 /var | sort -rh | head -n 10

Так вы получите топ-10 самых тяжёлых подпапок внутри /var. Повторите команду для найденной директории, чтобы спуститься на уровень глубже и найти конкретного виновника. Для интерактивного анализа удобно поставить ncdu — он строит навигацию по дереву каталогов прямо в терминале:

apt install ncdu
ncdu /var

Удалённые, но открытые файлы: невидимый расход места

Иногда du и df показывают разные цифры использования диска. Причина — процесс держит открытым файл, уже удалённый из файловой системы. Место не освобождается, пока процесс не закроет дескриптор. Найти такие файлы можно так:

lsof +L1

В выводе видны PID процесса и размер удалённого, но всё ещё занятого файла. Часто это забытые логи приложений после ротации без перезапуска сервиса или зависшие временные файлы Nginx и MySQL. Решение простое — перезапустить конкретный сервис:

systemctl restart nginx

Логи и журналы — самая частая причина переполнения

На VDS без настроенной ротации логи растут годами. Проверьте размер системного журнала systemd и логов приложений в /var/log:

journalctl --disk-usage
du -sh /var/log/*

Если журнал systemd весит несколько гигабайт, ограничьте его размер и почистите старые записи — подробный разбор параметров есть в статье про journalctl и rsyslog. Для остальных логов настройте ротацию через logrotate, чтобы проблема не возвращалась каждый месяц.

Пакетный кэш, Docker и старые ядра

Кроме логов, место съедают кэши менеджеров пакетов и неиспользуемые образы Docker. На Ubuntu и Debian почистите кэш APT и удалите старые версии ядра:

apt clean
apt autoremove --purge

Если на сервере запущен Docker, образы и остановленные контейнеры способны занимать десятки гигабайт. Проверьте расход и очистите неиспользуемое:

docker system df
docker system prune -a

Команда docker system prune -a удаляет все неиспользуемые образы, а не только "висячие" — применяйте её осознанно, если на сервере есть другие активные проекты.

Что делать, если диск заполнен на 100% прямо сейчас

Когда места нет совсем, привычные команды иногда отказывают с ошибкой записи. Сначала удалите самый очевидный крупный файл, найденный через du, затем разберитесь с причиной. Не удаляйте файлы вслепую в системных каталогах — сначала проверьте через lsof, активен ли процесс, использующий их.

Итоговый чек-лист:

  • Настройте мониторинг свободного места заранее — см. статью про мониторинг ресурсов VDS.
  • Включите и проверьте ротацию логов для всех сервисов.
  • Ограничьте размер журнала systemd параметром SystemMaxUse.
  • Регулярно чистите неиспользуемые образы Docker и кэш пакетов.
  • Держите под рукой команду du -h --max-depth=1 | sort -rh — она закрывает 90% случаев диагностики.
← Назад в базу знаний Задать вопрос поддержке