新しいディレクトリを作成してすぐに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サーバー側のデータを見るとサイズ変更が表示されないことがあります。