グループ内のブロックとフラグメントの違いは何ですか?

グループ内のブロックとフラグメントの違いは何ですか?

mke2fs コマンドの出力は次のようになります。

root@localhost:~# mke2fs /dev/xvdf
mke2fs 1.42.9 (4-Feb-2023)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872
 
Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

私が理解していないのはこれです。

グループあたり32768ブロック、グループあたり32768セグメント

私が理解したところによれば、ハードドライブ(通常512B)のセクタは最初にグループに分けられます。セクタグループをブロックと呼びます。各ブロックグループには32768個のブロックがあります。

ここで私が理解していないのは断片化です。

これらは何ですか?どういう意味ですか?そして私のFSでフラグメントを変更できますか?

ベストアンサー1

Linux は意図的に UNIX との互換性を試みます。ここで言うのはUnix主義であり、ext2/ext3/ext4ファイルシステムは実装するのに十分な重要な概念を見つけることができませんでした。

1996年にMcKusick et al。 14ページの概念が説明されています。 「4.4 BSDオペレーティングシステムの設計と実装」ページ271。

このセクションは、チャンクサイズが役に立つ可能性があることを観察することから始まります。したがって、ファイルシステムのペア(ブロックサイズが1KiBのシステムとブロックサイズが8KiBのシステム)から大容量ファイルを読み取ると、ブロックサイズが大きいほどオーバーヘッドが少なく、ランタイムが速くなることがわかります。

しかし、ほとんどの「ファイルシステムには主に小さなファイルが含まれているため、コストがかかります。均一なブロックサイズはスペースの無駄です」 1TBのディスクストレージを購入するのに費やされたコストが、それと今では大きく異なることを覚えておいてください。

また、中間ファイルサイズが2KiB未満で平均サイズが22KiBの場合の一般的なファイルシステムのいくつかを調べます。これは、小さなファイルまたは大きなファイルの後半を「フラグメント」に入れることを意味します。 8つのKiBブロックに8つの1KiBの断片があり、8つの個別のファイル内容を保存できます。

要約:フラグメントの背後にある動機は、小さなファイルの最後にゼロを格納する8KiBチャンクの大部分を無駄にしないことです。ストレージ経済性の変化はインセンティブを変えます。

おすすめ記事