ESXi 上配置硬件直通

2021-04-06 coding ESXi NUC hypervisor VT-D VT-X Hardware Virtualization

其实前些日子买了个 Intel NUC10i5FNH ,主要是把他用作一个小型的服务器。500多克的重量,拿在手里十分轻便,性能也还不错。 具体的配置来说,这一个小主机的CPU是 i5-10210U,我给他配置了2块8G的内存条、一个1TB的m2接口SN750固态硬盘以及一块2TB的Sata接口希捷绿盘机械硬盘。

在我的设想里,这个NUC可以同时运行Windows操作系统和一个NAS网络附属存储系统。因此我使用 ESXi hypervisor 作为宿主机操作系统,上面可以同时运行多个虚拟机。但是为了充分发挥硬件优势,利用Intel处理器的VT-D、VT-X技术,可以将部分硬件直通给虚拟机使用。下面记录一下常用部件的硬件直通的方式:

网卡直通

除了用于管理 ESXi 管理界面的网卡端口之外,其他网口均能够被直通,设置方法也很简单,在ESXi网络管理界面选择对应的网卡,点击切换直通后重启 ESXi 即可。或者也可以使用下面的命令:

esxcli hardware pci pcipassthru set -d <网卡的PCIE地址> -e TRUE
reboot

硬盘直通

NUC上可以使用两种类型的硬盘直通,一种是基于RDM直通硬盘,另一种是直接将SATA控制器的直通给虚拟机。

1. SATA控制器直通

我在NAS虚拟机上使用了第一种方式,直接将SATA控制器的PCI-E设备直通给了虚拟机。这样做的好处是虚拟机可以完整操作所有SATA硬盘,也可以使用S.M.A.R.T指令监控磁盘的健康。

但是这种方案有一个坑,我之前的m2接口插上的是SATA硬盘的SSD作为系统硬盘。开启PCI-E直通后,整个系统硬盘也被直通了,这导致ESXi操作系统的崩溃。

配置SATA控制器直通的方式也很简单,首先需要设置 passthru 文件,使得 ESXi 允许直通 SATA控制器,修改 /etc/vmware/passthru.map 文件,添加一行:

8086  02d3  d3d0     false

重新启动后,可以在管理页面开启SATA控制器的PCIE直连,也可以使用命令:

esxcli hardware pci pcipassthru set -d <SATA控制器的PCIE地址> -e TRUE
reboot

2. RDM

RDM技术可以将一块硬盘直接映射到虚拟机里面,在虚拟磁盘中的某一个块中读写文件,就会被映射到物理磁盘中对应位置进行读写。这样做的好处是更加灵活,我们可以设置某一个硬盘进行映射,而无需将整个SATA控制器或者SCSI控制器映射。

具体的使用命令是:

vmkfstools -z /vmfs/devices/disks/<disk> /vmfs/volumes/<vmdk file>

该命令将disk文件映射成为一个虚拟磁盘镜像文件 .vmdk,在虚拟机中只要选择对应 vmdk 文件即可。

显卡直通

NUC10i5 CPU附带一个核心显卡 UHD620,我们也可以将其直通给 Windows 虚拟机使用。

不知道为什么如果显卡直通之后,NUC机身上的HDMI接口也无法使用。因此必须要在显卡直通之前,打开 Windows 远程登录(RDP)。下面是具体的使用方法。 但是我们可以通过设置远程桌面的组策略,使用显卡进行视频编码

但是由于ESXi默认已经使用了该核心显卡,所以需要首先设置ESXi内核不适用 VGA 网卡。使用命令:

esxcli system settings  kernel list | grep vga
esxcli system settings kernel set -s vga -v FALSE
reboot

这个命令要求内核不再使用 vga 显卡。但是如果 ESXi宿主机不使用核显,那么NUC默认的HDMI接口将无法使用,我们也无法接入 dcui(也就是那个黄色、灰色相间的页面)。我们可以在SSH命令行中使用如下命令启动DCUI界面:

TERM=xterm # for mac
dcui

之后,我们设置显卡直通,可以在网页管理界面中设置直通,也可以在命令中设置:

esxcli hardware pci pcipassthru list
esxcli hardware pci pcipassthru set -a -d 0000:00:02.0 -e TRUE
esxcli hardware pci pcipassthru set -a -d 0000:00:08.0 -e TRUE

需要将 UHD Graphic 以及 Gauss Mixture Model 设备直通。

重启设备后将其这两个设备直通给虚拟机。重启Windows后,发现Windows已经正确识别了设备,但是无法使用。我们还需要在虚拟机的配置文件里添加一行配置:

hypervisor.cpuid.v0 = “FALSE”

再次进入 Windows 之后,发现已经能够正常使用 GPU 了。

配置远程桌面(RDP)启用硬件加速

默认情况下,Windows 系统的远程桌面是使用CPU进行渲染和编解码操作的,但是我们也可以启用我们的GPU进行对应的操作,具体设置在“组策略管理器”中的“计算机管理”-“管理模板”-“Windows组件”-“远程桌面服务”-“远程桌面会话主机”-“远程会话环境”中,将“将硬件图形适配器应用于所有远程桌面服务会话”设置为“已启用”即可。

GeekBench 跑分

我目前有 Macbook Pro 18 款,CPU是 i5-8269u 搭配 iris 655 核心显卡;一个NUC10i5FNH,CPU是 i5-10210U 搭配 UHD620 核心显卡。台式机是 i5-9400F 搭配 UHD630 核心显卡。

在开启了显卡直通后,Windows 虚拟机内的 CPU GeekBench 跑分是 1024、4063,这个数值比物理机上的数值低一点点,但是可以接受。GPU跑分为 6017。如果解锁Bios功耗锁,应当可以取得更好的性能。

和他对比的是,Macbook 跑分为858、3931,这个分数竟然比 i5-10200U底,是出乎我意料的。但是iris 655 显卡得分 7473 还是比 NUC的 UHD 620 好不少。

台式机的 i5-9400F的得分是 1013、4593,和10200u物理机得分差不多,但是 UHD630 竟然只跑了 4726 分。我多次测试的结果均是如此,桌面级CPU的分数竟然比移动端CPU还差,这真的出乎意料,不知道是不是测试环境或操作系统的问题。

本人保留对侵权者及其全家发动因果律武器的权利

版权提醒

如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/tech/esxi-passthrough/

如有其它需要,请邮件联系!版权所有,违者必究!