Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.10. 从 ext4 迁移到 XFS

从 Red Hat Enterprise Linux 7.0 开始,XFS 是默认文件系统,而不是 ext4。本节重点介绍使用或管理 XFS 文件系统时的差异。
Red Hat Enterprise Linux 7 仍完全支持 ext4 文件系统,并可在安装时选择。虽然可以从 ext4 迁移到 XFS,但这不是强制要求。

3.10.1. Ext3/4 和 XFS 之间的区别

文件系统修复
Ext3/4 在引导时在用户空间中运行 e2fsck,以根据需要恢复日志。相比之下,XFS 在内核空间中在挂载时执行日志恢复。提供了一个 fsck.xfs shell 脚本,但不会执行任何有用的操作,因为它只能满足 initscript 要求。
当请求 XFS 文件系统修复或检查时,请使用 xfs_repair 命令。对只读检查使用 -n 选项。
xfs_repair 命令不会在带有脏日志的文件系统中运行。若要修复此类文件系统 挂载卸载,必须先执行此类文件系统挂载和卸载,才能重播日志。如果日志损坏且无法重播,则可以使用 -L 选项来零注销日志。
有关 XFS 文件系统修复的详情,请参考 第 12.2.2 节 “XFS”
元数据错误行为
当遇到元数据错误时,ext3/4 文件系统具有可配置的行为,默认行为只是继续。XFS 遇到无法恢复的元数据错误时,它将关闭文件系统并返回 EFSCORRUPTED 错误。系统日志将包含遇到的错误的详细信息,如有必要,将建议运行 xfs_repair
配额
XFS 配额不是一个可重新挂载的选项。必须在初始挂载上指定 -o quota 选项才能生效配额。
虽然配额软件包中的标准工具可以执行基本的配额管理任务(如 setquotarepquota),但 xfs_quota 工具可用于特定于 XFS 的功能,如项目配额管理。
quotacheck 命令对 XFS 文件系统没有影响。在 XFS 上第一次打开配额记帐时,会在内部自动进行 配额检查。由于 XFS 配额元数据是第一类日志记录元数据对象,因此配额系统始终一致,直到手动关闭配额为止。
文件系统重新定义大小
XFS 文件系统没有可缩小文件系统的工具。可以通过 xfs_growfs 命令在线增大 XFS 文件系统。
内节点(inode)号
对于大于 1 TB 且索引节点 256 字节或大于 2 TB(带 512 字节索引节点的文件系统),XFS 索引节点编号可能会超过 2^32。这样庞大的索引节点编号会导致 32 位 stat 调用失败,并显示 EOVERFLOW 返回值。当使用默认的 Red Hat Enterprise Linux 7 配置时,可能会出现上述问题:没有带四个分配组。自定义配置(如文件系统扩展或更改 XFS 文件系统参数)可能会导致行为不同。
应用程序通常正确处理这样的大型索引节点编号。如果需要,使用 -o inode32 参数挂载 XFS 文件系统,以强制 2^32 以下索引节点编号。请注意,使用 索引节点32 不会影响已分配了 64 位编号的索引节点。
重要
不要 使用 inode32 选项,除非特定环境需要此选项。inode32 选项可更改分配行为。因此,如果没有可用空间在较低磁盘块中分配内节点,则可能会出现 ENOSPC 错误。
投射预分配
XFS 使用 规范预分配 来在写入文件时分配过去 EOF 的块。这可避免 NFS 服务器上的并发流写入工作负载导致文件碎片。默认情况下,这个预分配会增加文件的大小,并会在"du"输出中显示。如果具有投射预分配的文件未在五分钟内进行目录,则将丢弃预分配。如果在该时间之前将索引节点循环出缓存,则在恢复索引节点时将丢弃预分配。
如果因为推测预分配而发现了 ENOSPC 问题,则可使用 -o allocsize=amount 挂载选项指定固定的预分配量。
碎片相关的工具
由于启发性和行为(如延迟分配和推测预分配),碎片很少是 XFS 文件系统的大问题。但是,有一些工具可用于测量文件系统碎片以及对文件系统进行碎片整理。不鼓励使用这些服务。
xfs_db frag 命令尝试将所有文件系统分配分解为单个碎片数,以百分比表示。命令的输出需要大量的专业知识才能理解其含义。例如,碎片因数为 75%,表示每个文件的平均扩展率为 4 个扩展。因此,xfs_db 的片段的输出不被视为有用,因此建议更加谨慎地分析任何碎片问题。
警告
xfs_fsr 命令可用于对单个文件或文件系统上的所有文件进行碎片整理。稍后尤其建议不要这样做,因为它可能会破坏文件的本地性,并且可能会碎片化可用空间。

使用 ext3 和 ext4 的命令与 XFS 比较

下表将 ext3 和 ext4 使用的常用命令与其特定于 XFS 的对应命令进行了比较。

表 3.1. ext3 和 ext4 比较的常用命令与 XFS

任务 ext3/4 XFS
创建文件系统 mkfs.ext4mkfs.ext3 mkfs.xfs
文件系统检查 e2fsck xfs_repair
重新定义文件系统大小 resize2fs xfs_growfs
保存文件系统的镜像 e2image xfs_metadumpxfs_mdrestore
标签或者调整文件系统 tune2fs xfs_admin
备份文件系统 转储 和恢复 xfsdumpxfsrestore
下表列出了在 XFS 文件系统上运行的通用工具,但 XFS 版本具有更为具体的功能,因此建议这样做。

表 3.2. ext4 和 XFS 的通用工具

任务 ext4 XFS
Quota quota xfs_quota
文件映射 filefrag xfs_bmap
许多列出的 XFS 命令的详情请参考 第 3 章 XFS 文件系统。如需更多信息,您还可以查阅列出的 XFS 管理工具的 man page。