Home » Проверка дискового пространства: используем df и du
Проверка дискового пространства: используем df и du

Проверка дискового пространства: используем df и du

Ты когда-нибудь сталкивался с ситуацией, когда на сервере внезапно заканчивается место, а ты не понимаешь — кто съел весь диск? Или, например, df показывает, что почти всё занято, а du говорит — да нет, свободно же! Если да, то ты не одинок. В этой статье разберёмся, почему так происходит, чем отличаются df и du, как их правильно использовать, и как не попасться на классические грабли системного администратора. Погнали!

О чём эта статья и зачем она нужна?

Если у тебя есть сервер (будь то облако, VPS, Docker, железо или что-то ещё), ты точно сталкивался с вопросом: куда делось место на диске? Это не праздный вопрос: закончится место — и всё, сервисы падают, базы не пишутся, контейнеры не стартуют, а бэкапы не сохраняются. И вот тут на сцену выходят два старых добрых инструмента: df и du. Они вроде бы должны говорить одно и то же, но на практике часто показывают разные цифры. Почему так, как с этим жить и что делать — вот про это и будет статья. Разберёмся на практике, с примерами, лайфхаками и подводными камнями.

Почему это важно?

  • Без контроля за дисковым пространством ты рискуешь словить даунтайм и потерять данные.
  • Понимание разницы между df и du поможет быстрее диагностировать проблемы и экономить время.
  • Это база для автоматизации, алертов и мониторинга.

Как это работает? Алгоритмы и структура

Что делает df?

df (disk free) — это утилита, которая показывает, сколько места занято и свободно на файловых системах. Она не ходит по файлам, не считает их размеры, а читает метаинформацию из самой файловой системы (superblock). То есть, df смотрит на общую картину глазами ядра — сколько блоков всего, сколько свободно, сколько занято.

df -h

Результат — таблица с разделами, размерами, занятым и свободным местом. Всё быстро, потому что не надо ничего считать — просто взял статистику из ядра.

А что делает du?

du (disk usage) — считает, сколько места занимает конкретная директория или файл. Как? Он обходит всю файловую иерархию, складывает размеры файлов, учитывает жёсткие ссылки и символические ссылки (если попросить), и выдаёт итог.

du -sh /var/log

Результат — размер именно того каталога, который ты указал, с учётом всех подпапок. du реально идёт по дереву файлов, поэтому на больших директориях может работать долго.

Почему они показывают разное?

  • Удалённые, но не освобождённые файлы: если процесс держит файл открытым, а ты его удалил — du его не увидит, а df покажет, что место занято.
  • Жёсткие ссылки: du может посчитать файл несколько раз, если не использовать флаг --hard (см. ниже).
  • Зарезервированные блоки: на ext4 обычно 5% места зарезервировано для root. df учитывает это, du — нет.
  • Файлы вне монтированной файловой системы: df видит только то, что смонтировано, du — только то, что доступно в дереве файлов.

Как быстро и просто всё настроить? Практические советы

Базовые команды

Для начала — самые полезные команды, которые должны быть в арсенале каждого:

# Показать свободное место на всех разделах в человекочитаемом виде
df -h

# Показать размер конкретного каталога
du -sh /path/to/dir

# Найти, что больше всего занимает места в /var
du -h /var | sort -hr | head -20

# Показать размер всех подкаталогов в текущей директории
du -sh * | sort -hr

Быстрый чек-лист: что делать, если место исчезает?

  1. Сначала df -h — чтобы понять, на каком разделе проблема.
  2. Затем du -sh /* — чтобы понять, какая папка самая жирная.
  3. Дальше углубляемся: du -sh /var/* и так далее.
  4. Если du не находит больших файлов, а df всё равно показывает занятое место — ищи удалённые, но открытые файлы:
lsof | grep deleted

Если увидел такие файлы — перезапусти соответствующий процесс (или убей его), чтобы место освободилось.

Настраиваем автоматизацию

  • Для регулярного мониторинга — ставь duf (красивый аналог df), dua (быстрый du) или классический du.
  • Для алертов — пиши простой скрипт на bash, который будет слать тебе письмо/уведомление в Telegram, если свободного места меньше, чем X%.

# Пример простого мониторинга:
if [ $(df / | awk 'NR==2{print $5}' | sed 's/%//') -gt 90 ]; then
  echo "Disk space is over 90%!" | mail -s "Disk Alert" [email protected]
fi

Примеры, кейсы, сравнение

Сценарий Что покажет df Что покажет du Что делать
Удалён большой лог-файл, но процесс его держит Место занято Файл не виден Перезапусти процесс, чтобы освободить место
Много мелких файлов в каталоге Покажет общий размер Покажет, какие папки самые большие Используй du для поиска, что удалить
Зарезервировано место для root (ext4) Покажет меньше свободного места Не учитывает резерв Можно уменьшить резерв через tune2fs
Монтирован tmpfs (RAM-диск) Покажет размер tmpfs du покажет файлы внутри Следи за tmpfs, чтобы не переполнить RAM

Положительный кейс

На сервере переполнился /var. df показывает 100% занято, du -sh /var/* — видно, что /var/log занимает 15ГБ. После чистки старых логов (logrotate или руками) место освободилось, всё ок.

Отрицательный кейс

Почистил /var/log, но место не освободилось. lsof | grep deleted — видно, что rsyslogd держит удалённые файлы. Перезапустил rsyslogd — место появилось.

Ошибки новичков, мифы и похожие решения

  • Миф: df и du должны показывать одинаковые значения.
    На самом деле: они считают по-разному и часто расходятся.
  • Ошибка: Удалять логи, не проверяя, держит ли их кто-то открытыми.
  • Ошибка: Не учитывать скрытые файлы (начинающиеся с .) при подсчёте du.
  • Ошибка: Не проверять, что именно монтировано (mount, findmnt).
  • Похожее решение: duf — красивый аналог df.
  • Похожее решение: dua — быстрый и удобный du для больших файловых систем.
  • Ещё: ncdu — интерактивный анализатор, must-have для больших серверов.

Статистика и сравнение с другими решениями

Утилита Скорость Удобство Поддержка скриптов Интерактивность
df Мгновенно Просто Да Нет
du Медленно на больших объёмах Средне Да Нет
ncdu Медленно на старте, быстро в анализе Очень удобно Нет Да
dua Очень быстро Удобно Да Да
duf Мгновенно Красиво Да Нет

Интересные факты и нестандартные способы использования

  • Можно использовать df для мониторинга заполнения Docker-томов и overlayfs, чтобы не словить внезапный out of space.
  • Скрипты на du и find позволяют автоматически удалять старые файлы (например, find /var/log -type f -mtime +30 -delete).
  • На файловых системах типа XFS и Btrfs есть свои нюансы учёта места (например, снапшоты и дедупликация).
  • Можно использовать df вместе с watch для live-мониторинга: watch -n 1 df -h.
  • Для автоматизации очистки можно использовать systemd-tmpfiles или tmpwatch.

Автоматизация и скрипты: новые возможности

Понимание разницы между df и du открывает двери для автоматизации:

  • Пишем скрипты для алертов, которые реагируют на заполнение диска.
  • Скрипты для регулярной чистки старых файлов (logrotate, find).
  • Интеграция с мониторингом (Prometheus, Zabbix, Grafana) — можно собирать метрики с помощью df и du.
  • В Docker-контейнерах — автоматическая чистка слоёв и образов, чтобы не захламлять хост.
  • Для VPS и облака — автоматизация расширения томов при достижении порога.

Вывод: как, где и почему использовать

df — твой первый помощник, когда надо быстро понять, где заканчивается место. Он мгновенно покажет, какой раздел под угрозой, сколько свободно, сколько всего.
du — незаменим, если надо найти, что именно жрёт место. Это инструмент для глубокого анализа, поиска “жирных” папок и файлов.
Но чтобы не попасться на подводные камни, всегда помни: df и du считают по-разному. Если цифры не сходятся — ищи удалённые, но открытые файлы, учитывай зарезервированные блоки и нюансы файловых систем.
Рекомендую комбинировать оба инструмента, а для больших серверов — добавить ncdu или dua для интерактивного анализа.

Где использовать:

  • На любом сервере — VPS, облако, Docker, bare metal.
  • В регулярном мониторинге и автоматизации.
  • Для быстрой диагностики проблем с дисковым пространством.

Лайфхак: Если нужен сервер с быстрым диском и хорошей поддержкой — смотри VPS или выделенный сервер (можно сразу настроить мониторинг и алерты по месту).

Ссылки по теме:

  • man df
  • man du
  • ncdu — интерактивный анализатор дискового пространства
  • dua — быстрый du
  • duf — красивый df

Итог: Не важно, где у тебя сервер — в облаке, в контейнере или на железе — df и du должны быть в топе твоих инструментов. Понимай разницу, используй их в связке, автоматизируй, и спи спокойно: место на диске не закончится внезапно!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked