Руководство · Серверы Linux

Диск сервера Linux заполнен:как найти, что занимает место

У заполненного диска обычно одна-две очевидные причины. Действуйте сверху вниз, сначала смотрите, потом удаляйте, и никогда не удаляйте файлы в /var/lib вручную, если не знаете, какой службе они принадлежат.

← Все руководства

1. Определите, какая файловая система заполнена

Выполните df -h. Посмотрите на столбцы Use% и Mounted on: заполненной может оказаться файловая система / или отдельная точка монтирования /var, /home или /data, а очистка не той ничего не изменит.

Выполните также df -i. В файловой системе может быть свободное место, но не остаться свободных inodes — так бывает, когда накапливаются миллионы мелких файлов (сессии, почтовые очереди, файлы кэша). Если IUse% близок к 100%, нужно искать множество мелких файлов, а не несколько больших.

2. Найдите самые большие каталоги

Выполните sudo du -xh --max-depth=1 / | sort -h и прочитайте последние строки. Параметр -x ограничивает поиск одной файловой системой, поэтому смонтированные диски и виртуальные файловые системы не искажают результат. Повторите то же внутри самого большого каталога, например sudo du -xh --max-depth=1 /var | sort -h.

Если установлен ncdu (sudo apt install ncdu в Debian и Ubuntu), команда sudo ncdu -x / позволяет интерактивно просматривать те же данные.

3. Проверьте удалённые, но всё ещё открытые файлы

Если du показывает намного меньше, чем df, возможно, какой-то процесс всё ещё держит открытым удалённый файл, часто это большой журнал. Команда sudo lsof +L1 выводит открытые файлы с нулевым числом ссылок. Место освободится, когда процесс закроет файл, а для этого обычно нужно перезапустить службу, которой он принадлежит. Делайте это в спокойный момент, а не в пик запросов.

4. Просмотрите обычных подозреваемых

Журналы: загляните в /var/log и проверьте журнал командой journalctl --disk-usage. Если он большой, см. наше руководство по ограничению размера journald.

Пакеты: sudo apt clean удаляет загруженные файлы пакетов; sudo apt autoremove перечисляет ненужные пакеты и старые ядра и показывает, что будет удалено, до вашего подтверждения. Оставьте работающее ядро и одну предыдущую версию.

Docker: docker system df показывает образы, контейнеры, тома и кэш сборки. docker system prune удаляет остановленные контейнеры, неиспользуемые сети и «висячие» образы; тома он не удаляет, если не добавить --volumes, поэтому внимательно читайте запрос, прежде чем отвечать.

Snap: snap list --all показывает старые ревизии отключённых snap-пакетов, которые можно удалять по одной командой snap remove NAME --revision=NUMBER.

5. После освобождения места

Снова выполните df -h и убедитесь, что службы, остановившиеся из-за заполненного диска, работают (systemctl --failed). Базу данных, столкнувшуюся с заполненным диском, может потребоваться перезапустить или проверить, прежде чем ей доверять.

Затем задайте ограничение, чтобы ситуация не повторилась: ротация журналов, лимит journald и оповещение до того, как диск заполнится на 90%.

Want a clearer view of storage and maintenance across your Linux servers?RainServer combines a lightweight agent with a cloud dashboard for VPS monitoring and maintenance.Try RainServer free for 7 days →  ·  All guides →

Последнее изменение: 2026-10-03

Короткие вопросы

Читайте дальше

Загрузка

Попробуй на своём компьютере.

Бесплатно, без регистрации, без подписки. Windows 10 и 11.