Anolis OS V8.6 因以外断电,服务器无法启动,报的错为不能挂载某个分区。见到有如下错误关键字:
metadata I/O error in "xfs_trans_read_buf_map" at daddr 0x1 len 1 error 117
在XFS文件系统中,这个错误可能意味着存在未解决的事务或日志回放问题,实际上就是我们常说的文件系统损坏了(一种),是断电常见问题之一。(哪怕虚拟机里也能模拟出这种问题。)
修复因断电导致的文件系统损坏
1.目前已经进入了系统的救援模式,只提示输入root的密码。我们输入root密码进入单用户模式 执行 journalctl -xb 看一下出错信息,输入完journalctl -xb后是从第1行开始的,我们可以通过按 Shift + g 组合键到达日志的最后一页(不加Shift,再按英文字母g, 到达首页),然后上下箭头可以滚动上下查看日志。
诸多提示现实 /etc/fstab 没有挂载成功/data目录。cat /etc/fastab 一下看看:

UUID=94ac995b-6740-4b81-bf81-77fd02434bdd 挂载给/data。那么 UUID=94ac995b-6740-4b81-bf81-77fd02434bdd 是 哪个分区呢?我们通过执行blkid命令:

经过对比发现是 /dev/sdb1 挂载给了/data。到此我认为最关键的一步解决了。接下来就是使用xfs自带的修复命令进行修复了。
2.运行xfs_repair:这是XFS文件系统的修复工具,需要root权限运行。
xfs_repair /dev/sdb1 # 立即检测并修复文件系统
#如果你想检查是否有损坏而不立即修复,可以添加-n选项来执行只读检查
xfs_repair -n /dev/sdb1 # 看帮助说-n 是不执行任何操作,只是做检查
3. 处理日志,xfs_repair如何还提示日志有问题,就需要清除日志。增加 -L 选项,清除出错的待同步的日志。这是一个破坏性的操作,会丢弃自上次同步以来的所有未提交更改。

这种情况就是提示日志未清理,我们执行:
xfs_repair -L /dev/sdb1
#然后再执行修复
xfs_repair /dev/sdb1
4. 到此可以重启系统了,reboot ,差不多问题就应该修复了。