До основного вмісту

Диск заповнений на 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% випадків діагностики.
← Назад до бази знань Поставити питання підтримці