Когда диск заполнен, перестают писаться логи и базы данных, падают обновления, а иногда нельзя даже войти по SSH. Разбираться лучше по шагам: сначала какой раздел заполнен, потом какой каталог, потом какие файлы.
Какой раздел заполнен
$ df -hСмотрите столбец Use% у раздела, смонтированного в /. Всё, что выше 90 %, требует внимания.
Какой каталог большой
Посчитайте размер каталогов первого уровня, оставаясь в пределах одной файловой системы (-x):
$ du -xh --max-depth=1 / 2>/dev/null | sort -hСпускайтесь в самый большой каталог и повторяйте команду. Обычные подозреваемые: /var/log, /var/lib/docker, /var/cache/apt, /home и каталоги с бэкапами.
Удобнее — ncdu
ncdu — интерактивный du: стрелками переходите по каталогам, клавиша d удаляет выбранное (с подтверждением).
$ apt install -y ncdu$ ncdu -x /Самые большие файлы
$ find / -xdev -type f -size +500M -exec ls -lh {} + 2>/dev/nullЧто можно почистить безопасно
$ apt clean$ apt autoremove --purge$ journalctl --vacuum-size=200MДля Docker: docker system df покажет, сколько занимают образы, контейнеры и тома; про уборку — отдельная статья.
Удалили файл, а место не освободилось
Если процесс держит файл открытым, после rm место освободится только когда процесс закроет файл. Найти такие файлы:
$ lsof -nP +L1 2>/dev/null | head -20Перезапустите процесс из столбца COMMAND (например, systemctl restart nginx) — место вернётся. Чтобы очистить большой лог без перезапуска, обнуляйте его, а не удаляйте: truncate -s 0 /путь/к/файлу.log. Если команды lsof нет, установите пакет lsof.
Место есть, а файлы не создаются
Ошибка «No space left on device» при свободных гигабайтах означает, что кончились иноды — записи о файлах. Обычно виноват каталог с миллионами мелких файлов: сессии PHP, кэш, очередь почты.
$ df -i$ du -x --inodes --max-depth=1 / 2>/dev/null | sort -n | tailПроверьте результат
Снова выполните df -h и убедитесь, что процент занятого снизился. Чтобы ситуация не повторилась, настройте ротацию логов и ограничение размера журнала systemd.