分析Superblock,其内容及个字节的作用如下:
字节位置
| 类 型
|
作
用
| 0-3 | __le32
| 总的inode数
| 4-7 | __le32
| 总的block数
| 8-11 | __le32
| 文件系统保留的块数
| 12-15 | __le32
| 空闲块数
| 16-19 | __le32
| 空闲inode数
| 20-23 | __le32
| 块组0的起始块号
| 24-27 | __le32
| 块大小
| 28-31 | __le32
| 片断(Fragment)大小
| 32-35 | __le32
| 每个块组所包含的块数
| 36-39 | __le32
| 每个块组所包含的片断数
| 40-43 | __le32
| 每个块组所包含的inode数
| 44-47 | __le32
| 最后挂载时间
| 48-51 | __le32
| 最后写入时间
| 52-53 | __le16
| 当被前挂载数
| 54-55 | __le16
| 最大挂载数
| 56-57 | __le16
| 魔术签名(Magic signature)
| 58-59 | __le16
| 文件系统状态
| 60-61 | __le16
| 检测到错误后的行为
| 62-63 | __le16
| 子版本级别
| 64-67 | __le32
| 最后检测的时间
| 68-71 | __le32
| 两次检测间的最长间隔
| 72-75 | __le32
| 操作系统类型
| 76-79 | __le32
| 主版本级别
| 80-81 | __le16
| 默认UID保留块
| 82-83 | __le16
| 默认GID保留块
| 84-87 | __le32
| 第一个非保留inode | 88-89 | __le16
| 节点结构的大小(字节数) | 90-91 | __le16
| 该超级块所在的块组(Block group) | 92-95 | __le32
| 兼容特征
| 96-99 | __le32
| 非兼容特征
| 100-103 | __le32
| 只读兼容特征
| 104-119 | __u8[16]
| 用128位的UUID表示文件系统ID
| 120-135 | char[16]
| 卷名(Volume name) | 136-199 | char[64]
| 最后一次挂载的目录
| 200-203 | __le32
| 压缩方法
| 204 | __u8
| 文件再分配块数
| 205 | __u8
| 目录再分配块数
| 206-207 | __le16
| 每组描述符在线增长数
| 208-223 | __u8[16]
| 日志超级块的uuid | 224-227 | __le32
| 日志文件(journal file)的inode
| 228-231 | __le32
| 日志文件设备的inode
| 232-235 | __le32
| 被删除节点的列表的开始处
| 236-251 | __le32[4]
| Hash种子树
| 252 | __u8
| 默认使用的hash版本
| 253-255 |
| 保留
| 256-259 | __le32
| 默认挂载选项
| 260-263 | __le32
| 第一个元块块组
| 264-1023 |
| 保留
|
下面通过一个具体的实例来分析一下超级块,这是一款在使用中的80G硬盘,为了好理解,在WinHex中Offset部分使用了两种进制的表示方法
十六表示:
file:///C:/DOCUME%7E1/t/LOCALS%7E1/Temp/msohtml1/01/clip_image002.jpg |
十进制表示:
file:///C:/DOCUME%7E1/t/LOCALS%7E1/Temp/msohtml1/01/clip_image004.jpg |
下面分析一下本例:
0-3:占用4个字节,表示总的节点数为0065F8=26104
4-7:占用4个字节,表示总的块数000197C4=104388
8-11:占用4个字节,表示保留的块数00001463=5219
12-15:占用4个字节,表示空闲块数00009A68=39528
16-19:占用4个字节,表示空闲inode数0065BD=26072
20-23:占用4个字节,表示块组0的起始块号00000001=1
24-27:占用4个字节,表示块大小00000000=0,按照它的算法表示1024
28-31:占用4个字节,表示片断大小00000000=0,按照算法表示1024
32-35:占用4个字节,表示块组所包含的块数00002000=8192
36-39:占用4个字节,表示块组所包含的片断数00002000=8192
40-43:占用4个字节,表示每个块组所包含的inode数000007D8=2008
44-47:占用4个字节,表示最后挂载时间4BEC98F3
48-51:占用4个字节,表示最后写入时间4BEC98F3
52-53:占用2个字节,表示当被前挂载数006A
54-55:占用2个字节,表示最大挂载数FFFF
56-57:占用2个字节,表示魔术签名“EF 53”
58-59:占用2个字节,表示文件系统状态0001=1,表示系统正常
60-61:占用2个字节,表示检测到错误后的行为0001=1,表示继续
62-63:占用2个字节,表示子版本级别00000=0
64-67:占用4个字节,表示最后检测的时间478B4310
68-71:占用4个字节,表示两次检测间的最长间隔00000000=0,默认检查
72-75:占用4个字节,表示操作系统类型00000000=0,表示Linux系统
76-79:占用4个字节,表示主版本级别00000001=1,动态版本
80-81:占用2个字节,默认UID保留块0000
82-83:占用2个字节,默认GID保留块0000
84-87:占用4个字节,表示第一个非保留inode,0000000B=11
88-89:占用2个字节,表示节点结构的大小0080=128
90-91:占用2个字节,表示该超级块所在的块组0000=0
92-95:占用4个字节,表示兼容特征0000003C
96-99:占用4个字节,表示非兼容特征00000006
100-103:占用4个字节,表示只读兼容特征00000001
104-119:占用16个字节,128位文件系统ID:8BAE9731909DB09C544614DCBF47233D
120-135:占用16个字节,表示卷名0000000000000000000000746F6F622F
136-199:占用64个字节,表示最后一次挂载的目录
0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000
200-203:占用4个字节,表示压缩方法00000000
204:占用1个字节,表示文件再分配块数00
205:占用1个字节,表示目录再分配块数00
206-207:占用2个字节,表示每组描述符在线增长数0100
208-223:占用16个字节,表示日志超级块的uuid:
00000000000000000000000000000000
224-227:占用4个字节,表示日志文件(journal file)的inode:00000008=8
228-231:占用4个字节,表示日志文件设备的inode:00000000
232-235:占用4个字节,表示被删除节点的列表的开始处00000000
236-251:占用16个字节,表示Hash种子树
77CF569C98C528BE614039B87F7756D3
252:占用1个字节,表示默认使用的hash版本02
253-255: 保留
256-259:占用4个字节,表示默认挂载选项0000000C
260-263:占用4个字节,表示第一个元块块组00000000=0
下面是通过dumpe2fs得到的信息:
|