通用线程: 高级文件系统实现者指南,第 9 部分

http://tech.ddvip.com   2008年04月15日    社区交流

内容摘要:您到底如何着手在 Linux 生产环境下安全地使用它们呢?Daniel Robbins 通过向您展示如何在 Linux 2.4 下设置这些新的高级文件系统来回答这些问题。在这一部分,Daniel 介绍了 XFS ― 目前可用于 Linux 的 SGI 的免费企业级文件系统。

  性能总结

  XFS 在哪些方面可以给您提供哪种性能,对于这一点,希望我的测试结果有助于您形成总的概念;我的测试结果显示,如果需要操作大文件,XFS 文件系统是您最好的选择。对于小文件和中等大小的文件,如果您使用一些能够增强性能的选项创建和挂装 XFS 文件系统的话,它可以与 ReiserFS 匹敌,有时甚至比 ReiserFS 更快。在“data=journal”方式下的 ext3 提供了良好性能,但是它很难获得一致的性能数据,原因在于,ext3 将先前测试中的数据清仓到磁盘所使用的方式,具有明显的不规律性,这将导致某种磁盘抖动。

  XFS 设计

  在 USENIX '96 上刊载的文章“Scalability in the XFS Filesystem”中(请参阅本文后面的 参考资料),SGI 工程师解释:他们设计 XFS 的主要思想只有一个,那就是:“考虑大东西”。确实,XFS 的设计消除了传统文件系统中的一些限制。现在,让我们研究 XFS 幕后一些有趣的设计特性,正是这些设计特性使这一点成为可能。

  分配组(allocation groups)简介

  当创建 XFS 文件系统时,底层块设备被分割成八个或更多个大小相等的线性区域(region)。您可以将它们想象成“块”(chunk)或者“线性范围(range)”,但是在 XFS 术语中,每个区域称为一个“分配组”。分配组是唯一的,因为每个分配组管理自己的索引节点(inode)和空闲空间,实际上,是将这些分配组转化为一种文件子系统,这些子系统正确地透明存在于 XFS 文件系统内。

  分配组与可伸缩性

  那么,XFS 到底为什么要有分配组呢?主要原因是,XFS 使用分配组,以便能有效地处理并行 IO。因为,每个分配组实际上是一个独立实体,所以内核可以 同时与多个分配组交互。如果不使用分配组,XFS 文件系统代码可能成为一种性能瓶颈,迫使大量需求 IO 的进程“排队”来使索引节点进行修改或执行其它种类的元数据密集操作。多亏了分配组,XFS 代码将允许多个线程和进程持续以并行方式运行,即使它们中的许多线程和进程正在同一文件系统上执行大规模 IO 操作。因此,将 XFS 与某些高端硬件相结合,您将获得高端性能而不会使文件系统成为瓶颈。分配组还有助于在多处理器系统上优化并行 IO 性能,因为可以同时有多个元数据更新处于“在传输中”。

来源:ibm    作者:Daniel Robbins    责编:豆豆技术应用

正在加载评论...