UFS文件系统的柱面组概要在结构上类似于一个表,表中有若干个柱面组概要项,每个概要项大小为16字节,对应文件系统中的一个柱面组。

柱面组概要一般会占用一个到多个段的空间,它在文件系统中的存储位置由超级块描述。在UFS1文件系统中,超级块的98H~9BH偏移处描述柱面组概要的起始段号,9CH~9FH偏移处描述柱面组概要的字节数;在UFS2文件系统中,超级块的448H~44FH偏移处描述柱面组概要的起始段号,9CH~9FH偏移处描述柱面组概要的字节数。另外,在超级块中也描述了每个段的字节数。

用柱面组概要的起始段号乘以每段字节数,再除以512,就能够算出柱面组概要在文件系统中的起始扇区号了。

UFS1和UFS2的柱面组概要结构相同,其具体结构见表5-31。

表5-31 UFS文件系统柱面组概要的结构

字节偏移 字段长度(字节) 字段名和定义
0x00~0x03 4 当前柱面组中的目录数
0x04~0x07 4 当前柱面组中的空闲块数
0x08~0x0B 4 当前柱面组中的空闲i-节点数
0x0C~0x0F 4 当前柱面组中的空闲段数

下面以一个具体实例进行说明。在一个Sparc Solaris的切片中,文件系统的超级块描述了每个段的字节数为1024,柱面组概要的起始地址为832号段。根据这两个参数可以算出柱面组概要的起始扇区号,具体算法为832×1024/512=1664,所以在该文件系统中柱面组概要开始于1664扇区。用WinHex跳转到1664扇区,其部分内容如图5-38所示。

在图5-38的柱面组概要中,每16个字节是一个柱面组概要项,用来描述一个柱面组的信息,0号柱面组概要项描述0号柱面组的信息,1号柱面组概要项描述1号柱面组的信息,以此类推。

UFS文件系统的柱面组概要分析-数据恢复迷

图5-38 1664扇区的柱面组概要

图5-38中0号柱面组概要项的具体信息及数值见表5-32。

表5-32 图5-38中0号柱面组概要项的具体信息及数值

字节偏移 字段长度(字节) 字段名和定义 具体数值
0x00~0x03 4 当前柱面组中的目录数 87
0x04~0x07 4 当前柱面组中的空闲块数 5416
0x08~0x0B 4 当前柱面组中的空闲i-节点数 5977
0x0C~0x0F 4 当前柱面组中的空闲段数 55

Sparc架构的Solaris系统使用Big-Endian字节序。