NFS 経由でリモート ファイルシステムをマウントした Solaris 10 サーバーがあります。リモート システムは NetApp だと思いますが、はっきりしません。
実行すると、df -h <mountpoint>
サイズ 12T が取得され、容量が 87% の 10T が使用されました。
マウントポイントに変更して実行すると、ls -A |xargs du -s
約 8 MB になります。du は再帰的に降下してすべてのファイル サイズを合計することを期待していましたが、ここではそうではないようです。
ヘッジとして、私は走った
find <mountpoint> -ls | awk '{total=total+$7}END{print total}'
答えは 13006791645 です。1024^3 (1073741824) で割ると、約 12.1 テラバイトになります。
find -ls
したがって、と はdf
多かれ少なかれ一致しているように見えます。なぜ du はそれほどひどく失敗するのでしょうか?
PS: コマンドはls -A
隠しスナップショット ディレクトリも取得しますが、何も見つかりません (「サイクルが検出されました」を除く)。
答え1
du -s
は 512 バイトのブロックでレポートします。 は人間が判読できるデータをレポートしないdf -h
ため、 との比較はできません。du
両方の値を比較するには、 または を使用して、du -sh <mountpoint>
512バイト単位でもレポートできる/usr/xpg4/bin/df -P
ようにします。df
によるとman du
:
複数のリンクを持つファイルは、1 つのエントリのみカウントされ、書き込まれます。レポートで選択されたディレクトリ エントリは指定されていません。デフォルトでは、ファイル サイズは 512 バイト単位で書き込まれ、次の 512 バイト単位に切り上げられます。
/usr/xpg4/bin/df -P
次のように報告された 512 バイトを取得してみてくださいdf
:
bash-3.2$ /usr/xpg4/bin/df -P /var
Filesystem 512-blocks Used Available Capacity Mounted on
rpool/ROOT/s10/var
1147797504 66061270 954397119 7% /var
以下と比較してくださいdu -s
:
bash-3.2$ du -s /var
65976060 /var
あるいは比較してみましょう:
bash-3.2$ df -h /var
Filesystem size used avail capacity Mounted on
rpool/ROOT/s10x_u11wos_24a/var
547G 32G 455G 7% /var
と:
bash-3.2$ du -hs /var
31G /var