Проблема переполнения диска в Linux-системах — одна из самых распространённых, особенно при работе с серверами, где важно контролировать объемы хранимых данных. Когда свободное место заканчивается, система начинает работать нестабильно, могут возникать сбои в логировании, отказ приложений, а в худшем случае — потеря данных. Важно уметь быстро определить, какие файлы и каталоги занимают много места. Для этого в арсенале администратора есть два незаменимых инструмента — du
и df
.
Команда df: обзор использования дискового пространства
Команда df
(disk free) позволяет получить общую картину — сколько всего места на диске, сколько из него занято и сколько свободно. Она показывает статистику по файловым системам, а не по отдельным файлам или папкам. Это удобно для быстрой диагностики.
Простейший вариант использования:
Опция -h
выводит данные в человекочитаемом виде — с единицами измерения (K, M, G). Вывод команды может выглядеть так:
Этот результат сразу дает понять, что корневой раздел переполнен, и нужно выяснить, где именно сосредоточено наибольшее количество данных. Но df
не покажет, какие конкретно каталоги занимают место. Для этого понадобится команда du
.
Команда du: точечный анализ объема данных
Команда du
(disk usage) используется для анализа объема файлов и каталогов. В отличие от df
, она показывает, сколько места занимают отдельные директории и файлы. Например, чтобы просмотреть объем всех подкаталогов текущей директории, можно выполнить:
Здесь:
-
-h
— человекочитаемый формат. -
--max-depth=1
— ограничивает глубину обхода, показывая только первый уровень подкаталогов.
Пример вывода:
В этом примере видно, что каталог var
занимает более двух гигабайт. Это уже направление для дальнейшего анализа.
Анализ конкретных директорий
Если подозрение падает на каталог /var
, стоит проверить его содержимое:
Результат может быть, например, таким:
Теперь видно, что большая часть занятого пространства в /var
— это логи. Возможно, старые журналы не удалялись и накапливались неделями или даже месяцами.
Поиск самых «тяжелых» каталогов с сортировкой
Чтобы быстро определить, какие каталоги занимают больше всего места, можно использовать связку du
и sort
:
Здесь:
-
2>/dev/null
— убирает ошибки доступа. -
sort -hr
— сортирует по размеру в обратном порядке. -
head -n 10
— выводит только 10 самых больших директорий.
Это дает моментальный список лидеров по объему, на которых стоит сосредоточиться в первую очередь.
Дополнительные полезные ключи
Команда du
имеет множество опций. Некоторые из них могут быть особенно полезны:
-
-s
— выводит только итоговую сумму, без деталей по подкаталогам. -
--apparent-size
— показывает размер файлов, как он видится пользователю (не учитывая сжатие, sparse-файлы). -
--exclude
— позволяет исключить из анализа определенные файлы и папки.
Например:
Этот вариант игнорирует все файлы с расширением .log
, что удобно, если нужно временно исключить шум от логов.
Комбинирование du и df: комплексный подход
Правильный анализ начинается с df
, чтобы понять, какой раздел переполнен, а затем используется du
для детального разбора содержимого. Такая последовательность обеспечивает логичный и целенаправленный подход к поиску проблемы. Например, если df
показал, что /
переполнен, а du
— что в /var/log
скопились гигабайты логов, значит, решение — очистка или архивация старых журналов.
Неочевидные ловушки: скрытые файлы и удалённые дескрипторы
Иногда даже после удаления больших файлов место не освобождается. Это происходит, если файл удалён, но дескриптор к нему ещё используется процессом. Такой файл продолжает занимать место до тех пор, пока процесс не будет перезапущен.
Выяснить это можно через lsof
:
Если вы видите в списке удалённые, но всё ещё открытые файлы — это причина, почему df
показывает занятое пространство, хотя du
— нет. Это важно учитывать при разборе аномалий.
Заключение
Инструменты du
и df
— это мощные средства для мониторинга и анализа дискового пространства в Linux. Команда df
даёт обзорную картину по разделам, а du
позволяет точно определить, какие каталоги и файлы занимают наибольший объём. В сочетании с сортировкой, фильтрами и дополнительными утилитами, этими инструментами можно быстро выявить и устранить проблему переполнения диска. Регулярный контроль дискового пространства с помощью этих команд помогает избегать серьёзных сбоев и поддерживать стабильную работу системы.