FastNetMon

Showing posts with label du. Show all posts
Showing posts with label du. Show all posts

Thursday, 4 November 2010

Почему могут не совпадать показания df и du -sh / ?

Имеем вот такую картину:

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/simfs 16G 16G 115M 100% /
tmpfs 5.9G 0 5.9G 0% /lib/init/rw
tmpfs 5.9G 0 5.9G 0% /dev/shm

du -sh /
du: cannot access `/proc/23728/task/23728/fd/4': No such file or directory
du: cannot access `/proc/23728/fd/4': No such file or directory
5.2G /

Очевидно, куда-то пропало несколько гигабайт разницы между показаниями команд.

Вкратце объясню как так получилось - на сервере были крупные файлы (логи) и они были открыты в некоторых программах (например, nginx и apache). Эти файлы были удалены из системы посредством команды rm, но так как дескрипторы были открыты, данные, разумеется не были удалены (дабы не поломать программы) и хранились до того, пока программа их не "отпустит", но самих ссылок на файлы уже не существовало и du -sh их, разумеется, не видела и не учитывала в отличие от системы квот ядра, которая отлично понимала ситуацию. После перезаупска программ (в данном случае nginx и apache) файлы были отпущены и df -h начал показывать корректные значения.

Итого, после перезпуска демонов имеем корректные показания:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/simfs 16G 5.2G 11G 34% /
tmpfs 5.9G 0 5.9G 0% /lib/init/rw
tmpfs 5.9G 0 5.9G 0% /dev/shm

Дабы не искать, какой именно демон использует файл, можно просто перезапустить машину / VPS.