xfs_fsr [选项] [设备文件或挂载点]
| 选项 | 说明 |
|---|---|
| -t 秒数 | 运行指定的时间(秒)后停止 |
| -p 秒数 | 每次整理操作后的暂停时间 |
| -m 次数 | 最大移动次数限制 |
| -f 文件 | 从指定文件读取要整理的文件列表 |
| -v | 详细模式,显示更多信息 |
| -d | 调试模式,显示调试信息 |
| -g | 显示进度信息 |
| -n | 只检查不进行实际整理 |
| -V | 显示版本信息 |
| -h | 显示帮助信息 |
# 整理整个XFS文件系统
sudo xfs_fsr /
# 整理指定的挂载点
sudo xfs_fsr /home
# 整理指定的设备
sudo xfs_fsr /dev/sdb1
说明:xfs_fsr会智能选择碎片化最严重的文件进行整理。
# 运行10分钟后停止
sudo xfs_fsr -t 600 /
# 运行1小时后停止
sudo xfs_fsr -t 3600 /home
说明:-t选项适合在维护窗口有限的情况下使用。
# 显示详细信息和进度
sudo xfs_fsr -vg /
# 调试模式(显示更多细节)
sudo xfs_fsr -vd /home
# 创建要整理的文件列表
find /home -name "*.log" -size +100M > /tmp/frag_files.txt
find /var/lib/mysql -name "*.ibd" >> /tmp/frag_files.txt
# 根据文件列表进行整理
sudo xfs_fsr -f /tmp/frag_files.txt
$ sudo xfs_fsr -g /home
xfs_fsr - file system reorganizer for XFS
Version 5.10.0
config file /etc/xfs_fsr.conf
Setting up reorganization.
Initializing /home
/home inode 655367 cnt 1 exts 11 -> 1
/home inode 131073 cnt 1 exts 7 -> 1
/home inode 196609 cnt 1 exts 9 -> 1
/home inode 262145 cnt 1 exts 15 -> 1
...
Reorganization complete.
Moved 4 extents (4 files).
Total extents moved: 42 -> 4 (90.5% reduction)
xfs_fsr的配置文件位于 /etc/xfs_fsr.conf,可以通过配置文件控制整理行为:
# /etc/xfs_fsr.conf 示例
# 默认整理时间(秒)
default_time = 7200
# 每次整理后的暂停时间(毫秒)
pause_time = 100
# 是否检查文件系统使用情况
check_usage = true
# 忽略的文件系统使用率阈值(%)
ignore_usage_threshold = 90
# 每次运行的最大文件移动次数
max_moves = 1000
# 日志级别
log_level = 1
#!/bin/bash
# /usr/local/bin/xfs_defrag.sh
LOG_FILE="/var/log/xfs_fsr.log"
MOUNT_POINT="/home"
echo "=== XFS碎片整理开始: $(date) ===" >> $LOG_FILE
# 运行碎片整理2小时
/usr/sbin/xfs_fsr -t 7200 -g $MOUNT_POINT >> $LOG_FILE 2>&1
echo "=== XFS碎片整理结束: $(date) ===" >> $LOG_FILE
# 编辑cron任务
sudo crontab -e
# 添加以下行,每周日凌晨2点运行
0 2 * * 0 /usr/local/bin/xfs_defrag.sh
-t选项限制运行时间# 测试磁盘读取性能
hdparm -Tt /dev/sdb1
# 测试文件系统性能
iozone -a /home
# 监控系统I/O
iostat -x 1 10
# 检查文件碎片程度
xfs_db -c frag /dev/sdb1
# 查看文件系统统计信息
xfs_estimate /home
# 监控整理效果
grep "Total extents moved" /var/log/xfs_fsr.log
A: 主要区别:
A: XFS的设计具有良好的抗碎片能力。对于大多数应用场景,每月或每季度运行一次xfs_fsr就足够了。
A: 可以使用以下命令检查:
# 检查文件碎片情况
xfs_db -c frag /dev/sdb1
# 监控磁盘性能
iostat -x 1
A: 不会。xfs_fsr会智能选择碎片化最严重的文件进行整理。可以使用-f选项指定要整理的文件列表。