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制作启动盘的步骤:

  1. 下载Ventoy并安装到U盘。
  2. 将最新的ESXi 8.0镜像文件VMware-VMvisor-Installer-8.0U3b-24280767.x86_64.iso复制到U盘中。
  3. 通过Ventoy的多ISO功能,可以同时存储其他工具的ISO,方便后续使用。

关闭安全启动

    为了避免ESXi在控制台中出现安全启动相关的警告,需要在BIOS中关闭 安全启动(Secure Boot)。具体步骤如下:

  1. 进入BIOS:开机时按下 Del 或 F2 键进入BIOS设置界面。
  2. 导航至安全选项:找到 Security 或 Boot 选项卡。
  3. 关闭安全启动:将 Secure Boot 选项设置为 Disabled。
  4. 保存并退出:按提示保存设置并重启系统。

    关闭安全启动后,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

操作实例

  1. 将操作的虚拟硬盘文件归属虚拟机关机,同时将ESXI主机ssh开启
    步骤:主机>操作>服务>开启安全Shell(ssh)
  2. 通过ssh连接至ESXI主机
  3. 使用cd命令进入虚拟硬盘文件vmdk所属目录
    参考示例:
  cd /vmfs/volumes/datastore1/Server2016
  1. 使用ls查看文件/目录,确定操作文件

image

  1. 硬盘文件转换-精简置备
  vmkfstools -i Server2016.vmdk -d thin Server2016_new.vmdk
  1. 待进度完成至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

 

posted @ 2025-06-07 01:55  lsgxeva  阅读(1715)  评论(0)    收藏  举报