必须先卸载xfs分区再运行xfs_repair,否则会失败或加重损坏;需用df -ht或lsblk -f确认挂载状态,umount卸载后执行sudo xfs_repair /dev/sdxy等命令修复。

不能直接在已挂载的XFS文件系统上运行 xfs_repair,必须先卸载(umount),否则会失败甚至加重损坏。
确认分区状态并卸载
先用 df -hT 或 lsblk -f 查看目标分区是否已挂载、文件系统类型是否为 xfs。若已挂载,需先安全卸载:
- 执行
sudo umount /dev/sdXY(如/dev/sdb1) - 若提示 “device is busy”,可用
lsof +D /mount/point或fuser -vm /mount/point查找并终止占用进程 - 无法卸载时,可尝试只读重新挂载再卸载:
sudo mount -o remount,ro /dev/sdXY /mnt,再umount
基础修复命令与常用选项
卸载后即可运行修复。最常用组合是:
-
sudo xfs_repair /dev/sdXY—— 默认只读检查,不写入;无输出即表示无错误 -
sudo xfs_repair -L /dev/sdXY—— 强制清空日志(危险!仅在日志损坏且无重要未提交数据时使用) -
sudo xfs_repair -v /dev/sdXY—— 显示详细过程,便于诊断 -
sudo xfs_repair -n /dev/sdXY—— 模拟运行(no-op),仅报告问题不修复
注意:-L 会丢弃日志中未写入磁盘的元数据变更,相当于跳过崩溃恢复步骤,慎用。
处理常见报错
遇到典型错误时可按以下方式应对:
-
AG 0: SB not found或cannot read superblock:可能超级块损坏,尝试指定备份超级块:xfs_repair -o bbs=65536 /dev/sdXY(常见备份位置有 65536、262144、1048576 等) -
cannot initialize XFS library:缺少 xfsprogs 工具包,Ubuntu/Debian 执行sudo apt install xfsprogs,CentOS/RHEL 用sudo yum install xfsprogs - 修复中途卡住或反复报同一 AG 错误:可能是底层存储故障(坏道、SSD掉盘),建议先用
smartctl -a /dev/sdX检查硬盘健康状况
修复后验证与挂载
修复成功后不要立即写入数据,应先验证:
- 再次运行
xfs_repair -n /dev/sdXY,确认无错误报告 - 尝试只读挂载:
sudo mount -o ro /dev/sdXY /mnt,检查能否列出目录、读取关键文件 - 若一切正常,再以读写方式挂载:
sudo mount /dev/sdXY /mnt - 建议随后运行
xfs_info /mnt查看文件系统参数是否完整,如data = bsize=4096 blocks=...
修复不是万能的。若元数据严重损坏或物理介质异常,部分文件或目录可能无法恢复,重要数据务必提前备份。











