extjs中元数据_Ext3文件系统的超级块分析

Ext3文件系统的超级块起始于2号扇区,占用两个扇区。当文件系统的块大小不同时,超级块所在块号是不同的。例如,当块大小为两个扇区时,0号块是引导程序块或者保留块,超级块起始于1号块;当块大小为4个扇区时,超级块起始于0号块,其位于0号块的后两个扇区,前两个扇区是引导程序或者保留扇区;当块大小为8个扇区时,超级块也起始于0号块,其位于0号块的2~3号扇区,0~1号扇区是引导程序或者保留扇区,4~7号扇区则是空闲的。

超级块的结构分析

Ext3文件系统的超级块是非常重要的一个扇区,其记录的参数非常多,具体见表7-2。

表7-2 Ext3文件系统的超级块结构

字节偏移

字段长度(字节)

字段名和定义

0x00~0x03

4

i-节点总数

0x04~0x07

4

总块数

0x08~0x0B

4

保留块数

0x0C~0x0F

4

空闲块数

0x10~0x13

4

空闲I-节点数

0x14~0x17

4

第一个数据块(即0号块组起始块号)

0x18~0x1B

4

块大小描述值

0x1C~0x1F

4

段大小描述值(与“块大小描述值”相同)

0x20~0x23

4

每块组包含的块数

0x24~0x27

4

每块组包含的段数

0x28~0x2B

4

每块组包含的i-节点数

0x2C~0x2F

4

最后挂载时间

0x30~0x33

4

最后写入时间

0x34~0x35

2

挂载次数

0x36~0x37

2

最大挂载数

0x38~0x39

2

签名值

0x3A~0x3B

2

文件系统状态(具体见表7-3)

0x3C~0x3D

2

错误处理方式(具体见表7-4)

0x3E~0x3F

2

次版本号

0x40~0x43

4

最后检查时间

0x44~0x47

4

强迫一致性检查的最大间隔时间

0x48~0x4B

4

创建文件系统的操作系统类型(具体见表7-5)

0x4C~0x4F

4

主版本号

0x50~0x51

2

用户ID保留块

0x52~0x53

2

组ID保留块

0x54~0x57

4

第一个非保留i-节点

0x58~0x59

2

i-节点大小

0x5A~0x5B

2

当前超级块所在块组

0x5C~0x5F

4

兼容性特征标志(具体见表7-6)

0x60~0x63

4

非兼容性特征标志(具体见表7-7)

0x64~0x67

4

只读兼容性特征标志(具体见表7-8)

0x68~0x77

16

卷的UUID(全局ID)

0x78~0x87

16

卷名

0x88~0xC7

64

最后挂载路径

0xC8~0xCB

4

位图算法

0xCC~0xCC

1

文件预分配块数

0xCD~0xCD

1

目录预分配块数

0xCE~0xCF

2

未用

0xD0~0xDF

16

日志的UUID

0xE0~0xE3

4

日志的i-节点

0xE4~0xE7

4

日志设备号

0xE8~0xEB

4

最后的孤立i-节点

0xEC~0xEF

4

Hash种子1

0xF0~0xF3

4

Hash种子2

0xF4~0xF7

4

Hash种子3

0xF8~0xFB

4

Hash种子4

0xFC~0xFF

4

默认Hash版本

0x100~0x103

4

默认挂载选项

0x104~0x107

4

第一个元数据块的块组

0x108~0x10B

4

文件系统创建时间

0x10C~0x14F

68

日志节点信息备份(具体见表7-9)

对超级块的重点参数进一步解释如下:

(1) 0x00~0x03:i-节点总数。是指当前文件系统中包含的i-节点总数。

(2) 0x04~0x07:总块数。是指当前文件系统中包含的总块数。

(3) 0x08~0x0B:保留块数。是指为避免分区用完而给文件系统保留的块数,其数量一般为文件系统总块数的百分之五。

(4) 0x0C~0x0F:空闲块数。是指当前文件系统未分配的块数。

(5) 0x10~0x13:空闲i-节点数。是指当前文件系统未分配的i-节点数目。

(6) 0x14~0x17:第一个数据块。是指0号块组起始块号。

(7) 0x18~0x1B:块大小描述值。用来描述文件系统每个块的字节数,具体描述方法为:当此参数的值为N时,块大小就等于2N×1024字节。例如,该参数等于2时,块大小等于4096字节。

(8) 0x1C~0x1F:段大小描述值。段大小是UFS中的一个概念,因为Ext文件系统来源于UFS,所以超级块中保留了这个参数,但在文件系统中并不使用,该参数跟“块大小描述值”保持一致。

(9) 0x20~0x23:每块组包含的块数。是指文件系统每个块组中包含块的数量。

(10) 0x24~0x27:每块组包含的段数。因为“段”的概念在Ext3文件系统中已不再使用,所以该参数也跟“每块组包含的块数”保持一致。

(11) 0x28~0x2B:每块组包含的i-节点数。是指文件系统每个块组中包含i-节点的数量。

(12) 0x2C~0x2F:最后挂载时间。是指文件系统最后一次挂载的时间。

(13) 0x30~0x33:最后写入时间。是指文件系统最后一次写入数据的时间。

(14) 0x34~0x35:挂载次数。是指文件系统到目前为止挂载的次数总和。

(15) 0x36~0x37:最大挂载数。是指文件系统挂载的最大次数。

(16) 0x38~0x39:签名值。是指文件系统的标志值,固定为十六进制数值“53 EF”。

(17) 0x3A~0x3B:文件系统状态,见表7-3。

表7-3 文件系统的状态描述

状态值

状态描述

0x0001

文件系统是干净的

0x0002

文件系统存在错误

0x0004

正在恢复孤立的i-节点

(18) 0x3C~0x3D:错误处理方式。是指当文件系统出错时,操作系统应该采取的处理方法。这个值在文件系统创建时被设置,它有三种处理方式,见表7-4。

表7-4 错误处理方式描述

数值

处理方式

0x0001

继续运行

0x0002

以只读方式重新挂载

0x0003

紧急处理

(19) 0x3E~0x3F:次版本号。是指文件系统版本号中的次版本号。

(20) 0x40~0x43:最后检查时间。是指文件系统最后一次运行一致性检查的时间。

(21) 0x44~0x47:强迫一致性检查的最大间隔时间。是指对文件系统强制运行一致性检查的最大间隔时间,以秒为单位。

(22) 0x48~0x4B:创建文件系统的操作系统类型。是指当前文件系统是由哪一种操作系统创建的,具体见表7-5。

表7-5 创建文件系统的操作系统类型描述

数值

操作系统类型

0x00

Linux

0x01

GNU Hurd

0x02

Masix

0x03

Free BSD

0x04

Lites

(23) 0x4C~0x4F:主版本号。是指文件系统的主版本号,有两种取值,其中“0”表示原始版本;“1”表示动态版本。

只有当该参数设置为“1”时,超级块中偏移54H~5BH处的参数才有效,这部分参数属于“扩展超级块”。

(24) 0x50~0x51:用户ID保留块。是指用户ID可以使用的保留块数。

(25) 0x52~0x53:组ID保留块。是指组ID可以使用的保留块数。

(26) 0x54~0x57:第一个非保留i-节点。是指用户数据可以使用的第一个i-节点号,一般都是11号i-节点。

(27) 0x58~0x59:i-节点大小。是指文件系统中每个i-节点的字节数。

(28) 0x5A~0x5B:当前超级块所在块组。因为超级块在很多块组中有备份,该参数用来描述当前超级块所在的块组号。

(29) 0x5C~0x5F:兼容性特征标志。操作系统在挂载文件系统时,会检查其特征,如果存在兼容性特征标志,就将其挂载为正常的文件系统。兼容性特征见表7-6。

表7-6 兼容性特征描述

数值

兼容性特征

0x0001

给目录预分配块以减少碎片

0x0002

存在AFA服务i-节点

0x0004

文件系统包含日志,即Ext3文件系统

0x0008

i-节点有扩展属性

0x0010

文件系统能够调整大小

0x0020

目录使用hash树

(30) 0x60~0x63:非兼容性特征标志。操作系统在挂载文件系统时,如果发现文件系统存在非兼容性特征标志,将不对其挂载。非兼容性特征见表7-7。

表7-7 非兼容性特征描述

数值

非兼容性特征

0x02

目录项中包含文件类型

0x40

文件系统使用盘区结构

0x80

文件系统使用64位块号

(31) 0x64~0x67:只读兼容性特征标志。操作系统在挂载文件系统时,如果发现文件系统存在只读兼容性特征标志,将对其以只读方式挂载。只读兼容性特征见表7-8。

表7-8 只读兼容性特征描述

数值

只读兼容性特征

0x01

稀疏超级块方式

0x02

文件系统中有大文件

0x04

目录结构使用B-树管理

(32) 0x68~0x77:卷的UUID。这是卷的全局ID,用16个字节描述。

(33) 0x78~0x87:卷名。是指文件系统的名称。

(34) 0x88~0xC7:最后挂载路径。是指文件系统最后一次挂载的路径。

(35) 0xC8~0xCB:位图算法。是指文件系统中位图使用的算法。

(36) 0xCC~0xCC:文件预分配块数。是指文件系统为文件预分配的块数。

(37) 0xCD~0xCD:目录预分配块数。是指文件系统为目录预分配的块数。

(38) 0xD0~0xDF:日志的UUID。是指文件系统中日志的全局ID。

(39) 0xE0~0xE3:日志的i-节点。是指文件系统中日志的i-节点号。

(40) 0xE4~0xE7:日志设备号。是指文件系统中日志的设备号。

(41) 0xE8~0xEB:最后的孤立i-节点。是指文件系统中最后的孤立i-节点号。

(42) 0x104~0x107:第一个元数据块的块组。是指文件系统中存放元数据的第一个块组号。

(43) 0x108~0x10B:文件系统创建时间。是指创建该文件系统的具体时间信息。

(44) 0x10C~0x14F:日志节点信息备份。这是超级块为日志节点信息做的备份,具体见表7-9。

表7-9 日志节点信息的备份

image01691.jpeg

超级块实例讲解

下面具体分析一个Ext3文件系统超级块的实例,该超级块的内容如图7-29所示。

image01692.jpeg

图7-29 超级块实例

图7-29中超级块主要参数的数值及解释可以用WinHex的模板查看,其内容如图7-30和图7-31所示。

image01693.jpeg

图7-30 超级块模板参数第一部分

image01694.jpeg

图7-31 超级块模板参数第二部分

日志节点信息备份的具体数值也可以用WinHex的模板查看,其内容如图7-32所示。

image01695.jpeg

图7-32 日志节点信息备份的参数模板

在该实例中,超级块内的参数描述了文件系统总块数为863 846 391,每块组包含的块数为32 768,用这两个参数可以算出该文件系统的块组数,计算方法为(863846391 DIV 32768)+1,结果等于26 363,说明文件系统中有26 363个块组。

文件系统的最后一个块组包含的块数往往比其他块组要少。我们再来计算一下该文件系统最后一个块组中的块数,计算方法为863846391−32768×26362,结果为16 375,说明该文件系统最后一个块组只包含16 375个块,比其他块组中的块少很多。

另外,还可以用取模的方法计算最后一个块组包含的块数,计算式为863846391MOD 32768,结果也等于16 375。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值