$ ls -l
total 28
drwxrwxrwx 1 t t 4096 May 8 2018 dir1
drwxrwxrwx 1 t t 0 Mar 12 2015 dir2
drwxrwxrwx 1 t t 4096 Jan 17 2014 dir3
drwxrwxrwx 1 t t 4096 Jun 12 2017 dir4
drwxrwxrwx 1 t t 0 Aug 24 2012 dir5
ディレクトリサイズが0または4096の理由は何ですか?
ディレクトリのエントリがinodeに収まるので、ディレクトリのサイズは0ですか?
ディレクトリ内のエントリがそのinodeに収まらず、いくつかのデータブロックが必要なので、ディレクトリのサイズがゼロ以外ではありませんか?
ディレクトリのゼロ以外のサイズが常に4096であるのはなぜですか?
ありがとうございます。
私の観察はext4ファイルシステムとNTFSファイルシステムで同じです。これは、両方のファイルシステムタイプが同様の方法でディレクトリを実装することを意味しますか?
答え1
一部のファイルシステムには、非常に小さなディレクトリ用のinodeスペースがあります。ただし、ディレクトリがその領域に入るのに十分な大きさになると、オペレーティングシステムはファイル割り当て単位全体を割り当てます。あなたの場合は明らかに4096バイトです。
ext4では、inline_data ext4オプションで有効になります。
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Inline_Directories
答え2
約4096
見積もりテリー王の答え:
ディレクトリは、ファイル名と inode 番号の配列を含む特別なファイルです。ディレクトリが作成されると、ファイルシステムは「ファイル名」(実際にはディレクトリ名)を持つディレクトリに1つのinodeを割り当てます。 inodeは単一のデータブロック(最小オーバーヘッド)を指し、サイズは4096バイトです。
ディレクトリは4096より大きくなる可能性があります。ext4独自の「バグ」の1つファイルシステムであまり優先順位が得られないことは、ディレクトリ情報が4096バイトを超えた後にファイルを削除してもその数が減らないことです。おそらく最も重要なニュースは、情報がディレクトリに割り当てられる方法がファイルシステムと有効/無効のオプションによって異なります。源泉)、したがって、この場合、特殊番号4096はext4に固有のものですが、他のファイルシステム(UFSなど)では異なる番号にすることができます。
しかし、Terryがディレクトリを表すinodeについて話していることに注意してください。このinode自体は親ディレクトリのディレクトリです。初期ディレクトリの内容はディレクトリまたはリンク.
です。..
約0
ext4ファイルシステムは、デフォルトで(空であっても)4096バイトを割り当てるディレクトリを作成します。それが鍵です。 ~によるとサーバー障害そしてArch Linuxフォーラムディレクトリサイズが0と表示されている場合は、そのディレクトリがext4以外のファイルシステムにあるか、それをホストすることを意味します。
仮想ファイルシステム(実際には物理ディスク上のファイルシステムではなく、カーネルによって公開されメモリに含まれるインターフェイス)の場合も同様です。
$ ls -ld /proc /sys
dr-xr-xr-x 243 root root 0 Feb 24 13:57 /proc
dr-xr-xr-x 13 root root 0 Feb 26 14:42 /sys