一、业务背景项目是边端的IOT物联网项目由于历史原因项目当时采用的是Vmware Workstation软件在软件上部署一个Linux系统即CentOs宿主机是Window系统项目正常运行了两年多一天项目企业微信告警服务中断上去看进入服务器看到XFS文件系统检测到严重的数据损坏为防止数据进一步破坏系统进入了紧急模式二、系统报错日志报错日志XFS (dm-0): Internal error XFS_WANT_CORRUPTED_GOTO at line 1700 of file fs/xfs/libxfs/xfs_alloc.c. XFS (dm-0): Internal error xfs_trans_cancel at line 993 of file fs/xfs/xfs_trans.c. XFS (dm-0): Corruption of in-memory data detected. Shutting down filesystem XFS (dm-0): Please umount the filesystem and rectify the problem(s) XFS (dm-0): Failed to recover intents日志解析dm-0这通常是 LVM 逻辑卷/ 根分区 的设备名。Corruption of in-memory data detectedXFS 文件系统在内存中发现了数据损坏为了避免扩大损坏强制卸载 / 停止了文件系统。Failed to recover intentsXFS 的日志 / 事务恢复失败无法正常挂载文件系统。系统提示Please umount the filesystem and rectify the problem(s)意思是 “请卸载文件系统并修复问题”。三、问题原因1、意外断电强制关机XFS日志事务没写完导致元数据损坏。2、磁盘硬件故障坏道、磁盘控制器问题RAID异常。3、内存故障内存不稳定导致文件系统元数据写入错误。4、内核驱动 Bug老版本 CentOS 内核对某些硬件虚拟化平台的兼容性问题因为是虚拟机所以硬件的问题基本都排除了;在虚拟机里出现 XFS 报错硬件本身出问题的概率很低更常见的是这些1、虚拟机意外断电/快照异常比如宿主机崩溃、强制关闭虚拟机、快照创建/回滚失败导致虚拟磁盘vmdk/qcow2里的 XFS 文件系统损坏。2、虚拟磁盘空间不足磁盘写满导致 XFS 事务日志无法完成直接损坏元数据。3、虚拟化平台兼容性问题比如 KVM 的旧版本 QEMU、VMware 特定硬件版本和 CentOS 的内核 / XFS 驱动有兼容性 bug。4、宿主机存储底层问题宿主机的磁盘 IO 卡顿、存储阵列故障导致虚拟机磁盘写入中断。##四、问题修复1、创建当前虚拟机的快照避免修复失败Vmware Workstation - 虚拟机 - 快照 - 拍摄快照点击保存即可。2、使用系统镜像进入救援模式2.1 准备和虚拟机里面一样版本的CentOS 镜像文件因为我的系统是CentOS-7-x86_64-DVD-2009.iso这个版本的所以我就下的这个版本因为CentOS官网没有维护这个镜像了所以从其他地方下载了这个版本截至2026-04-29这个地址都是可以下载的华为镜像仓库https://mirrors.huaweicloud.com/centos/7/isos/x86_64/ 如果是其他版本也可以从这里进行查找下载2.2 这里汇总几个可以下载的镜像仓库阿里云镜像库https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/中国科学技术大学镜像库https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/isos/x86_64/华为镜像库https://mirrors.huaweicloud.com/centos/7/isos/x86_64/2.3 修改虚拟机设置2.3.1 虚拟机关机2.3.2 虚拟机设置把CD/DVD驱动设置挂载为刚才的iso镜像并调整启动顺序让虚拟机从CD/DVD优先启动2.3.3 勾选启动时连接2.3.4 选项-高级-BIOS2.3.5 保存重新开机3、系统进不了救援模式直接按e进入命令行编辑3.1 找到linux16开头的行3.2 把ro改成rw3.3 在行尾加init/sysroot/bin/sh3.4 ctrlX 启动进入紧急shell4、在shell里面进行修复4.1 把文件系统重新挂载为可读写mount -o remount,rw /4.2 直接执行修复命令报错 dm-0根分区就是这个路径xfs_repair /dev/dm-04.3 上一步提示错误并没有提示repair complete执行强制修复xfs_repair -L /dev/dm-04.4 提示done直接重启系统reboot -f5、重新看到重新进入到登录界面系统修复成功6、查看原部署好的docker以及docker容器都已经正常恢复启动系统修复完成。