什么是硬盘直通
esxi中,有两种方式向虚拟机添加硬盘。
第一种是不进行硬盘直通,像装机时创建的虚拟硬盘一样,将硬盘作为esxi本机存储器,然后在本机存储器上创建任意大小任意数量的虚拟硬盘(总大小小于总容量),然后把虚拟硬盘挂载到虚拟机上。
这样做的好处是迁移和备份非常方便,相当于硬盘空间被转换为了一个或多个文件,只要把这些文件拷走就相当于进行了对硬盘的迁移和备份,并且可以将一块大硬盘分成多块小硬盘供给多个虚拟机使用。坏处则是有一定的磁盘读写性能损失,并且要将硬盘作为esxi本机存储器的话,需要将硬盘重新格式化为esxi系统支持读写的格式,如果硬盘内本身已有数据的情况,重新备份数据会非常麻烦。我就是因为不想迁移原本NTFS硬盘中的数据,才采用了windows操作系统+硬盘直通的方案。
第二种是硬盘直通的方案,正如字面意思所说,esxi直接把硬盘作为一种设备直连到虚拟机。好处是不需要重新格式化,并且几乎没有性能损失,坏处则是不能以文件的形式进行备份和迁移,并且一块物理磁盘只能供一个虚拟机使用。
如何进行硬盘直通
在esxi中硬盘直通也有两种办法。第一种是直接把硬盘所在的sata控制器给直通了。这种做法是真正意义上的“直通”,性能损失最小,但是由于家用主板通常是一个sata控制器连接主板上所有的sata硬盘,而不是每一个硬盘有一个sata控制器,所以这种直通会一次性直通所有的sata硬盘到虚拟机而不能具体的指定直通哪一块硬盘。(PS:在这种情况下,如果你esxi本身也是安装在某块sata硬盘上的,这么做会引起esxi系统盘访问错误,产生轻则设置无法保存重则当场系统崩溃的严重问题。别问我是怎么知道的。)

在“存储”>“适配器”界面,可以看到你sata控制器的型号

在“管理”>“硬件”>“PCI设备”界面,选中你的sata控制器即可开启直通
PS: 如果你的硬件页面上,sata控制器是灰色的。请检查:
BIOS是否开启了VT-d
是否配置了passthru.map(详见后文显卡直通)
!!!不推荐直接直通sata控制器给虚拟机!!!
esxi中硬盘直通的第二种方式是通过RDM(Raw Device Mapping),RDM允许你创建一个硬盘的映射文件,然后从虚拟机挂载这个映射文件。具体原理蛮复杂的不必深究,总之这样可以直接把一块硬盘挂载到虚拟机。

首先从web页面上打开ssh
然后通过你喜欢的ssh终端(推荐mobaxterm)链接esxi服务器,并执行下面的命令:
vmkfstools -z /vmfs/devices/disks/要直通硬盘的id /vmfs/volumes/存储id/任意路径/映射文件名.vmdk
上面的命令中,“要直通的硬盘id”可以从“存储”>“设备”中点进想要查看的硬盘设备中,然后在下图的页面查到:

红框内即为硬盘id,不含两端括号
存储id指esxi系统创建的数据存储id,可以从“存储”>“数据存储”中点开想要用来存放映射文件的存储目录来查看id,这个存储空间及之后的相对目录控制生成的磁盘映射文件的存放位置,映射文件不会很大,不用担心空间大小问题:
查看数据存储id
任意路径为相对于数据存储根目录的路径,例如存放在根目录下vmdisk文件夹的vmdisk1文件夹中,则“任意路径”应填写vmdisk/vmdisk1。路径必须为正确且存在的路径,可以用mkdir命令来预先创建。或者不讲究的话,直接丢在根目录下也没什么问题。映射文件名则是生成的硬盘映射文件的名字,可以自定义,不要使用怪异的符号就好。
如果命令执行成功,在/vmfs/volumes/存储id/任意路径下会生成一个映射文件名.vmdk文件(如图是我在根目录/windows nas文件夹下创建的若干个磁盘映射文件)。

成功创建的磁盘映射文件
映射文件创建完成后,在虚拟机编辑界面中选择添加现有硬盘:

编辑虚拟机添加现有硬盘
之后选择刚才创建的“映射文件名.vmdk”文件,添加以后,页面上会增加一个硬盘,这个硬盘的容量固定不可编辑,大小等于你的硬盘真实容量。之后点击保存,退出编辑界面即可。
PS:添加设备需要在虚拟机关机的状态下进行,开机的话,这里保存会失败。
添加以后虚拟机开机,因为我硬盘本身就是NTFS格式,windows可以直接识别,直接使用就好了。不能识别格式的硬盘或者空硬盘在windows虚拟机的“创建并格式化磁盘分区”设置中正常格式化、分区就好。
如何进行核显直通
核显直通在esxi中是个很困难的事情,经过我多方考证和反复尝试,目前勉强可以实现直通核显UHD630到windows虚拟机中用于硬件解码,但是这种情况核显无法进行hdmi输出,并且无法从esxi管理端控制台访问虚拟机界面。之后虚拟机将只能通过windows远程桌面操作。
综上:
1.本方法直通的核显基本不能应用于硬件解码以外的场景
2.在核显直通前,配置虚拟机使用固定ip并允许远程桌面连接,以避免直通后无法操作。
3.之后的操作并不保证可以原封不动的复刻在8400以外的cpu上和b360以外的平台上,对于其他CPU和主板可能仅能提供一定的参考。
在esxi设备直通页面,核显等设备默认是灰色不能直通的,因此首先要手动将这些设备加入passthru.map文件中。SSH连接到esxi,找到
/etc/vmware/passthru.map
通过vim在其中添加
ALL INTEL
8086 ffff d3d0 default
PS:如果不会使用vim,可以通过sftp下载passthru.map文件,然后使用其他图形界面编辑器完成修改以后,再将修改后passthru.map文件传回并覆盖原文件。
其中,8086是厂商代码,指Intel,ffff是设备代码,这里的意思是所有设备,如果不想直通全部设备或者想直通intel以外的设备,可以从下图的地方查看厂商代码和设备代码。

查看某设备的厂商代码和设备代码
d3d0是工作模式,暂不清楚具体的含义,有知道的小伙伴如果愿意解惑我会非常感谢。default是是否允许直通,有的版本可能需要设为false,如果default不行可以换false试一下。
修改配置后,重启esxi,先不急着进系统,进BIOS确认一下VT-D是否已经打开,如果VT-D不打开,核显等设备是无法直通的。打开VT-D后,启动esxi,如果顺利的话,在“管理”>“硬件”中已经可以看到一系列intel设备已经由灰色不可操作变为深色可选中的状态。

深色的设备已经可以选中了
可以明显看到有一个UHD 630的核显设备已经可以直通了,网上大多数教程止步于此,亦可能确实是一部分型号的CPU、主板就这样直接直通以后就可以装驱动正常工作了。但经测试以后我的8400是不行的,将UHD 630直通虚拟机,然后在虚拟机里安装官方驱动后,在虚拟机的设备管理器里看到UHD 630设备异常,代码47,核显无法正常工作,任务管理器里也看不到核显的相关信息,无法调用其进行硬件解码。如果你和我有一样的困扰,可以试试下面的操作:
请注意,下面的操作基于尝试和玄学,作者的能力不能科学的解释为什么要这样操作!
首先只直通uhd 630(具体操作参看后文)进入虚拟机,安装最新的INTEL核显驱动程序[官网驱动下载地址](https://www.intel.cn/content/www/cn/zh/download/762755/intel-6th-10th-gen-processor-graphics-windows.html)
此时应如前文所述,进入驱动异常,识别不到显卡的状态。驱动安装完成后,关闭虚拟机,将下面两个设备也切换为直通模式:
1.(前面有很多cpu型号)Gen Core Processor Gaussian Mixture Model
2.Cannon Lake PCH cAVS(声卡,别问为什么,通就完事了)

选中后点击切换直通,直通状态显示为活动即可
关闭虚拟机状态下,在虚拟机中添加pci设备,添加后通过下拉菜单选择要直通的设备(PS:注意,如果没有任何pci设备是可以直通的状态,那么此处菜单中PCI设备一项是直接置灰不能点击的,如果你无法添加PCI设备,请检查前面的步骤配置是否正确,相关设备直通状态是否为“活动”):

添加PCI设备,添加后分别选择刚才配置允许直通的设备
配置完成后保存,最终显示:

我图里是灰的是因为虚拟机没关机,关机状态下这里下拉菜单是可以选的。
SSH进入esxi,执行命令:
esxcli system settings kernel set -s vga -v FALSE
这个命令使esxi不再使用核显,之后完全通过web管理端控制esxi。命令通过后重启esxi,如果你原本有显示器连接在主机上,重启以后不会显示原本的esxi后台的黄色框框界面,而是左上角显示两行类似于报错的东西,这是正常的,不影响web控制台连接使用。
在web控制台重新登录EXSI主机,在编辑虚拟机页面,虚拟机选项>>高级>>配置参数>>编辑中增加一项参数:
hypervisor.cpuid.v0 = “FALSE”

添加参数hypervisor.cpuid.v0 = “FALSE”
该参数可以骗过操作系统使其不认为自己在虚拟机内运行,从而直接加载显卡而不进行虚拟化转化(似乎是这样)。
内存勾选“预留所有客户机内存(全部锁定)”,不让esxi动态分配内存,而是从一开始就分配好内存,否则无法启动。
预先分配固定大小的内存
确认上述配置无误后,重启虚拟机,如果顺利的话,虚拟机通过web控制台打开的操作界面会在windows转圈圈完成以后进入黑屏状态。如果黑屏状态稳定,而不是过一会后报蓝屏自动重启,那么恭喜你,核显直通成功了。此时即可通过windows远程桌面来操作虚拟机。远程后可以看到,UHD630工作正常,且任务管理器可以正常读取到核显状态。
正确直通的标志:设备管理器无报错,任务管理器有信息
尚未解决的问题:开启核显直通的虚拟机在数次重启后,会恢复之前设备驱动异常47的状态,原因不明。这种情况发生时,只要重启esxi,再开启虚拟机就可以恢复。如果哪位小伙伴对此有解决的办法,欢迎分享出来。 作者:改一次名要六个硬币 https://www.bilibili.com/read/cv27393532/ 出处:bilibili