コマンド出力のディレクトリサイズはどういう意味ですかls -l
?
答え1
これは、ディレクトリメタ情報(つまり、ディレクトリに属するファイルテーブル)を格納するために使用されるディスク容量です。 1024の場合、ディスクの1024バイトがこの目的に使用されることを意味します(常にブロック全体を割り当てます)。
答え2
印刷された「ディレクトリサイズ」(すべてのファイル形式と同様)は、呼び出しls -l
によって報告された値です。stat()
statbuf.st_size
これがst_size
ディレクトリについて何を意味するのかは、ファイルシステムの種類によって完全に異なります。ファイルシステムの種類がわからず、その概念を理解していない限り、その値から何も推測できませんst_size
。
現在一般的に名前が付けられている過去のUNIXファイルシステムでは、
v7-fs
ディレクトリには16ビットのinode番号と14バイトのファイル名を含む重複した16バイトのエントリがあります。ディレクトリの「サイズ」は操作read(2)
に意味があり、常に大きくなったり同じままです。.
エントリは、..
現在のディレクトリと親ディレクトリに手動でハードリンクすることによって作成されます。一般的な空の生ディレクトリのリンク数は2です。1989年(SVr4)のBSD-4.2ファイルシステムでは、
ufs
ディレクトリは安定していない形式を使用する可変長レコードのシーケンスなので、ユーザースペースコマンドはこの形式を読み取ることができません。報告された「サイズ」は、v7-fsのバイト単位のサイズです。サイズは一般的に大きくなるか、または同じままですが、最新バージョンのファイルシステムでは場合によってはサイズが縮小される可能性がありますが、必ずしも期待したサイズではありません。 。同様に、空のディレクトリはリンク数を2として報告しますv7-fs
。1988年夏から1991年5月の間に、私が設計して実装したファイルシステムでは、ディレクトリは
WOFS
常に「サイズ」0を報告し、readと言えるコンテンツタイプはまったくありませんでしたread(2)
。これは、WOFS
最初の記録中にコピーされたファイルシステムであり、ファイルがディレクトリWOFS
に一覧表示されず、そのディレクトリに報告されるためです。WOFS
読み取りディレクトリを使用している場合は、合計readdir()
ではなく予想項目のデータのみを取得します。空のディレクトリのリンク数は1で、全体の動作はPOSIXと完全に互換性があります。.
..
WOFS
では論文を読んだ後、
ZFS
これを実装しました。は書き込み時にコピーファイルシステムであり、作成者は.ZFSのディレクトリから報告するという事実を否定しません。したがって、報告された「サイズ」は、ディレクトリデータが占めるディスク容量について実際の意味を持ちません。 ZFSディレクトリにはエントリがありませんが、呼び出すとこれらのエントリが偽造され、最初の2つの操作に返されます。 ZFSは、リスト内のハードリンクされたディレクトリをサポートしていない唯一のFSですが、報告されたディレクトリリンクの数は常に2です。 ZFSのこれら2つの不規則性は、POSIXではなく記録プログラムの混乱を減らすために実装されました。WOFS
ZFS
WOFS
number of directory entries
st_size
.
..
readdir()
ZFSと同様に、WAFLは論文が公開されてから3年後に作成され、WAFLは書き込み時に複製されますが、
WOFS
WAFLが報告する「サイズ」の値は、ディレクトリにコンテンツがあると仮定すると「実際のディレクトリサイズ」になる可能性があります。WAFL
WOFS
答え3
ディレクトリは、その内容とその内容のメタデータ用に少なくとも4096バイトを予約します。
また、4096バイトはext2 / ext3 / ext4ファイルシステムのデフォルトの割り当て単位(ブロック)なので、ディレクトリは小さくできません。
他のファイルシステムでは、ファイルシステムのデフォルトブロックサイズによって、ディレクトリのデフォルトサイズが異なる場合があります。
ディレクトリサイズはいっぱいになると動的に大きくなる可能性がありますが、いったん埋め込まれると、ディレクトリを削除しないとメタデータ用に予約されたスペースを再割り当てできません。
答え4
ディレクトリは、電話帳などの単純なディレクトリです。これは、数字のリストと数字の横に名前を含むファイルにすぎません。各数字はファイルシステムのファイル(アノード番号)を表し、名前はファイル名です。
このデータを保持するにはディスク容量が必要であり、割り当て、増分、縮小の方法はファイルシステムによって異なります。