JFS 文件系统概述及布局分析(三)

2009-05-13 00:47:44来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

保留聚集inode5到15以备将来扩展。

从聚集inode16开始,每个文件集有一个inode,即文件集分配映射表inode。这个inode描述了表示文件集的控制结构。当更多文件集添加到聚集中时,为了容纳更多的文件集inode,聚集inode表本身可能必须增大。

分配组

分配组(AG)把聚集中的空间分成大块,并且允许JFS资源分配策略使用众所周知的方法,来实现更好的JFSI/O性能。首先,分配策略尝试将相关数据的磁盘块和磁盘inode集群起来,使磁盘实现好的局域性。文件通常是顺序地读写,而目录中的文件通常一起访问。其次,为了容纳局域性,分配策略尝试在整个聚集中分配不相关数据。聚集内的分配组用从0开始的AG(分配组)索引。即用AG标识。

必须选择分配组大小,以使AG足够大以不断提供连续资源分配。为了将聚集扩充或缩小时所需进行的更新数最小化,分配组必须限制最大组数128。此外,JFS将对8192个聚集块的分配组大小规定其最小值。分配组大小必须总是1个dmap页(1、2、4、8、...dmap页)描述的块数的2的幂次方。分配组大小在聚集超级块中存储。

大小不是分配组大小倍数的聚集将包含部分分配组;磁盘块没有完全覆盖聚集的最后一个分配组。除了JFS将标记在块分配映射表中分配的却不存在的磁盘块之外,该部分分配组将被当作完整的分配组。

文件集

文件集是文件和目录的集合,这些文件和目录形成了可独立安装的子树。文件集完全包含在一个聚集中。请注意,一个聚集中可能有多个文件集;在那种情况下,所有文件集共享由聚集控制结构定义的空闲聚集磁盘块公共池。

文件集有:

文件集inode表,包含描述文件集范围的控制结构的inode。文件集inode表逻辑上包含一个inode数组。

文件集inode分配映射表,描述文件集inode表。文件集inode分配映射表包含文件集inode上及其磁盘位置上的分配状态信息。描述文件集分配映射表和其他文件集信息的超级inode,驻留前面所描述的聚集inode表中。由于复制了聚集inode表,因此这个inode存在第二个版本,它指向同样的数据。超级inode本身是一个文件。当文件集一开始创建时,分配第一个inode盘区按需要动态分配和释放其它inode盘区。

文件集中inode的分配如下所示:

保留文件集inode0。

文件集inode1包含附加的文件集信息,它们无法放入聚集inode表中的文件集分配映射表inode。

文件集inode2是文件集的根目录inode。注意,JFS保留了inode2是文件系统的根这一公共Unix约定。

文件集inode3是文件集的ACL文件。

从文件集inode4开始,文件集inode用于一般文件集对象、用户文件、目录和符号链接。

盘区、inode、B+树

盘区是当作单元分配给JFS对象的连续聚集块序列。盘区完全包含在一个聚集(并且因此也是在一个分区)中;但是,大盘区可能跨多个分配组。

每个JFS对象可用一个inode来表示。inode包含预期的对象特定信息,例如:时间戳和文件类型。它们还包含记录盘区分配的B+树。注意,所有JFS元数据结构(除超级块之外)都以文件表示。通过重用这种数据的inode结构,数据格式(即磁盘布局)自然是可扩展的。

盘区、B+树、inode在以下章节中详细描述。

盘区

文件是按盘区顺序分配的。盘区是当作一个单元分配的聚集块的连续变长序列。盘区的尺寸范围是1到2(24)-1个聚集块。盘区可能跨越多个分配组(AG)。为了在插入新盘区、定位特定盘区等操作方面有更优性能,这些盘区是按B+树索引的。

定义一个盘区需要两个值,即其长度和其地址。长度以聚集块尺寸为单位计算。JFS使用24位值来表示盘区的长度,因此盘区的范围大小是1到2(24)-1个聚集块。

对于512字节的聚集块尺寸(所允许的最小值),最大盘区是512*(2(24)-1)字节,(比8G稍小)。对于4096字节的聚集块尺寸(所允许的最大值),盘区的最大长度是4096*(2(24)-1)字节,(比64G稍小)。这些限制仅适用于一个的盘区;对整体文件大小没有限制作用。地址指的是盘区中第一个块的地址。地址同样以聚集块为单位:它从聚集的开始处计算块偏移量。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JFS 文件系统概述及布局分析(二)

下一篇:JFS 文件系统概述及布局分析(四)