Df и du показывают разное: куда пропало место на сервере
Df и du могут показывать разные значения, потому что измеряют разные объекты: файловую систему и доступное дерево файлов. Если удалили большой лог, а место не освободилось, проверьте, не держит ли его процесс открытым. Но сначала сравните один раздел, одинаковые единицы и близкие моменты времени — иначе разница не объясняет потерю места.
Запишите условия двух измерений
Увидев почти заполненный диск, легко начать удалять самые крупные папки. Однако сумма выбранных каталогов может относиться только к части раздела, а измерение могло пройти с ошибками доступа. До очистки сохраните: какой раздел исследуется, от какого каталога считается дерево, кто выполняет проверку и какие сообщения об ошибках появились.
Не сравнивайте число для всего сервера с размером одной папки сайта. Укажите также единицы и используемые параметры. Слово «гигабайт» в пересказе не сохраняет точность исходного вывода; лучше оставить исходные результаты рядом с приведёнными значениями. Если данные продолжают активно расти, отметьте время каждой проверки.
У df и du разные границы
В руководстве GNU df описан отчёт о месте файловой системы, содержащей указанный путь. А руководство GNU du описывает учёт файлов и обход каталогов. Один инструмент не является точной заменой другого.
Для du также различаются занятое пространство и apparent size — видимый размер содержимого. В документации отдельно есть ограничение обхода одной файловой системой. Прежде чем объяснять разницу устройством хранения, убедитесь, что сравнение не смешало разные режимы, области и подключённые разделы.
Матрица проверки расхождения
| Гипотеза | Безопасное наблюдение | Признак в пользу версии | Что ещё остаётся неизвестным |
|---|---|---|---|
| Посчитана только часть раздела | Сопоставить файловую систему и начальный каталог | Учёт дерева не охватывает нужную область | Есть ли дополнительные причины разницы |
| Обход не прочитал часть дерева | Сохранить сообщения доступа и контекст проверки | Некоторые пути не вошли в результат | Их фактический объём |
| Сравниваются разные виды размера | Проверить параметры и единицы | Один вывод использует apparent size | Сколько места действительно можно освободить |
| Удалённый файл остаётся открытым | Получить сведения о файле и удерживающем процессе | Подтверждён открытый объект без прежнего имени | Как безопасно завершить использование |
| Данные меняются между проверками | Повторить сопоставление в согласованный момент | Размер продолжает расти или меняться | Какой именно поток создаёт прирост |
Таблица не обещает объяснить все особенности любой файловой системы. Это порядок исключения простых несоответствий перед вмешательством. Если область или доступ неизвестны, не записывайте найденную разницу как точный размер удалённого файла: такой вывод пока ничем не подтверждён.
Файл исчез из каталога, но ещё существует
В описании unlink для Linux сказано: после удаления последнего имени открытый процессами файл сохраняется до закрытия последнего относящегося к нему дескриптора. Поэтому отсутствие имени в каталоге и освобождение пространства могут происходить в разные моменты.
Это объясняет возможный сценарий с журналом: администратор удалил имя файла, а обслуживающий процесс продолжил использовать открытый объект. При обычном просмотре прежнего пути объект уже не находится. При этом сама последовательность «удалил — место осталось занято» лишь подсказывает гипотезу; её требуется подтвердить сведениями об открытых файлах.
В руководстве проекта lsof описано получение информации о файлах, открытых процессами. Администратору нужны сведения о конкретном объекте, процессе и относящейся к нему файловой системе. Поиск по одному слову deleted без проверки контекста не устанавливает, что именно этот объект удерживает весь недостающий объём.
Не умножайте объём на количество строк
Один и тот же файл может наблюдаться в связи с несколькими открытыми дескрипторами. Не следует автоматически складывать одинаковый указанный размер по каждой строке и объявлять сумму доступной для освобождения. Сначала установите, какие записи относятся к одному объекту, а какие действительно к разным.
Рабочая выписка должна связывать объект, раздел и владельца процесса. Если доступный инструмент не позволяет это подтвердить, сохраните ограничение наблюдения. Для поддержки сервера полезнее неполная, но честная диагностика, чем оценка «нашли лишнее место» с повторным счётом одного файла.
Освобождайте ресурс по правилам приложения
Уничтожение процесса не должно быть первой реакцией на найденный открытый файл. Узнайте, что он обслуживает, есть ли активные операции и какой штатный способ предусмотрен для смены журнала или закрытия ресурса. Для базы данных, очереди и веб-сервера последствия случайной остановки различаются.
Например, документация Nginx о ротации описывает переоткрытие журналов как отдельную операцию. Это правило конкретного сервера, а не универсальный сигнал для любого процесса. Согласованное действие должно выполнять лицо, которое знает назначение службы и способ проверить её работу после изменения.
Контрольный проход администратора
- Сохраните исходное состояние df и du с путями, единицами, временем и ошибками.
- Уберите несоответствие областей измерения и режимов размера.
- Если гипотеза открытого удалённого файла сохраняется, подтвердите объект и удерживающий процесс.
- Выберите штатное действие для этого приложения и заранее определите проверку его работоспособности.
- Повторно измерьте ту же файловую систему и проверьте, прекратился ли нежелательный рост.
Уменьшение занятого объёма после согласованного действия подтверждает изменение состояния, но не отменяет остальных проверок. Если место быстро заканчивается снова, нужен разбор причины роста: источник журнала, объём входных данных или процедура хранения. Повторное удаление файлов без такого разбора лишь откладывает следующий отказ.
Что передать владельцу сайта
Опишите причину на уровне сервиса: где удерживался ресурс, что исправлено и чем подтверждён результат. Сохраните ответственного за ограничение роста и следующий контроль. Через сопровождение сайта можно связать проблему хранения с расписанием приложений, а не оставлять её отдельным серверным эпизодом.
Если симптом впервые обнаружился как нехватка места на диске, начальная задача — восстановить управляемое состояние. Но завершение ремонта требует ещё и корректного учёта пространства. Не называйте резервную копию, рабочую базу или незнакомый каталог мусором только потому, что он занимает много места.
Вопросы и ответы
Почему df и du показывают разное?
Df описывает пространство файловой системы, а du считает выбранное дерево с учётом своих параметров и доступа. Сначала сравните раздел, область, единицы и момент измерения. Затем проверяйте отдельные причины, включая открытые удалённые файлы.
Как lsof помогает найти место от удалённых файлов?
Он показывает сведения об объектах, открытых процессами. Сопоставьте найденный объект с нужной файловой системой и ответственным процессом. Одна строка с признаком удаления не доказывает причину всей разницы df и du.
Можно ли просто закрыть процесс с удалённым файлом?
Сначала выясните назначение процесса и штатный способ освобождения ресурса. Случайная остановка может затронуть работающий сервис. После согласованного действия нужны повторное измерение и проверка приложения.
Читайте также
На сервере закончилось место: что проверить до очистки
РазработкаHydration mismatch: почему сервер и браузер видят разное
ПоддержкаRedis отвечает OOM: память сервера и политика ключей
ПоддержкаFTP входит на сервер, но список каталогов не загружается
ПоддержкаУстаревшая ОС на сервере: обновлять или переносить
ПоддержкаРассылки: свой сервер или сервис — как выбрать