ESXi shell 下强制关闭或重启虚拟机

发布时间:2024-05-09浏览量:0

背景:

如果esxi下面某一台vm死机了,并且esxi的控制台卡死不能用,为了不影响同一个esx下其他的vm正常使用,那么我们只能用命令行来关闭或重启此vm,保证一定得安全性和效率。

登陆esxi shell的方法:

1.打开ssh服务,然后通过ssh上去(一般默认是关闭的)

2.通过控制口,打开主机界面,然后按Alt+F1 输入密码也可以进去。

关闭或重启vm的四种方法:

1.通过vim-cmd命令

vim-cmd vmsvc/getallvms (获取所有虚拟机的vmid信息)

[root@vmware02:~] vim-cmd vmsvc/getallvms
Vmid          Name                     le                                Guest OS         Version           Annotation           
14     Vcsa6.7_172.16.1.30   [Nas100_10T] Vcsa6.7_172.16.1.30.vmx   other3xLinux64Guest   vmx-13    VMware vCenter Server Appliance

关闭虚拟机:

vim-cmd vmsvc/power.off 14

打开虚拟机:

vim-cmd vmsvc/power.on 14

重启虚拟机:

vim-cmd vmsvc/power.reset 14

获取虚拟机的当前状态:

[root@vmware02:~] vim-cmd vmsvc/power.getstate 14
Retrieved runtime info
Powered on

2.使用esxcli命令

esxcli vm process list (获取正在运行的虚拟机的信息)

[root@vmware02:~] esxcli vm process list 
Vcsa6.7_172.16.1.30
   World ID: 2100087
   Process ID: 0
   VMX Cartel ID: 2100086
   UUID: 56 4d 51 8b 58 26 1e bc-d3 bf be 23 74 75 9d 4e
   Display Name: Vcsa6.7_172.16.1.30
   Config File: /vmfs/volumes/616fce75-05e03f8f-4b11-90e2ba8a10d0/Vcsa6.7_172.16.1.30/Vcsa6.7_172.16.1.30.vmx

关闭虚拟机: 

vm process kill --type=hard --world-id=2100087

type选项有三种关闭虚拟机的模式:soft程度最低,hard为立即执行,force为强制模式。

查看虚拟机有没有被关闭:

esxcli vm process list (如果没有在列表里面的则表示已经关闭了)

3.在esxi上面发送信号来关闭vm

说明:主要是虚拟机能够在命令行下停止相关的进程从而关闭

警告:这个操作对esxi主机有潜在危险,如果你不能正确辨别进程的ID,而误杀了其他的进程,就会导致不可预期的后果。

3.1要知道esxi下面有没有虚拟机在运行可以使用下面的命令:

ps | grep vmx(3列分别是pid,父进程,服务名)

2100086  2100086  vmx                                

2100094  2100086  vmx-vthread-210                    

2100095  2100086  vmx-filtPoll:Vcsa6.7_172.16.1.30   

2100096  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100097  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100098  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100099  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100100  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100101  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100102  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100103  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100104  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100105  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100106  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100107  2100086  vmx-vthread-210:Vcsa6.7_172.16.1.30

2100108  2100086  vmx-mks:Vcsa6.7_172.16.1.30        

2100109  2100086  vmx-svga:Vcsa6.7_172.16.1.30       

2100110  2100086  vmx-vcpu-0:Vcsa6.7_172.16.1.30     

2100113  2100086  vmx-vcpu-1:Vcsa6.7_172.16.1.30     

2100114  2100086  vmx-vcpu-2:Vcsa6.7_172.16.1.30     

2100115  2100086  vmx-vcpu-3:Vcsa6.7_172.16.1.30     

3.2从上面可以看出我的Vcsa6.7这台虚拟机的父进程是2100086,那么我只要把它kill掉就ok了 。即:

 终止虚拟机的父进程: kill 2100086

 强制终止:kill -9 2100086

3.3用上面的命令进行检测,应该是ok了。