VMware vSphere 8 配置 NVIDIA vGPU 教程:Tesla V100 SXM2/PCIe 与 Dell C4140/R730 实战

本文记录在 VMware vSphere 8 环境中部署 NVIDIA vGPU 的完整过程,目标显卡为 NVIDIA Tesla V100,同时覆盖 SXM2PCIe 两种形态,服务器主要为 Dell EMC PowerEdge C4140,并补充 Dell PowerEdge R730 的非官方实验性配置方案。

本文将从硬件兼容性、BIOS、ESXi 主机驱动、vCenter 图形模式、vGPU Profile、Windows/Linux 客户机驱动、NVIDIA 正版授权、CUDA 验证及常见故障排查等方面展开。

序言

NVIDIA vGPU 并不是简单地把一张显卡直接透传给虚拟机,而是在 ESXi 主机上安装 NVIDIA Virtual GPU Manager,由宿主机驱动把一张物理 GPU 划分为多个逻辑 vGPU,再通过不同的 vGPU Profile 分配给虚拟机。

以一张 16GB 的 Tesla V100 为例,可以按照业务需要划分为:

  • 1 个 16GB vGPU;
  • 2 个 8GB vGPU;
  • 4 个 4GB vGPU;
  • 8 个 2GB vGPU;
  • 16 个 1GB vGPU。

不过,vGPU 只是显存和调度资源的逻辑划分,并不是类似 A100/H100 MIG 的硬件级隔离。Tesla V100 属于 Volta 架构,不支持 MIG,多台虚拟机之间仍然通过时间片共享 GPU 计算资源。

本文参考了以下三篇中文资料,同时结合 NVIDIA、Dell 和 VMware/Broadcom 的现行文档对版本和兼容性进行了修正:

  • 信诺智能:http://www.xinuozhineng.com/ziliao/148.html
  • GitHub:https://github.com/fenghan0430/How-to-use-vGPU
  • 丁乾的博客:https://www.dingqian.net/index.php/archives/9/

旧教程中的界面、驱动版本和授权方式可能已经过时。本文不使用第三方破解授权服务器,仅介绍 NVIDIA Licensing Portal、CLS 或 DLS 正版授权流程。

一、先看结论:两台服务器应该怎么选

1. Dell PowerEdge C4140

C4140 是本文推荐的服务器。

Dell 官方规格显示,C4140 最多可以配置 4 张双宽、单卡最高 300W 的 GPU,并支持以下两种形态:

  • Tesla V100 PCIe 16GB/32GB;
  • Tesla V100 SXM2 16GB/32GB,配合 NVLink 背板。

C4140 本身就是面向 GPU 计算设计的 1U 服务器,供电、散热、PCIe/MMIO 地址空间和 GPU 拓扑均比通用型 R730 更适合部署 vGPU。

目前 Dell 的 vSphere 8 认证服务器列表中包含 C4140,并且 Dell 曾发布 C4140 对应的 ESXi 8.0 Custom ISO 和 Dell Add-on。因此:

C4140 + V100 SXM2/PCIe + ESXi 8 是本文的标准部署路径。

2. Dell PowerEdge R730

R730 可以安装双宽 PCIe GPU,但存在两个必须提前接受的事实:

  1. R730 不能安装 SXM2 模块;
  2. R730 官方只支持到 ESXi 7.0,ESXi 8.0 不属于 Dell 认证配置;
  3. V100 PCIe 在部分 R730 上存在成功使用记录,但不属于稳定、统一的官方认证组合;
  4. R730 的 BIOS、PERC、网卡和 CPU 代际均较老,升级 ESXi 8 后可能出现驱动、MMIO、设备 HCL 或升级基线问题。

因此:

R730 + V100 PCIe + ESXi 8 只能作为 Homelab 或测试环境,不建议用于需要厂商支持的生产环境。

R730 如果追求稳定,建议采用以下方案之一:

  • 保持 ESXi 7.0,使用该平台经过验证的 NVIDIA vGPU 版本;
  • 更换为 C4140、R740/R740xd、R740xa 或更新一代 GPU 服务器;
  • 将 V100 PCIe 直接用于 Linux 裸机计算,而不是强行叠加 ESXi 8 与 vGPU。

3. SXM2 和 PCIe 不能混为一谈

项目 V100 SXM2 V100 PCIe
物理接口 SXM2 模块,安装在专用 GPU 底板 标准 PCIe x16 双宽卡
适用服务器 C4140 对应 SXM2/NVLink 配置 C4140 PCIe 配置、部分通用 GPU 服务器
R730 支持 不支持 可尝试,但不属于本文推荐的官方路径
NVLink 依赖服务器底板拓扑 部分 PCIe 卡可桥接,但服务器必须提供空间与拓扑支持
vGPU Profile 前缀 V100X-* 或 32GB 型号的 V100DX-* V100-* 或 32GB 型号的 V100D-*
更换方式 不能直接插进 PCIe 槽 不能安装到 SXM2 底板

C4140 的 PCIe 版和 SXM2 版不是“换一张卡”这么简单,两者涉及 GPU 底板、线缆、散热器、供电和系统配置差异。除非拥有完整的 Dell 原厂转换部件和服务文档,否则不建议自行转换。

二、vGPU、直通和 vSGA 的区别

在 vSphere 中,GPU 主要有三种使用方式。

1. NVIDIA vGPU

一张物理 GPU 可以创建多个 vGPU Profile,由多台虚拟机共享。

适合:

  • 多用户 CUDA 开发环境;
  • 轻量推理服务;
  • 虚拟工作站;
  • 远程桌面和图形应用;
  • GPU 资源池化。

2. PCI Passthrough / VMDirectPath I/O

整张物理 GPU 独占分配给一台虚拟机。

优点是性能路径更直接、配置相对简单,缺点是无法切分,一张卡只能给一台虚拟机使用。

3. vSGA

由 ESXi 图形栈共享 GPU,主要用于传统图形加速,并不是本文目标。

部署 NVIDIA vGPU 时,需要把主机图形模式切换为:

1
Shared Direct / 直接共享

而不是默认的 Shared/vSGA 模式。

flowchart LR
    A[物理 Tesla V100] --> B[NVIDIA vGPU Manager]
    B --> C1[V100X-16Q<br/>16GB]
    B --> C2[V100X-8Q<br/>8GB]
    B --> C3[V100X-4Q<br/>4GB]
    C1 --> D1[虚拟机 1]
    C2 --> D2[虚拟机 2]
    C2 --> D3[虚拟机 3]
    C3 --> D4[虚拟机 4]

三、版本选择

1. 推荐版本

以 2026 年 7 月为时间点,Tesla V100 的最后一个 NVIDIA vGPU 大版本分支为 19.x

建议使用:

组件 推荐版本
ESXi ESXi 8.0 Update 3 P06 或更新的 8.0 U3 补丁
vCenter Server 与 ESXi 8.0 U3 匹配的 vCenter 8.0 U3
NVIDIA vGPU 19.5 或同一 19.x 分支中的最新维护版本
Windows 客户机 Windows Server 2022 64 位
Linux 客户机 Ubuntu Server 22.04 LTS 或 24.04 LTS 64 位

NVIDIA vGPU 19.5 对应的示例驱动版本如下:

组件 19.5 示例版本
ESXi Virtual GPU Manager 580.159.01
Windows Guest Driver 582.53
Linux Guest Driver 580.159.03

驱动版本会随维护版本变化,实际安装时以 NVIDIA 下载包内的 Release Notes 为准,不要只凭文件名猜版本。

2. 为什么不建议照抄旧教程中的 15.x/16.x

旧教程中常见以下文件:

1
2
NVD-VGPU-800_525.85.07-1OEM...
nvd-gpu-mgmt-daemon_525.85.07...

这些属于较早的 vGPU 15.x 驱动。它们曾经支持 ESXi 8,但不代表适配当前 ESXi 8.0 U3 补丁。

正确做法是先确定:

1
2
3
4
5
ESXi 具体 Build

选择支持该 Build 的 vGPU 分支

下载该分支的 ESXi Host Driver 和 Guest Driver

3. 主机驱动和客户机驱动必须兼容

vGPU 的宿主机驱动叫:

1
NVIDIA Virtual GPU Manager

虚拟机中的驱动叫:

1
NVIDIA vGPU Guest Driver

二者不兼容时,虚拟机可能只能以标准 VGA 模式启动,并在日志中出现:

1
2
Incompatible Guest/Host drivers
Guest VGX version is older than the minimum version supported by the Host

最佳实践是:

  • Host 和 Guest 使用同一个 vGPU 大版本;
  • 首次部署尽量使用同一个小版本;
  • 不要在客户机中安装普通 GeForce 驱动或任意 Data Center Driver 替代 vGPU Guest Driver。

四、部署前的硬件检查

1. C4140 检查项

  • 确认服务器是 PCIe GPU 配置还是 SXM2/NVLink 配置;
  • 确认 4 张 GPU 型号、显存容量一致;
  • 确认原厂散热器、风扇、导风罩和 GPU 底板完整;
  • 更新 iDRAC、Lifecycle Controller、BIOS、CPLD、PERC、NIC 固件;
  • 检查电源是否为原厂 GPU 配置;
  • 通过 iDRAC Hardware Inventory 确认 GPU 被识别;
  • 检查 SEL/Lifecycle Log 中是否有 GPU、PCIe、供电或温度告警。

2. R730 检查项

R730 安装双宽 GPU 至少要满足:

  • 两颗 CPU 均已安装;
  • CPU TDP 不高于 Dell GPU 配置要求,官方指南通常要求不超过 135W;
  • 安装 GPU Enablement Kit;
  • 使用低矮散热器和 GPU 专用导风罩;
  • 双 1100W 电源;
  • 双宽 GPU 最多两张;
  • 第二张双宽 GPU 需要 GPU Optional Riser 3;
  • GPU 必须安装在提供完整 x16 通道的插槽;
  • 使用正确的 Dell GPU 电源线,不能照着普通 PC 的 8Pin 线序硬接;
  • 机房进风温度应控制在 Dell GPU 配置要求以内。

Dell 服务器 GPU 电源线与普通 ATX 显卡线不能只看接口形状。接口能插进去,不代表线序相同,接错可能直接损坏 GPU 或主板。

3. 在 iDRAC 中检查

进入:

1
iDRAC → System → Hardware Inventory → PCI Devices

应当看到 NVIDIA 设备。

也可以在 Lifecycle Log 中检查:

1
2
3
4
GPU power fault
PCIe training error
Unsupported PCIe device
Fatal bus error

如果 iDRAC 和 BIOS 阶段都识别不到 GPU,继续折腾 ESXi 驱动没有意义。此时应先处理硬件、供电、插槽、底板或固件问题。

五、配置服务器 BIOS

重启服务器,按 F2 进入 System Setup。

1. 推荐 BIOS 设置

路径/选项 推荐值 说明
Boot Mode UEFI ESXi 8 和大 MMIO 设备推荐使用 UEFI
System Profile Performance 避免节能策略影响 GPU/CPU 延迟
Intel Virtualization Technology Enabled 开启 VT-x
VT for Direct I/O / VT-d Enabled 开启 IOMMU
SR-IOV Global Enable Enabled NVIDIA vGPU 官方部署建议开启
Memory Mapped I/O above 4 GB Enabled V100 等大 BAR 设备必须重点检查
Hyper-Threading Enabled NVIDIA 推荐配置
CPU Power Management Maximum Performance 计算节点建议
Slot Disablement Enabled/Auto 确保 GPU 所在插槽没有被禁用

C4140 中还可能看到:

1
Memory Mapped I/O Base

通常保持 Dell 默认值。只有在明确遇到 4 GPU MMIO 地址分配问题,并且 Dell 文档或支持工程师要求时才修改。

2. 不要随意关闭 Embedded Video Controller

服务器板载 Matrox/集成显卡用于 iDRAC 虚拟控制台和本地管理。NVIDIA Tesla V100 是计算卡,不承担服务器启动画面输出。

因此通常保留:

1
Embedded Video Controller = Enabled

关闭它不能让 Tesla V100 变成启动显示卡,反而可能导致远程管理体验变差。

3. 保存并冷重启

修改 MMIO、SR-IOV 或 GPU 硬件后,建议执行一次完整断电重启:

  1. 正常关闭服务器;
  2. 断开两路电源;
  3. 等待约 30 秒;
  4. 重新接通电源并启动。

这样可以清除部分 PCIe 枚举和 BMC 缓存状态。

六、安装 ESXi 8 与接入 vCenter

本文假设已经完成:

  • ESXi 8 安装;
  • 管理网络、DNS、NTP 配置;
  • vCenter Server 8 部署;
  • ESXi 主机加入 vCenter;
  • 创建共享或本地 datastore。

1. C4140

建议使用:

  • Dell Customized ESXi 8 ISO;
  • 或 Broadcom ESXi Base Image 加 Dell Add-on。

安装后检查:

1
2
3
vmware -vl
esxcli software profile get
esxcli hardware pci list | less

2. R730

R730 没有 Dell 官方 ESXi 8 Custom ISO,安装属于非认证路线。

安装前至少检查:

  • PERC 型号是否仍被 ESXi 8 支持;
  • 网卡驱动是否存在;
  • CPU 是否被当前 Build 接受;
  • 启动盘控制器是否在 HCL 中;
  • 是否存在被 ESXi 8 删除的旧版 VIB。

对于 Homelab,可以安装 Broadcom 原版 ESXi 8 后再补充社区或厂商驱动,但必须接受升级后突然失效的风险。

七、下载 NVIDIA vGPU 软件包

登录 NVIDIA Enterprise Licensing Portal 或 NVIDIA Licensing Portal,下载与 ESXi 8 对应的 vGPU 软件包。

解压后通常可以看到类似目录:

1
2
3
4
Guest_Drivers/
Host_Drivers/
Documentation/
Signing_Keys/

Host_Drivers 中常见:

1
2
NVD-VGPU-800_*.zip
nvd-gpu-mgmt-daemon_*.zip

Guest_Drivers 中包括:

1
2
Windows *.exe
Linux *.run / *.deb / *.rpm

注意:

  1. NVD-VGPU 的 ZIP 通常直接交给 esxcli,不要再解压;
  2. 部分版本的 management daemon 外面还有一层 -package.zip,真正安装的是内层、不带 package 的 ZIP;
  3. Host Driver 和 Guest Driver 必须来自兼容的软件包;
  4. 不要从不明网盘下载被修改过的 VIB、离线包或驱动。

八、在 ESXi 8 安装 NVIDIA Virtual GPU Manager

1. 将主机进入维护模式

在 vCenter 中:

1
主机 → 操作 → 进入维护模式

也可以使用 SSH:

1
esxcli system maintenanceMode set --enable true

2. 开启 SSH

进入 ESXi Host Client:

1
主机 → 管理 → 服务 → TSM-SSH → 启动

3. 安装前检查 GPU

通过 SSH 登录 ESXi:

1
lspci | grep -i nvidia

也可以使用:

1
esxcli hardware pci list | grep -B 5 -A 15 -i nvidia

正常情况下应能看到 NVIDIA Corporation 和 Tesla V100 相关设备。

如果 lspci 没有任何输出,应先返回检查:

  • BIOS 的 SR-IOV;
  • VT-d;
  • Above 4G MMIO;
  • GPU 供电;
  • C4140 GPU 底板;
  • R730 GPU Riser;
  • PCIe 插槽是否被禁用。

4. 上传驱动包

建议上传到:

1
/tmp

或者上传到持久化 datastore:

1
/vmfs/volumes/datastore1/nvidia-vgpu/

示例:

1
ls -lh /tmp/*NVD* /tmp/*gpu-mgmt* 2>/dev/null

5. 使用 component apply 安装

ESXi 8 推荐使用:

1
2
esxcli software component apply \
-d /tmp/NVD-VGPU-800_<实际版本>.zip

如果软件包中包含 GPU Management Daemon,再安装:

1
2
esxcli software component apply \
-d /tmp/nvd-gpu-mgmt-daemon_<实际版本>.zip

不要直接复制本文中的占位文件名,必须替换成实际文件名和绝对路径。

旧教程中也常见:

1
2
esxcli software vib install -d /tmp/NVD-VGPU-800_<实际版本>.zip
esxcli software vib install -d /tmp/nvd-gpu-mgmt-daemon_<实际版本>.zip

在 ESXi 8 中优先使用 software component apply。只有在对应 NVIDIA Release Notes 明确要求时才使用其他安装方式。

6. 检查安装结果

1
2
esxcli software component list | grep -i -E 'nvidia|nvd'
esxcli software vib list | grep -i -E 'nvidia|nvd'

检查 GPU 管理服务:

1
/etc/init.d/nvdGpuMgmtDaemon status

不同版本的服务名可能不同,应以驱动包文档和 ls /etc/init.d/ | grep -i nvd 的结果为准。

7. 重启 ESXi

即使安装器提示不需要重启,也建议首次安装后重启:

1
reboot

重启后重新 SSH 登录,执行:

1
nvidia-smi

正常情况下可以看到:

  • GPU 型号;
  • 显存容量;
  • 驱动版本;
  • 温度和功耗;
  • ECC 状态;
  • GPU UUID;
  • 当前进程。

再执行:

1
nvidia-smi -q

8. ECC 是否需要关闭

很多旧教程要求执行:

1
nvidia-smi -e 0

但不应把“关闭 ECC”当作所有 V100 vGPU 环境的固定步骤。

正确策略是:

  1. 先保留当前 ECC 状态;
  2. 查看该 vGPU 分支对 V100 和目标 Profile 的要求;
  3. 只有在 Profile 无法创建、Release Notes 明确要求,或业务确定不需要 ECC 时才关闭;
  4. 修改 ECC 后必须重启主机。

查看 ECC:

1
nvidia-smi -q | grep -A 12 -i ecc

关闭 ECC:

1
2
nvidia-smi -e 0
reboot

重新开启 ECC:

1
2
nvidia-smi -e 1
reboot

对于科研计算、训练任务和长期运行的推理任务,ECC 有实际价值,不建议为了“教程步骤整齐”而无脑关闭。

九、在 vCenter 中切换为直接共享模式

安装驱动并重启后,登录 vCenter。

进入:

1
2
3
4
5
6
主机
→ 配置
→ 硬件
→ 图形
→ 主机图形
→ 编辑

将默认图形类型设置为:

1
Shared Direct / 直接共享

不要选择:

1
Shared / 共享(vSGA)

1. GPU 分配策略

多 GPU 主机通常有两类策略。

Spread / 最佳性能

优先把虚拟机分散到不同物理 GPU,降低同一 GPU 上的资源竞争。

适合:

  • AI 推理;
  • CUDA 开发环境;
  • 希望单虚拟机获得更稳定性能。

Consolidation / GPU 整合

优先填满一张 GPU,再使用下一张 GPU。

适合:

  • 希望保留完整空闲 GPU;
  • 后续可能给大显存虚拟机分配整张卡;
  • 混合不同工作负载。

2. 编辑单张图形设备

进入:

1
主机 → 配置 → 图形 → 图形设备

逐张检查 GPU,确认其工作模式允许 vGPU/Shared Direct。

部分版本需要勾选:

1
Restart X Server / 重启 X 服务器

完成后建议再重启一次 ESXi 主机。

3. 验证图形模式

重新执行:

1
nvidia-smi

在旧版默认 vSGA 模式中,进程列表可能看到 Xorg 占用 GPU。切换 Shared Direct 后,不应再由 ESXi Xorg 以 vSGA 方式占用显卡。

十、选择 Tesla V100 的 vGPU Profile

1. V100 SXM2 16GB

常见 Q 系列 Profile:

Profile 显存 单卡最大 vGPU 数量 建议用途
V100X-16Q 16GB 1 模型训练、重推理、独占计算
V100X-8Q 8GB 2 中型推理、CUDA 开发
V100X-4Q 4GB 4 轻量推理、开发测试
V100X-2Q 2GB 8 图形桌面、轻量任务
V100X-1Q 1GB 16 轻量虚拟桌面,不适合现代大模型

2. V100 PCIe 16GB

Profile 显存 单卡最大 vGPU 数量
V100-16Q 16GB 1
V100-8Q 8GB 2
V100-4Q 4GB 4
V100-2Q 2GB 8
V100-1Q 1GB 16

3. V100 SXM2 32GB

常见前缀为:

1
2
3
4
5
6
V100DX-32Q
V100DX-16Q
V100DX-8Q
V100DX-4Q
V100DX-2Q
V100DX-1Q

4. V100 PCIe 32GB

常见前缀为:

1
2
3
4
5
6
V100D-32Q
V100D-16Q
V100D-8Q
V100D-4Q
V100D-2Q
V100D-1Q

5. AI/CUDA 工作负载怎么选

对于当前 NVIDIA vGPU 19.x 和 VMware vSphere,建议 AI/CUDA 场景使用 Q 系列 Profile,并配置 NVIDIA vWS 许可。

推荐:

工作负载 建议 Profile
单卡训练、PyTorch、TensorFlow 16Q/32Q,尽量整卡显存
中型推理 8Q 或 16Q
轻量推理、Jupyter 开发 4Q 或 8Q
虚拟桌面 1Q/2Q/4Q,按分辨率和应用评估

V100 没有 MIG。即使显存被分成多个 Profile,多个虚拟机仍然可能争用 SM、显存带宽和编码器资源。

6. 同一物理 GPU 上的 Profile 混用

不同 ESXi/vGPU 版本对 mixed-size Profile 的支持不同。

首次部署建议遵循最保守规则:

同一张物理 GPU 上使用相同显存大小、相同系列的 Profile。

例如一张 V100X 16GB 上统一运行两个 V100X-8Q,不要一开始就混合 8Q + 4Q + 2Q

等基础环境稳定后,再根据当前 ESXi 8.0 U3 和 vGPU 19.x Release Notes 验证 mixed-size 模式。

十一、创建并配置 vGPU 虚拟机

1. 创建虚拟机

建议配置:

项目 建议值
Compatibility ESXi 8.0 and later
Firmware EFI
Secure Boot 首次安装建议关闭
Guest OS Windows Server 2022 / Ubuntu 22.04 / Ubuntu 24.04
CPU 根据业务分配,避免严重超分
内存 根据 GPU Profile 和任务分配
VMware Tools 安装

2. 先安装操作系统

首次部署建议先不挂载 vGPU:

  1. 创建普通虚拟机;
  2. 安装操作系统;
  3. 安装 VMware Tools;
  4. 配置网络和 SSH/RDP;
  5. 正常关机;
  6. 再添加 vGPU 设备。

这样可以避免在系统安装阶段遇到黑屏时无法判断是 OS、EFI 还是 vGPU 问题。

3. 锁定全部客户机内存

编辑虚拟机:

1
2
3
VM Options / Virtual Hardware
→ Memory
→ Reserve all guest memory

中文界面通常显示:

1
预留所有客户机内存(全部锁定)

这是 vGPU 虚拟机无法开机时最常见的遗漏项。

4. 添加 vGPU 设备

虚拟机关机后:

1
2
3
4
编辑设置
→ 添加新设备
→ PCI Device / Shared PCI Device
→ NVIDIA GRID vGPU

选择对应 Profile,例如:

1
2
3
4
V100X-16Q
V100X-8Q
V100-16Q
V100-8Q

如果列表中没有任何 vGPU Profile,请不要继续创建虚拟机,先排查宿主机驱动和 Shared Direct 模式。

5. 不要把整卡直通和 vGPU 混淆

如果在 ESXi 中把 GPU 标记为:

1
Passthrough / DirectPath I/O

这张卡会被整卡直通使用,不能同时作为 vGPU 资源池。

部署 vGPU 时,应让 GPU 由 NVIDIA vGPU Manager 管理,而不是先在 PCI Devices 页面切为 Passthrough。

6. 多 vGPU 分配

vSphere 8.0 Update 2 以后,每台虚拟机理论上可分配更多 vGPU 设备,但 V100 是否能进行多 vGPU、是否能使用 NVLink P2P、是否要求整卡 Q Profile,取决于:

  • V100 具体型号;
  • C4140 GPU 拓扑;
  • vGPU Profile;
  • vGPU 版本;
  • ESXi 版本;
  • Linux/Windows 客户机;
  • NVIDIA Release Notes 中的 P2P 限制。

因此,第一阶段先按“一台虚拟机一个 vGPU”完成部署。多卡和 NVLink 放到基础验证完成后单独测试。

十二、Linux 客户机安装 vGPU Guest Driver

以下以 Ubuntu Server 为例。

1. 安装依赖

1
2
3
4
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential gcc g++ make dkms \
linux-headers-$(uname -r)

2. 禁用 Nouveau

创建文件:

1
2
3
4
sudo tee /etc/modprobe.d/blacklist-nouveau.conf >/dev/null <<'CONF'
blacklist nouveau
options nouveau modeset=0
CONF

更新 initramfs:

1
2
sudo update-initramfs -u
sudo reboot

重启后检查:

1
lsmod | grep nouveau

没有输出表示 Nouveau 未加载。

3. 安装 NVIDIA vGPU Guest Driver

将 NVIDIA 软件包中的 Linux Guest Driver 上传到虚拟机。

例如:

1
2
chmod +x NVIDIA-Linux-x86_64-<实际版本>-grid.run
sudo ./NVIDIA-Linux-x86_64-<实际版本>-grid.run

安装过程中注意:

  • 安装的是带 grid/vGPU 标识的 Guest Driver;
  • 不要安装普通 GeForce 驱动;
  • 不要让后续 CUDA 安装程序覆盖该驱动;
  • 内核升级后应确认 DKMS 模块是否重建成功。

安装完成后:

1
sudo reboot

4. 验证

1
nvidia-smi

应看到:

  • Tesla V100 对应的虚拟 Profile;
  • 分配给虚拟机的显存容量;
  • NVIDIA vGPU Guest Driver 版本;
  • 虚拟 GPU UUID。

查看详细信息:

1
nvidia-smi -q

查看 GRID 服务:

1
systemctl status nvidia-gridd

十三、Windows Server 2022 安装 vGPU Guest Driver

1. 将驱动复制到虚拟机

使用 RDP、共享目录或 ISO,把软件包中的 Windows vGPU Guest Driver 复制到 Windows Server 2022。

2. 安装驱动

以管理员身份运行:

1
NVIDIA-vGPU-Windows-Guest-Driver-<版本>.exe

安装完成后重启 Windows。

3. 验证

打开管理员 CMD 或 PowerShell:

1
nvidia-smi

设备管理器中应看到 NVIDIA vGPU 设备,且不能出现黄色感叹号。

查看详细信息:

1
nvidia-smi -q

若设备管理器报 Code 43 或 vGPU 无法初始化,优先检查 Host/Guest Driver 是否兼容。

十四、配置 NVIDIA 正版授权

NVIDIA vGPU 是商业软件。未取得许可证时,虚拟 GPU 可能在启动后短时间内正常工作,随后进入性能降级状态。

推荐使用:

  • NVIDIA Cloud License Service,简称 CLS;
  • NVIDIA Delegated License Service,简称 DLS;
  • NVIDIA Licensing Portal 生成的 Client Configuration Token。

网络上部分教程使用第三方 Docker 镜像模拟授权服务器。此类方案可能违反许可证协议,也可能存在供应链和安全风险,本文不提供该配置。

1. Windows 客户机

从 NVIDIA Licensing Portal 或 DLS 下载 Client Configuration Token,将 .tok 文件复制到:

1
C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken\

管理员 PowerShell 执行:

1
Restart-Service NVDisplay.ContainerLocalSystem

检查授权:

1
nvidia-smi -q | Select-String -Pattern "License" -Context 0,3

2. Linux 客户机

确认配置文件:

1
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf

编辑:

1
sudo vi /etc/nvidia/gridd.conf

vGPU 客户机通常配置:

1
FeatureType=1

把 Token 放入:

1
/etc/nvidia/ClientConfigToken/

设置权限:

1
sudo chmod 744 /etc/nvidia/ClientConfigToken/client_configuration_token_*.tok

重启服务:

1
2
sudo systemctl restart nvidia-gridd
sudo systemctl status nvidia-gridd

查看授权:

1
nvidia-smi -q | grep -A 5 -i license

3. 网络要求

客户机需要能够访问 CLS/DLS,一般需要放通:

1
2
TCP 443
TCP 80

如果经过代理,需要按照 NVIDIA Client Licensing User Guide 配置代理地址和端口。

十五、安装 CUDA Toolkit

nvidia-smi 顶部显示的 CUDA Version 是当前驱动支持的最高 CUDA 运行时版本,不代表系统已经安装 CUDA Toolkit。

检查:

1
2
nvidia-smi
nvcc --version

如果 nvidia-smi 正常、nvcc 不存在,说明驱动已安装但 CUDA Toolkit 尚未安装。

1. 避免覆盖 vGPU 驱动

安装 CUDA 时只安装 Toolkit,不要安装或升级普通 NVIDIA Driver。

Ubuntu 上建议选择类似:

1
sudo apt install cuda-toolkit-12-x

而不是直接安装可能带驱动依赖的元包:

1
sudo apt install cuda

具体版本应根据 vGPU Guest Driver 支持的 CUDA 版本选择。

2. PyTorch 验证

1
2
3
4
5
6
7
8
9
python3 - <<'PY'
import torch
print("torch:", torch.__version__)
print("cuda available:", torch.cuda.is_available())
print("cuda version:", torch.version.cuda)
if torch.cuda.is_available():
print("gpu:", torch.cuda.get_device_name(0))
print("memory GB:", torch.cuda.get_device_properties(0).total_memory / 1024**3)
PY

3. 简单压力测试

1
2
3
4
5
6
7
8
9
python3 - <<'PY'
import torch
assert torch.cuda.is_available()
a = torch.randn((8192, 8192), device="cuda")
b = torch.randn((8192, 8192), device="cuda")
c = a @ b
torch.cuda.synchronize()
print(c.shape, c.mean().item())
PY

同时在客户机执行:

1
watch -n 1 nvidia-smi

在 ESXi 主机执行:

1
nvidia-smi

可以同时观察物理 GPU 与虚拟 GPU 的运行情况。

十六、完整部署流程图

flowchart TD
    A[确认服务器和 GPU 形态] --> B{服务器型号}
    B -->|C4140| C[确认 PCIe 或 SXM2/NVLink 配置]
    B -->|R730| D[仅 PCIe<br/>接受非官方支持风险]
    C --> E[升级 iDRAC/BIOS/固件]
    D --> E
    E --> F[配置 UEFI/VT-d/SR-IOV/Above 4G]
    F --> G[安装 ESXi 8 并加入 vCenter]
    G --> H[lspci 检查 GPU]
    H --> I[进入维护模式]
    I --> J[安装 NVD-VGPU 与 mgmt daemon]
    J --> K[重启并运行 nvidia-smi]
    K --> L[vCenter 切换 Shared Direct]
    L --> M[创建 EFI 虚拟机并锁定全部内存]
    M --> N[添加 V100 vGPU Profile]
    N --> O[安装 Guest Driver]
    O --> P[配置 CLS/DLS 正版授权]
    P --> Q[安装 CUDA Toolkit]
    Q --> R[PyTorch/CUDA 验证]

十七、宿主机验证清单

1. 检查 ESXi 版本

1
vmware -vl

2. 检查 PCIe 设备

1
lspci | grep -i nvidia

3. 检查 NVIDIA 驱动

1
2
esxcli software component list | grep -i -E 'nvidia|nvd'
esxcli software vib list | grep -i -E 'nvidia|nvd'

4. 检查 GPU

1
2
nvidia-smi
nvidia-smi -q

5. 检查 GPU 拓扑

1
nvidia-smi topo -m

C4140 SXM2/NVLink 配置中,拓扑结果应与服务器 GPU 底板设计一致。

6. 检查管理服务

1
/etc/init.d/nvdGpuMgmtDaemon status

7. 检查日志

1
2
tail -n 200 /var/log/vmkernel.log
tail -n 200 /var/log/hostd.log

搜索 NVIDIA:

1
grep -i -E 'nvidia|nvd|vmiop|vgpu' /var/log/vmkernel.log | tail -n 100

虚拟机无法启动时还应检查对应 VM 目录中的:

1
vmware.log

十八、常见故障排查

1. lspci 看不到 NVIDIA GPU

可能原因:

  • GPU 没有正确安装;
  • SXM2 底板或 NVLink 板故障;
  • R730 使用了错误 Riser;
  • GPU 电源线错误;
  • PSU 功率不足;
  • BIOS 禁用了插槽;
  • SR-IOV/Above 4G/VT-d 未开启;
  • GPU 硬件故障。

处理顺序:

1
2
3
4
iDRAC Inventory
→ BIOS PCIe Inventory
→ lspci
→ ESXi 驱动

前三层没识别到,驱动层不会凭空变出一张卡。

2. 安装驱动时报 NoMatchError

常见原因:

  • vGPU 驱动不支持当前 ESXi Build;
  • 下载了 ESXi 7 的 Host Driver;
  • 下载了错误的 vGPU 分支;
  • 使用了外层 -package.zip
  • 文件损坏;
  • 路径不是绝对路径。

检查:

1
2
vmware -vl
unzip -l /tmp/NVD-VGPU-800_<版本>.zip | head

重新对照 NVIDIA vGPU Release Notes 的 Hypervisor Software Releases。

3. nvidia-smi: not found

说明 Virtual GPU Manager 没有正确安装或模块未加载。

检查:

1
2
esxcli software vib list | grep -i nvd
esxcli software component list | grep -i nvd

并重启 ESXi。

4. nvidia-smi 显示 No devices were found

可能原因:

  • BIOS 没有分配足够 MMIO;
  • GPU 已被设置为 Passthrough;
  • 驱动与 GPU 不兼容;
  • GPU Management Daemon 未运行;
  • C4140 GPU 底板或 PCIe 枚举异常;
  • R730 平台不兼容。

5. vCenter 中看不到 vGPU Profile

依次检查:

  1. ESXi 是否加入 vCenter;
  2. Host Driver 是否正确安装;
  3. nvidia-smi 是否正常;
  4. 主机图形类型是否为 Shared Direct;
  5. GPU 是否被设置为 Passthrough;
  6. 是否重启过 ESXi;
  7. ECC/Profile 是否满足当前版本要求;
  8. 该 GPU 是否被当前 vGPU 分支支持。

6. 虚拟机无法开机,提示内存未预留

编辑虚拟机并启用:

1
Reserve all guest memory

vGPU VM 必须锁定其配置内存。

7. 虚拟机无法开机,提示没有可用图形资源

可能原因:

  • 物理 GPU 显存不足;
  • 同一 GPU 上已经存在不兼容 Profile;
  • 分配策略导致目标 GPU 没有容量;
  • VM 使用了错误的 SXM2/PCIe Profile;
  • Host Driver 未正确加载;
  • 多张 GPU 型号或容量不一致。

可以先关闭其他 vGPU VM,再只启动一台使用整卡 Profile 的测试 VM。

8. Windows 设备管理器 Code 43

优先排查:

  • Host/Guest Driver 版本不兼容;
  • 安装了普通 NVIDIA 驱动;
  • Windows Update 自动替换驱动;
  • vGPU Profile 与 Guest Driver 不匹配;
  • NVIDIA 授权未正常获取;
  • Secure Boot 和驱动签名问题。

9. Linux nvidia-smi 提示驱动无法通信

检查:

1
2
3
lsmod | grep nvidia
dmesg | grep -i nvidia
systemctl status nvidia-gridd

检查 Nouveau:

1
lsmod | grep nouveau

检查内核模块是否因内核升级失效:

1
2
dkms status
uname -r

10. CUDA 可以识别,但性能明显偏低

检查:

  • 授权是否为 Licensed;
  • 是否使用 1Q/2Q 等小 Profile;
  • 同一物理 GPU 是否存在其他高负载 VM;
  • ESXi 电源策略是否为 High Performance;
  • BIOS System Profile 是否为 Performance;
  • CPU 是否严重超分;
  • NUMA 和 GPU 所在 CPU Socket 是否匹配;
  • C4140 GPU 拓扑是否符合预期;
  • 温度或功耗是否触发降频。

客户机:

1
nvidia-smi -q -d PERFORMANCE,CLOCK,POWER,TEMPERATURE

宿主机:

1
nvidia-smi dmon -s pucvmet

11. PCI Passthrough 虚拟机报大 MMIO 错误

这一项主要针对整卡直通,不是标准 vGPU Profile。

V100 16GB/32GB 需要较大的 MMIO 地址空间,虚拟机应使用 EFI,并可能需要高级参数:

1
2
pciPassthru.use64bitMMIO = TRUE
pciPassthru.64bitMMIOSizeGB = <按 BAR 和 GPU 数量计算的值>

不要随便填一个极大的数值。应根据 GPU BAR1、设备数量和 VMware KB 计算。

查询 BAR1:

1
nvidia-smi -q | grep -A 5 -i BAR1

12. R730 安装后能识别,但重启或升级后失效

这是非认证平台的典型风险。

可能涉及:

  • ESXi Patch 更新后驱动不再加载;
  • PERC/NIC VIB 冲突;
  • BIOS MMIO 分配变化;
  • 旧 CPU/芯片组组合未经过 ESXi 8 回归测试;
  • V100 电源线或 Riser 接触不稳定;
  • Dell 无法提供该组合的正式支持。

如果系统用于重要业务,应停止继续“打补丁碰运气”,迁移到 C4140、R740xa 或更新平台。

十九、驱动升级方法

升级前:

  1. 关闭所有 vGPU 虚拟机;
  2. 将主机进入维护模式;
  3. 记录当前 ESXi Build;
  4. 记录当前 Host/Guest Driver;
  5. 备份 vCenter;
  6. 确保新版本仍支持 V100。

查看当前版本:

1
2
3
vmware -vl
nvidia-smi
esxcli software component list | grep -i -E 'nvidia|nvd'

停止管理服务:

1
/etc/init.d/nvdGpuMgmtDaemon stop

应用新组件:

1
2
3
4
5
esxcli software component apply \
-d /tmp/NVD-VGPU-800_<新版本>.zip

esxcli software component apply \
-d /tmp/nvd-gpu-mgmt-daemon_<新版本>.zip

重启:

1
reboot

宿主机升级完成并验证正常后,再逐台升级虚拟机中的 Guest Driver。

不要在同一个维护窗口中同时升级:

  • BIOS;
  • ESXi 大版本;
  • vCenter;
  • vGPU Host Driver;
  • Guest Driver;
  • CUDA;
  • 深度学习框架。

一次改六层,出问题后就只剩下“量子排障”。正确做法是分层升级、每层验证。

二十、性能和容量规划建议

1. 训练任务优先整卡 Profile

V100 16GB 进行训练时,优先使用:

1
2
V100X-16Q
V100-16Q

V100 32GB 则优先:

1
2
V100DX-32Q
V100D-32Q

训练任务通常不仅消耗显存,还会长期占满 SM 和显存带宽。把一张 V100 切成多个小 Profile 并不一定提高总体吞吐量。

2. 推理任务可按显存切分

如果模型较小,可以使用:

1
2
8Q
4Q

但应做压测,而不是只看模型权重文件大小。推理还会消耗:

  • KV Cache;
  • CUDA Context;
  • cuBLAS/cuDNN Workspace;
  • 框架缓存;
  • 输入 Batch;
  • 张量并行通信缓冲区。

3. 不要过度超分 CPU 和内存

GPU 虚拟机如果 CPU 长期 Ready、内存发生 Balloon/Swap,GPU 会因为数据喂不满而空转。

建议:

  • GPU 训练 VM 的 vCPU 数不要盲目开太多;
  • 关注 %RDY、NUMA locality 和内存延迟;
  • 大型训练任务尽量让 vCPU、内存和 GPU 靠近同一 NUMA 节点;
  • 所有 vGPU VM 的内存都需要锁定,要提前计算宿主机可用内存。

4. C4140 多卡规划

4 张 V100 的 C4140 可以按照以下方式规划:

方案 A:4 台训练虚拟机

1
2
3
4
GPU0 → VM1 → 16Q/32Q
GPU1 → VM2 → 16Q/32Q
GPU2 → VM3 → 16Q/32Q
GPU3 → VM4 → 16Q/32Q

方案 B:8 台中型推理虚拟机

1
2
每张 GPU 划分 2 个 8Q
4 张 GPU 共 8 个 vGPU

方案 C:开发资源池

1
2
每张 GPU 划分 4 个 4Q
4 张 GPU 共 16 个 vGPU

方案 C 的用户密度最高,但计算性能波动也最明显。

二十一、最终验收清单

宿主机

  • BIOS 使用 UEFI;
  • VT-x、VT-d、SR-IOV 已开启;
  • Memory Mapped I/O above 4GB 已开启;
  • lspci 可以看到全部 V100;
  • NVIDIA Virtual GPU Manager 安装成功;
  • GPU Management Daemon 正常;
  • nvidia-smi 显示全部 GPU;
  • vCenter 图形模式为 Shared Direct;
  • GPU 没有被误设置为 Passthrough;
  • 主机已退出维护模式。

虚拟机

  • 使用 EFI;
  • 首次安装关闭 Secure Boot;
  • 已预留全部客户机内存;
  • 已添加正确的 V100X/V100/V100DX/V100D Profile;
  • Guest Driver 与 Host Driver 兼容;
  • nvidia-smi 正常;
  • NVIDIA License 状态为 Licensed;
  • CUDA Toolkit 没有覆盖 vGPU Guest Driver;
  • PyTorch/TensorFlow 可以识别 CUDA;
  • 压力测试中没有 XID、掉卡或温度告警。

二十二、C4140 与 R730 的最终建议

C4140

推荐程度:★★★★★

适合:

  • 4×V100 SXM2/NVLink;
  • 4×V100 PCIe;
  • vSphere 8 + vGPU;
  • GPU 资源池;
  • 多租户 CUDA 开发;
  • 虚拟工作站;
  • 推理与中小规模训练。

R730

推荐程度:★★

适合:

  • Homelab;
  • 已有设备的低成本实验;
  • 单张 V100 PCIe 的兼容性验证;
  • 能接受无官方支持、无法稳定升级的环境。

不适合:

  • V100 SXM2;
  • 要求 Dell/VMware/NVIDIA 联合支持的生产环境;
  • 需要长期稳定补丁升级的 vSphere 8 集群;
  • 高密度双卡 300W GPU 且散热条件不足的机房。

一句话总结:

C4140 是正经 GPU 服务器,R730 是能折腾 GPU 的通用服务器;两者都能点亮,不等于两者都适合长期运行。

参考资料

  1. 信诺智能:http://www.xinuozhineng.com/ziliao/148.html
  2. GitHub - How-to-use-vGPU:https://github.com/fenghan0430/How-to-use-vGPU
  3. VMware vSphere 下 NVIDIA vGPU 驱动的安装和配置:https://www.dingqian.net/index.php/archives/9/
  4. NVIDIA vGPU 19.x Documentation:https://docs.nvidia.com/vgpu/19.0/
  5. NVIDIA VMware vSphere Release Notes:https://docs.nvidia.com/vgpu/19.0/grid-vgpu-release-notes-vmware-vsphere/index.html
  6. NVIDIA Supported GPUs:https://docs.nvidia.com/vgpu/gpus-supported-by-vgpu.html
  7. NVIDIA Client Licensing User Guide:https://docs.nvidia.com/vgpu/19.0/grid-licensing-user-guide/index.html
  8. Dell PowerEdge C4140 Technical Specifications:https://www.dell.com/support/manuals/en-sg/poweredge-c4140/c4140_ts_pub/gpu-specifications
  9. Dell PowerEdge R730 GPU Installation Guidelines:https://www.dell.com/support/manuals/en-lt/poweredge-r730/r730_ompublication/gpu-card-installation-guidelines
  10. Dell PowerEdge Servers Certified for VMware vSphere 8.0:https://www.dell.com/support/kbdoc/en-us/000217592/dell-poweredge-servers-certified-for-vmware-vsphere-8-0

启示录

虚拟化解决的是资源分配问题,硬件兼容性解决的是系统能不能活着的问题。

能成功于千载者,必以近察远。


VMware vSphere 8 配置 NVIDIA vGPU 教程:Tesla V100 SXM2/PCIe 与 Dell C4140/R730 实战
https://allendericdalexander.github.io/2026/07/23/devops/virtual/vsphere8-nvidia-vgpu-v100-dell-c4140-r730/
作者
AtLuoFu
发布于
2026年7月23日
许可协议