ESXi 8.0直通NVIDIA显卡
ESXi 8.0直通NVIDIA显卡
来源 https://xxfe.com/posts/20241217-esxi-many-fixes/
要顺利实现NVIDIA显卡的直通,首先需要具备合适的硬件环境。我配置的主板是华硕 B760i,CPU是14600KF。 华硕 B760i 主板支持最新的IOMMU技术(Intel VT-d),这对于GPU直通至关重要。搭配强劲的i5处理器,不仅能够提供充足的计算性能,还支持多线程和高频率运行,为虚拟化环境提供了坚实的基础。
备注: 如果主板上的网卡不是Intel家的,感觉要出门左拐了。
使用Ventoy制作启动盘
在开始安装ESXi 8.0之前,我们需要制作一个可启动的安装盘。Ventoy是一个开源工具,可以轻松将ISO文件写入U盘,并支持多ISO启动。Ventoy的优势在于支持多ISO启动,无需重复格式化U盘,且操作简单,只需一次安装后拖放ISO文件即可使用。
以下是使用Ventoy制作启动盘的步骤:
- 下载Ventoy并安装到U盘。
- 将最新的ESXi 8.0镜像文件VMware-VMvisor-Installer-8.0U3b-24280767.x86_64.iso复制到U盘中。
- 通过Ventoy的多ISO功能,可以同时存储其他工具的ISO,方便后续使用。
关闭安全启动
为了避免ESXi在控制台中出现安全启动相关的警告,需要在BIOS中关闭 安全启动(Secure Boot)。具体步骤如下:
- 进入BIOS:开机时按下 Del 或 F2 键进入BIOS设置界面。
- 导航至安全选项:找到 Security 或 Boot 选项卡。
- 关闭安全启动:将 Secure Boot 选项设置为 Disabled。
- 保存并退出:按提示保存设置并重启系统。
关闭安全启动后,ESXi在启动时将不会因签名校验失败而弹出警告,从而实现更顺畅的启动过程。
修改ESXi参数
由于ESXi 8.0没有对12代以后的CPU做默认的支持,所以在安装ESXi 8.0过程中会遇到紫屏的问题。为了解决这一问题,需要对ESXi的启动参数进行修改。
1. 修改启动参数
在ESXi启动界面,按 Shift + O 进入启动选项编辑模式,然后添加以下参数:cpuUniformityHardCheckPanic=FALSE
完整的启动参数示例如下:kernelopt=… cpuUniformityHardCheckPanic=FALSE
2. 启动后通过SSH调整系统配置
启动进入ESXi系统后,通过SSH连接到主机,并执行以下命令以永久应用修改:
1esxcli system settings kernel set -s cpuUniformityHardCheckPanic -v FALSE
此命令将启动参数持久化,确保每次启动ESXi时都应用该设置,防止紫屏问题再次出现。
3. 配置NVIDIA显卡直通
为了在虚拟机中成功直通NVIDIA显卡,还需要进行特定的配置。以下步骤将指导你完成这一过程:
lspci -v | grep -i nvidia
lspci -v | grep -i nvidia -A1
步骤: 编辑ESXi配置文件:
通过SSH连接到ESXi主机,执行以下命令将显卡设备标记为直通设备:
echo '/device/0000:01:00.0/owner = "passthru"' >> /etc/vmware/esx.conf
其中,0000:01:00.0
为NVIDIA显卡的PCI地址,请根据实际硬件调整。
更新Passthru映射文件:
为了确保显卡的各项功能能够正确直通,需在passthru.map文件中添加相关配置。执行以下命令:
echo '10de 2803 bridge false' >> /etc/vmware/passthru.map
echo '10de 2803 link false' >> /etc/vmware/passthru.map
echo '10de 2803 d3d0 false' >> /etc/vmware/passthru.map
这里的10de 2803
代表NVIDIA显卡的厂商ID和设备ID,请根据你的显卡型号进行相应调整。
重启ESXi服务:
为使上述配置生效,需要重启ESXi的管理代理服务。执行以下命令:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
或者,您也可以选择重启整个ESXi主机。
创建虚拟机及配置参数
预留全部内存
在“虚拟机设置”中,点击“添加其他设备” > “PCI设备”,在列表中找到并勾选NVIDIA显卡(例如,0000:01:00.0
)。
添加PCI设备
取消UEFI安全启动
为了优化GPU直通的性能和兼容性,需要在虚拟机的高级配置中添加以下参数:
# 该参数用于隐藏虚拟化环境,使得虚拟机能够更好地识别并利用NVIDIA显卡。
hypervisor.cpuid.v0 = FALSE
# 启用64位内存映射输入/输出(MMIO),提高显卡的内存访问效率。
pciPassthru.use64bitMMIO = TRUE
# 设置64位MMIO的大小为32GB,确保显卡有足够的内存资源进行高性能计算和渲染任务。
pciPassthru.64bitMMIOSizeGB = 32
确认所有设置无误后,点击“完成”保存虚拟机配置。
安装驱动
#禁用nouveau
touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf
cat >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf << EOF
blacklist nouveau
options nouveau modeset=0
EOF
touch /etc/modprobe.d/nvidia.conf
cat >> /etc/modprobe.d/nvidia.conf << EOF
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
EOF
sudo update-initramfs -u
sudo reboot
wget "https://us.download.nvidia.cn/XFree86/Linux-x86_64/535.129.03/NVIDIA-Linux-x86_64-550.135.run" -O NVIDIA-Linux-x86_64-550.135.run
sudo apt install build-essential
sudo apt install pkg-config libglvnd-dev
sudo chmod u+x NVIDIA-Linux-x86_64-550.135.run
# 如不带 -m=kernel-open 参数,kernel日志中会出现 RmInitAdapter failed! (0x26:0x56:1482) 报错。
./NVIDIA-Linux-x86_64-550.135.run -m=kernel-open
===================
Intel® Arc™ Graphics - Windows*
https://www.intel.com/content/www/us/en/download/785597/intel-arc-graphics-windows.html
[root@localhost:~] [root@localhost:~] cat /etc/rc.local.d/local.sh #!/bin/sh ++group=host/vim/vmvisor/boot # local configuration options # Note: modify at your own risk! If you do/use anything in this # script that is not part of a stable API (relying on files to be in # specific places, specific tools, specific output, etc) there is a # possibility you will end up with a broken system after patching or # upgrading. Changes are not supported unless under direction of # VMware support. # Note: This script will not be run when UEFI secure boot is enabled. # enable support for Intel iGPU with SR-IOV esxcli system settings kernel set -s vga -v FALSE vsish -e set /hardware/pci/seg/0/bus/0/slot/02/func/0/enableVFs 7 kill -SIGHUP $(pidof vmkdevmgr) lspci -v | grep -i vga exit 0 [root@localhost:~] [root@localhost:~] [root@localhost:~] /bin/sh /sbin/auto-backup.sh [root@localhost:~] [root@localhost:~] /bin/sh /etc/rc.local.d/local.sh 0000:00:02.0 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.1 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.2 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.3 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.4 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.5 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.6 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.7 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] [root@localhost:~]
[root@localhost:~] [root@localhost:~] cat /etc/vmware/passthru.map # passthrough attributes for devices # # file format: vendor-id device-id resetMethod fptShareable # vendor/device id: xxxx (in hex) (ffff can be used for wildchar match) # reset methods: flr, d3d0, link, bridge, default # fptShareable: true/default, false # # Description: # # - fptShareable: when set to true means the PCI device can be shared. # Sharing refers to using multiple functions of a multi‐function # device in different contexts. That is, sharing between two # virtual machines or between a virtual machine and VMkernel. # # - resetMethod: override for the type of reset to apply to a PCI device. # Bus reset and link reset prevent functions in a multi-function # device from being assigned to different virtual machines, or from # being assigned between the VMkernel and virtual machines. In # some devices it's possible to use PCI power management capability # D3->D0 transitions to reset the device. In the absence of the # override, the VMkernel decides the type of PCI reset to apply # based on the device's capabilities. The VMkernel prioritizes # function level reset (flr). # # Restrictions: # # - PCI SR-IOV physical and virtual functions (PFs/VFs) are not allowed # in the list below. Those must support function-level-reset and # must be shareable. # # Intel 82579LM Gig NIC can be reset with d3d0 8086 1502 d3d0 default # Intel 82598 10Gig cards can be reset with d3d0 8086 10b6 d3d0 default 8086 10c6 d3d0 default 8086 10c7 d3d0 default 8086 10c8 d3d0 default 8086 10dd d3d0 default # Broadcom 57710/57711/57712 10Gig cards are not shareable 14e4 164e default false 14e4 164f default false 14e4 1650 default false 14e4 1662 link false # Qlogic 8Gb FC card can not be shared 1077 2532 default false # LSILogic 1068 based SAS controllers 1000 0056 d3d0 default 1000 0058 d3d0 default # NVIDIA (FLR issue on Ampere and Hopper GPUs) 10de ffff bridge false # AMD FCH SATA Controller [AHCI mode] 1022 7901 d3d0 default # Intel Corporation Alder Lake-N [Intel Graphics] 8086 46d4 d3d0 default [root@localhost:~] [root@localhost:~] [root@localhost:~] esxcli system settings kernel set -s vga -v TRUE [root@localhost:~] [root@localhost:~] esxcli system settings kernel set -s vga -v FALSE [root@localhost:~] [root@localhost:~] [root@localhost:~] lspci -v | grep -i vga 0000:00:02.0 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] [root@localhost:~] [root@localhost:~] vsish -e get /hardware/pci/seg/0/bus/0/slot/02/func/0/maxNumVFs 7 [root@localhost:~] vsish -e set /hardware/pci/seg/0/bus/0/slot/02/func/0/enableVFs 7 [root@localhost:~] vsish -e get /hardware/pci/seg/0/bus/0/slot/02/func/0/maxNumVFs 7 [root@localhost:~] vsish -e get /hardware/pci/seg/0/bus/0/slot/02/func/0/currentNumVfs 7 [root@localhost:~] [root@localhost:~] kill -SIGHUP $(pidof vmkdevmgr) [root@localhost:~] [root@localhost:~] lspci -v | grep -i vga 0000:00:02.0 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.1 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.2 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.3 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.4 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.5 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.6 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] 0000:00:02.7 Display controller VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics] [root@localhost:~]
# 精简置备(thin) vmkfstools -i old.vmdk -d thin new.vmdk # 厚置备延迟置零(zeroed thick) vmkfstools -i old.vmdk -d zeroedthick new.vmdk # 厚置备置零(eager zeroed thick) vmkfstools -i old.vmdk -d eagerzeroedthick new.vmdk
=================
来源 https://www.cnblogs.com/nearer/articles/18269575
vmkfstools命令介绍
vmkfstools 是用于管理 VMFS 卷、存储设备和虚拟磁盘的 ESXi Shell 命令之一。可以使用 vmkfstools 命令执行很多存储操作。例如,可以在物理分区上创建和管理 VMFS 数据存储,或操作 VMFS 或 NFS 数据存储中存储的虚拟磁盘文件。
虚拟硬盘类型介绍
VMware 虚拟化平台中虚拟机硬盘有三种类型,它们分别是:厚置备延迟置零(zeroed thick)、厚置备置零(eager zeroed thick)和精简置备(thin)。
-
一、厚置备延迟置零(zeroed thick)
创建虚拟机时硬盘类型默认选择此种类型;创建虚拟机时为虚拟机硬盘分配的存储空间即是物理存储空间,但在分配的过程未将存储空间置零,仅当虚拟机存在写入数据时,再按量将存储空间置零,类似于快速格式化。 -
二、厚置备置零(eager zeroed thick)
创建虚拟机时为虚拟机硬盘分配的存储空间即是物理存储空间,并且在分配的过程将存储空间置零,类似于格式化。此类硬盘类型适用于I/O读写频繁的业务虚拟机,如数据库业务系统。 -
三、精简置备(thin)
创建虚拟机时为虚拟机硬盘分配的存储空间并不等于物理存储空间,虚拟机实际使用的存储空间才是它占用的物理存储空间。当虚拟机写入数据时,才为其分配物理存储空间及置零,待分配空间和置备完成后才能进行操作,这对于IO频繁造成性能会有所下降,但它的好处是节省了存储空间。
vmkfstools命令参数
- 基于ESXI6.7
OPTIONS FOR FILE SYSTEMS: | |
vmkfstools -C --createfs [vmfs5|vmfs6|vfat] | |
-S --setfsname fsName | |
-Y --unmapGranularity #[bBsSkKmMgGtT] | |
-O --unmapPriority <none|low|medium|high> | |
-Z --spanfs span-partition | |
-G --growfs grown-partition | |
deviceName | |
-P --queryfs -h --humanreadable | |
-T --upgradevmfs | |
vmfsPath | |
-y --reclaimBlocks vmfsPath [--reclaimBlocksUnit #blocks] | |
OPTIONS FOR VIRTUAL DISKS: | |
vmkfstools -c --createvirtualdisk #[bBsSkKmMgGtT] | |
-d --diskformat [zeroedthick | |
|thin | |
|eagerzeroedthick | |
] | |
-a --adaptertype [deprecated] | |
-W --objecttype [file|vsan|vvol|pmem|upit] | |
--policyFile <fileName> | |
-w --writezeros | |
-j --inflatedisk | |
-k --eagerzero | |
-K --punchzero | |
-U --deletevirtualdisk | |
-E --renamevirtualdisk srcDisk | |
-i --clonevirtualdisk srcDisk | |
-d --diskformat [zeroedthick | |
|thin | |
|eagerzeroedthick | |
|rdm:<device>|rdmp:<device> | |
|2gbsparse] | |
-W --object [file|vsan|vvol] | |
--policyFile <fileName> | |
-N --avoidnativeclone | |
-X --extendvirtualdisk #[bBsSkKmMgGtT] | |
[-d --diskformat eagerzeroedthick] | |
-M --migratevirtualdisk | |
-r --createrdm /vmfs/devices/disks/... | |
-q --queryrdm | |
-z --createrdmpassthru /vmfs/devices/disks/... | |
-v --verbose # | |
-g --geometry | |
-x --fix [check|repair] | |
-e --chainConsistent | |
-Q --objecttype name/value pair | |
--uniqueblocks childDisk | |
--dry-run [-K] | |
vmfsPath | |
OPTIONS FOR DEVICES: | |
-L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|readresv | |
] /vmfs/devices/disks/... | |
-B --breaklock /vmfs/devices/disks/... | |
OPTIONS FOR VMFS MODULE: | |
--traceConfig [0|1] | |
--dataTracing [0|1] | |
--traceSize <x> (MB) | |
vmkfstools -H --help |
参考实例
- 更改虚拟磁盘(vmdk)大小:
vmkfstools -X 40g converter-one.vmdk |
- 精简置备转换至厚置备置零:
vmkfstools --inflatedisk /vmfs/volumes/DatastoreName/VMName/VMName.vmdk |
- 厚置备延迟置零转换至厚置备置零:
vmkfstools --eagerzero /vmfs/volumes/DatastoreName/VMName/VMName.vmdk |
- 创建虚拟磁盘文件:
vmkfstools -C --createfs vmfs3 |
- 将虚拟磁盘文件A,克隆为精简置备虚拟磁盘文件B:
vmkfstools -i A.vmdk -d thin B.vmdk |
操作实例
- 将操作的虚拟硬盘文件归属虚拟机关机,同时将ESXI主机ssh开启
步骤:主机>操作>服务>开启安全Shell(ssh) - 通过ssh连接至ESXI主机
- 使用cd命令进入虚拟硬盘文件vmdk所属目录
参考示例:
cd /vmfs/volumes/datastore1/Server2016 |
- 使用ls查看文件/目录,确定操作文件
- 硬盘文件转换-精简置备
vmkfstools -i Server2016.vmdk -d thin Server2016_new.vmdk |
- 待进度完成至100%(可能在100%会等比较久),Server2016_new.vmdk为新的精简置备虚拟硬盘文件。
引用
https://docs.vmware.com/cn/VMware-vSphere/6.7/com.vmware.vsphere.storage.doc/GUID-A5D85C33-A510-4A3E-8FC7-93E6BA0A048F.html
https://www.yisu.com/zixun/520966.html
https://zhuanlan.zhihu.com/p/545288996