Skip to content

Не корректно отображаеся время после перезегрузки Xen Debian

Когда размер занятого дискового пространства в выводе df и du сильно отличается

Вывод df и du сильно отличаются по количеству свободного места в случае, когда были удалены большие файлы, но использовавший их процесс остановлен не был.

Так получается потому, что до завершения выполнения приложения дескрипторы открытого ранее файла не удаляются.

А соответствующая запись из древа каталогов удаляется, из-за чего du данный файл не находит, и его размер не учитывает. При этом ОС Linux, видя что файл ещё открыт приложением, хоть он и помечен как удалённый, и не помечает в ФС блоки, занятые ранее эиим файлом, как свободные.

Такая ситуация наблюдается до тех пор, пока приложение не закроет дескриптор данного файла.

В результате чего ОС Linux и утилита df(утилита учитывающая размер занятого места по количеству занятых блоков) считают это дисковое пространство занятым. И такая ситуация наблюдается до тех пор, пока приложение не закроет дескриптор данного файла.

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

К примеру, y нас есть большой удалённый кем-то файл, но не известно, какой процесс его использует.

Найти приложение, использующее удалённый ранее файл можно так

lsof -a +L1 /path/to/the/file

где вместо /path/to/the/file путь к файлу.

Найти все открытые и удалённые файлы можно командой

lsof -a +L1 \*mountpoint\*

или

lsof -nP \| grep '(deleted)'
или
find /proc/\*/fd -ls \| grep '(deleted)'

Ищем среди них файлы, которые могут занимать много дискового пространства. Это могут быть файлы логов и временные файлы баз данных в tmp/private tmp, временные файлы созданные обработчиками больших изображений и медиаконтента, etc.

К примеру, мы нашли большой удалённый access-лог nginx одного из виртуальных хостов. Значит, для решения проблемы мы должны перезапустить nginx.

Делаем

service nginx restart
Проверяем, и убеждаемся что количество занятого дискового пространства в выхлопе du и df совпадает.

http://johanlouwers.blogspot.md/2007/05/difference-between-df-and-du.html http://www.unix.com/aix/88474-huge-difference-reported-disk-usage-between-ls-df-du.html https://unix.stackexchange.com/questions/68523/find-and-remove-large-files-that-are-open-but-have-been-deleted https://superuser.com/questions/279497/difference-between-df-k-and-du-sh