问题

虚拟机挂载 PCI 设备后,未预留内存,导致无法启动。并且因为 ESXI 6.5 前端问题,导致无法重新编辑配置。解决方案可👉快速跳转

TypeError: Right-hand side of 'instanceof' is not an object
at populatePCIDevices (https://192.168.5.150/ui/scripts/main.js:373:28140)
at https://192.168.5.150/ui/scripts/main.js:374:14725
at https://192.168.5.150/ui/scripts/main.js:428:16782
at https://192.168.5.150/ui/scripts/main.js:326:23176
at m.$digest (https://192.168.5.150/ui/scripts/main.js:326:28780)
at https://192.168.5.150/ui/scripts/main.js:326:30503
at e (https://192.168.5.150/ui/scripts/main.js:325:10071)
at https://192.168.5.150/ui/scripts/main.js:325:11522

如何出现的

前段时间买了张 Nvidia GPU 卡,打算加在服务器上,将在个人电脑上跑图的任务也转到服务器上。通过 PCI 直通的方式,将显卡资源挂载在对应虚拟机上。

在 VMWare ESXI 上编辑挂载 PCI 设备时,没有预留一倍的内存空间,正常成功保存了。

但在启动时,会提示「内存预留不足」

而重新编辑,因为最新版本(2022.x)前端拼写问题,无法再在 UI 界面上操作编辑,报错并强制要求刷新

解决方案

尝试过两种方案,大家按照自身服务器情况进行选择(提前做好备份!)

一、升级 DELL 最新 ESXI 定制版(风险较大)

如果有明确表明支持自己服务器型号的镜像,可以尝试进行下升级。DELL 和 VMWARE 官方镜像不会写出来,且对老机器支持度差,提前备份升级多注意点。

这里顺便记录下,社区中有人一直维护 ESXI 对老机器的可用镜像。感兴趣的同学可以自行判断尝试:https://sysin.org/blog/vmware-esxi-8-u2-oem/

但没有合适镜像或者DELL老服务器就别轻易升级了,服务器会变砖,不用问我怎么知道的。升级方式可以自行搜索,当时气头上,没有做记录,也不想再操作

二、最保险的方案:UI 降级(风险小,操作快)

因为是一个前端问题,将 UI 界面降级到无该问题版本即可

  1. 关闭所有虚拟机,进入 VMWARE 维护模式

  2. 打开 SSH 开关

  3. 使用终端工具连接 VMWARE 命令行。后续操作命令👇

# 1. 删除现在的UI界面
[root@vmware:~] esxcli software vib remove -n esx-ui
Removal Result
Message: Operation finished successfully.
Reboot Required: false
VIBs Installed:
VIBs Removed: VMware_bootbank_esx-ui_1.34.2-16361878
VIBs Skipped:

# 2. 安装上一个可用版本
[root@vmware:~] esxcli software vib install -v https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/esx/vmw/vib20/esx-ui/VMware_bootbank_esx-ui_1.33.7-15803439.vib

这里,也记录一下这个 VIB 文件的内容,万一会再用呢。粘贴进来就崩溃了😂