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

豆豆网   技术应用频道   2008年04月15日  【字号: 收藏本文

内容摘要:在本文中,我会向您展示如何让 ReiserFS 运行在 2.4 系列的内核下。我还会和您分享很多关于不同主题的技术信息,包括使用 ReiserFS 最好的 2.4 内核,性能注意事项等等。因为我首先会谈到安装,所以我建议您先通读本文,然后再遵循安装指示。这样,您开始在自己的系统上运行 ReiserFS 的时候,脑子里就会有所有的技术注解,这样您就可以在各个步骤作必要的调整。

  在对大量文件执行多个 stat() 调用的代码中,可能也会碰到问题。一个可能触发这种性能缺陷的应用程序(它只存在于 2.4 系列内核的 ReiserFS 实现,在 2.2 内核中不存在)就是“mutt”邮件用户代理(请参阅 参考资料),它在被用于读取大型 maildir 形式的邮箱时会触发性能缺陷。显然,每个邮件文件 mutt 都要 stat 两次,这样就会比平常更加影响性能。ReiserFS 开发小组已经意识到了这个特殊的问题,并已经确定了它的起因,如果近期没有解决方案的话,您应该可以在 ReiserFS 4 中看到相应的解决方案。

  性能调整

  幸运的是,有几种简单通用的性能调整方法可以用来缓解这些问题。第一种是用“noatime”选项(一种对 ReiserFS 和其它文件系统都有用的安装选项)来安装您的 ReiserFS 文件系统。您可能知道,UNIX 系统为文件系统上的每一个对象记录一个 atime,或称为访问时间,每次读取文件时,atime 都会被更新。对于大部分人来说,atime 邮戳功能不是十分有用,而且几乎没有任何应用程序(我想不到一个)依靠 atime 处理什么重要的任务。出于这个原因,通常可以安全地关掉它,这样可以带来一个很好的全面性能提升。通常情况下,除非您确实知道自己需要 atime 支持,您还是应该用 noatime 选项来安装文件系统。使用如下所示的 /etc/fstab 条目:

/dev/hdc1    /home          reiserfs    noatime    0 0

  在 关于 ReiserFS 的第一篇文章中,我曾提到 ReiserFS 有一项特别的功能,称为“tail packing”。在 ReiserFS 术语中,“tail”是小于一个系统文件块(4k)的文件,或不能填满一个完整的文件系统块的文件末尾部分。ReiserFS 具有确实卓越的小文件处理性能是因为它能够将这些 tail 合并到它的 b*tree(它的主要数据组织结构)中去,这样它们就能真正地接近 stat-data(ReiserFS 中等同于索引节点的单元)。然而,因为这些 tail 不能填满一个完整的块,它们会浪费很多磁盘空间(当然是相对地说)。为了解决这个问题,ReiserFS 使用了它的“tail packing”功能来将这些 tail 压缩到占用尽可能小的空间。通常,这么做可以让 ReiserFS 文件系统比大小相等的 ext2 文件系统多容纳大约 5% 的数据。

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

正在加载评论...