为了支持 DCE DFS(分布式计算环境分布式文件系统),JFS 将磁盘空间分配池(称为聚集)的概念, 与可安装的文件系统子树(称为文件集)的概念分开。每个分区只有一个聚集;每个聚集可能有多个文件集。在第一个发行版中,JFS 仅支持每个聚集一个文件集;但是,所有元数据都已设计成适用于所有情况。
如图3所示,聚集开始部分是32K的保留区,紧随其后的是聚集主超级块。超级块包含聚集的信息,例如:聚集的大小、分配组的大小、聚集块的尺寸等等。超级块位于固定位置,这使得 JFS 不依赖任何其它信息,就能够找到它们。在聚集中还有一个重要的结构是聚集索引结点表(Aggregate Inode Table)以及用于其映射的聚集索引结点分配映射表(Aggregate Inode Allocation Map)。AIT表中的inode 0 保留,inode 1 描述聚集本身,inode 2 描述聚集块映射表(block map), inode 3 描述安装时的内嵌日志,inode 4 描述在聚集格式化期间发现的坏块,保留inode 5 到 15 以备将来扩展。 从inode 16 开始,每个inode代表一个文件集。文件集中也有索引结点表以及用于其映射的索引结点分配映射表,文件集中的inode 描述文件集中的每一个文件。
图3 JFS磁盘结构
JFS 使用基于盘区的寻址结构,连同主动的块分配策略,产生紧凑、高效、可伸缩的结构,以将文件中的逻辑偏移量映射成磁盘上的物理地址。盘区是象一个单元那样分配给文件的相连块序列,可用一个由 <逻辑偏移量,长度,物理地址> 组成的三元组来描述。寻址结构是一棵 B+ 树,该树由盘区描述符(上面提到的三元组)填充,根在 inode 中,键为文件中的逻辑偏移量。
JFS 按需为磁盘 inode 动态地分配空间,同时释放不再需要的空间。这一支持避开了在文件系统创建期间,为磁盘 inode 保留固定数量空间的传统方法,因此用户不再需要估计文件系统包含的文件和目录最大数目。另外,这一支持使磁盘 inode 与固定磁盘位置分离。
JFS 提供两种不同的目录组织。第一种组织用于小目录,并且在目录的 inode 内存储目录内容。这就不再需要不同的目录块 I/O,同时也不再需要分配不同的存储器。最多可有 8 个项可直接存储在 inode 中,这些项不包括自己(.)和父(..)目录项,这两个项存储在 inode 中不同的区域内。第二种组织用于较大的目录,用按名字键控的 B+ 树表示每个目录。与传统无序的目录组织比较,它提供更快的目录查找、插入和删除能力。
所用的测试工具是Postmark和Bonnie++。Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁、大量地存取小文件。而Bonnie++主要测试大文件的IO性能。
下面将详细分析用上述两种测试工具在各种测试参数配置下的结果。
图4 PostMark 小文件
图 4是PostMark测试小文件的结果,其参数是文件大小50B增至1K, 同一目录下的文件数从5k至20k,事务总数为25k。从图中我们可以看出:
1. 不论是Ext3 还是ReiserFS,在三种日志模式中,写回(writeback)最快,预定(ordered)次之,日志(journal)最慢。
2. 在各种文件系统中,ReiserFS 的写回和预定模式是最快的,且随着文件数的增加事务处理速度下降的也很慢。
3. Ext3在文件数较少时,事务处理速度也比较快,但当文件数超过10k后,速度就比较慢了。
4. XFS和JFS的速度较慢,但随着文件数的增加,速度下降的比较缓慢。
图5 PostMark 大文件
图5是PostMark测试大文件的结果,其参数是文件大小1k至16K,同一目录下的文件数从5k增至20k,事务总数为25k时的测试结果。从图中我们可以看出:
1. 在处理大文件时,当文件数达到15k时,各种文件系统处理能力都较差。
2. 当文件数在小于10k时,ReiserFS的写回、预定模式和EXT3的写回模式性能是比较好的。但这两种文件系统的全日志模式都比较差。
3. XFS文件系统的性能居中,JFS文件系统的性能最差。
图6:Bonnie++顺序写的速率
图7:Bonnie++顺序写时CPU利用率
图6是Bonnie++对文件大小分别为1G,2G,4G顺序写的性能比较,图7是其CPU的利用率比较。从上述两图中我们可以看出:
1. 除了Ext3和ReiserFS的Journal模式的性能较差外,其他几种模式和XFS、JFS写磁盘的速率相当。
2. 从CPU利用率来看,各种文件系统的CPU利用率都比较低,而且随着数据量的增大CPU的利用率降低。
3. Journal模式的CPU利用率比其他两种模式要低。
图8:Bonnie++ 顺序创建文件



评论加载中…
