Linux VPS: Как освободить место на сервере

Если на вашем 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

  • 0 Пользователи нашли это полезным

Помог ли вам данный ответ?

Ищете что-то другое?

mhost.by