它是硬碟分區開頭——開頭的第一個byte是byte 0,從 byte 1024開始往後的一部分數據。由於 block size最小是 1024 bytes,所以super block可能是在block 1中(此時block 的大小正好是 1024 bytes),也可能是在block 0中。 超級塊中的數據其實就是檔案卷的控制信息部分,也可以說它是卷資源表,有關檔案卷的大部分信息都保存在這裡。例如:硬碟分區中每個block的大小、硬碟分區上一共有多少個block group、以及每個block group中有多少個inode。
基本介紹
- 中文名:超級塊
- 外文名:super block
- 性質:一部分數據
- 位置:硬碟分區開頭
預備知識
結構和涵義
struct ext3_super_block {/*00*/ __u32 s_inodes_count; /* inodes 計數 */__u32 s_blocks_count; /* blocks 計數 */__u32 s_r_blocks_count; /* 保留的 blocks 計數 */__u32 s_free_blocks_count; /* 空閒的 blocks 計數 *//*10*/ __u32 s_free_inodes_count; /* 空閒的 inodes 計數 */__u32 s_first_data_block; /* 第一個數據 block */__u32 s_log_block_size; /* block 的大小 */__s32 s_log_frag_size; /* 可以忽略 *//*20*/ __u32 s_blocks_per_group; /* 每 block group 的 block 數量 */__u32 s_frags_per_group; /* 可以忽略 */__u32 s_inodes_per_group; /* 每 block group 的 inode 數量 */__u32 s_mtime; /* Mount time *//*30*/ __u32 s_wtime; /* Write time */__u16 s_mnt_count; /* Mount count */__s16 s_max_mnt_count; /* Maximal mount count */__u16 s_magic; /* Magic 簽名 */__u16 s_state; /* File system state */__u16 s_errors; /* Behaviour when detecting errors */__u16 s_minor_rev_level; /* minor revision level *//*40*/ __u32 s_lastcheck; /* time of last check */__u32 s_checkinterval; /* max. time between checks */__u32 s_creator_os; /* 可以忽略 */__u32 s_rev_level; /* Revision level *//*50*/ __u16 s_def_resuid; /* Default uid for reserved blocks */__u16 s_def_resgid; /* Default gid for reserved blocks */__u32 s_first_ino; /* First non-reserved inode */__u16 s_inode_size; /* size of inode structure */__u16 s_block_group_nr; /* block group # of this superblock */__u32 s_feature_compat; /* compatible feature set *//*60*/ __u32 s_feature_incompat; /* incompatible feature set */__u32 s_feature_ro_compat; /* readonly-compatible feature set *//*68*/ __u8 s_uuid[16]; /* 128-bit uuid for volume *//*78*/ char s_volume_name[16]; /* volume name *//*88*/ char s_last_mounted[64]; /* directory where last mounted *//*C8*/ __u32 s_algorithm_usage_bitmap; /* 可以忽略 */__u8 s_prealloc_blocks; /* 可以忽略 */__u8 s_prealloc_dir_blocks; /* 可以忽略 */__u16 s_padding1; /* 可以忽略 *//*D0*/ __u8 s_journal_uuid[16]; /* uuid of journal superblock *//*E0*/ __u32 s_journal_inum; /* 日誌檔案的 inode 號數 */__u32 s_journal_dev; /* 日誌檔案的設備號 */__u32 s_last_orphan; /* start of list of inodes to delete *//*EC*/ __u32 s_reserved[197]; /* 可以忽略 */};