XFS文件系统介绍及命令

  • XFS 是 **高性能日志文件系统 (journaling file system)**,最早由 SGI 开发(IRIX 使用),后来移植到 Linux。
  • RHEL 7 / CentOS 7 开始,XFS 成为了默认文件系统(替代 ext4)。

核心特性

  1. 日志 (Journal)

    • 提供崩溃恢复能力(metadata 日志,不记录文件内容)。
    • 避免 fsck 扫描整个磁盘,恢复更快。
  2. 大文件支持

    • 单文件最大支持 8EB(Exabyte),远大于 ext4(16TB)。
    • 单个文件系统最大支持 500TB(RHEL 7 默认限制)。
  3. 高并发 & 性能优化

    • 基于 B+ 树 管理空闲空间、inode、目录。
    • 适合高并发、多线程 I/O 场景。
  4. 在线操作

    • 支持 在线扩容(growfs)。
    • ⚠️ 不支持在线缩容(只能新建再迁移数据)。
  5. 延迟分配 (Delayed Allocation)

    • 数据写入延迟分配,减少碎片,提升性能。
  6. 一致性保障

    • 元数据日志保证一致性。
    • 数据默认不记录日志(比 ZFS、btrfs 轻量)。

常用命令

1. 创建

1
mkfs.xfs /dev/sdb1

2. 挂载

1
mount -t xfs /dev/sdb1 /data

3. 查看信息

1
xfs_info /data

4. 在线扩容

1
xfs_growfs /data

(前提:底层设备已经扩容,比如 lvextend 或云盘扩容)

5. 检查/修复

  • XFS 不支持 fsck.ext4 这种检查工具,要用专用工具:
1
xfs_repair /dev/sdb1

如果文件系统还挂载着,先卸载:

1
2
umount /data
xfs_repair /dev/sdb1

6. 空间回收 (fstrim)

如果设备是 SSD,可以用:

1
fstrim -v /data

注意事项

  • 不支持缩容:一旦分区太大,只能重建。
  • 强制修复会丢数据xfs_repair -L 会清空日志,可能丢文件。
  • root 分区损坏时:需要从救援模式跑 xfs_repair
  • 日志只保护元数据:应用层数据损坏不会被恢复(跟 ext4 类似)。

XFS vs ext4 对比

特性 ext4 XFS
单文件大小限制 16 TB 8 EB
单分区大小限制 1 EB 500 TB(RHEL 默认)
日志 metadata + journal metadata-only
性能 通用,稳定 高并发、大文件优势
在线扩容
在线缩容 ✅(resize2fs)