Filesystems
Ext2 塊結構:保留 GDT 塊的大小
在我發現的每篇關於 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%)
這個輸出有兩點讓我感到困惑:
- 在 SB 和 group desc 的組中。被儲存,組 desc 之間有 256 個塊的間隙。和數據點陣圖。 編輯:使用
dumpe2fs
我剛剛發現這些是保留的 GDT 塊,用於線上調整大小。 所以新的問題是,這些保留的 GDT 塊的大小是如何確定的?- 第 2 組是什麼
Data Blocks: 16387 - 16386
意思?
resize_inode 功能創建了一個隱藏的 inode(編號 7,您可以在 中查看它
debugfs
)stat <7>
來保留這些塊,以便 GDT 可以增長。預設情況下,它保留足夠的空間來將文件系統增長到其原始大小的 1024 倍。mke2fs
您可以在格式化時禁用該功能或使用選項調整大小。第 2 組中的數據塊:16387 - 16386 是什麼意思?
這看起來只是程序中的一個錯誤,因為你不能有一個負大小(在它開始之前結束)範圍。