一、问题描述
某次桌面发布交付验证过程中,一线人员反映,使用 nvidia 显卡的虚拟机,虚拟机桌面开机时,无法完成,报错:
“Could not initialize plugin ‘/usr/lib64/vmware/plugin/libnvidia-vgx.so’ for vGPU “profile_name””
二、分析处理
1、对故障vm执行gpu网卡自动检测配置,开机测试,未果;
2、对故障vm执行迁移到其他主机,开机测试,未果;
3、检查故障vm所在主机事件,发现某主机集中出现:
4、检查故障主机gpu显示模块,发现:
5、检查GPU集群其他主机,均正常;但其他主机也有几条同样的告警。
6、将故障vm迁移到其他主机,开机测试,正常开机。
7、将故障vm所在主机系统重启,验证未果。尝试vc导出主机日志分析。
三、其他类似错误
错误示例,报出:
The amount of graphics resource available in the parent resource pool is insufficient for the operation.
An error was received from the ESX host while powering on VM <VM_name>
Failed to start the virtual machine.
Module ‘DevicePowerOn’ power on failed.
Could not initialize plugin ‘/usr/lib64/vmware/plugin/libnvidia-vgx.so’ for vGPU ‘Profile_name’.
No graphics device is available for vGPU ‘Profile_name’.
可能原因:
当默认 GPU 模式为 Shared (vSGA) 而不是 Shared Direct (vGPU) 时,会出现此问题。
处理:
使用 vCenter Server 将 GPU 模式从 Shared (vSGA) 更改为 Shared Direct (vGPU),但过程出现报错:
因为修改后,需要/etc/init.d/xorg restart重启生效。可尝试ssh登录esxi主机尝试。这可能是由提供给主机的GPU显卡硬件引起的。执行以下确认gpu 模块:
grep -A 10 -i “Loading module nvidia” /var/log/vmkernel.log //正常可看到nvidia loaded successfully
esxcli hardware pci list –c 0x0300 –m 0xf //如果 Module Name 与 nvidia 不同,则显卡可能无法在 ESXi 主机上正确显示,从而导致 Xorg 服务无法启动。
通过运行以下命令删除 NVIDIA VMkernel 驱动程序:
vmkload_mod -u nvidia
通过运行以下命令识别 NVIDIA VIB 名称:
esxcli software vib list | grep NVIDIA
通过运行以下命令删除 VIB:
esxcli software vib remove -n nameofNVIDIAVIB //之后安装新的 NVIDIA GPU VIB
安装 NVIDIA GPU VIB:
1)https://nvid.nvidia.com/
For assistance logging in, see https://nvid.nvidia.com/NvidiaUtilities/#/needHelp
2)主机置于维护模式
3)esxcli software vib install -v /path_to_vib/nvidia_vib
4) Configure—> System---->Services---->X.Org Server ------>Edit Startup Policy.
确保 X.Org 服务器正在运行并设置为随主机启动和停止。打开虚拟机电源,确保启用远程桌面以允许远程连接到此来宾操作系统。加载 Nvidia 来宾操作系统驱动程序后,vSphere 控制台将不再可用,需要备用路径来管理机器。