Filesystems

Ext2 塊結構:保留 GDT 塊的大小

  • February 8, 2021

在我發現的每篇關於 ext2 的出版物中,塊組的結構都定義如下:

  • 超級塊:1塊
  • 組描述符:N 個塊
  • 數據點陣圖:1塊
  • Inode 點陣圖:1 塊
  • 索引節點表:N 個塊
  • 數據塊:剩餘塊

然而,在ext2 核心文件中指出,版本 >0 可能不會在每個塊組中儲存超級塊和組描述符的副本。

當我fsstat我的 ext2 分區時,我得到以下輸出:

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%)

這個輸出有兩點讓我感到困惑:

  1. 在 SB 和 group desc 的組中。被儲存,組 desc 之間有 256 個塊的間隙。和數據點陣圖。 編輯:使用dumpe2fs我剛剛發現這些是保留的 GDT 塊,用於線上調整大小 所以新的問題是,這些保留的 GDT 塊的大小是如何確定的?
  2. 第 2 組是什麼Data Blocks: 16387 - 16386意思?

resize_inode 功能創建了一個隱藏的 inode(編號 7,您可以在 中查看它debugfsstat <7>來保留這些塊,以便 GDT 可以增長。預設情況下,它保留足夠的空間來將文件系統增長到其原始大小的 1024 倍。mke2fs您可以在格式化時禁用該功能或使用選項調整大小。

第 2 組中的數據塊:16387 - 16386 是什麼意思?

這看起來只是程序中的一個錯誤,因為你不能有一個負大小(在它開始之前結束)範圍。

引用自:https://unix.stackexchange.com/questions/122771