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号柱面组的信息,以此类推。
图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字节序。