高级文件系统实现者指南:第 10 部分
部署 XFS
|
级别: 初级
Daniel Robbins ( [email protected]), 总裁兼 CEO, Gentoo Technologies, Inc.
2002 年 4 月 01 日
在本文中,我将为您演示如何在您的系统上安装 XFS 并使其运行。首先,请确保您知道并已经浏览了 SGI XFS 项目页面(请参阅本文后面的 参考资料)。如果您点击“下载”链接,您将发现补丁程序、工具甚至 Red Hat 的支持 XFS 的内核。
但是,请等一等。虽然通过使用这些预先编译好的官方发行版来安装 XFS
是可能的,但是我不推荐这种方法。在写本文时,最新官方 XFS 发行版是 1.0.2,它早在 2001 年 11 月就发布了。自那以后 XFS 经历了许多改进,为了从这些改进中获益,最好使用来自 XFS CVS 树的最新源代码。根据 Gentoo Linux 开发人员和用户的反馈,使用来自 CVS 的 XFS 的人比那些尝试过使用略微有些过时的官方发布版的人有好得多的 XFS 体验。
使用 CVS
如果您以前从没有使用过 CVS,那么您可能会对我的教程
CVS for the developer or amateur感兴趣(请参阅 参考资料)。如果您只想随意试试,那么,也很好。只需确保在您的系统上安装了某种 CVS 软件包,以便您可以使用
cvs 命令。
我在这里提供的 CVS 指导信息也可以在 SGI 的站点(请参阅 参考资料)上找到。当您通过使用
cvs 获取源代码之后,您将有一个新的目录树,它含有最新的支持 XFS 的内核源代码以及最新的 XFS 工具。要从 XFS CVS 获取源代码,请首先将
CVSROOT 环境变量设置成您要从中获取源代码的资源库。在 bash 提示符下,输入:
现在,将目录改为您希望创建新 XFS 目录树的位置,然后输入:
当提示输入密码时,输入
cvs 。您现在登录到了公共 CVS 资源库;要获取最新 XFS 源代码,请输入:
检出过程将启动。这可能会花一段时间,因为您正在获取的文件包含完整的 Linux 源代码树。过一会儿,
cvs checkout 命令将完成,在您的当前工作目录下将有一个新的
linux-2.4-xfs 目录。为了将来的引用,如果您任何时候需要更新您的新源代码树,只需进入
linux-2.4-xfs 目录并输入:
使用树
有两个重要的目录位于新的
linux-2.4-xfs 目录中。第一个名为
linux ,它含有支持 XFS 的内核源代码树,而第二个称为
cmd ,它包含各种 XFS 用户空间程序源代码。要使用内核源代码,您可以将
linux 目录复制到
/usr/src ,或者在当前位置简单地编译一个新内核。
下面是如何安装该内核并运行它。进入
linux 目录并将
Makefile 装入您最喜欢的编辑器。在文件的顶部,您将看到类似下面的几行:
这几行告诉
Makefile 构建一个官方名称为
2.4.17-xfs 的内核。有些人更愿意有一个官方的
uname -a 内核名中不含有
-xfs 的内核;如果您属于他们中的一员,那么就请将最后一行改成:
现在进行内核配置。要启用 XFS,请输入
make menuconfig 并进入 File systems 节。向下滚动一点,您将会看到下列选项:
启用它(推荐将它直接编译进您的内核)。键入
y ,将出现下列三个子选项:
“XFS Realtime”选项将启用 XFS 中的实时子卷支持,它让您配置可以为实时应用程序提供更确定性的性能的存储区域。“XFS Quota”选项将 �D 您猜得到的 �D 启用对将磁盘使用限制与确定的用户和组关联的支持。“XFS DMAPI”选项(如果选中的话)将启用一个特殊的 API,这个 API 将打算供存储管理应用程序使用。目前,还没有生产级 Linux 工具利用 DMAPI(这包括 Sistina 的 LVM 和 SGI XFS 实用程序本身)的优点;然而,SGI 和 IBM 目前正在开发一些支持 DMAPI 的应用程序。
一旦您选中了“SGI XFS filesystem support”,并且按照您希望的方式配置了内核的剩余部分,那么您就可以进行
make dep && make bzImage && make modules && make modules_install ,安装您的内核并且重新引导。
安装工具
既然已经安装并且运行了支持 XFS 的内核,您就可以安装各种 XFS 工具。XFS 的一个优点是它带有一套十分完备的工具和实用程序。进入
linux-2.4-xfs/cmd 目录,然后以“root”用户在 bash 提示符下输入下面的 shell 脚本:
输入最后一行
done 之后,我们特定的构建脚本将开始执行,并且将开始安装所有不同的 XFS 工具。现在,您可以通过安装几个与开发人员有关的文件来结束这个过程,以前的
make install 命令不会安装这些文件:
创建和挂装文件系统
一旦完成了这一最后的脚本,所有各种与 XFS 有关的程序都应该正确地安装,并且可以使用了。现在,您即将创建调整成最佳性能的 XFS 测试文件系统。
但是首先,如果您正在以前是 ReiserFS 文件系统之上创建一个 XFS 文件系统,那么您将需要使用一个小技巧。在 bash 提示符下,使用下面的命令将块设备的开始位置“置零”,该处本来用于存储 ReiserFS 文件系统,并将被初始化以包含您的新 XFS 文件系统:
为了擦除任何剩余的 ReiserFS 元数据,这一步是必需的;否则,
mount 可能会混淆并且无意中将您的新 XFS 文件系统挂装成有缺陷的 ReiserFS 文件系统!您只需让
dd 运行大约 10 秒钟,之后,您可以使用 control-C 终止该命令。这时,以前存在的 ReiserFS 元数据的关键部分将被清除,
mount 的文件系统类型自动检测代码将不会再混淆。
现在是创建新文件系统的时候了。要做到这一点,您
可以象下面那样使用
mkfs.xfs :
虽然上述命令会起作用,但是要使用
mkfs.xfs 将您的新 XFS 文件系统配置成最佳性能,有两个选项。
第一个这样的选项是
-l size=32m ,它告诉
mkfs.xfs 配置您的文件系统使之拥有一个高达 32 MB 的元数据日志。这通过降低在文件系统处于繁忙使用期间元数据日志将“填满”的可能性而改善了性能。
第二个选项通过告诉
mkfs.xfs 将创建的分配组的数目
最小化,让您增强新文件系统的性能。通常,
mkfs.xfs 自动选择分配组的数目,但是,根据我的经验,它通常会选择一个比大多数用于一般用途的 Linux 工作站和服务器过高一点的数目。正如您将从 我前一篇文章所回忆的一样,分配组让 XFS 并行执行多个元数据操作。这为高端服务器带来了便利,但是太多的分配组确实会增加一些开销。因此,不要让
mkfs.xfs 为您的文件系统选择分配组的数目,而是通过使用
-d agcount=x 选项指定一个数目。将
x 设置成一个小数目,如 4、6 或 8。您需要使得您的目标块设备中每 4 GB 容量至少有一个分配组。同时进行这两项调整,使用下面的命令创建“优化的”XFS 文件系统:
既然已经创建了文件系统,您就可以挂装它了。挂装时,您将使用一些性能增强 mount 选项来最大程度地发掘出(或发挥出)您的新文件系统的性能。
前面的两个 mount 选项关闭
atime 更新,几乎不需要 atime 更新,并且它除了降低文件系统性能之外几乎不起任何作用。
osyncisdsync 选项调整 XFS 的同步/异步行为,以便它同 ext3 更一致。多亏了我们的
mkfs.xfs 和
mount 调整,您的新 XFS 文件系统比没这么调整时的性能要好得多。
好功能
XFS 的一个优点是它包含许多好功能。其中之一是一些名为“访问控制表”或 ACL 的特殊功能,现在在 XFS 文件系统上缺省启用这些功能。访问控制表让您定义细粒度的文件许可权。例如,您不再仅限于为用户、组及所有其它人定义“rwx”访问权限,您现在可以添加任意数目的额外用户或组并为它们指定“rwx”许可权。
全面讨论访问控制表超出了本文的范围,但是您可以在 bestbits 站点(请参阅 参考资料)上找到对 ACL 的极佳介绍。如果您浏览“Why you may want Access Control Lists (ACLs)”页面,尤其是如此。请注意,该站点上的大多数高深技术信息都同在 ext2 和 ext3 下启用 ACL 支持有关(但是不需要额外的步骤使 ACL 在 XFS 文件系统上工作)。
XFS 包含另外一个名为“扩展属性”的优秀功能特性。扩展属性让您将用户定义的数据同文件系统对象相关联。例如,如果您有一幅名为
mygraphic.png 的图像,您可以附加一个名为“thumbnail”的属性,它包含该图像的一个小版本。普通文件 IO 操作将看不到这个数据,但任何程序都可以使用一个特殊的扩展属性 API 来访问它。扩展属性在某些方面类似 MacOS 系统中的“资源分支”。
下面是如何使用
attr 可执行命令行来与扩展属性交互的示例。假定我想将
description 属性添加到我的主目录。我可以输入:
然后,要查看与
/home/drobbins 相关联的属性列表,我可以输入:
要查看
description 属性的内容,我应输入:
扩展属性简单易用,并且使用起来也很有趣。您可以通过输入
man attr 来了解关于扩展属性的更多内容。XFS 还包含一个用于与扩展属性交互的 C API。如果您对使用扩展属性的 C++ IOStream 接口感兴趣,那么您可能要查看 SourceForge 上的 libferris(请参阅 参考资料)。
是的,扩展属性和 ACL 的确很有趣,但是,当心 �D 大多数备份程序目前仍然忽略 EA 和 ACL 数据。其中著名的例外就是随 XFS 分发包一起包含的
xfsdump 和
xfsrestore 命令。如果您正在使用任何其它备份程序,请确保无论在何处使用扩展属性和 ACL 之前都做一些研究。
希望您喜欢这篇对 XFS 文件系统的快速介绍。下篇文章见!
参考资料
关于作者
|