创建 UFS 文件系统时,磁盘片被分成若干个柱面组。柱面组由一个或多个连续的磁盘柱面组成。柱面组又进一步分成若干个可寻址的块,以控制和组织柱面组中文件的结构。在文件系统中,每种类型的块都具有特定的功能。UFS 文件系统具有以下四种类型的块。
块类型 |
所存储信息的类型 |
---|---|
引导块 |
在引导系统时使用的信息 |
超级块 |
有关文件系统的详细信息 |
Inode |
有关文件的所有信息 |
存储块或数据块 |
每个文件的数据 |
以下各节提供有关这些块的组织和功能的其他信息。
引导块存储在引导系统时使用的对象。如果文件系统不用于引导,则将引导块保留为空。引导块仅出现在第一个柱面组(柱面组 0)中,它是片中的前 8 KB。
超级块存储有关文件系统的大多数信息,其中包括:
文件系统的大小和状态
标号,包括文件系统名称和卷名称
文件系统逻辑块的大小
上次更新的日期和时间
柱面组的大小
柱面组中的数据块数
摘要数据块
文件系统状态
最后一个挂载点的路径名
由于超级块包含关键数据,因此在创建文件系统时建立了多个超级块。
摘要信息块保留在超级块内。不复制摘要信息块,而是将其与主超级块组合在一起(通常在柱面组 0 中)。摘要块记录在使用文件系统时发生的更改。此外,摘要块列出文件系统中的 inode、目录、段和存储块的数目。
inode 包含有关文件的所有信息,但文件的名称(保存在目录中)除外。一个 inode 为 128 字节。inode 信息保存在柱面信息块中,它包含以下内容:
文件类型:
常规
目录
块特殊
字符特殊
FIFO,也称为命名管道
符号链接
套接字
其他 inode-属性目录和阴影(用于 ACL)
文件的模式(读-写-执行权限集)
指向文件的硬链接数
文件属主的用户 ID
文件所属的组 ID
文件中的字节数
包含 15 个磁盘块地址的数组
上次访问文件的日期和时间
上次修改文件的日期和时间
更改 inode 的日期和时间
包含 15 个磁盘块地址(0 到 14)的数组指向存储文件内容的数据块。前 12 个地址是直接地址。即,它们直接指向文件内容的前 12 个逻辑存储块。如果文件大于 12 个逻辑块,则第 13 个地址指向间接块,该块包含直接块地址而不是文件内容。第 14 个地址指向双重间接块,该块包含间接块的地址。第 15 个地址用于三重间接地址。下图描述从 inode 开始这些地址块之间的关系链。
数据块也称为存储块,它包含为文件系统分配的其余空间。这些数据块的大小是在创建文件系统时确定的。缺省情况下,为数据块分配以下两种大小:8 KB 的逻辑块大小和 1 KB 的段大小 (fragment size)。
对于常规文件,数据块包含文件的内容。对于目录,数据块包含提供目录中文件的 inode 编号和文件名的项。
在柱面组图中,当前未用作 inode、间接地址块或存储块的块被标记为空闲。此图还跟踪段以防止段化降低磁盘的性能。
为使您了解典型的 UFS 文件系统结构,下图说明普通 UFS 文件系统中的一系列柱面组。