JFS 文件系统布局

文件系统是一系列文件、目录和其他结构;

文件系统维护信息并标识文件或目录的数据位于磁盘上的位置。 除了文件和目录,JFS 文件系统还包含一个引导块、一个超块、位图以及一个或多个分配组。 每个文件系统占一个逻辑卷。

JFS 引导块

引导块占据文件系统的前 4096 字节,从磁盘上的字节偏移量 0 开始。 引导块可用于启动操作系统。

JFS 超块

超块为 4096 字节大小,从磁盘上的字节偏移量 4096 开始。 超块保留有关整个文件系统的信息并包含下列字段:

  • 文件系统大小
  • 文件系统中数据块的数目
  • 指示文件系统状态的标记
  • 分配组大小

JFS 分配位图

文件系统包含下列分配位图:
  • 分段分配图记录每个分段的分配状态。
  • 磁盘索引节点分配图记录每个索引节点的状态。

JFS 片段

许多文件系统具有磁盘块或数据块。 这些块将磁盘分成相同大小的单元,将数据存储在文件或目录的逻辑块中。 磁盘还可进一步分成称为分段的固定大小的分配单元。 一些系统不允许分段分配超越磁盘块的边界。 换句话说,不能为逻辑块分配来自不同磁盘块的分段。

然而,日志文件系统 (JFS) 提供文件系统视图作为邻近系列的分段。 JFS 片段是基本的分配单元,磁盘按照分段级别寻址。 因此,分段分配可以超越否则可能是磁盘块的边界。 缺省的 JFS 片段大小为 4096 字节,虽然您可以指定更小的大小。 除了包含文件和目录的数据,分段还包含磁盘地址和间接块数据。

JFS 分配组

构成文件系统的分段系列分成一个或多个固定大小的邻近分段单元。 每个单元是一个分配组。 这些组中的第一个开始文件系统并包含占据组前面 32 x 4096 字节的保留区域。 此区域的前 4096 字节占据引导块,第二个 4096 字节占据文件系统超块。

每个分配组包含占据相同组分段的邻近磁盘索引节点的静态数目。 文件系统创建和扩展时,这些分段被保留用于索引节点。 对于第一个分配组,磁盘索引节点占据紧邻保留的块区域之后的分段。 对于随后的组,磁盘索引节点位于每个组的开始处。 磁盘索引节点为 128 字节大小,由唯一的磁盘索引节点号或索引号标识。 索引号将磁盘索引节点映射到其在磁盘上的位置,或者映射到其分配组内的索引节点。

文件系统的分段分配组大小和磁盘索引节点分配组大小被指定为每个分配组中存在的分段和磁盘索引节点的数目。 缺省的分配组大小为 8 MB,但是最大可以为 64 MB。 这些值存储在文件系统超块中,在文件系统创建时设置。

分配组允许 JFS 资源分配策略使用有效的方法来获取最佳的文件系统 I/O 性能。 这些分配策略尝试群集相关数据的磁盘块和磁盘索引节点,以达到磁盘的较好位置。 经常连续读写文件,并且经常一起访问目录内的文件。 这些分配策略还尝试通过文件系统分发不相关的数据,试图使得可用空间分段最小。

JFS 磁盘索引节点

逻辑块包含文件或目录的数据(以 4096 字节为单元)。 每个逻辑块都分配有分段,用于存储其数据。 每个文件和目录都具有索引节点,包含访问信息(例如文件类型、访问许可权、所有者标识和至该文件的链接数目)。 这些索引节点还包含“地址”,用于查找在其中存储逻辑块数据的磁盘上的位置。

每个索引节点都有一个编号节的数组。 每个节都包含文件或目录逻辑块之一的地址。 这些地址指示起始分段和单个分配中包含的分段总数目。 例如,大小为 4096 字节的文件在索引节点数组中具有单个地址。 其 4096 字节的数据被包含在单个逻辑块中。 大小为 6144 字节的更大文件具有两个地址。 一个地址包含前面 4096 字节,第二个地址包含剩余的 2048 字节(部分逻辑块)。 如果文件具有大量逻辑块,索引节点不包含磁盘地址。 相反,索引节点指向包含附加地址的间接块。