回答:
これは、ディレクトリのメタ情報(つまり、このディレクトリに属するファイルのテーブル)を保存するために使用されるディスク上のスペースのサイズです。つまり、1024の場合、この目的のためにディスク上の1024バイトが使用されます(常に完全なブロックが割り当てられます)。
で出力される「ディレクトリのサイズ」ls -l
は、(すべてのファイルタイプと同様に)のstat()
呼び出しによって報告される値statbuf.st_size
です。
これst_size
がディレクトリにとって何を意味するかは、ファイルシステムのタイプに完全に依存します。ファイルシステムの種類とその概念を理解していない限り、の値から何も推測できませんst_size
。
現在通常名前が付けられている歴史的なUNIXファイルシステムではv7-fs
、ディレクトリは16バイトのiノード番号と14バイトのファイル名を含む16バイトのエントリを繰り返していました。ディレクトリの「サイズ」は、read(2)
操作に関して意味があり、常に拡大またはそのままでした。.
そして..
エントリは手動で、現在のレベル上のディレクトリに対してそれらをハードリンクすることによって作成されます。正常な空の乙女ディレクトリのリンク数は2です。
1989(SVr4)以降呼び出されたBSD-4.2ファイルシステムではufs
、ディレクトリは安定性が認められていない形式を使用する一連の可変長レコードであるため、ユーザースペースコマンドはこの形式を読み取ることができません。報告される「サイズ」は、v7-fsの場合のバイト単位のサイズです。通常、サイズは拡大またはそのままですが、ファイルシステムの新しいバージョンでは、状況によってはサイズが縮小する場合があります。空のディレクトリについて報告されるリンク数は、と同様に2 v7-fs
です。
ではWOFS
ディレクトリは常に「サイズ」0を報告し、使用して読み取ることができるコンテンツの種類必要はありません、ファイルシステム、私は設計されており、夏の1988年と1991年5月の間に実装read(2)
コールを。これはWOFS
、最初のCopy-on-Writeファイルシステムであり、WOFS
ファイル内ではディレクトリにリストされるのではなく、ファイルが存在するディレクトリを報告するためです。WOFS
を使用してディレクトリを読み取る場合readdir()
、目的のエントリのデータのみを取得し、.
andのデータは取得しません..
。上の空のディレクトリのリンクカウントWOFS
は1で、全体の動作は完全にPOSIXに準拠しています。
でZFS
、それはWOFS
論文を読んだ後に実装されました。ZFS
はコピーオンライトのファイルシステムであり、その作成者はから概念をコピーしたことを否定しませんWOFS
。ZFSのディレクトリはnumber of directory entries
inを報告するst_size
ため、報告された「サイズ」は、ディレクトリデータの占有ディスク容量に関して実際の意味を持ちません。そこにはありません.
し、..
エントリがZFSディレクトリに、しかし、あなたが呼び出す場合readdir()
、これらのエントリは、偽造し、最初の二つの操作のために返されます。ZFSは、ディレクトリ内のハードリンクをサポートしていない唯一のFSです。ただし、報告されるディレクトリのリンク数は常に2です。
ZFSと同様に、WAFLはすべてではありませんがいくつかのアイデアをからコピーしWOFS
ます。Netapp WAFL
は、WOFS
論文の発行から3年後に書かれたもので、WAFLはコピーオンライトですが、WAFLは、ディレクトリにコンテンツがあると仮定して、「実際のディレクトリサイズ」である「サイズ」値を報告するようです。
ディレクトリは、自身とそのコンテンツに関するメタデータ用に、少なくとも4096バイトを予約します。
また、4096バイトはext2 / ext3 / ext4ファイルシステムのデフォルトの割り当て単位(ブロック)であるため、ディレクトリをこれより小さくすることはできません。
異なるファイルシステムでは、デフォルトのサイズが異なるディレクトリが見つかる場合があります。これは、ファイルシステムのデフォルトのブロックサイズが原因です。
ディレクトリのサイズもいっぱいになると動的に大きくなりますが、一度いっぱいになると、メタデータ用に予約されたスペースは、ディレクトリを削除しないと再割り当てできません。
ディレクトリは、電話帳のような単なるディレクトリです。それは、数字のリストとそれらの横にある名前を持つ単なるファイルです。各番号はファイルシステム内のファイル(iノード番号)を参照し、名前はファイル名です。
そのデータを保存するにはディスク容量が必要です。データの割り当てと拡大、縮小の方法はファイルシステムに依存します。