第 3 章 XFS 文件系统
XFS 是一个高度可扩展的、高性能的文件系统,它最初是由 Silicon Graphics, Inc 设计的。XFS 是 Red Hat Enterprise Linux 7 的默认文件系统。
- XFS 的主要功能
- XFS 支持 元数据日志 ,这有助于更快地恢复崩溃。
- XFS 文件系统可以在挂载和激活时进行碎片整理和放大。
- 另外,Red Hat Enterprise Linux 7 支持特定于 XFS 的备份和恢复工具。
- 分配功能
- XFS 具有以下分配方案:
- 基于数据块的分配
- 条带化分配策略
- 延迟分配
- 空间预分配
延迟分配和其他性能优化对 XFS 的影响与对 ext4 的影响一样。即,程序对 XFS 文件系统的写操作无法保证为磁盘上,除非程序随后发出 fsync () 调用。有关延迟分配对文件系统(ext4 和 XFS)的影响的更多信息,请参阅 分配功能 中的 第 5 章 ext4 文件系统。注意创建或扩展文件偶尔会失败,并显示意外的 ENOSPC 写入失败,即使磁盘空间似乎足够了。这是因为 XFS 的性能导向型设计。实际上,它不会成为问题,因为它只有在剩余空间只是几个块时才会发生。 - 其他 XFS 功能
- XFS 文件系统还支持以下内容:
- 扩展的属性 (
xattr
) - 这允许系统能够按文件关联多个额外的名称/值对。它会被默认启用。
- 配额日志
- 这可避免在崩溃后需要进行冗长的配额一致性检查。
- 项目/目录配额
- 这允许对目录树的配额限制。
- 小于秒的时间戳
- 这允许时间戳进入亚秒。
- 扩展的属性 (
- 默认 atime 行为是 relatime
- 对于 XFS,relatime 默认为 on。与 noatime 相比,它几乎没有开销,同时仍维护 sane atime 值。
3.1. 创建 XFS 文件系统
- 要创建 XFS 文件系统,请使用以下命令:
#
mkfs.xfs block_device- 使用到块设备的路径替换 block_device。例如:
/dev/sdb1
,/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a
, 或/dev/my-volgroup/my-lv
。 - 一般情况下,默认选项是常见用途的最佳选择。
- 在包含现有文件系统的块设备上使用 mkfs.xfs 时,添加
-f
选项来覆盖该文件系统。
例 3.1. mkfs.xfs 命令输出
以下是 mkfs.xfs 命令的输出示例:
meta-data=/dev/device isize=256 agcount=4, agsize=3277258 blks = sectsz=512 attr=2 data = bsize=4096 blocks=13109032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
注意
XFS 文件系统创建后,其大小不能缩小。但是,仍然可以使用 xfs_growfs 命令放大。如需更多信息,请参阅 第 3.4 节 “增加 XFS 文件系统的大小”。
条带块设备
对于条带块设备(如 RAID5 阵列),可以在创建文件系统时指定条带几何结构。使用合适的条带几何形状可显著提高 XFS 文件系统的性能。
在 LVM 或 MD 卷上创建文件系统时,mkfs.xfs 选择最佳的几何结构。对于将几何结构信息导出到操作系统的某些硬件 RAID,这可能也是如此。
如果设备导出条带几何结构信息,则
mkfs
工具(用于 ext3、ext4 和 xfs)将自动使用此 geometry。如果 mkfs
工具没有检测到条带几何结构,即使存储确实有条带几何结构,则可以在使用以下选项创建文件系统时手动指定它:
- su=value
- 指定条带单位或 RAID 块大小。该值必须 以字节为单位,使用可选的
k
、m
或g
后缀。 - sw=value
- 指定 RAID 设备中数据磁盘的数量,或者条带中条带单位的数量。
以下示例对包含 4 个条带单位的 RAID 设备指定了 64k 的块大小:
#
mkfs.xfs -d su=64k,sw=4 /dev/block_device
其它资源
有关创建 XFS 文件系统的更多信息,请参阅: