- Home »

Проверка дискового пространства: используем 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
Быстрый чек-лист: что делать, если место исчезает?
- Сначала
df -h
— чтобы понять, на каком разделе проблема. - Затем
du -sh /*
— чтобы понять, какая папка самая жирная. - Дальше углубляемся:
du -sh /var/*
и так далее. - Если
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
должны быть в топе твоих инструментов. Понимай разницу, используй их в связке, автоматизируй, и спи спокойно: место на диске не закончится внезапно!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.