web-dev-qa-db-ja.com

du-shとdf-hの間の不整合

これは、du -shの結果がdf -hを使用してファイルシステムによって返される結果よりも小さい場合によく発生することです。 (一部のファイルはまだプロセスなどで開いているためです。)しかし、私の場合は逆です。

Ubuntu 12.04を実行していて、NFSマウントの使用サイズを取得しようとしています

df -h270G usedを返し、マウントされたフォルダーのdu -sh320G usedを返します。

更新:次のオプションを使用してパーティションをマウントしています。

nas-server:/path/to/mount /mnt/mount/point  nfs proto=tcp,rsize=8192,wsize=8192,hard,intr,exec

これがどこから来るのか誰か知っていますか?ディスク上の正しい量は270G〜である必要があります

ご協力いただきありがとうございます。必要な追加情報を提供します。

6
D.Mill

素晴らしい答えと提案をしてくれたみんなに感謝します。私は自分の特定の問題に答えるために投稿しています。偶然にそれは誰かを助けます(それは状況を与えられないかもしれません)

NASファイルシステム情報を取得していたのは、間違えていなければ、パーティションに関する限り、特定のレベルの仮想化です(HP X9000)。したがって、dfすべてがうまくいけば、正確な「見積もり」を返す必要があります。

ただし、NASが修正されたため、仮想パーティションのサイズが更新されていなかったため、dfは無効な(古い)値を返していました。 。320Goの実際の正しい値の代わりに270Goを表示する(コメントを間違えました)

上記の問題はすべてこれに起因します。それ以来、これはNASが(何らかの理由で)劣化モードで動作している場合にも発生しました。

みんなありがとう。

1
D.Mill

duは、ハードリンクごとに1回ではなく、ハードリンクされたファイルによって使用されるブロックを1回カウントします。ただし、この重複排除が失敗する可能性のあるいくつかの方法があります。

  1. ハードリンクされたファイルを重複排除するためにduが使用するテーブルは固定サイズです。テーブルに保存できるよりも多くのハードリンクされたファイルがある場合、重複排除は成功しない可能性があります。 (duの一部のバージョンには、動的なサイズのテーブルがあり、この問題はありません。)

  2. 重複排除はiノード値に基づいています。 NASサーバーがハードリンクされたファイルに対して異なるiノード番号を表示する場合、重複排除は不可能です。一部のNASサーバーはiノードを表示するのに優れた仕事をしますiノードを備えたファイルシステムを使用しているためです。他のユーザーは「偽造」する必要があり、うまく機能しません。

ところで...

duはファイルデータのみをカウントします。

dfは、ファイルデータとすべてのメタデータ(ディレクトリ、スーパーブロック、iノードテーブル、直接/間接/二重間接ブロックなど)に使用されるブロックをカウントします。

したがって、dfduよりも小さい「使用済み」サイズを返す必要があります。逆のことが起こっている場合は、この重複排除が壊れているか、NASサーバーがdfに無効な情報を表示させる何かを行ったと思います。

2
TomOnTime