Как быстро найти и очистить место на диске в Linux: df, du и ncdu

Почему важно регулярно проверять место на диске
Недостаток свободного места на сервере — частая причина сбоев обновлений, падений логирования и проблем с базами данных. На production-системах внезапная потеря места может привести к потере данных, невозможности перезапустить службы и появлению неочевидных ошибок (например, процессы держат удалённые файлы в памяти).
Определите базовую цель: обнаружить, какие данные занимают место, и безопасно освободить его без риска для работы служб.
Основные команды и что они показывают
- df — отчёт о доступном/занятом месте на смонтированных файловых системах.
- du — оценка занимаемого места файлов и директорий (рекурсивно).
Краткая аналогия: df — «сканер пространства на полке», показывает, сколько пустого места на каждой полке; du — «взвешивание коробок на полке», показывает, какие коробки самые тяжёлые.
Использование df
Обычная команда:
df -h- -h делает вывод удобочитаемым (K/MB/GB).
Чтобы выбрать столбцы вывода:
df --output=source,size,used,avail,pcent,targetПример полезного сокращённого вывода:
df --output=source,used,avail,pcent,target -hСоветы:
- Проверьте колонку pcent и целевые точки монтирования (target).
- Если какой-то раздел заполнен, посмотрите, смонтирован ли он в правильное место и не перекрывается ли другим mount (bind-overmount может скрывать данные).
Использование du для поиска «пожирателей» места
du по умолчанию рекурсивно суммирует размер файлов, поэтому без фильтров он может работать очень долго. Несколько привычных приёмов:
Показать общие размеры для каждого элемента в текущей директории и отсортировать по убыванию (топ-10):
du -shx * 2>/dev/null | sort -hr | head -n 10Объяснение:
- -s — только суммарный размер для каждого аргумента;
- -h — человеко-читаемый формат;
- -x — не переходить на другие файловые системы (полезно при наличии смонтированных томов);
- 2>/dev/null — скрыть сообщения об ошибках доступа;
- sort -hr — сортировка по размеру в человеко-читаемом формате;
- head -n 10 — вывести 10 крупнейших.
Если нужно просканировать весь корень и получить топ-папок:
du -x / 2>/dev/null | sort -n -r | head -n 20Для быстрого просмотра размера конкретной директории:
du -sh /var/logИсправление типичных ошибок с df и du
- Большая часть занятого места может быть «удалёнными» файлами, которые всё ещё открыты процессами. df покажет, что раздел заполнен, а du не покажет большого размера — потому что файл уже «удален» из каталога, но дескриптор открыт. Для поиска таких файлов используйте lsof:
lsof / | grep deleted- Если разделы смонтированы поверх каталогов, du может «не увидеть» фактических данных под точкой монтирования. Подумайте о запуске сканирования на реальном устройстве (см. /dev/… или используйте -x).
Альтернатива: ncdu — интерактивный просмотр размеров
ncdu даёт ncurses-интерфейс для быстрой навигации и удаления (если разрешено). Установка и запуск:
sudo apt update
sudo apt install ncdu
ncdu /Плюсы ncdu:
- Быстро видно, какие папки «тяжёлые»;
- Можно заходить внутрь папок стрелками;
- Поддерживает удаление из интерфейса (требуется осторожность и права).

Практические приёмы очистки для Ubuntu и Debian
Очистка устаревших пакетов и кэшей:
sudo apt autoremove
sudo du -sh /var/cache/apt
sudo apt autoclean
sudo apt clean- sudo apt autoremove — удаляет пакеты-зависимости, которые больше не нужны.
- sudo apt autoclean — очищает устаревшие пакеты в кэше, оставляя актуальные.
- sudo apt clean — полностью очищает кэш пакетов (освобождает больше места).
Очистка журналов systemd (journalctl):
sudo journalctl --disk-usage
sudo journalctl --vacuum-size=200M
sudo journalctl --vacuum-time=7d- –vacuum-size и –vacuum-time уменьшают размер журналов; подберите значения, соответствующие политике хранения логов в вашей организации.
Очистка временных файлов:
sudo rm -rf /tmp/*
sudo du -sh /tmpКонтейнеры и образы Docker могут занимать много места:
docker system df
docker system prune -a --volumesВажно: перед удалением проверьте, что данные не нужны и не принадлежат запущенным контейнерам.
Чеклист расследования проблемы с заполнением диска (для системных администраторов)
- Проверить уровни заполнения:
df -h. - Выявить крупные каталоги:
du -shx / 2>/dev/null | sort -hr | head -n 20. - Проверить удалённые, но открытые файлы:
lsof | grep deleted. - Проверить логи systemd:
journalctl --disk-usage. - Очистить apt-кэш и старые ядра:
sudo apt autoremoveиsudo apt autoclean. - Проверить контейнеры и образы Docker.
- Сделать резервную копию перед удалением больших/неоднозначных данных.
- Автоматизировать мониторинг (см. раздел ниже).
Когда df и du могут вводить в заблуждение — примеры и обходные пути
Случай: df показывает 100% заполнения, а du суммирует значительно меньше. Причина: файлы были удалены, но процессы их держат. Обход: найдите процессы с lsof и перезапустите их (после согласования).
Случай: смонтирован сетевой ресурс (NFS/SMB) — du может не учитывать удалённые расхождения. Проверьте состояние сетевого монтирования и используйте du на удалённом сервере.
Случай: лог-файлы быстро увеличиваются (например, повторяющиеся ошибки приложения). Решение: настроить ротацию логов (logrotate) и устранить причину ошибок.
Методология и SOP для регулярной проверки (мини-руководство)
- Ежедневно: мониторинг свободного места (алёрты при достижении 80–85%).
- При предупреждении: выполнить шаги чеклиста расследования.
- При критическом уровне (95%+): оперативные меры — очистка кэшей, временных файлов, ротация журналов, уведомление владельцев приложений.
- После инцидента: пост-инцидентный разбор причин, корректировка политики ротации, возможно — план расширения дискового пространства.
Уровни зрелости управления дисковым пространством
- Низкий: ручные проверки по запросу, редкие очистки.
- Средний: cron-скрипты для очистки временных данных, базовые алёрты.
- Высокий: централизованный мониторинг (Prometheus/Grafana), автоматическая ротация и тесты на предупреждение, CI-процедуры для артефактов.
Таблица-справочник команд (cheat sheet)
df -h # обзор заполнения разделов
df --output=source,used,avail,pcent -h # целевые столбцы
du -shx /path/* | sort -hr | head -n 20 # топ папок в /path
du -sh /var/log # размер каталога логов
lsof | grep deleted # файлы, удалённые, но занятые процессом
sudo apt autoremove # удалить неиспользуемые пакеты
sudo apt autoclean # очистить устаревшие кэши apt
sudo journalctl --vacuum-size=200M # уменьшить журналы systemd
ncdu / # интерактивный анализ дискаЧасто задаваемые вопросы
Как быстро освободить место, не рискуя сломать систему?
Начните с sudo apt autoremove и sudo apt autoclean, затем проверьте /var/log, /tmp и кэши приложений. Никогда не удаляйте файлы в /var/lib или /etc без понимания их роли; делайте резервные копии.
Почему df показывает заполнение, а du — нет?
Чаще всего потому, что процессы держат удалённые файлы открытыми. Используйте lsof для поиска таких файлов и при необходимости перезапустите процессы.
Можно ли запускать ncdu на production-сервере?
Можно, но осторожно: чтение большого числа файлов может нагрузить диск/IO. Запускайте в off-peak время или используйте опцию –exclude для пропуска тяжёлых директорий.
Итог
df и du — базовый набор инструментов для диагностики проблем с местом на диске. ncdu ускоряет интерактивный анализ. Важнее не только очистка, но и выявление первопричины (логирование, приложения, контейнеры, удалённые файлы). Автоматизируйте мониторинг и настройте правила ротации логов и кэшей — это снизит вероятность неожиданных инцидентов.
Важное: всегда делайте резервные копии и согласуйте перезапуск служб с владельцами приложений перед удалением сомнительных данных.




Похожие материалы
Удаление занятых шрифтов в Windows через реестр
Закладки в Safari на iPhone — быстрое руководство
Закрепить ссылки и фото в Сообщениях iPhone
Запуск HBO Now на Ubuntu через Pipelight
Установить Photoshop без Creative Cloud