расследование

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

Если на вашем сервере Linux закончилось место, вот быстрый и эффективный способ найти и устранить проблему.

1. Проверка использования диска

Сначала проверьте, какая файловая система переполнена:

1
df -h

Если подозреваете, что закончились inodes (много мелких файлов):

1
df -i

2. Поиск самых больших директорий

Определите, какие папки занимают больше всего места:

1
sudo du -h -d 1 -x / 2>/dev/null | sort -hr | head -20
  • -x — сканирует только основную файловую систему.
  • Для интерактивного просмотра используйте ncdu:
1
2
sudo apt install ncdu
sudo ncdu -x /

3. Удаление ненужных больших файлов

Ищите необычно большие файлы, особенно в /usr/local, /var или /home. Часто это статические библиотеки (.a) или старые артефакты сборки. Если нашли ненужное — удаляйте:

1
2
sudo rm /путь/к/большому/файлу
sudo ldconfig

4. Исправление «фантомного» использования диска

Если df показывает больше занятого места, чем du, возможно, есть удалённые, но всё ещё открытые процессами файлы. Найдите их так:

1
sudo lsof +L1 2>/dev/null | awk 'NR==1 || $7+0 > 10000000'

Перезапустите процесс, который держит файл (например, Docker):

1
sudo systemctl restart docker

5. Профилактика (ротация логов Docker)

Логи Docker могут незаметно заполнить диск. Настройте ротацию логов в /etc/docker/daemon.json:

1
2
3
4
5
6
7
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}

Перезапустите Docker:

1
sudo systemctl restart docker

Пересоздайте контейнеры, чтобы применить новую политику.

Быстрые команды для очистки

1
2
3
4
5
6
7
8
docker system df
docker container prune -f
docker builder prune -af
docker image prune -af
journalctl --disk-usage
sudo journalctl --vacuum-size=200M
sudo apt autoremove --purge
sudo apt clean

Этот вариант убирает личные истории и фокусируется на практических шагах, чтобы использовать статью как универсальное руководство.