Sparc Solaris磁盘布局

在Sparc架构的Solaris系统中,磁盘标签位于磁盘的第一个扇区,按照LBA地址编号就是0扇区,随后跟着的1~15号扇区包含用来存储系统的引导程序,0~15号这16个扇区其实也属于磁盘中的第一个切片,是该切片上文件系统的引导块。从16号扇区开始是第一个文件系统的超级块。第一个切片结束后紧跟着是第二个切片的开始,第二个切片结束后紧跟着是第三个切片的开始,就这样排列直到磁盘末尾。

一个完整的Sparc架构的Solaris磁盘布局的例子如图5-2所示。

Sparc Solaris分区结构分析-数据恢复迷

图5-2 Sparc架构的Solaris磁盘布局

Sparc Solaris的磁盘标签结构

磁盘标签是Sparc架构Solaris非常重要的结构,它位于硬盘的第一个扇区,大致由6个部分组成,具体为ASCII明码标签、卷内容表(VTOC)、磁盘参数、切片表、签名值、校验和,如图5-3所示。

Sparc Solaris分区结构分析-数据恢复迷

图5-3 Sparc Solaris的磁盘标签结构实例

Sparc Solaris的磁盘标签结构参数见表5-3。

表5-3 Sparc Solaris的磁盘标签结构参数

Sparc Solaris分区结构分析-数据恢复迷

注意:Sparc架构的Solaris存储数据的字节序为Big-Endian。

ASCII明码标签

Sparc Solaris的磁盘标签扇区首先用128个字节描述当前磁盘的ASCII明码标签,该标签中一般会包含磁盘的型号参数及容量参数。在图5-3的例子中,从ASCII明码标签中可以看出该磁盘型号为“ST3146707LC”,说明这是一块品牌为希捷、容量为146GB的SCSI硬盘;还能看出磁盘的柱面数为35 627、磁头数为64、每磁道扇区数为128。

卷内容表(VTOC)

从Sparc Solaris磁盘标签扇区的偏移80H处开始,有134个字节用来描述磁盘中切片的个数、标志、类型、时间戳等信息,这134个字节被称为卷内容表(Volume Table of Contents,VTOC),其具体结构参数见表5-4。

表5-4 卷内容表的结构参数

字节偏移(相对位置) 字段长度(字节) 字段名和定义
0x00~0x03 4 版本(0x01)
0x04~0x0B 8 卷名
0x0C~0x0D 2 切片数
0x0E~0x0F 2 0号切片的类型(类型说明见表5-5)
0x10~0x11 2 0号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x12~0x13 2 1号切片的类型(类型说明见表5-5)
0x14~0x15 2 1号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x16~0x17 2 2号切片的类型(类型说明见表5-5)
0x18~0x19 2 2号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x1A~0x1B 2 3号切片的类型(类型说明见表5-5)
0x1C~0x1D 2 3号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x1E~0x1F 2 4号切片的类型(类型说明见表5-5)
0x20~0x21 2 4号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x22~0x23 2 5号切片的类型(类型说明见表5-5)
0x24~0x25 2 5号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x26~0x27 2 6号切片的类型(类型说明见表5-5)
0x28~0x29 2 6号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x2A~0x2B 2 7号切片的类型(类型说明见表5-5)
0x2C~0x2D 2 7号切片的标志(01H—切片不能被挂载;80H—切片为只读)
0x2E~0x39 12 引导信息
0x3A~0x3B 2 保留
0x3C~0x3F 4 签名值(60 0D DE EE)
0x40~0x65 38 保留
0x66~0x69 4 0号切片的时间戳
0x6A~0x6D 4 1号切片的时间戳
0x6E~0x71 4 2号切片的时间戳
0x72~0x75 4 3号切片的时间戳
0x76~0x79 4 4号切片的时间戳
0x7A~0x7D 4 5号切片的时间戳
0x7E~0x81 4 6号切片的时间戳
0x82~0x85 4 7号切片的时间戳

VTOC中每个切片的类型参数并不像其他分区体系那样为每个分区指明文件系统类型,而是用来说明该切片的挂载点。挂载点不同,操作系统将会使用不同的配置文件,尽管一个切片挂载后,事实上已经挂载上了一个文件系统。例如切片类型设置为/usr/并不意味着一定要被挂载为/usr/。各种切片类型值的描述见表5-5。

表5-5 切片类型值描述

切片类型值 挂载点及说明 切片类型值 挂载点及说明
0x00 未指派 0x06 /stand/切片
0x01 /boot/切片 0x07 /var/切片
0x02 /切片 0x08 /home/切片
0x03 Swap切片 0x09 备份扇区切片
0x04 /usr/切片 0x0A 文件系统缓冲切片
0x05 整个磁盘

下面把图5-3所示的Sparc Solaris磁盘标签的例子中的VTOC重点参数列举一下,具体见表5-6。

表5-6 VTOC参数举例

字节偏移(相对位置) 字段长度(字节) 字段名和定义 实际数值
0x00~0x03 4 版本 01H
0x04~0x0B 8 卷名
0x0C~0x0D 2 切片数 08H,即有8个切片
0x0E~0x0F 2 0号切片的类型 02H,表示根切片
0x10~0x11 2 0号切片的标志 00
0x12~0x13 2 1号切片的类型 03H,表示Swap切片
0x14~0x15 2 1号切片的标志 01H,表示不能被挂载
0x16~0x17 2 2号切片的类型 05H,描述整个磁盘
0x18~0x19 2 2号切片的标志 01H,表示不能被挂载
0x1A~0x1B 2 3号切片的类型 00
0x1C~0x1D 2 3号切片的标志 00
0x1E~0x1F 2 4号切片的类型 00
0x20~0x21 2 4号切片的标志 00
0x22~0x23 2 5号切片的类型 00
0x24~0x25 2 5号切片的标志 00
0x26~0x27 2 6号切片的类型 04H,表示/usr/切片
0x28~0x29 2 6号切片的标志 00
0x2A~0x2B 2 7号切片的类型 00
0x2C~0x2D 2 7号切片的标志 00
0x3C~0x3F 4 签名值 60 0D DE EE

磁盘参数

从Sparc Solaris磁盘标签扇区的偏移1A4H处开始,有20个字节用来描述磁盘的参数信息,包括磁盘转速、柱面数、磁头数、每磁道扇区数等。下面把图5-3所示的Sparc Solaris磁盘标签的例子中的磁盘参数列举一下,具体见表5-7。

表5-7 磁盘参数举例

字节偏移 字段长度(字节) 字段名和定义 实际数值
0x1A4~0x1A5 2 磁盘转速 1C20H,即7200rpm
0x1A6~0x1A7 2 物理柱面数 8B2DH,即35 629个柱面
0x1A8~0x1A9 2 备用柱面数 00
0x1AE~0x1AF 2 交错 01
0x1B0~0x1B1 2 数据区柱面数 8B2BH,即35 627个柱面
0x1B2~0x1B3 2 备用柱面数 02H,即两个备用柱面
0x1B4~0x1B5 2 磁头数 40H,即64个磁头
0x1B6~0x1B7 2 每磁道扇区数 80H,即每磁道128个扇区

切片表

从Sparc Solaris磁盘标签扇区的偏移1BCH处开始,有64个字节用来描述切片表,切片表由8个切片表项组成,每个切片表项占用8个字节,用来描述每个切片的起始地址和大小,其具体结构参数见表5-8。

表5-8 切片表的结构参数

Sparc Solaris分区结构分析-数据恢复迷

下面把图5-3所示的Sparc Solaris磁盘标签的例子中的切片表列举一下,具体见表5-9。

表5-9 切片表举例

字节偏移(相对位置) 字段长度(字节) 字段名和定义 实际数值
0x00~0x03 4 0号切片的起始柱面号 未用
0x04~0x07 4 0号切片的扇区总数 未用
0x08~0x0B 4 1号切片的起始柱面号 未用
0x0C~0x0F 4 1号切片的扇区总数 未用
0x10~0x13 4 2号切片的起始柱面号 00,即开始于0号柱面
0x14~0x17 4 2号切片的扇区总数 116560H,即291 856 384个扇区
0x18~0x1B 4 3号切片的起始柱面号 00,即开始于0号柱面
0x1C~0x1F 4 3号切片的扇区总数 810C0H,即135 315 456个扇区
0x20~0x23 4 4号切片的起始柱面号 未用
0x24~0x27 4 4号切片的扇区总数 未用
0x28~0x2B 4 5号切片的起始柱面号 未用
0x2C~0x2F 4 5号切片的扇区总数 未用
0x30~0x33 4 6号切片的起始柱面号 4086H,即开始于16 518号柱面
0x34~0x37 4 6号切片的扇区总数 954A0H,即156 540 928个扇区
0x38~0x3B 4 7号切片的起始柱面号 未用
0x3C~0x3F 4 7号切片的扇区总数 未用

在Sparc Solaris的切片表中,用柱面号来描述切片的开始地址。在实际分析时,需要把柱面号转换为LBA地址的扇区号,具体转换方法为柱面号×磁头数×每磁道扇区数。

以表5-9中的6号切片为例,该切片起始于16 158号柱面,要把它转换为扇区号,先从磁盘标签的磁盘参数中查看磁头数和每磁道扇区数的值,分别为64和128,则16 158号柱面对应的扇区号计算方法为16158×64×128=135315456,利用这个值就能找到6号切片的开始地址了。

签名值及校验和

从Sparc Solaris磁盘标签扇区的偏移1FCH处开始,有两个字节作为磁盘标签的签名值,该值固定为十六进制的“DA BE”。

Sparc Solaris磁盘标签扇区的最后两个字节,是该扇区的校验和。