Гид по технологиям

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

5 min read Системное администрирование Обновлено 01 Dec 2025
Освободить место в Linux: df, du и ncdu
Освободить место в 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:

  • Быстро видно, какие папки «тяжёлые»;
  • Можно заходить внутрь папок стрелками;
  • Поддерживает удаление из интерфейса (требуется осторожность и права).

Интерактивный обзор ncdu c деревом папок и размерами

Практические приёмы очистки для 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

Важно: перед удалением проверьте, что данные не нужны и не принадлежат запущенным контейнерам.

Чеклист расследования проблемы с заполнением диска (для системных администраторов)

  1. Проверить уровни заполнения: df -h.
  2. Выявить крупные каталоги: du -shx / 2>/dev/null | sort -hr | head -n 20.
  3. Проверить удалённые, но открытые файлы: lsof | grep deleted.
  4. Проверить логи systemd: journalctl --disk-usage.
  5. Очистить apt-кэш и старые ядра: sudo apt autoremove и sudo apt autoclean.
  6. Проверить контейнеры и образы Docker.
  7. Сделать резервную копию перед удалением больших/неоднозначных данных.
  8. Автоматизировать мониторинг (см. раздел ниже).

Когда df и du могут вводить в заблуждение — примеры и обходные пути

  • Случай: df показывает 100% заполнения, а du суммирует значительно меньше. Причина: файлы были удалены, но процессы их держат. Обход: найдите процессы с lsof и перезапустите их (после согласования).

  • Случай: смонтирован сетевой ресурс (NFS/SMB) — du может не учитывать удалённые расхождения. Проверьте состояние сетевого монтирования и используйте du на удалённом сервере.

  • Случай: лог-файлы быстро увеличиваются (например, повторяющиеся ошибки приложения). Решение: настроить ротацию логов (logrotate) и устранить причину ошибок.

Методология и SOP для регулярной проверки (мини-руководство)

  1. Ежедневно: мониторинг свободного места (алёрты при достижении 80–85%).
  2. При предупреждении: выполнить шаги чеклиста расследования.
  3. При критическом уровне (95%+): оперативные меры — очистка кэшей, временных файлов, ротация журналов, уведомление владельцев приложений.
  4. После инцидента: пост-инцидентный разбор причин, корректировка политики ротации, возможно — план расширения дискового пространства.

Уровни зрелости управления дисковым пространством

  • Низкий: ручные проверки по запросу, редкие очистки.
  • Средний: 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 ускоряет интерактивный анализ. Важнее не только очистка, но и выявление первопричины (логирование, приложения, контейнеры, удалённые файлы). Автоматизируйте мониторинг и настройте правила ротации логов и кэшей — это снизит вероятность неожиданных инцидентов.

Важное: всегда делайте резервные копии и согласуйте перезапуск служб с владельцами приложений перед удалением сомнительных данных.

Вывод df с указанием разделов и использования

Пример вывода df для конкретного устройства /dev/sda и его разделов

Пример использования df --output для выбора столбцов

Результат топ-10 директорий с использованием du и сортировки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Удаление занятых шрифтов в Windows через реестр
Windows

Удаление занятых шрифтов в Windows через реестр

Закладки в Safari на iPhone — быстрое руководство
iPhone

Закладки в Safari на iPhone — быстрое руководство

Закрепить ссылки и фото в Сообщениях iPhone
Мобильные устройства

Закрепить ссылки и фото в Сообщениях iPhone

Запуск HBO Now на Ubuntu через Pipelight
Linux

Запуск HBO Now на Ubuntu через Pipelight

Установить Photoshop без Creative Cloud
Программное обеспечение

Установить Photoshop без Creative Cloud

Быстрая разблокировка Samsung по отпечатку
Мобильные советы

Быстрая разблокировка Samsung по отпечатку