これは、du -sh
の結果がdf -h
を使用してファイルシステムによって返される結果よりも小さい場合によく発生することです。 (一部のファイルはまだプロセスなどで開いているためです。)しかし、私の場合は逆です。
Ubuntu 12.04を実行していて、NFSマウントの使用サイズを取得しようとしています
df -h
は270G used
を返し、マウントされたフォルダーのdu -sh
は320G used
を返します。
更新:次のオプションを使用してパーティションをマウントしています。
nas-server:/path/to/mount /mnt/mount/point nfs proto=tcp,rsize=8192,wsize=8192,hard,intr,exec
これがどこから来るのか誰か知っていますか?ディスク上の正しい量は270G〜である必要があります
ご協力いただきありがとうございます。必要な追加情報を提供します。
素晴らしい答えと提案をしてくれたみんなに感謝します。私は自分の特定の問題に答えるために投稿しています。偶然にそれは誰かを助けます(それは状況を与えられないかもしれません)
NASファイルシステム情報を取得していたのは、間違えていなければ、パーティションに関する限り、特定のレベルの仮想化です(HP X9000)。したがって、df
すべてがうまくいけば、正確な「見積もり」を返す必要があります。
ただし、NASが修正されたため、仮想パーティションのサイズが更新されていなかったため、df
は無効な(古い)値を返していました。 。320Goの実際の正しい値の代わりに270Goを表示する(コメントを間違えました)
上記の問題はすべてこれに起因します。それ以来、これはNASが(何らかの理由で)劣化モードで動作している場合にも発生しました。
みんなありがとう。
du
は、ハードリンクごとに1回ではなく、ハードリンクされたファイルによって使用されるブロックを1回カウントします。ただし、この重複排除が失敗する可能性のあるいくつかの方法があります。
ハードリンクされたファイルを重複排除するためにduが使用するテーブルは固定サイズです。テーブルに保存できるよりも多くのハードリンクされたファイルがある場合、重複排除は成功しない可能性があります。 (du
の一部のバージョンには、動的なサイズのテーブルがあり、この問題はありません。)
重複排除はiノード値に基づいています。 NASサーバーがハードリンクされたファイルに対して異なるiノード番号を表示する場合、重複排除は不可能です。一部のNASサーバーはiノードを表示するのに優れた仕事をしますiノードを備えたファイルシステムを使用しているためです。他のユーザーは「偽造」する必要があり、うまく機能しません。
ところで...
du
はファイルデータのみをカウントします。
df
は、ファイルデータとすべてのメタデータ(ディレクトリ、スーパーブロック、iノードテーブル、直接/間接/二重間接ブロックなど)に使用されるブロックをカウントします。
したがって、df
はdu
よりも小さい「使用済み」サイズを返す必要があります。逆のことが起こっている場合は、この重複排除が壊れているか、NASサーバーがdf
に無効な情報を表示させる何かを行ったと思います。