iT邦幫忙

DAY 25
4

檔案系統的設計與效能系列 第 25

檔案系統的設計與效能 - Superblock

Superblock紀錄檔案系統諸多重要資訊,從實體volume的名稱、大小、index資料等等。
Superblock紀錄檔案系統諸多重要資訊,從實體volume的名稱、大小、index資料等等。Superblock的資料結構如下示:

typedef struct disk_super_block
{
    char name[OS_NAME_LENGTH];
    int32 magic1;
    int32 fs_byte_order;
    uint32 block_size;
    uint32 block_shift;
    off_t num_blocks;
    off_t used_blocks;
    int32 inode_size;
    int32 magic2;
    int32 blocks_per_ag;
    int32 ag_shift;
    int32 num_ags;
    int32 flags;
    block_run log_blocks;
    off_t log_start;
    off_t log_end;
    int32 magic3;
    inode_addr root_dir;
    inode_addr indices;
    int32 pad[8];
} disk_super_block;

其中的magic number的作用是作為資料結構驗證點,當檔案系統被mount時,系統會去驗證magic number是否正確,以判斷檔案系統是否有毀損。

block_size欄位用以定義block的大小,而block_shift是記錄位移的量,以取得正確位址。num_blocksused_blocks這兩個欄位用來記錄vloume中有效的block數量,以及有多少block在使用中。inode_size定義i-node的大小,blocks_per_ag欄位是用來記錄在每個allocation group中bitmap block的數量,而ag_shift則是定義blocks_per_ag的位移值。num_ags欄位記錄的是allocation group的數量,flages是用來記錄superblock的狀態。在superblock中也需要定義journal所使用的block範圍,而這些資訊就記錄在log_startlog_end中,分別代表journal block的起始與結束位址。最後root_dirindices這兩個欄位,跟目錄與index的位址。

系列文章


上一篇
檔案系統的設計與效能 - Block Allocation
下一篇
檔案系統的設計與效能 - I-Node Management
系列文
檔案系統的設計與效能32

尚未有邦友留言

立即登入留言