赞
踩
[当前环境]:
VM EXSI: v 7.0.3
GPGPU: NVIDIA Tesla K80
VMware ESXI
在硬件管理中开启显卡的直通模式后,并将该设备添加到虚拟机新的 PCI
设备,保存后发现无法开启虚拟机,显示如下错误 Power On VM
。当在虚拟机去掉该 PCI
设备后又可以重新开启,因此定位到问题是添加直通显卡后导致无法开机。
首先,通过 SSH
连接到 VM ESXI
的终端上。
使用 vim-cmd vmsvc/getallvms
查看当前存在的所有虚拟机。笔者当前只给 01-Ubuntu18.04
添加了直通 PCI
设备目前无法开机,本文将以此为例来说明解决问题。可以看到此处该问题虚拟机的 Vmid
为 4
(下文将会用到)。
[root@imaginemiracle:~] vim-cmd vmsvc/getallvms
Vmid Name File Guest OS Version Annotation
13 02-Ubuntu20.04 [HDD-1T-01] Linux_sys/02-Ubuntu20.04/02-Ubuntu20.04/02-Ubuntu20.04.vmx ubuntu64Guest vmx-19
15 03-Ubuntu20.04 [HDD-1T-02] Linux_sys/03-Ubuntu20.04/03-Ubuntu20.04/03-Ubuntu20.04.vmx ubuntu64Guest vmx-19
17 04-Ubuntu20.04 [HDD-1T-02] Linux_sys/04-Ubuntu20.04/04-Ubuntu20.04/04-Ubuntu20.04.vmx ubuntu64Guest vmx-19
4 01-Ubuntu18.04 [HDD-1T-01] Linux_sys/01-Ubuntu18.04/01-Ubuntu18.04/01-Ubuntu18.04.vmx ubuntu64Guest vmx-19
使用 vim-cmd vmsvc/power.on <vmid>
命令开启虚拟机。可以看到目前的虚拟机是无法开机的,给出的出错信息如下,“Module 'DevicePowerOn' power on failed.”
。
[root@imaginemiracle:~] vim-cmd vmsvc/power.on 4
Powering on VM:
Power on failed: (vim.fault.GenericVmConfigFault) {
faultCause = (vmodl.MethodFault) null,
faultMessage = (vmodl.LocalizableMessage) [
(vmodl.LocalizableMessage) {
key = "msg.moduletable.powerOnFailed",
arg = (vmodl.KeyAnyValue) [
(vmodl.KeyAnyValue) {
key = "1",
value = "DevicePowerOn"
}
],
message = "Module 'DevicePowerOn' power on failed. "
},
(vmodl.LocalizableMessage) {
key = "msg.vmx.poweron.failed",
arg = <unset>,
message = "Failed to start the virtual machine."
}
],
reason = "Module 'DevicePowerOn' power on failed. "
msg = "Module 'DevicePowerOn' power on failed. "
}
通过 vim-cmd
来控制虚拟机电源状态。
vim-cmd vmsvc/getallvms
(获取所有虚拟机的 vmid
信息)
# vim-cmd vmsvc/power.off <vmid>
vim-cmd vmsvc/power.off 4
# vim-cmd vmsvc/power.on <vmid>
vim-cmd vmsvc/power.on 4
# vim-cmd vmsvc/power.reset <vmid>
vim-cmd vmsvc/power.reset 4
# vim-cmd vmsvc/power.getstate <vmid>
vim-cmd vmsvc/power.getstate 3
打开当前开机失败的虚拟机文件(根据安装时的路径查找或者直接使用 find
命令查找,格式为 *.vmx
)
[root@imaginemiracle:/vmfs/volumes/6286091a-4cc7c2b8-2515-0cc47a82c5e6/Linux_sys/01-Ubuntu18.04/01-Ubuntu18.04] ls
01-Ubuntu18.04-flat.vmdk vmware-12.log
01-Ubuntu18.04.nvram vmware-13.log
01-Ubuntu18.04.vmdk vmware-14.log
01-Ubuntu18.04.vmsd vmware-15.log
01-Ubuntu18.04.vmx vmware-16.log
01-Ubuntu18.04.vmxf vmware.log
vmware-11.log vmx-01-Ubuntu18.04-0d53beca3b2dc6e03fad42a5107bafe59ea51412-1.vswp
find
命令可根据虚拟机名在根目录下查找,这里给出使用示例。
# find <需要查找的目标目录> <参数(查找依据类型)> <参数(查找依据)>
[root@imaginemiracle:~] find / -name "01-Ubuntu18.04.vmx"
/vmfs/volumes/6286091a-4cc7c2b8-2515-0cc47a82c5e6/Linux_sys/01-Ubuntu18.04/01-Ubuntu18.04/01-Ubuntu18.04.vmx
打开 01-Ubuntu18.04.vmx
文件搜索关键字pciPassthru
,在后面补充两行如下内容即可。
pciPassthru.use64bitMMIO="TRUE"
pciPassthru.64bitMMIOSizeGB=64
保存后即可重新打开该虚拟机。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。