Red Hat Training

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

第 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 块大小。该值必须 以字节为单位,使用可选的 kmg 后缀。
sw=value
指定 RAID 设备中数据磁盘的数量,或者条带中条带单位的数量。
以下示例对包含 4 个条带单位的 RAID 设备指定了 64k 的块大小:
# mkfs.xfs -d su=64k,sw=4 /dev/block_device

其它资源

有关创建 XFS 文件系统的更多信息,请参阅: