• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

使用 ReiserFS 和 Linux 2.4

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 41次 | 进入软件测试论坛讨论

领测软件测试网

Daniel Robbins(drobbins@gentoo.org)
总裁/首席执行官,Gentoo Technologies,Inc.
2001 年 8 月

随着 Linux 2.4的发行,出现了使用很多新的文件系统的可能性, 包括ReiserFS、XFS、GFS和另外一些文件系统。这些文件系统听起来很“酷”,但是它们到底能做些什么呢,它们擅长什么,还有您究竟怎样才能在一个产品Linux 环境中安全地使用它们呢?在本系列文章中,Daniel Robbins通过向您展示怎样在 Linux 2.4下安装这些新的高级文件系统,回答了这些问题。在他的本系列前面的文章中,Daniel 介绍了日志和 ReiserFS 的好处。在本文中 Daniel将教您安装一个非常稳定的基于 Linux 2.4 的 ReiserFS系统。

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

寻找好的内核
要在您的系统上使用ReiserFS,您首先需要找到一个合适的内核。如果您已经熟悉 2.4内核的发展,您就会知道这个过程比它听起来要复杂。本文完成时,最新的内核是2.4.6-pre2;但是我建议您在自己的 ReiserFS 系统上还是使用2.4.4(标准的 Linus 内核)或者 2.4.4-ac9(稍作改进的 Alan Cox内核)。从我的测试看来,2.4.5似乎很不稳定,所以我不推荐将这个内核作为产品使用;让我们希望 2.4.6会比它好很多吧。

如果您想在自己的产品 ReiserFS 系统中使用除 2.4.4 或 2.4.4-ac9以外的其它内核, 一定要作必要的检查以确保ReiserFS(和内核大体上)是稳定的。当然,如果您是在一个测试服务器上安装ReiserFS,只要不会丢失重要的数据,您就可以随意使用任一种内核。

总的来说,要注意内核稳定性问题,特别是 ReiserFS的稳定性问题,这有两个原因。因为 ReiserFS是一个“实验的”内核功能,您不能假定一个使用新内核的 ReiserFs实现刚刚从 tarball中解出就能够很好地运行。第二个原因(也许在目前是更重要的问题)在于大部分的2.4内核发行版和补丁都有一点不稳定,所以目前您行动时还是需要谨慎一点。理论上,所有的 2.4 发行版都应该是准产品化的,因为 2.4版本应该是一个稳定的系列;但是,实际上它们(还)不是,所以强烈鼓励您小心使用新的、没有测试过的内核。

这段信息的意思不是要吓得您不敢使用 ReiserFS 或者 Linux2.4,而是要给那些更敢于冒险的人一点理性。不要总是在重要的系统上使用各种还处于测试期的内核;如果这样,您吃到苦头的。当您使用一个不可靠的内核时,您不仅仅面临着系统锁定的危险;您还面临着丢失数据和文件系统崩溃的危险,这是您绝对不希望发生的。即便ReiserFS实现本身是稳定的,内核其他部分的主要错误也很可能引起文件系统崩溃的产生。

如果您没有最新的内核稳定性信息来源,我建议您定期地访问 Linux每周新闻(请参阅本文后面的参考资料),及时了解最新的可能出现的内核问题(信息每个星期四更新)。希望现在我已经说服了更多喜欢冒险的读者坚持使用2.4.4 或 2.4.4-ac9 内核作为产品 ReiserFS 的配置,让我们继续吧。

标准内核
OK,我们现在可以谈谈安装和运行一个准产品化的 ReiserFS系统的三种选择。第一种选择是只用标准 2.4.4 Linux内核。第二种选择是使用 2.4.4 内核,同时使用 ReiserFS大补丁,它包括了一些专门的补丁,使 ReiserFS 达到配额兼容,并与在本机运行的 NFS 服务器更加兼容。第三种选择是,我们可以使用2.4.4 内核和 ac9 补丁(即2.4.4-ac9),再加上或不加大补丁。通常我推荐使用 2.4.4-ac9和大补丁,因为大补丁并没有任何负作用,而且您可能会需要它,而且 ac9比标准内核执行得好多了。但是,如果您不愿意使用 ac 内核,标准 2.4.4也不错了。我会简单地向您介绍设置 2.4.4-ac9和大补丁的步骤,但是如果因为某些原因您不愿安装这两个补丁或其中之一,只要跳过这个步骤即可。现在,让我们开始吧。

首先,从 kernel.org 下载 2.4.4 内核源码并进入您的 /usr/src 目录。 移去该处的任何 linux目录或者符号连接,如果是目录就将其改名,如果是符号连接就只需删除它。然后:

# cd /usr/src
# cat /path/to/linx-2.4.4.tar.bz2 | bzip2 -d | tar xvf -


ac9补丁和大补丁
如果您计划只用标准 2.4.4内核,您就已经拥有全部所需的资源了,可以跳过其余的补丁。然而,我推荐您继续使用下面的ac 补丁和大补丁。

要使用 ac9 补丁,请从 kernel.org 下载 Alan Cox ac9 补丁。然后键入:

# cd /usr/src/linux
# bzip2 -dc /path/to/patch-2.4.4-ac9.bz2 | patch -p1


一旦标准内核安装完毕,就到 DiCE去下载 DiCE 的 ReiserFS 大补丁。这个步骤还是可选的,不过也是推荐的,特别是如果您将在此系统上运行NFS服务器或者需要配额(如果不是这样,无论如何这个补丁也不会有什么坏处)。要使用大补丁请遵循以下步骤:

# cd /usr/src/linux
# bzip2 -dc /path/to/bigpatch-2.4.4.diff.bz2 | patch -p1


一旦所有可选的修正和大补丁安装完毕,您就可以为 ReiserFS配置内核了。

注意:如果您需要更多关于如何编译 Linux 内核的指导,可参阅developerWorks 上的编译 Linux 内核免费教程。下面是一个简单的摘要。

配置内核非常简单。首先,键入“make menuconfig”。在“Codematurity level options”部分,确保启用了“Prompt for developmentand/or incomplete code/drivers”选项。然后到“Filesystems”部分,启用“ReiserFS support”选项。 您将 ReiserFS设置为直接编译到内核中(而不是作为一种模块);而且通常启用“HavereiserFS do extra internal checking”这个选项不是什么好主意。现在,保存您的设置,编译您的内核(“make dep;make bzImage;makemodules;make modules_install”),然后配置您的引导装载器(bootloader)来装载新的配置了 ReiserFS 的内核。

重点:保存当前内核并配置引导装载器(bootloader)总是个好主意,这样万一您的新内核无法工作,您就可以用原来的内核启动。

使用ReiserFS

安装工具
在重新启动之前,我们需要安装“reiserfsprogs”工具,它包括了“mkreiserfs”、“resize_reiserfs”(对LVM 用户很有用),还有“fsck.reiserfs”。您可以从 Namesys.com下载页下载最新版本的“reiserfsprogs”(目前是“3.x.0j”)。一旦这些工具下载完毕,您就可以按以下步骤编译和安装“reiserfsprogs”了:

# cd /tmp
# tar xzvf reiserfsprogs-3.x.0j.tar.gz
# cd reiserfsprogs-3.x.0j
# ./configure
./configure output will appear here
# make
make output will appear here
# make install
make install output will appear here


既然工具已经安装完毕,现在您可以按需要创建任何新的分区(使用“fdisk”或者“cfdisk”)或LVM逻辑卷(使用“lvcreate”)并重新启动您的系统。如果您正在创建标准分区,您可以简单地将此分区标记为一个“Linuxnative file system”(83)。

创建和安装文件系统
重新启动后,您就可以在一个空的分区上创建 ReiserFS文件系统,如下所示:

# mkreiserfs /dev/
hdxy


在上面的示例中,/dev/hdxy应该是对应于一个空闲分区的设备节点。象安装其它文件系统一样安装它:

# mount /dev/
hdxy
/mnt/reiser


而且,如果您想在自己的 /etc/fstab 文件中添加一个 ReiserFS文件系统,只需将“freq”和“passno”字段设置为“0”,如下所示:

/dev/hdc1       /home                   reiserfs        defaults       0 0


从这以后,您的 ReiserFS 文件系统应该不比它的对手 ext2逊色了,而且您再也不必担心长时间的“fsck”,整体性能也会好得多 —特别是对于小文件来说。

ReiserFS技术注解

文件系统稳定性
我已经在一个产品环境下使用了一个多月 2.4.4 版本内核的 ReiserFS(在cvs.gentoo.org 开发服务器上),根本没有什么崩溃问题。2.4.4 和2.4.4-ac9 已经非常稳定了。我们的服务器执行大量的磁盘 IO任务,因为它是我们的 cvs 资料档案库、“dev-wiki”、gentoo.org邮件服务器、基于邮差的邮件列表,还有很多其他东西的所在之处。

ReiserFS的局限性
虽然 ReiserFS 在几乎每一种类型的应用程序上都比 ext2文件系统表现得好,有些地方 ReiserFS目前还是有点欠缺。令人欣慰的是,这些问题其实并不是 ReiserFS无法克服的局限性,只是 Namesys开发人员还没有来得及编码或优化的地方。

没有dump/restore
是的,这是真的;ReiserFS没有“dump”和“restore”实现。如果您想使用 ReiserFS又碰巧是个喜欢使用“dump”的人,您就必须寻找备份数据的其他方法。实际上,事实证明这个根本就不是问题,因为2.4 系列内核从一开始就不兼容“dump”和“restore”命令。要了解关于dump 和 2.4 内核的不兼容性的更多信息,请阅读 Linus Torvalds的帖子(请参阅参考资料),他在帖子中说道“Dump从一开始就是个愚蠢的程序。不要去碰它。”

性能问题
虽然 ReiserFS 通常抢尽了 ext2的风头,但它在特定情况下确实有性能上的不足之处。第一个就是处理稀疏文件的能力。ReiserFS处理稀疏文件的能力比 ext2 差很多。当 Namesys开发人员一直设法为 ReiserFS 4 优化 ReiserFS的这一部分时,这一点会有所改观。在这之前,ext2是对处理稀疏文件有很高要求的应用程序的较好的解决方案

在对大量文件执行多个 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% 的数据。

更多关于notail 的内容
然而,tail packing也有它的缺点。首先,它的确给性能带来了一个小却不可忽视的冲击。幸运的是,ReiserFS开发人员已经预计到有些人宁愿牺牲大约 5%的磁盘空间换取一点额外的性能,所以他们创建了“notail”安装选项。当文件系统用这个选项安装时,tailpacking将被关闭,使您的存储容量减小,却有更快的速度。通常,重视文件系统性能的狂热分子同时启用“notail”和“noatime”选项来安装他们的文件系统,从而带来显著的性能提升:

/dev/hdc1       /home                   reiserfs        noatime,notail       0 0


即便您想节省一点磁盘空间,有时候暂时用一下“notail”选项安装文件系统也是件好事。特别是,大多数引导装载器(bootloader)装载一个在启用 tail packing 的 ReiserFS文件系统上创建的内核时,都会出现问题。如果您正在使用一个比版本 21.6还低的 LILO,您就会碰到这种问题。在使用最新版本的 GRUB时也会碰到问题,即不能装载它的 stage1 和 stage1_5文件,尽管在装载实际内核的时候没有什么问题。如果您已经在经历这种问题了,您可以这样修正此问题-使用“notail”选项安装文件系统,将文件移到另一个文件系统中,然后再把它们移回来。当文件被重新创建时,就不会有tail了。另外,记住您还可以很轻易地重新安装文件系统(用新选项),而不需要卸载它。这个特别的示例使用“notail”选项重新安装根目录文件系统。通常情况下,如果您想使用tail packing,但也需要引导装载器(bootloader)从根目录文件系统装载辅助文件(如内核),这条命令就很有用了:

# mount / -o remount,notail


Qmail注解
如果您正在 ReiserFS 中使用qmail,您应该了解一些重要的参考资料。首先,您应该使用 qmail 1.03源码的补丁。它修正了 qmail非同步调用“link()”和“unlink()”时出现的问题,它不但是ReiserFS 的问题,恰好也是 ext2 的问题。接下来您应该看看 Jedi 的 qmail调优页面,它包含了很多关于怎样尽可能发挥 qmail性能的很好的建议。最后,请务必查看 Jedi 的ReiserSMTP 软件包。ReiserSMTP 包含一个 GPL 插件来代替 qmail 的SMTP 部分;Jedi 的这种替换是特别为 ReiserFS调整的,依赖新的队列处理例程,它可以给您带来双倍的邮件收取性能。

结论
我发现 ReiserFS真是一个不可思议的文件系统,它提供了很好的小文件处理性能和非常好的(通常比ext2 要好)的常规文件处理性能。因为有了ReiserFS,我的开发人员可以在仅仅 15 秒内完成 Gentoo Linux “cvs”更新,而使用 ext2 通常要花大约两分钟时间。ReiserFS使我们开发人员的生活更加愉快,还使我们的 cvs 服务器处理大量的并发IO 而不会引起硬盘狂转和对交互性能的负面影响。

然而除了所有这些,关于 ReiserFS最激动人心的地方是它将来的发展方向。Hans Reiser 对 ReiserFS有一个非常激进而创新的计划,包括计划扩展文件系统从而能够将其作为一个发展成熟的高性能数据库来使用,最后还包括事务支持和高级查询功能。这意味ReiserFS将不仅仅“只是另一个高性能文件系统”;相反,它将开拓新的可能和道路,使我们能够用创新方式去解决传统的存储问题。有了Namesys 的合作,Linux 将来的发展一定会非常激动人心 -这绝对是一件好事情。

参考资料

  • Namesys Web页是能更好地了解 ReiserFS 的地方。

  • 注意访问 DiCE下载页,留意最新的ReiserFS 大补丁。

  • ReiserFS邮件列表是能获得当前的,更多深入的 ReiserFS信息的极好的信息来源。请务必还要查看 ReiserFS邮件列表档案。

  • Linux每周新闻是我们及时了解最新的内核发展的很好的参考资料。

  • 您可以在 Linux Gazette 上 Juan I. Santos Florido 的日志文件系统回顾中找到一些有关UFS、ext2、ReiserFS之间元数据的差异,以及其它内容的非常详细的信息。

  • Jedi 的 ReiserFS/Qmail调整页面包含许多对 qmail用户很有用的信息。请务必还要查看 ReiserSMTP- Jedi 收集的众多 qmail 组件,它们显著提升了 qmail 的性能。

  • 看看 mutt电子邮件客户,它可以用来读取大的 maildir 形式的邮箱。

  • 阅读 LinusTorvalds 最近关于 dump 和 restore 的评论。

  • 参加 developerWorks 上编译 Linux 内核的免费教程。

  • 浏览 developerWorks 上更多 Linux参考资料。

  • 浏览 developerWorks 上更多开放源代码参考资料。


关于作者
javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">Daniel Robbins 是Gentoo Technologies,Inc. 的总裁/首席执行官,住在新墨西哥州的Albuquerque,他是 GentooLinux(一种 PC 机上的高级 Linux)和 Portage 系统(Linux的下一代移植系统)的创建者。他还是 Macmillan 的书籍 - CalderaOpenLinux UnleashedSuSE Linux UnleashedSambaUnleashed - 的特约作者。Daniel 从他二年级时接触到 Logo编程语言和 Pac Man游戏的潜在危险魔力后就被这股热流卷进了计算机中。这或许可以解释他为什么曾经是SONY 电子出版/游戏公司的首席图形设计师了。Daniel喜欢花时间和他的妻子 Mary 还有他刚出生的宝贝女儿 Hadassah在一起。您可以通过 drobbins@gentoo.org联系他。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网