Ext2 文件系统的硬盘布局
回页首
详细的布局情况
3.1 Super Block
所谓 ext2 文件系统的 super block,就是硬盘分区开头(开头的第一个 byte 是 byte 0)从 byte 1024 开始往后的一部分数据。由于 block size 最小是 1024 bytes,所以 super block 可能是在 block 1 中(此时 block 的大小正好是 1024 bytes),也可能是在 block 0 中。
硬盘分区上 ext3 文件系统的 super block 的详细情况如下。其中 __u32 是表示 unsigned 不带符号的 32 bits 的数据类型,其余类推。这是 Linux 内核中所用到的数据类型,如果是开发用户空间(user-space)的程序,可以根据具体计算机平台的情况,用 unsigned long 等等来代替。下面列表中关于 fragments 的部分可以忽略,Linux 上的 ext3 文件系统并没有实现 fragments 这个特性。另外要注意,ext3 文件系统在硬盘分区上的数据是按照 Intel 的 Little-endian 格式存放的,如果是在 PC 以外的平台上开发 ext3 相关的程序,要特别注意这一点。如果只是在 PC 上做开发,倒不用特别注意。
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 */ 本新闻共 6页,当前在第 2页 1 2 3 4 5 6 |