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 选项,才能使配额生效。
虽然 quota 软件包中的标准工具可以执行基本的配额管理任务(如 setquotarepquota), xfs_quota 工具可用于特定于 XFS 的功能,如项目配额管理。
quotacheck 命令对 XFS 文件系统没有影响。第一次在 XFS 上打开配额核算时,会在内部执行自动 quotacheck。由于 XFS 配额元数据是第一类,因此日志的元数据对象将始终一致,直到手动关闭配额为止。
文件系统重新定义大小
XFS 文件系统没有工具来缩小文件系统。XFS 文件系统可以通过 xfs_growfs 命令在线增长。
内节点(inode)号
对于大于 1 TB 且具有 256 字节索引节点的文件系统,或者大于 2 TB,XFS 索引节点编号可能超过 2^32。这种大型索引节点编号会导致 32 位 stat 调用失败,并显示 EOVERFLOW 返回值。使用默认的 Red Hat Enterprise Linux 7 配置时,上面描述的问题可能会发生:使用四个分配组非条带化。自定义配置(如文件系统扩展或更改 XFS 文件系统参数)可能会导致不同的行为。
应用程序通常正确处理此类更大的索引节点编号。如果需要,使用 -o inode32 参数挂载 XFS 文件系统,以强制低于 2^32 的 inode 号。请注意,使用 inode32 不会影响已分配了 64 位数的 inode。
重要
除非特定环境需要,否则不要使用 inode32 选项。inode32 选项可改变分配行为。因此,如果没有可用空间在较低磁盘块中分配 inode,则可能会出现 ENOSPC 错误。
定性预分配
XFS 使用 规范预分配 来分配块过去 EOF,因为文件被写入。这可避免因为 NFS 服务器上的并发流写工作负载造成文件碎片。默认情况下,此预分配会增加文件大小,并将在"du"输出中明显显示。如果没有在五分钟内没有指定指定预分配的文件,则会丢弃预分配。如果内节点在这个时间前从缓存中循环,则当内节点被回收时,将丢弃预分配。
如果因为定性预分配而看到了预规划 ENOSPC 问题,可以使用 -o allocsize=amount 挂载选项指定固定的预分配量。
与碎片相关的工具
由于 Heuristics 和行为(如延迟分配和规范预分配)导致 XFS 文件系统来说,碎片很少发生。但是,存在用于衡量文件系统碎片的工具,以及对文件系统进行碎片整理。不鼓励使用它们。
xfs_db frag 命令尝试将所有文件系统分配成单个碎片编号,以百分比表示。命令的输出需要大量的专业知识才能理解其含义。例如,一个碎片因数为 75% 意味着每个文件平均有 4 个扩展。因此,xfs_db 的 frag 的输出不被视为有用,并建议更小心地分析任何碎片问题。
警告
xfs_fsr 命令可用于对单个文件或文件系统上的所有文件进行碎片整理。强烈建议不要这样做,因为它可能会破坏文件的本地性,并可能出现碎片释放的空间。

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

下表将用于 ext3 和 ext4 的常见命令与特定于 XFS 的对应部分进行比较。

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

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

表 3.2. ext4 和 XFS 的通用工具

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