UFS文件系统在创建时,磁盘的盘片被分成若干个柱面组,每个柱面组由一个或多个连续的磁盘柱面组成。在文件系统的前部会有一个叫作“柱面组概要”的结构对整个文件系统中的每个柱面组信息进行统计,并且在每个柱面组中还有一个“柱面组描述符”用来管理当前柱面组。
每个柱面组又进一步被分成若干个可寻址的块,以控制和组织柱面组中文件的结构,所以“块”是UFS文件系统中文件分配和存储的基本单位,类似于FAT文件系统和NTFS文件系统中“簇”的概念。
在UFS文件系统中,“块”有多种类型,每种类型的块都具有特定的功能。UFS文件系统主要具有四种类型的块,其分类和基本作用见表5-25。
表5-25 UFS文件系统中块的分类及作用
块的分类 | 块的主要作用 | 块的分类 | 块的主要作用 |
引导块 | 在引导系统时使用的信息 | i-节点 | 记录文件的各种信息 |
超级块 | 记录文件系统的详细信息 | 数据块 | 存储每个文件的实际内容 |
UFS文件系统中的“块”又被分成更小的单位,叫作“段”。在创建UFS文件系统时,可定义段的大小,默认的段大小一般为1KB。每个块都可以分成若干个段,段大小的上限就是块的大小,下限实际上为磁盘扇区大小,通常是512字节。
当文件写入文件系统时,首先为文件分配完整的块,然后为不满一个块的剩余部分分配某个块的一个或多个段。对于比较小的文件,首先分配段进行存储。能够为文件分配块中的段而不是仅分配完整的块,就减少了块中未使用的空间,从而提高了磁盘利用率。
在创建文件系统时,选择段的大小需要考虑时间和空间之间的平衡,小的段大小可节省空间,但是需要更多的时间进行分配。通常,当大多数文件都很大时,要提高存储效率,应为文件系统使用较大的段大小。当大多数文件都比较小时,应为文件系统使用较小的段大小。
综上所述,UFS文件系统由若干个“柱面组”构成,每个柱面组包含一定数量的“块”,每个块又由若干个“段”组成。“段”是UFS文件系统的最小存储单元。每个柱面组、块、段在文件系统中都有自身的编号,它们的起始编号都是0。
另外,“超级块”是UFS文件系统中非常重要的一个结构,其重要性类似于FAT文件系统和NTFS文件系统中的DBR,所以UFS在每个柱面组中都对超级块做了备份,但备份的位置却各不相同,在每个柱面组中都会发生一定的偏转。这是因为在原来的硬盘中每个磁道具有相同的扇区数,这就导致每个柱面组的第一个扇区都位于同一个盘面上。为了减小因物理故障而产生的数据损坏,将超级块的备份在每个柱面组中错位存放就可以使它们不再存储于同一个盘面,从而降低了风险。而现在的新式硬盘每个柱面的扇区数并不相等,所以也就不存在这样的隐患了,实际上UFS2已经不再考虑数据错位存放的问题。
通过上面的讲解,可以将UFS文件系统的结构用一幅图描述出来。为了描述的方便,这里将UFS文件系统的结构以柱面组为单位画出来,并且采用竖形图,读者在理解时只要将每个柱面组首尾相接在一起,就是完整的UFS文件系统了。
UFS文件系统的结构如图5-28所示。
图5-28 UFS文件系统的结构图