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 软件包中的标准工具可以执行基本的配额管理任务(如 setquota 和 repquota), 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 的对应部分进行比较。
任务 | ext3/4 | XFS |
---|---|---|
创建文件系统 | mkfs.ext4 or mkfs.ext3 | mkfs.xfs |
文件系统检查 | e2fsck | xfs_repair |
重新定义文件系统大小 | resize2fs | xfs_growfs |
保存文件系统的镜像 | e2image | xfs_metadump 和 xfs_mdrestore |
标签或者调整文件系统 | tune2fs | xfs_admin |
备份文件系统 | dump 和 restore | xfsdump 和 xfsrestore |
下表列出了 XFS 文件系统功能的通用工具,但 XFS 版本具有更具体的功能,因此推荐这样做。
任务 | ext4 | XFS |
---|---|---|
Quota | quota | xfs_quota |
文件映射 | filefrag | xfs_bmap |
有关许多列出的 XFS 命令的详情请参考 第 3 章 XFS 文件系统。如需更多信息,您还可以查阅列出的 XFS 管理工具的手册页。