VMware虚拟机磁盘故障排查:从“非虚拟磁盘”报错到紧急模式修复全记录

张开发
2026/4/24 6:20:25 15 分钟阅读

分享文章

VMware虚拟机磁盘故障排查:从“非虚拟磁盘”报错到紧急模式修复全记录
1. 故障现象一场突如其来的虚拟机崩溃那天下午我正在测试环境部署新版本应用突然接到同事电话说生产环境的虚拟机挂了。这台运行着重要数据库的VMware ESXi主机因为机房电力波动被强制重启结果虚拟机启动时直接报错指定的文件不是虚拟磁盘。更糟的是当我们尝试用快照还原时发现快照链也损坏了虚拟机目录下还莫名出现了许多以.lck和.vmdk结尾的临时文件。这种情况我见过不少通常发生在非正常关机导致虚拟磁盘描述符文件.vmdk损坏时。但这次有点特殊——不仅基础磁盘报错连快照恢复都失效了。通过vSphere Client查看虚拟机配置时能看到三块磁盘系统盘sda、数据盘sdb和备份盘sdc。日志里反复出现I/O error提示指向的正是第三块磁盘。2. 故障诊断抽丝剥茧找元凶2.1 初步排查磁盘健康检查首先用SSH连接到ESXi主机检查磁盘物理状态esxcli storage core device list | grep -i error输出显示sdc磁盘存在大量CRC校验错误这通常是硬件故障的前兆。接着用vmkfstools检查虚拟磁盘完整性vmkfstools -v /vmfs/volumes/datastore1/DB_Server/DB_Server_3.vmdk果然返回Not a valid virtual disk错误证实了GUI界面的报错。2.2 快照分析为什么还原失败使用vmware-vdiskmanager检查快照链vmware-vdiskmanager -R /vmfs/volumes/datastore1/DB_Server/DB_Server.vmdk发现快照元数据文件中存在断裂的父子关系。这是因为强制断电时ESXi正在合并快照磁盘增量文件导致磁盘描述符.vmdk与数据文件.flat.vmdk不一致。3. 紧急修复分步抢救方案3.1 关键操作隔离故障磁盘在vSphere界面右键虚拟机→编辑设置直接移除sdc磁盘注意不要选择从磁盘删除。此时启动虚拟机虽然不再报磁盘错误但系统却进入了emergency mode紧急模式。这是因为被移除的磁盘在/etc/fstab中配置了自动挂载系统启动时找不到设备就会触发保护机制。3.2 紧急模式下的操作技巧通过控制台登录紧急模式后需要先挂载根分区为可读写mount -o remount,rw /然后编辑fstab文件vi /etc/fstab找到类似这样的行/dev/sdc /data02 xfs defaults 0 3在行首添加#注释掉或者更稳妥的做法是改用UUID标识通过blkid命令获取UUID5e3a7bb8-d4a1-4a2b-9c6b-1a2c3d4e5f6g /data02 xfs defaults 0 33.3 深度修复重建虚拟磁盘如果数据非常重要可以尝试重建磁盘描述符文件。首先备份原文件cp DB_Server_3.vmdk DB_Server_3.vmdk.bak然后新建描述符文件注意根据实际磁盘大小修改capacity参数echo version1\nencoding\UTF-8\\nCIDfffffffe\nparentCIDffffffff\ncreateType\vmfs\\nRW 104857600 VMFS \DB_Server_3-flat.vmdk\ DB_Server_3.vmdk4. 防患未然最佳实践指南4.1 日常维护建议定期检查磁盘健康设置ESXi的SMART监控esxcli storage core device smart get -d naa.xxxxxxxx快照管理原则单个虚拟机快照不超过3个快照留存时间不超过72小时执行快照删除操作前先确认存储空间4.2 高可用配置方案对于关键业务虚拟机建议配置vSphere HA和vMotion使用RDMs裸设备映射替代虚拟磁盘在存储层面配置RAID 10热备盘设置多路径I/O策略为Round Robin4.3 故障恢复演练建立恢复预案时应包括虚拟磁盘文件备份频率建议每日增量每周全量关键配置文件备份/etc/fstab、网络配置等制作可启动的ESXi救援ISO镜像那次事故后我们给所有重要虚拟机都加上了存储vMotion的监控告警。现在只要检测到磁盘延迟超过20ms或错误计数增加系统就会自动触发迁移流程。虚拟化环境最怕的就是这种连锁反应式故障有时候一个磁盘损坏能带崩整个集群。后来我们通过配置Storage DRS的保持虚拟机磁盘在一起策略有效避免了类似问题。

更多文章