故障背景:
由于存储发生故障,存储恢复时,esxi上的虚拟机都时只读模式,一般情况,重启下虚拟机就能恢复正常,
当然也会遇到个例,例如系统启动报错,着很大的原因时磁盘有坏块,我们修复下就好了,而我遇到了一个极端的状况,虚拟机在控制台上无法做任何操作了,从web 上查看所有的操作都是灰色的。
故障原因:
在存储故障期间,人为操作发出了很多状态改变事件(客户自己通过API),当然故障期间关机操作是失败的,最后导致虚拟机的状态混乱,无法操作
解决办法:
当出现无法操作时候,控制台、包括API都无法使用了,我们需要使用vmware底层命令来设置虚拟机的状态
以下命令适合5.5以上版本
①确认虚拟机运行在哪个esxi主机上,使用SSH登陆到该主机(这个应该是esxi运维最基本的操作了,不会自行百度)
②通过命令找到虚拟机运行的worldID(和进程ID相似,一台虚拟机有一个唯一的ID)
~ # esxcli vm process list
Centos7
World ID: 35511
Process ID: 0
VMX Cartel ID: 35508
UUID: 56 4d da c9 eb 9d 10 ab-b0 3e 95 bd 8f 19 e0 29
Display Name: Centos7
Config File: /vmfs/volumes/5ad9bf80-b7d925e0-8c44-000c295222b0/Centos7/Centos7.vmx
执行命令会得到类似以上的很多组结果,首先找到我们的虚拟机(如发现结果中没有,多执行几次命令)
这里有两个地方确认是否是你需要的虚拟机,第一虚拟机的名称,第二配置文件名(以上绿色部分)
找到虚拟机后,我们需要记住虚拟机的World ID号(以上蓝色部分)
③通过命令强制结束掉虚拟机
esxcli vm process kill --type= [soft,hard,force] --world-id= WorldNumber
esxcli vm process kill -t [ soft,hard,force] -w WorldNumber
以上两条命令都是可以的,例如我们要结束上面的虚拟机,命令如下
esxcli vm process kill --type=force --world-id=35511
esxcli vm process kill -t force -w 35511
-t,--type 执行类型
soft: 执行正常关机,调用vmearetool执行关机
hard: 执行立即关机
force:强制断电关机
-w,--world-id
这里指定虚拟机的World ID号了
这样虚拟机就可以在控制台上进行操作了,问题处理完毕
以下是官方的KB说明,还有其他的方式进行虚拟机结束
https://kb.vmware.com/s/article/1014165
文章末尾固定信息
评论