XFS 文件系统碎片整理

磁盘碎片

XFS 是一种高性能的文件系统, 广泛应用于 Linux 服务器和存储设备中。尽管 XFS 采用了延迟写入、分配组 (AG) 等技术来降低文件碎片的产生。虽然 XFS 文件系统在设计时引入了减少碎片化的机制, 但长时间运行且文件操作频繁时, 碎片化仍然不可避免, 影响读写性能。

很多人认为 XFS 无需做碎片整理, 这是误解。对于文件操作频繁的服务器来说, 碎片整理是提升 XFS 文件系统性能的必要手段。特别是使用多年的服务器, 若未进行过碎片整理, 可能会导致文件访问速度下降、磁盘操作延迟增加等问题。

软件包

xfsdump      - Administrative utilities for the XFS filesystem
xfslibs-dev  - XFS filesystem-specific static libraries and headers
xfsprogs     - Utilities for managing the XFS filesystem

文件系统碎片检查

在对 XFS 文件系统进行碎片整理前, 首先需要查看文件系统的碎片率。可以通过以下命令来检查

# 查看 /dev/sdc1 的碎片情况
# 如果碎片率 (fragmentation factor) 超过 50%, 建议进行碎片整理
xfs_db -c frag -r /dev/sdc1
actual 93133, ideal 8251, fragmentation factor 91.14%

# 查看 /dev/sdb1 的碎片情况
# 碎片率较低, 无需进行碎片整理
xfs_db -c frag -r /dev/sdb1
actual 905607, ideal 900507, fragmentation factor 0.56%

通过交互式命令检查文件碎片

xfs_db -r /dev/sdd1

xfs_db> frag
actual 117578, ideal 116929, fragmentation factor 0.55%

查看特定文件的块映射情况

xfs_bmap -v case19.dat

case19.dat:
EXT: FILE-OFFSET       BLOCK-RANGE            AG AG-OFFSET               TOTAL
0: [0..9551]:        592061576..592071127    1 (103696496..103706047)   9552
1: [9552..86039]:    599312816..599389303    1 (110947736..111024223)  76488
2: [86040..170399]:  599655400..599739759    1 (111290320..111374679)  84360
3: [170400..256799]: 599751632..599838031    1 (111386552..111472951)  86400
4: [256800..340079]: 1185490752..1185574031  2 (208760592..208843871)  83280
5: [340080..592703]: 1185577976..1185830599  2 (208847816..209100439) 252624

文件系统碎片整理

使用 xfs_fsr 命令可以对 XFS 文件系统进行碎片整理。需要注意的是, 该命令不属于 xfsprogs 包, 而是在 xfsdump 包中。因此, 使用前需先安装 xfsdump

yum install xfsdump -y

然后使用 xfs_fsr 进行碎片整理

整理 /dev/sdc1 的碎片

该操作将尝试将分散的文件块重新组合, 从而减少文件系统中的碎片, 提高文件读写性能

xfs_fsr /dev/sdc1

碎片整理后的性能提升实例

Wow! Thanks. That’l teach me to use a non-default tech without researching it.

Over the years, my MythTV box had gotten inexplicably slow with lots of disk access for many operations like starting playback of a recorded video. With the advice here, I measured 98.6% fragmentation. A few sample files I checked that were 1-6GB captured MPEG-2 videos were stored on over 30,000 extents!

After 2 nights of de-fragmenting, I’m down to 17% fragmented and startup time of playing a video is noticeably faster with less hard drive activity.

根据某位用户的经验分享, 长期使用的 XFS 文件系统可能会出现严重的碎片化现象。经过 xfs_fsr 整理后, 该用户的磁盘访问性能有了显著提升

  • 原始碎片率: 98.6%
  • 整理后碎片率: 17%
  • 优化效果: 视频文件的启动时间缩短, 硬盘活动减少, 文件读写速度明显提升。

常见 XFS 管理命令

以下为 XFS 文件系统管理的常用命令, 可用于检查、修复、优化 XFS 文件系统

xfs_admin        调整 XFS 文件系统的各种参数
xfs_copy         将 XFS 文件系统的内容并行拷贝到一个或多个目标系统
xfs_db           调试或检测 XFS 文件系统 (例如查看碎片情况)
xfs_check        检测 XFS 文件系统的完整性
xfs_repair       修复受损的 XFS 文件系统
xfs_fsr          整理 XFS 文件系统碎片
xfs_quota        管理 XFS 文件系统的磁盘配额
xfs_metadump     将 XFS 文件系统的元数据 (metadata) 拷贝到文件中
xfs_mdrestore    从文件中恢复 XFS 文件系统的元数据
xfs_growfs       扩展 XFS 文件系统大小 (仅支持扩展)
xfs_info         查看文件系统信息

原文

Use xfs_fsr to keep your XFS filesystem optimal 文章备份
XFS文件系统碎片整理
http://blog.sina.com.cn/s/blog_b87700f50102wpug.html

最后更新于 2018-09-10
使用 Hugo 构建
主题 StackJimmy 设计