ファイルシステム全体に1つのinodeテーブルがありますか、それとも各ブロックグループに1つありますか?

ファイルシステム全体に1つのinodeテーブルがありますか、それとも各ブロックグループに1つありますか?

다음 이미지는 "실린더 그룹"(요즘은 일반적으로 블록 그룹이라고 하는 것 같습니다)의 레이아웃을 보여주며, 각 블록 그룹에는 자체 inode 테이블이 있음을 설명하는 것 같습니다.

シリンダーグループ

しかし、この本はLinuxプログラミングインターフェースinodeテーブルについては、次のような言葉があります。

ファイルシステムのinodeテーブルには、ファイルシステム内の各ファイルのinode(インデックスノードの略語)が含まれています。

これは、各ブロックグループに1つではなく、ファイルシステム全体に対して1つのinodeテーブルがあることを意味します。

そこにもあります:

  • フルファイルシステムのinodeテーブル
  • そのグループのinodeのみを追跡するブロックグループごとのinodeテーブルがあります。
  • ファイルシステム全体の inode テーブルをグループにバックアップします。 (スーパーブロックをグループ全体にバックアップするのと似ています)
  • 他に何もない?

ext2/3とext4の間に内容が少し混ざっている可能性がありますが、オンラインで読んだ内容で扱う内容は必ずしも明確ではありません。

ありがとうございます。

ベストアンサー1

これで正式なext4ドキュメントが利用可能になりましたカーネル文書の一部。これを参照して、あなたの質問への答えは選択2です。

そのグループのinodeのみを追跡するブロックグループごとのinodeテーブルがあります。

索引ノード表自体について説明します。索引ノード記述から:

inodeテーブルは線形配列ですstruct ext4_inode。テーブルのサイズは、最小sb.s_inode_size * sb.s_inodes_per_groupバイトを格納するのに十分なブロックでなければなりません。アノードを含むブロックグループの数はで計算でき、(inode_number - 1) / sb.s_inodes_per_groupグループテーブルのオフセットはです(inode_number - 1) % sb.s_inodes_per_group。インデックスノード0がありません。

これは、各inodeテーブルがそのグループのinodeを記述することを確認します。

ブロックグループの全体的なレイアウトは次のとおりです。レイアウトセクション。これはダイアグラムと一致しますが、予想どおり実際に複数のブロックグループがある可能性があり、各ブロックグループにはその内容(ファイルシステム全体の内容ではなく)を記述する独自のデータ構造があります。

ext4には追加の特徴があります。柔軟なブロックグループ。この機能が有効になっていると、複数のブロックグループを1つにまとめることができ、対応するinodeテーブルはすべて最初のブロックグループに保存されます。これは、ブロックグループのinodeテーブル(および他のデータ構造)へのポインタがブロックグループの外側を指す可能性があることを意味します。

おすすめ記事