Linux ext4ファイルシステムのテスト中に、通常のデータファイルにinodeと複数のデータブロックを割り当てることがわかりました。ただし、 inode はブロックグループ 0 にあり、データブロックはブロックグループにあります。
データファイルは次のコマンドで生成されます。
sudo dd if=/dev/zero of=output_file bs=1M count=10
ext4ファイルシステムのブロックサイズは4k、inodeサイズは256Bです。
ブロックグループの変更は次のとおりです。
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
...
24285 free blocks, 8182 free inodes, 1 directories, 8177 unused inodes
Free blocks: 8482-8485, 8487-32767
Free inodes: 11-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT, ITABLE_ZEROED]
...
32511 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
Free blocks: 33025-65535
Free inodes: 8193-16384
データファイルを作成したら、ブロックグループを次のように変更します。
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
...
24285 free blocks, 8181 free inodes, 1 directories, 8177 unused inodes
Free blocks: 8482-8485, 8487-32767
Free inodes: 12-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT, ITABLE_ZEROED]
...
29951 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
Free blocks: 33025-34815, 37376-65535
Free inodes: 8193-16384
答え1
実際に質問を指定していませんでした。 「これは正常ですか?」のような質問をしたかったようです。
少し考えると、データブロックの割り当てをすぐに見つけることができます。〜しなければならないinodeの位置とは無関係です。
まず、いくつかの大きなファイルだけが配置されている新しく作成されたファイルシステムを考えてみましょう。最初の大容量ファイルも最初のブロックグループの利用可能なすべてのブロックを使用できるため、ファイルを複数のブロックグループにまたがるようにする方法が必要です。
第二に、inodeをファイル(またはファイルの最初のブロック)と同じブロックグループに配置する必要がある場合、これは2つのブロックグループより大きいすべてのファイルが少なくとも1つのブロックグループ内のすべてのinodeを効果的に消費することを意味します。すべてが完璧であれば2つ。これはとんでもなく非効率的なようです。
したがって、ext4ファイルシステムの内部動作に関する追加情報がない場合でも、次のことをお勧めします。はい、これは正常です。