du -sh 新しいディレクトリの場合、場所によって結果が異なります。

du -sh 新しいディレクトリの場合、場所によって結果が異なります。

新しいディレクトリを作成してすぐにduを実行すると、これが発生します。このディレクトリには何もありません。

me@mybox[~]$ mkdir /scratch/test2
me@mybox[~]$ du -sh /scratch/test2
4.0K    /scratch/test2

いいですね。 /scratch(RHEL 6.6を実行しているsdaのLV)の新しいディレクトリは4.0Kのスペースを占めます。

me@mybox[~]$ mkdir /home/me/test
me@mybox[~]$ du -sh /home/me/test
512 test

私のホームディレクトリ(Solarisサーバー上のNFSを介してホストされているZFSディレクトリ)の新しいディレクトリは512バイトを占めます。 1分ほど待ってからdu /home/me/testを再実行すると、次のようになります。

me@mybox[~]$ du -sh /home/me/test
1.5K     test

ディレクトリはまだ空ですが、占めるスペースは1.5Kに増加します(私が知っている限りls -la)。

この違いが発生する技術的な理由を知りたいです。通常、512バイトと1.5Kディレクトリの間の短い時間に何が起こりますか?その余分なスペースはどういう意味ですか? 512バイトと1.5Kの両方がローカルディスクディレクトリに必要な4.0Kよりはるかに小さいのはなぜですか?

答え1

ファイルシステムの種類が何であるかを指定していません/scratch。 ext4であると予想しました。 ext4は割り当てに4kブロックを使用するため、これはファイルシステムオブジェクトが使用できる最小スペースです(もちろんサイズが0のファイルを除く)。

ZFSは、スペースを割り当てるために512バイトブロックを使用する非常に特別なファイルシステムです。ディレクトリにアクセスすると、一部の拡張属性がディレクトリに追加され、ディレクトリが使用するスペースが増えた可能性があります。 NFSマウントファイルシステムなので、一部のプロパティバッファリングがある可能性があり、NFSサーバー側のデータを見るとサイズ変更が表示されないことがあります。

関連情報