最近在协助客户进行ESXi GPU 直通配置,因为没有相关文档指导,跳了不少坑,今天把配置过程整理下,留作纪念。
物理机及虚拟机配置
参考vmware及NVIDIA官网介绍,进行ESXi GPU直通配置时,为了避免一系列的报错,请按照以下要求完成配置。
简单点来说就是:
物理机与虚拟机建议全部使用EFI引导。
ESXi软件建议使用6.7及以上版本,操作系统安装64-bit的。
物理机配置
- 物理机使用
EFI
引导模式; -
若GPU 需要 16 GB 或更多的内存映射(BAR1 Memory),需要在物理机bios中启用GPU直通,设置项名称通常为Above 4G decoding、Memory mapped I/O above 4GB 或 PCI 64-bit resource handing above 4G;
- BIOS 中启用虚拟化功能: Intel Virtualization Technology for Directed I/O (VT-d) 或 AMD I/O Virtualization Technology (IOMMU);
ESXi虚拟机设置
-
建议虚拟机系统为64-bit操作系统;
-
If the total BAR1 memory exceeds 256 Mbytes, EFI boot must be enabled for the VM.
Note: To determine the total BAR1 memory, run
nvidia-smi -q
on the host. -
To enable 64-bit Memory Mapped I/O (MMIO) add this line to the virtual machine vmx file:
pciPassthru.use64bitMMIO="TRUE"
-
Memory Mapped I/O (MMIO)大小调整:建议调整为(n*GPU显存)向上舍入到下一个2次幂。
示例:
pciPassthru.64bitMMIOSizeGB ="64"
-
两个16G显存GPU,2 x 16 GB = 32,将 32 GB 向上舍入到下一个 2 次幂,所需的内存量为 64 GB。
- 三个16G显存GPU,3 x 16 GB = 48,将 48 GB 向上舍入到下一个 2 次幂,所需的内存量为 64 GB。
或者直接设置为虚拟机分配的所有GPU显存大小的两倍,2*n*GPU显存(单位为GB)
-
- 虚拟机内存最小值建议为分配的所有GPU显存总大小的1.5倍。
ESXI 6.5以下版本注意事项:
- Set the ESXi hosts BIOS to allow PCI mapping above 4GB and below 16TB(比如物理机bios中MMIO High Base 设置为4T).
- In UEFI BIOS mode, a virtual machines's total BAR allocation is limited to 32GB.
ESXi GPU直通兼容性列表
ESXi与GPU直通的兼容性列表一定提前查询下,比如NVIDIA Tesla V100S与ESXi 6.0是不兼容的,这个也是我本次安装踩坑之一,这个坑希望你不要掉进去。
兼容性列表可以在GPU直通兼容性查询网站,选择Shared Pass-Through Graphics
项目后进行查询,该网站打开后经常没反应,不要一直纠结这个,看我下面附的图片吧。
NVIDIA GPU兼容性列表
AMD GPU兼容性列表
实际配置演示
软硬件环境介绍
这里介绍下我本次配置所用的软硬件环境:
- GPU:NVIDIA Tesla V100与Tesla V100S各一块,均为32G显存GPU。
- 虚拟化软件:ESXi 6.7 U3
- 虚拟机操作系统:CentOS 7.5-64-bit
物理机配置
首先开机进入bios,提前修改物理机bios设置:
- Above 4G decoding - Enable
- Intel Virtualization Technology for Directed I/O (VT-d) - Enable
- MMIO High Base - 默认56T(若为ESXi 6.5以下版本注意修改为4G-16T之间的值,如4T)
ESXi 6.7安装
可以使用服务器自带的虚拟光驱或刻录U盘进行ESXi安装,本次以U盘安装进行示例,建议使用Rufu工具进行U盘刻录。
服务器开机从U盘启动并完成ESXi安装,如图为本次完成安装的ESXi软件版本。
GPU 切换直通模式
安装完ESXi软件后,首先需要将GPU切换为直通模式,切换方法为:导航界面选择管理
--->硬件
--->PCI设备
,搜索框输入nvidia
筛选出GPU设备,勾选后,点击切换直通
。
GPU切换直通后,需要重新引导主机
使配置生效:
重新引导主机后,GPU直通变为活动
状态,表示GPU切换直通成功。
虚拟机创建及配置
创建虚拟机
导航栏选择虚拟机
--->创建/注册虚拟机
并修改虚拟机配置。
选择系统安装介质
本次通过上传iso镜像的方式进行虚拟机系统安装,虚拟硬件
--->CD/DVD驱动器1
中选择数据存储ISO文件
,上载ISO镜像并选择。
添加直通GPU并预留所有内存
添加其他设置
--->PCI设备
如图,添加两块GPU,分别为Tesla V100和Tesla V100S,并在新PCI设备
选项下点击预留所有内存
。
修改虚拟机内存
虚拟硬件
--->内存
,建议设置最小内存为虚拟机所分配GPU显存总大小的1.5倍。确保已勾选预留所有客户机内存(全部锁定)
修改MMIO相关参数
虚拟机选项
--->高级
--->编辑配置
,添加以下参数:
本次添加两块显存为32G的GPU,所以设置pciPassthru.64bitMMIOSizeGB
的值为2*32
并向上舍入到下一个2的次幂,即128
.
pciPassthru.use64bitMMIO="TRUE"
pciPassthru.64bitMMIOSizeGB="128"
修改虚拟机引导选项
编辑虚拟机,修改虚拟机选项
--->引导选项
为EFI
。
开始安装虚拟机
自定义设置中完成CPU、内存、GPU、引导选项等各种设置后,点击完成开始安装虚拟机即可。
GPU识别检查
系统安装完成后,登陆虚拟机系统使用lspci命令检查GPU识别情况,如下表示添加的两块GPU识别正常。
[root@localhost ~]# lspci | grep -i nvidia
0b:00.0 3D controller: NVIDIA Corporation Device 1db6 (rev a1)
13:00.0 3D controller: NVIDIA Corporation Device 1df6 (rev a1)
最后从NVIDIA官网下载对应的GPU驱动并安装,安装后建议打开GPU驱动persistence mode
并配置开机自启动:
[root@localhost ~]# nvidia-smi
Mon Jan 18 17:43:13 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-PCIE... On | 00000000:0B:00.0 Off | 0 |
| N/A 37C P0 27W / 250W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100S-PCI... On | 00000000:13:00.0 Off | 0 |
| N/A 35C P0 25W / 250W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
可能会遇到的问题
ESXi 安装时卡在bnxtroce.v00
出现该问题多为刻录U盘时选择的U盘格式有问题,建议使用本文介绍的rufus工具进行刻录,同时物理机引导模式选择EFI引导。若使用软碟通进行U盘刻录,可以将写入方式修改为 USB-ZIP+ v2 或者 USB-HDD+ v2。
系统安装时找不到引导介质
如下,系统安装时显示找不到引导介质,可以将CD/DVD驱动器1
删除后重新添加,重新配置引导介质。
<img src="file:///E:\软件资料存储\qq\1037509307\Image\C2C]T0J}$NN1C]Q60Y]1G{}E.png" alt="img" style="zoom:200%;" />
<img src="https://gitee.com/Gavin_zj/blog/raw/master/blog_img/%E6%97%A0%E5%BC%95%E5%AF%BC%E4%BB%8B%E8%B4%A8-20210118182049.png" style="zoom:150%;" />
ESXi 6.0安装后无法通过浏览器进行管理
添加网页管理web client的方式是:
ESXi控制台界面,按F2进入系统配置,输入用户名/密码后,进入 troubleshooting options中,按回车键打开SSH。
使用xshell等终端 ssh IP,进入命令行窗口,然后通过ssh运行安装web client的命令:
esxcli software vib install -v https://download3.vmware.com/software/vmw-tools/esxui/esxui-signed-7119706.vib
安装完成后,可以使用浏览器打开 http://IP/ui 来进行网页管理。
浏览器管理界面密码输入正确但无法登录
连接物理服务器按F2
键进入ESXi控制台界面,进入Troubleshooting Options
,选择Restart Managent Agents
。若仍然无效,可以先在控制界面修改登录密码后再执行此操作。
虚拟机无法开机,提示电源报错
具体报错内容如下:无法打开虚拟机的电源,失败 - 模块“DevicePowerOn”打开电源失败。
可能原因为:
- ESXi 软件与GPU不兼容
- ESXi软件中未设置MMIO相关参数
- pciPassthru.use64bitMMIO="TRUE"
- pciPassthru.64bitMMIOSizeGB =“<n>”
GPU驱动安装报错
虚拟机内GPU驱动安装失败,提示以下报错:
NVRM: BAR1 is 0M @ 0x0 (PCI:0000:02:02.0)
[ 90.823015] NVRM: The system BIOS may have misconfigured your GPU.
[ 90.823019] nvidia: probe of 0000:02:02.0 failed with error -1
[ 90.823031] NVRM: The NVIDIA probe routine failed for 1 device(s).
可能原因:
- 虚拟机操作系统引导方式为BIOS,需要修改为EFI;
- ESXi软件中未设置MMIO相关参数
- pciPassthru.use64bitMMIO="TRUE"
- pciPassthru.64bitMMIOSizeGB =“<n>”
来源:oschina
链接:https://my.oschina.net/u/4260177/blog/4914888