Ext2ブロック構造:GDTブロックサイズを保持

Ext2ブロック構造:GDTブロックサイズを保持

ext2で見つかったすべての出版物において、ブロックグループの構造は次のように定義されます。

  • スーパーブロック:1ブロック
  • グループ記述子:Nブロック
  • データビットマップ:1ブロック
  • Inode ビットマップ: 1ブロック
  • インデックスノードテーブル:Nブロック
  • データブロック:残りのブロック

しかしext2カーネルドキュメントバージョン> 0は、各ブロックグループにスーパーブロックとグループ記述子のコピーを保存しない可能性があります。

ext2パーティションを使用すると、fsstat次の結果が表示されます。

Group: 1:
  Inode Range: 1977 - 3952
  Block Range: 8193 - 16384
  Layout:
    Super Block: 8193 - 8193
    Group Descriptor Table: 8194 - 8194
    Data bitmap: 8451 - 8451
    Inode bitmap: 8452 - 8452
    Inode Table: 8453 - 8699
    Data Blocks: 8700 - 16384
  Free Inodes: 1976 (100%)
  Free Blocks: 0 (0%)
  Total Directories: 0

Group: 2:
  Inode Range: 3953 - 5928
  Block Range: 16385 - 24576
  Layout:
    Data bitmap: 16385 - 16385
    Inode bitmap: 16386 - 16386
    Inode Table: 16387 - 16633
    Data Blocks: 16387 - 16386, 16634 - 24576
  Free Inodes: 1976 (100%)
  Free Blocks: 0 (0%)

この出力に関する2つのことが私を混乱させます。

  1. SBグループとグループの説明。保存時のグループ記述の間には256ブロックの間隔があります。とデータビットマップ。 編集:dumpe2fsGDTブロックを使用して、これが予約されていることがわかりました。オンラインサイズ変更用 もしそうなら、新しい質問は、予約されたGDTブロックのサイズがどのように決定されるかです。

  2. Data Blocks: 16387 - 16386グループ2はどういう意味ですか?

答え1

resize_inode関数は、GDTが大きくなるようにこれらのブロックを予約するために隠されたinodeをdebugfs生成します。stat <7>デフォルトでは、ファイルシステムを元のサイズの1024倍に増やすのに十分なスペースを予約します。mke2fsフォーマット時に機能を無効にするか、サイズ変更オプションを使用できます。

グループ2:16387 - 16386のデータブロックはどういう意味ですか?

負のサイズ(開始前の終わり)の範囲を持つことができないため、これはプログラムのバグのように見えます。

関連情報