Прорпало место на VDS под управлением Linux Ubuntu? Давайте искать.


Практическое руководство по Ubuntu VDS показывает, как контролировать свободное место, быстро находить «тяжёлые» каталоги, настраивать и чистить журналы, а также безопасно удалять устаревшие файлы и кеши пакетов.​ Будут использованы df/du/ncdu для аудита диска, journald и journalctl для системного журнала, logrotate для текстовых логов, find для возрастной очистки и apt clean/autoclean/autoremove для кешей пакетов.

Мониторинг места

На сервере начните с обзора файловых систем: df -h покажет общий и свободный объём по разделам, а df -i — расход инодов, что важно при большом количестве мелких файлов. Для локализации «тяжёлых» директорий используйте du -xh --max-depth=1 по ключевым путям вроде /, /var, /home, чтобы увидеть суммарный размер на уровне каталогов. Эти базовые команды дают мгновенную картину, где именно убывает место и есть ли проблемы не только с байтами, но и с количеством инодов.

Быстрый аудит: ncdu

ncdu — интерактивный «ду» с текстовым интерфейсом: удобно проваливаться по каталогам, сортировать по объёму и удалять лишнее прямо из интерфейса.​ Установите и запустите: sudo apt update && sudo apt install ncdu, затем sudo ncdu / для аудита с правами администратора по всему диску.​ ncdu упрощает расследование «куда делось место» в /var, /home, /opt и позволяет сфокусироваться на реально крупных узлах.

Где растут логи

Системные двоичные журналы systemd хранятся в /var/log/journal и управляют собственным ретеншеном по лимитам SystemMaxUse и SystemKeepFree.​ Проверить текущий объём просто: journalctl --disk-usage покажет, сколько место занимают журналы и нужно ли урезать ретеншен.​ Помните, journald умеет автоматически подчищать старые записи при нехватке места, но лучше явно задать верхние пределы под ваш VDS.

Ограничение объёма journald

Создайте drop-in файл /etc/systemd/journald.conf.d/size.conf с параметрами, например: SystemMaxUse=500M и SystemKeepFree=15% для гарантии свободного пространства.​ После изменения конфигурации перезапустите службу: systemctl restart systemd-journald, чтобы немедленно применить новые границы по месту.​ Семейство параметров journald.conf официально документировано, включая единицы измерения и поведение «compact mode».

Ручная чистка журнала

Для разовой очистки воспользуйтесь «пылесосом» журнала: journalctl --vacuum-size=200M ограничит архивы до заданного объёма.​ Альтернативно можно срезать по времени, например journalctl --vacuum-time=7d для хранения только последней недели.​ Эти команды безопасно удаляют лишь устаревшие архивы журнала без вмешательства в текущую запись логов.

Logrotate для текстовых логов

Текстовые логи в /var/log ротуются logrotate: он архивирует, сжимает, удаляет старые файлы по политике, чтобы логи не съедали весь диск.​ Создайте политику в /etc/logrotate.d/ для приложений, используя директивы daily/weekly, rotate N, compress, missingok, notifempty и др.​ Проверить конфиг можно без выполнения ротации через logrotate /etc/logrotate.conf --debug, а принудительно запустить через -f.

Удаление старых файлов

Для возрастной очистки используйте find, например удалить файлы старше 30 дней: find /path -type f -mtime +30 -delete.​ Безопаснее сначала посмотреть, что будет удалено: find /path -type f -mtime +30 -print, а затем применять -delete или -exec rm -f {} ;.​ Подход годится для бэкапов, временных и архивных логов, если политика хранения соблюдена и путь задан точно.

Очистка APT и кешей

Кеш пакетов накапливается в /var/cache/apt/archives и может занимать гигабайты на небольших VDS.​ Очистка: sudo apt clean вычищает весь кеш, sudo apt autoclean — только устаревшие .deb, а sudo apt autoremove удаляет больше не нужные зависимости и старые ядра.​ Комбинация autoclean + autoremove обычно безопасна для плановой профилактики пространства.

Инструменты: сравнение

ИнструментНазначениеПример
dfСводка по разделам и инодамdf -h и df -i для общей картины и инодов
duСумма по каталогам/файламdu -xh --max-depth=1 /var для локализации «тяжёлых» узлов
ncduИнтерактивный аудитsudo ncdu / для быстрого исследования и удаления
journalctlУчёт и чистка журналаjournalctl --disk-usage и --vacuum-size=200M
logrotateРотация текстовых логовПолитики в /etc/logrotate.d/ с compress, rotate N
findВозрастная очисткаfind /var/log -type f -mtime +7 -delete
aptКеши и зависимостиapt clean/autoclean/autoremove для /var/cache/apt

Где обычно «тяжелеет»

/var/log/journal и архивы journald при активных сервисах и без лимитов SystemMaxUse.​ Текстовые логи в /var/log без корректной политики logrotate или при ошибках приложений с чрезмерным логированием.​ Кеши APT в /var/cache/apt/archives и исторические сборки/артефакты в рабочих каталогах.

Автоматизация

Ротация logrotate подключается системой автоматически и применяется регулярно согласно cron/timer, если конфигурации в /etc/logrotate.d/ заданы корректно.​ Для собственных архивов и временных файлов автоматизируйте find в cron, чтобы удалять старше N дней по безопасным путям.​ Перед автоматизацией протестируйте «сухим» запуском (print/--debug), чтобы исключить удаление нужных данных.

Практические команды

  • Проверить разделы и иноды: df -h; df -i.

  • Найти тяжёлые каталоги: du -xh --max-depth=1 /var /home /.

  • Быстрый аудит: sudo ncdu /.

  • Узнать размер журнала: journalctl --disk-usage.

  • Ограничить journald: создать /etc/systemd/journald.conf.d/size.conf с SystemMaxUse=500M и SystemKeepFree=15%, затем systemctl restart systemd-journald.

  • Разово почистить журнал: journalctl --vacuum-time=7d или --vacuum-size=200M.

  • Настроить logrotate: политика с daily, rotate 7, compress в /etc/logrotate.d/имя.

  • Проверить logrotate: logrotate /etc/logrotate.conf --debug.

  • Удалить старые файлы: find /var/log -type f -mtime +30 -delete (сначала -print).

  • Очистить кеши APT: sudo apt autoclean; sudo apt autoremove; при необходимости sudo apt clean.