Linuxまたはより具体的には、EXT4では、カタログファイルの初期サイズは4kBです。しかし、ディレクトリに十分なファイルが保存されると、内部の「ファイルリスト」の増加によりディレクトリファイルのサイズが増加します。しかし、これにはどのくらいのファイルが必要ですか?この質問に答えるリソースが見つかりません。
答え1
ext4ディレクトリエントリの形式は次のとおりです。カーネルに記録された。 2つの可能性があります。
- リニアディレクトリの場合、各エントリは8バイトで4バイトに丸められたファイル名(0で終わる)を占めます。だからNファイル項目は8×を占めます。Nバイトにそれぞれ4に丸められたすべてのファイル名の長さ(0で終わるものを含む)。ディレクトリには常にディレクトリごとに12バイトが含まれ
.
て..
います。各線形ディレクトリには12バイトのチェックサムがあります。ブロックの最後のエントリのレコード長は現在のブロックの残りのスペースを含むように拡張されるため、ディレクトリエントリは2つのファイルシステムブロックにまたがっていません。 - ハッシュツリーディレクトリの場合、各ディレクトリの最初のブロックには40バイトのルートエントリ(およびの
.
ファイルエントリを含む..
)があり、後続の各ブロックには18バイトのノードがあります。各ノードは8バイトを占め、ファイルエントリは線形ディレクトリと同じデータ構造を使用して線形配列で終わります。したがって、ディレクトリで消費されるスペースの量を計算することはより困難です。各ファイルは8バイトに名前の長さを加えた値を4バイトとして使用し、ツリー構造では最初のブロックに40バイトを使用し、各追加ブロックに18バイトを使用します。バイト、ノードあたり8バイト。
ディレクトリのサイズが急速に増加するのを見るには、ファイル名の長いファイルで埋めます。ファイル名は最大254バイトに終了0バイトを加えて合計264バイトを占めるため、各Aディレクトリタイプは16バイトです。各ディレクトリのエントリには4096バイト以上が必要です。
ディレクトリが線形かハッシュかどうかを確認するには、対応するinodeを確認してください。例えば使用debugfs
:
debugfs: show_inode_info /path/to/directory
Inode: 7329 Type: directory Mode: 0755 Flags: 0x1000
Generation: 2283115506 Version: 0x00000001
...
ディレクトリがハッシュされている場合、フラグは0x1000セットとして表示され、それ以外の場合は設定されません。
答え2
新しいディレクトリ:
mkdir newtemp
新しいディレクトリサイズ:
ls -l | grep newtemp
drwxr-xr-x 2 jsevans users 6 Jan 11 17:42 newtemp
タッチして新しい空のファイルを作成します。
touch 1
寸法を再確認してください。
ls -l | grep newtemp
drwxr-xr-x 2 jsevans users 15 Jan 11 17:42 newtemp
そのため、1つのファイルが必要です。
質問に回答がない場合は確認してください。ls コマンドの全文書マニュアルページによると。