Если на сервере закончилось место на диске: найдите крупные файлы, очистите логи, временные файлы и настройте автоочистку.
Применимо к:
✔ VPS
✔ Выделенные серверы
✔ Linux (Ubuntu, Debian, CentOS)
Общая картина по разделам:
df -h
Если корневой раздел / заполнен на 95-100%, необходимо срочно освободить место.
Найдите самые большие каталоги:
du -sh /* 2>/dev/null | sort -rh | head -10
Углубитесь в самый большой каталог:
du -sh /var/* 2>/dev/null | sort -rh | head -10
Для удобного анализа установите ncdu:
apt install ncdu -y
ncdu /
Проверьте размер журнала:
journalctl --disk-usage
Очистите записи старше 3 дней:
journalctl --vacuum-time=3d
Ограничьте максимальный размер журнала. В файле /etc/systemd/journald.conf:
SystemMaxUse=200M
Перезапустите сервис:
systemctl restart systemd-journald
Проверьте размер логов в /var/log:
du -sh /var/log/* | sort -rh | head -10
Очистите старые логи (не удаляя сам файл):
truncate -s 0 /var/log/syslog.1
truncate -s 0 /var/log/kern.log.1
rm -rf /tmp/*
rm -rf /var/tmp/*
Debian/Ubuntu:
apt clean
CentOS/RHEL:
yum clean all
Бинарные логи MySQL могут занимать десятки гигабайт:
du -sh /var/lib/mysql/
ls -lh /var/lib/mysql/mysql-bin.*
Удалите старые бинарные логи (оставьте последние 3 дня):
mysql -e "PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY);"
Ограничьте хранение в конфигурации MySQL (/etc/mysql/my.cnf):
expire_logs_days = 7
max_binlog_size = 100M
apt autoremove --purge -y
Добавьте задание в cron для регулярной очистки:
crontab -e
Добавьте строку (очистка логов старше 14 дней каждую неделю):
0 3 * * 0 find /var/log -name "*.gz" -mtime +14 -delete
df -h /
Использование корневого раздела должно быть ниже 85%.
Если после очистки место не освободилось или диск снова заполняется за несколько часов, откройте тикет в техническую поддержку. Возможно, требуется расширение диска или поиск источника аномального роста данных.