Если на вашем Linux‑VPS заканчивается дисковое пространство, то вы попали в нужное место. В этой статье подробно рассматриваются эффективные способы освобождения места: от очистки логов и кэша до удаления старых ядер, временных файлов и неиспользуемых пакетов. Включены пошаговые инструкции, команды, полезные утилиты и рекомендации по автоматизации процесса.
Данная информация предназначена для услуг: VPS хостинг или Облачный хостинг
Почему важно следить за дисковым пространством
В облачных и VPS‑хостингах каждый гигабайт, который вы берёте, стоит денег. Кроме того, нехватка места может привести к:
- Падению приложений – веб‑сервера, базы данных и cron‑задач часто завершают работу с ошибкой «no space left on device» (нет места).
- Проблемам с логированием – если файловой системе не хватает места, логи просто не пишутся.
- Проблемам с обновлениями – apt/yum не смогут установить новые пакеты, если раздел /var заполнен.
- Небольшому времени простоя – чтобы решить проблему, обычно требуется временно прекратить работу сервисов, выполнить очистку и запустить их снова.
Следовательно, регулярный мониторинг и своевременное освобождение места – ключ к стабильной работе VPS.
2. Как быстро проверить, сколько места осталось
Для начала нужно понять, какие разделы занимают больше всего ресурсов. Команда df -hP покажет размер, использованное место и доступность в человеко‑читабельном формате.
df -hP
# вывод
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 30G 20G 9.0G 71% /
/dev/vda2 20G 18G 1.9G 93% /var
Список файловых систем, их размер, использованное место и процент заполнения.
Для более глубокого анализа используйте du:
Сводка по папкам корня
du -hxd1 / | sort -h
Вы получите список каталогов с их размером, отсортированный по величине. Это позволит быстро увидеть «тяжёлые» папки.
3. Очистка логов
3.1 Что обычно хранится в логах
- /var/log/*.log – системные логи (syslog, messages, auth.log).
- Логи веб‑сервера: /var/log/nginx/*, /var/log/apache2/*.
- Логи приложений: /var/log/<app>/*.log.
- Службы, такие как cron, rsyslog и systemd-journald.
Логи часто растут и могут занимать сотни мегабайт даже на небольших VPS.
3.2 Уменьшение объёма логов
Настройка размера логов
В logrotate (часто в /etc/logrotate.conf и /etc/logrotate.d/) задаются правила сжатия и удаление старых файлов.
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
}
Это правило сохраняет последние 14 дней логов, сжимает старые файлы и автоматически удаляет их, если они пустые.
Ручная очистка
Если вы уверены, что старые логи вам не нужны, можно быстро удалить их:
sudo rm -f /var/log/*.log
sudo rm -f /var/log/nginx/*.log
Внимание: перед удалением сделайте резервную копию, если логи могут понадобиться для диагностики.
Очистка journalctl
Для систем, использующих systemd, логи хранятся в бинарном формате. Ограничьте размер с помощью:
sudo journalctl --vacuum-size=100M
Эта команда оставит логи размером до 100 МБ. Для удаления за определённый период:
sudo journalctl --vacuum-time=10d
Удаляет все логи старше 10 дней.
4. Удаление старых пакетов и кэша
4.1 Debian/Ubuntu
Очистка пакетов, которые больше не нужныsudo apt-get autoremove --purgeОчистка кэша пакетовsudo apt-get cleanОчистка неактивных пакетовsudo apt-get autoclean
autoremove удалит пакеты, которые были установлены как зависимости, но теперь больше не нужны. clean удалит скачанные .deb‑файлы, а autoclean удалит устаревшие пакеты из кэша.
4.2 CentOS/RHEL/Fedora
# Удалить неиспользуемые пакеты
sudo yum autoremove
# Очистка кэша
sudo yum clean all
4.3 Как проверить, сколько кэша занимает
du -sh /var/cache/apt/archives
5. Очистка временных файлов
5.1 /tmp
Раздел /tmp используется для временных файлов приложений. Он может быстро заполняться.
sudo rm -rf /tmp/*
Проверьте, что не удаляете активные файлы. Для систем с tmpfs (например, /tmp монтируется как tmpfs), файлы автоматически удаляются при перезагрузке.
5.2 Резервные копии и мусорные файлы
Удалите ненужные файлы, созданные CI/CD, тестовыми копиями и др.
Сканируйте папки /home, /var/www, /usr/local, где могут храниться старые сборки.
6. Очистка старых ядер (Linux Kernels)
При обновлении ядра в Debian/Ubuntu старые версии остаются в /boot. Удаление старых ядер может освободить несколько сотен мегабайт.
Показать установленные ядра
dpkg --list | grep linux-image
Удалить старые ядра (не удаляйте текущее ядро, которое используется)
sudo apt-get remove --purge linux-image-5.4.0-42-generic
Или используйте пакет byobu/purge-old-kernels:
sudo apt-get install byobu
sudo purge-old-kernels
Он оставит последние 2 версии и удалит все остальные.
Проверить размер /boot
df -h /boot
7. Перемещение больших файлов и каталогов
7.1 Когда стоит переместить
Медиа‑файлы (видео, изображения) могут занимать гигабайты.
Базы данных, лог‑сервера и архивы.
Репозитории кода, сборки и др.
Если у вас есть второй раздел, который менее загружен, переместите туда большие папки. Например, переместите /var/www/html/media на /mnt/media:
sudo mkdir /mnt/media
sudo rsync -aXS /var/www/html/media/ /mnt/media/
sudo mv /var/www/html/media /var/www/html/media.old
sudo ln -s /mnt/media /var/www/html/media
7.2 Использование btrfs/LVM для динамического изменения размера
Если ваш VPS использует LVM, вы можете расширить раздел:
Добавить новый физический том
sudo pvcreate /dev/vdb
sudo vgextend vgubuntu /dev/vdb
sudo lvextend -L +10G /dev/ubuntu/root
sudo resize2fs /dev/ubuntu/root
Если у вас btrfs, используйте btrfs filesystem resize:
sudo btrfs filesystem resize +10G /
8. Использование символических ссылок (Symlinks)
Если вы переместили большие каталоги на другой раздел, создайте символические ссылки, чтобы приложения продолжали работать без изменения конфигурации:
ln -s /mnt/backup /var/backup
Проверка:
ls -l /var/backup
lrwxrwxrwx 1 root root 7 Aug 27 10:00 /var/backup -> /mnt/backup
9. Автоматизация очистки
9.1 cron‑задача для logrotate
logrotate уже настроен в cron, но вы можете добавить собственные правила в /etc/logrotate.d/.
9.2 Пример скрипта cron‑задачи для удаления старых файлов
#!/bin/bash
find /home/username/backup -type f -mtime +30 -delete
Убедитесь, что скрипт исполняемый:
chmod +x /etc/cron.daily/cleanup-old-files
9.3 Мониторинг с nagios, zabbix или prometheus
Системы мониторинга могут оповестить вас, когда заполнение достигает порога (например, 80 %). Настройте триггер:
Порог 80 % – отправить e‑mail.
Порог 90 % – выполнить скрипт очистки (если безопасно).
10. Инструменты и утилиты для анализа диска
Утилита Описание Пример
ncdu Интерактивный анализатор du sudo ncdu /
baobab Графический анализатор (GNOME) sudo baobab
iotop Монитор ввода/вывода sudo iotop
duf Красивый вывод du duf
lsblk Информация о блоковых устройствах lsblk -f
df Использование файловой системы df -h
11. Пошаговый план действий
Проверка заполнения
df -h
du -hxd1 /
Очистка логов
sudo journalctl --vacuum-time=7d
sudo rm -f /var/log/*.log
sudo logrotate -f /etc/logrotate.conf
Удаление кэша пакетов
sudo apt-get autoremove --purge
sudo apt-get clean
sudo apt-get autocleangit config --list
Очистка временных файлов
sudo rm -rf /tmp/*
Удаление старых ядер
sudo purge-old-kernels
Перемещение больших файлов (если есть лишние разделы)
rsync -aXS /var/www/html/media/ /mnt/media/
ln -s /mnt/media /var/www/html/media
Настройка автоматизации – cron‑задачи, logrotate, alert‑системы.
Периодический мониторинг – использовать ncdu, df, du.
Часто задаваемые вопросы (FAQ)
Как быстро найти самые большие файлы? : sudo find / -type f -size +100M -exec ls -lh {} ;
Можно ли восстановить удалённые логи? : Если не было резервного копирования, восстановление из файловой системы почти невозможно.
Что делать, если journalctl заполняет весь диск? : Используйте sudo journalctl --vacuum-size=50M или настройте SystemMaxUse= в /etc/systemd/journald.conf.
Как удалить неиспользуемые Docker‑контейнеры? : docker system prune -a
Можно ли расширить раздел /var без перезагрузки? : При LVM это возможно: lvextend -L +5G /dev/ubuntu/var && resize2fs /dev/ubuntu/var