在Debian中优化XFS文件系统

首先,还是简单的说明一下为什么选择xfs文件系统。在Debian GNU/Linux系统中,就目前的情况,我们可以使用reiserfs,xfs,jfs等文件系统来代替ext3,它们都有一些很好的特性。最新的一篇比较的文章,请参考这里:Filesystems (ext3, reiser, xfs, jfs) comparison on Debian Etch,请注意末尾的references,可以进一步延伸阅读。
我的思考,选择哪个文件系统,首先要考虑硬件的条件,重点是cpu的能力(单核还是多核,cache有多大),内存和硬盘的容量等等。自己的系统用什么文 件系统,还是要自己实际的做一些测试和比较才好。而在软件方面,文件系统的性能和创建它时使用的参数和挂载时的参数选择是密切相关的,大多数的使用者,仅仅使用安装程序默认的参数创建和挂载某一个文件系统。
所以,请大家一定注意我这篇文章中的软硬件条件。
我的笔记本的硬件条件:
       CPU:T2450 L1指令缓冲/数据缓冲都是32KB,8-way;统一的L2是2MB,分段, 8-way
内存:512+1 GB
硬盘:120GB
软件条件:
       Debian 4.0r1
       Linux Kernel: 2.6.22 (Debian源中的)
       xfsprogs: 我使用的是4.0r1的CD1来安装debian,而在此时的testing中版本是2.9.0-1
比较文件系统的方法,大家可以从上面的那个链接中找到,也可以用bonnie++,我这里不是重点说那个的,所以略过,总之,我最终选择和xfs文件系统最为主要使用的,辅以ext3。
如何改进xfs文件系统的性能,这里也有一个参考文档:Filesystem performance tweaking with XFS on Linux。我这里描述其中的原因和在安装Debian的时候要做的动作。
根据前面第二段的说明,我们必须要仔细阅读mkfs.xfs和mount关于xfs的manpages。
首先是mkfs.xfs的,重点是这几个:
    -i size=512  : 默认的值是256KB,这里的设置是为了selinux的,这个设置针对inode size,selinux使用xfs的Extend Attribute,首先要写到inode中,如果容量不够(默认是256KB的时候就不够,刚刚多一点点),就写到block中,这会损失性能,当需要使用selinux的时候。这似乎对一般用户没什么作用,因为一般用户都不用selinux的,大家对linux系统的安全性还是挺信任的,不过,说实 话,我不信任,况且RedHat 的FC已经默认配置了selinux,这很好。做了这个改动,方便以后我在系统中配置selinux而不担心性能的损失。
    -l size=128m  :注意是小写的m,不是大写的。默认值的是10m(bsize=4096 x blocks=2560)。这个值可以设置成32m(分区容量不小于250M)/64m(分区容量不小于500M)/128m(分区容量不小于 700M),对于分区容量的限制,我这里列出的只是大概,最大可设128m。修改这个参数成128m,可以显著的提高xfs文件系统删除文件的速度,当然 还有其它,如拷贝文件的速度。这个参数需要大内存的支持,内存太少的机器大概不能设置这么高。(标准是什么?512M?1G?我不了解,所以我上面说要自己实际的测试一下。)
    -d agcount=4 :默认值是根据容量自动设置的。可以设置成1/2/4/16等等,这个参数可以调节对CPU的占用率,值越小,占用率越低。这是理论上的,在我的机器 上,agcount=1反而比agcount=2的cpu占用率还高,我想这是因为我的cpu是双核的原因吧。要注意,cpu的占用率低,那每一秒处理的 数据量也会降低一些。我比较了agcount=2和4,发现还是4比较好。这样一来,这个参数的设置,就是需要自己去选择的了。另外,如果在系统中使用 xfs_growfs,会动态增加这个参数的值。
其次,是mount时候的挂载选项:
    noatime    : 这个挂载选项,是许多文件系统都要用的。
    logbufs=8 : 这个选项需要大内存的支持,它也能整体提高xfs的性能。
OK,接下去的就是如何在安装Debian的时候的动作了。
我用debian 4.0r1 CD1刻光盘安装,一路进入到分区程序的部分,注意两点:
    1,在选择分区的文件系统格式为xfs后,同时选择挂载参数noatime,这省的以后修改fstab。
    2,做完设定后,还没有真实的格式化硬盘,如果直接下一步“分区设定结束并将修改写入硬盘”,安装程序会自动格式化并且自动挂载,下一步是设置时区,这会 造成许多麻烦。幸好,我使用了lvm,这样,就在“磁盘分区”的界面上多出一个“配置逻辑卷管理器”,进入它,会首先提示格式化刚才设定的分区,照做,然 后分配好逻辑卷,退出到“磁盘分区”的界面。
使用Alt+F2,切换出安装程序的控制台,一个busybox,提供mkfs.xfs的命令,这样,我们就可以重新用新的参数创建xfs分区了,命令示例如下:
    mkfs.xfs -f -i size=512 -l size=128m -d agcount=4 /dev/debian/root
其中/dev/debian/root,debian是建立的逻辑卷组的名字,root是逻辑卷的名字,这个区显然会挂载到/下。对于逻辑卷lvm的使用,我另外写文档说明。
这样一来,当Alt+F1切换回安装界面后,可以立刻"分区设定结束并将修改写入硬盘",安装程序就不会再格式化分区,而是加载我们自己重新格式化后的分区。
然后完成安装。因为busybox并没有提供xfsprogs(我们需要xfs_info),所以我们只能在安装好基本系统后查看。
clip_image002
从上面的xfs_info的输出,我们可以清晰地看到isize=512, agcount=4, 而bsize=4096 x blocks=32768 /2^20 正好是128
clip_image004
上面是/etc/fstab中内容的片断。
SO,到这里,就做完了所有的事情。Good Luck! and Enjoy it!

posted @ 2013-02-06 15:39  Leo L.Cao  阅读(2532)  评论(0编辑  收藏  举报