df と du で報告されるディスク使用量が異なるという現象に出会いました。
df はファイルシステムが思っている使用量を返します。
du はファイル1つ1つのサイズを足し算した使用量を返します。
両者はほぼ同じ値を返すはずです。ところが、さまざまな理由で差異が出てきます。
私が出会ったのはこんな感じでした。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 25G 18G 2.1G 71% /
/dev/sdb1 41G 115M 40G 1% /mnt/hoge
# du -sh /
6.5G /
6.5Gしか使ってないはずなのに、ルートパーティションは18Gも使っていることになっています。
検索してよくでてくる話は、プロセスが消したファイルを掴んでいて、df の方が大きく見えるという原因です。
lsof /
あるいは ls -la /proc/*/fd/* | grep deleted
で調べられます。
対処は、対象のプロセスを再起動する方法もありますし、OSごと再起動してしまうのも手でしょう。
しかし、私が経験したのは別の原因でした。
原因:マウントポイントのマウント前にファイルが大量にあった。
# umount /mnt/hoge
# du -sh /
18G /
いや、そこで食ってるとは思わないやん
・・・
同様の現象に出会った方は「いいね」お願いします m(_ _)m