web-dev-qa-db-ja.com

Ext2ブロック構造:予約済みGDTブロックのサイズ

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

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

ただし、 ext2 kernel doc には、バージョン> 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ブロックのギャップがあります。およびデータビットマップ。 編集:dumpe2fsを使用すると、これらが予約済みのGDTブロックであることがわかりました オンラインサイズ変更に使用新しい質問は、これらの予約済みGDTブロックのサイズはどのように決定されるのかということです。

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

3
goose999

Resize_inode機能は非表示のiノード(番号7、debugfsstat <7>を使用して表示できます)を作成して、GDTを拡張できるようにそれらのブロックを予約します。デフォルトでは、ファイルシステムを元のサイズの1024倍に拡張するのに十分なスペースが予約されています。フォーマット時にmke2fsのオプションを使用して、機能を無効にしたり、サイズを調整したりできます。

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

負のサイズ(開始する前に終了する)の範囲を設定することはできないため、これは単にプログラムのバグのように見えます。

2
psusi