ディレクトリサイズを決定するものは何ですか?


10

ディレクトリ自体のサイズは、その中のファイルのサイズとは異なることを知っています。

私はディレクトリを、その中のディレクトリとファイルのリストと考えています。したがって、ディレクトリのサイズは、ブロックサイズの制約のため、最低4096バイトで、その中のファイル/ディレクトリの数に関連している必要があります。

しかし、私のシステムでは、4096バイトの適切に設定された多くのディレクトリと、約10メガバイトである、それほど設定されていないいくつかのディレクトリがあります。なぜこれが起こるのか説明してもらえますか?


1
さらに読書のために、これは非常に有益です:askubuntu.com/a/404716/380067
コス

3
ディレクトリ内のエントリ数だけでなく、名前の長さも重要です。
kasperd

回答:


13

サイズは、使用するファイルシステム、およびそのディレクトリ内の任意の時点でのエンティティの最大数によって決まります。ディレクトリ用に予約されているデフォルトサイズを使い果たすと、より多くのスペースがディレクトリに割り当てられます。ただし、エンティティの数が減少しても、割り当てられたスペースは自動的には解放されません。したがって、ある時点でディレクトリに1,000万のエンティティがある場合、そのうちの9,999,999が削除されても、同じサイズのままになります。これは、このUnixおよびLinuxの投稿のような興味深い状況につながります。

$ mkdir foo; touch foo/{1..100000}; stat -c %s foo
2179072
$ rm foo/*; stat -c %s foo
2179072

これは必ずしも他のファイルシステムには当てはまりません。ext{2,3,4}ファイルシステムが影響を受けます。NTFSは、それほどではありません。tmpfsとbtrfsはそうではありません。ZFSはかなり保守的2です。2番目のstatコマンドの出力を取得しました。

関連:


すごい!それがどうなるのか、まだ疑問に思っていました。
kos

XFSは影響を受けません!追加する必要があります
Edward Torvalds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.