Почему df и du показывают разный объём занятого места
Как найти файловую систему, в которой заканчивается место, и сравнить её показатели с размером каталогов, не удаляя данные наугад.

В этой статье
Свободное место закончилось, хотя каталог сайта выглядит небольшим. В такой ситуации сначала нужно понять, что именно измеряется. df показывает состояние файловой системы, а du обходит доступные файлы и каталоги. Эти результаты связаны, но не обязаны совпадать до байта.
Сначала найдите нужный раздел
Пример рассчитан на Linux с GNU Coreutils. Здесь /var — пример существующего каталога. Если проблема относится к другому пути, подставьте его. Команды ниже только читают сведения, однако обход большой директории создаёт дисковую нагрузку.
df -hT /var
Посмотрите тип файловой системы, объём, доступное место и точку монтирования. Каталог загрузок сайта может находиться на отдельном томе: свободное место в корне тогда не объясняет ошибку записи в загрузки. Параметр -h выводит удобные для чтения единицы, поэтому округлённые значения не подходят для точного баланса.
Спускайтесь по дереву постепенно
Начните с одного уровня, чтобы увидеть крупные ветви, а не получить тысячи строк:
du -xhd1 /var
Параметр -x не даёт переходить на другие файловые системы, а -d1 ограничивает глубину вывода. При этом программа всё равно обходит содержимое выбранных каталогов. Не запускайте несколько таких обходов одновременно на перегруженном сервере.
Если найден крупный подкаталог, повторите проверку уже для него. Сообщения об отказе в доступе означают, что измерение неполное. Не скрывайте их перенаправлением ошибок: сначала выясните, с какими правами должен проводиться аудит. Повышенные права нужны только для чтения недоступных директорий и должны соответствовать вашей роли.
Почему цифры расходятся
Открытый процессом удалённый файл продолжает занимать место, хотя обычный обход каталогов его уже не видит. Дополнительное расхождение дают служебные данные файловой системы, резервирование блоков, снимки и особенности сжатия. У файлов с разреженными областями видимый размер также отличается от реально выделенных блоков.
Пример: панель показывает почти полный том, а доступные каталоги занимают заметно меньше. Это повод проверить открытые удалённые файлы и особенности тома. Такой результат сам по себе не доказывает утечку места или неисправность диска. Если же один каталог быстро растёт между двумя измерениями, полезнее найти создающий его процесс и назначение файлов.
Что передать администратору
Зафиксируйте проверенный путь, точку монтирования, время замера и самый крупный каталог. Добавьте сообщения об отказе в доступе. Не прикладывайте содержимое клиентских файлов: для первого этапа достаточно размеров и обезличенных путей.
После согласованной очистки повторите обе команды для тех же путей. Если du уменьшился, а df почти не изменился, не продолжайте удалять соседние каталоги. Проверьте, не удерживает ли процесс старые данные, и дождитесь завершения предусмотренной приложением процедуры освобождения места. Хороший результат диагностики — объяснимая причина заполнения и конкретный владелец данных, а не просто временно зелёный индикатор.
Сравнивайте замеры, сделанные близко по времени: продолжающийся импорт способен увеличить данные уже между запуском двух команд.
Free space is exhausted, although the site catalog appears small. In such a situation, the first step is to determine exactly what is being measured. df displays the state of the file system, while du traverses available files and directories. These results are related but do not necessarily match byte for byte.
First, locate the relevant partition
This example is calculated for Linux with GNU Coreutils. Here, /var is an example of an existing directory. If the issue pertains to a different path, substitute it accordingly. The commands below only read information, but traversing a large directory creates disk load.
df -hT /var
Check the file system type, total size, available space, and mount point. The site upload directory may reside on a separate volume; free space in the root then does not explain a write error to uploads. The -h parameter outputs human-readable units, so rounded values are unsuitable for precise balance calculations.
Descend the directory tree gradually
Start at one level to see major branches instead of generating thousands of lines:
du -xhd1 /var
The -x parameter prevents crossing into other file systems, while -d1 limits output depth. Nevertheless, the program still traverses the contents of the selected directories. Do not run multiple such traversals simultaneously on an overloaded server.
If a large subdirectory is found, repeat the check for it. Access denied messages indicate incomplete measurement. Do not suppress them by redirecting errors: first determine what permissions are required for the audit. Elevated privileges are needed only for reading inaccessible directories and must align with your role.
Why the numbers diverge
An open remote file continues to occupy space even though a standard directory traversal no longer sees it. Additional discrepancies arise from file system metadata, block reservations, snapshots, and compression features. For files with sparse regions, the visible size also differs from the actually allocated blocks.
Example: the panel shows a nearly full volume, while accessible directories occupy noticeably less space. This is a reason to check for open remote files and volume characteristics. Such a result alone does not prove a space leak or disk failure. However, if a single directory grows rapidly between two measurements, it is more useful to identify the process creating it and the purpose of the files.
What to pass to the administrator
Record the verified path, mount point, measurement time, and the largest directory. Include access denial messages. Do not attach the contents of client files: for the first stage, sizes and anonymized paths are sufficient.
After performing the agreed cleanup, run both commands again for the same paths. If du has decreased while df has barely changed, do not proceed to delete adjacent directories. Check whether a process is holding onto old data and wait for the application's built-in space-reclamation procedure to complete. A successful diagnostic result identifies a clear cause for the disk usage and a specific owner of the data, rather than just a temporarily green indicator.
Compare measurements taken close in time: an ongoing import can increase data even between the launch of two commands.

Обсуждение0
Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.
Пока никто не написал. Начни обсуждение.