现场1
一次断电, 导致 之前能正常启动的centos 7.7 起不来了
有部分log , 关键信息如下
[ 1.332724 ] XFS ( sda3) : Internal error xfs . . . at line xxx of fs/ xfs/ xfs_trans. c
[ 1.332724 ] XFS ( sda3) : Corruption of in- memory data detected . Shutting down file system
[ 1.332724 ] XFS ( sda3) : Please unmount the filesystem and rectify the problem ( s)
[ 1.332724 ] XFS ( sda3) : Failed to recover intents
Generating "/run/initramfs/rdsosreport.txt"
唉, 不敲了, 看图吧
分析1
上面带 [ ] 的都是linux内核打出来的 , 看来是 没有 mount 上 磁盘文件系统 , 那必定是 磁盘文件系统出问题了
然后告诉我说 错误信息在 一个 . txt 里
然后又告诉我说 进入了 紧急模式 , 那就好办了.
那就先打开 那个txt 看看 , 紧急模式提供一个shell , 有基础的工具可用.
然后我们再瞅瞅现场问题
文件要 从后往前看, 然后再从前往后看.
现场2
mount / dev/ sda3 on / sysroot failed : Structure needs cleaning
sysroot. mount mount process exited , code= exited status= 32
分析2
搜索
很明显, 现场2 的 信息更加全面, 我们拿 现场2 中拿到的信息直接搜索 , 然后 万军从中 取 敌将首级
找到了一个比较靠谱的解决方案.
https:
1. 首先尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作。
2. 检查文件系统
做此步之前确保分区处于umount状态
xfs_check / dev/ sdd ( 盘符) ; echo $?
返回0 表示正常
3. 执行xfs_repair - n,检查文件系统是否损坏,如何损坏会列出将要执行的操作
执行xfs_repair - n,检查文件系统是否损坏,如何损坏会列出将要执行的操作
4. 执行xfs_repair修复文件系统
xfs_repair / dev/ mapper/ rhel- root ( ext系列工具为fsck)
5. 最后方法:损失部分数据的修复方法
根据打印消息,修复失败时:
先执行xfs_repair - L / dev/ mapper/ rhel- root ( 清空日志,会丢失文件) ,再执行xfs_repair / dev/ mapper/ rhel- root,再执行xfs_check / dev/ mapper/ rhel- root 检查文件系统是否修复成功。
说明:- L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。
备注:在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。
检查是否修复成功, 若返回0 则表示修复成功
echo $?
再次挂载/ dev/ mapper/ rhel- root, 若返回0 则表示挂载成功
mount / dev/ mapper/ rhel- root / sysroot; echo $?
exit退出修复模式若能成功进入系统则修复完成
实际解决过程
我们的分区肯定没有 被挂载( mount)
1.
我直接一个命令下去
mount / dev/ sda3 / root
他报错了, 报之前现场中的信息.
2.
然后我们直接 执行
xfs_repair / dev/ sda3
发现返回失败, 吐出了一些 提示信息, 真贴心啊
建议我们 带 - L 选项 , 并说 可能会丢失数据.
3.
然后直接开干 ,
xfs_repair - L / dev/ sda3
跑了一分钟左右, 退出了, 看起来打印正常, 但是我不放心
echo $? 一看, 是个0 , OK , 这个命令已经正确完成了
4.
"xfs_repair /dev/sda3" 提示信息历历在目, 它建议我在 "xfs_repair -L /dev/sda3" 成功后再 mount 一下
5.
好. 重启, 启动成功