XFS文件系统介绍及命令
- XFS 是 **高性能日志文件系统 (journaling file system)**,最早由 SGI 开发(IRIX 使用),后来移植到 Linux。
- 从 RHEL 7 / CentOS 7 开始,XFS 成为了默认文件系统(替代 ext4)。
核心特性
日志 (Journal)
- 提供崩溃恢复能力(metadata 日志,不记录文件内容)。
- 避免 fsck 扫描整个磁盘,恢复更快。
大文件支持
- 单文件最大支持 8EB(Exabyte),远大于 ext4(16TB)。
- 单个文件系统最大支持 500TB(RHEL 7 默认限制)。
高并发 & 性能优化
- 基于 B+ 树 管理空闲空间、inode、目录。
- 适合高并发、多线程 I/O 场景。
在线操作
- 支持 在线扩容(growfs)。
- ⚠️ 不支持在线缩容(只能新建再迁移数据)。
延迟分配 (Delayed Allocation)
- 数据写入延迟分配,减少碎片,提升性能。
一致性保障
- 元数据日志保证一致性。
- 数据默认不记录日志(比 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 | umount /data |
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) | ❌ |