xfs文件系统损坏恢复命令

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 ,差不多问题就应该修复了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注