目录
NVIDIA&GRID vGPU软件-中文用户指南第一章、第二章内容请看NVIDIA&GRID vGPU软件-中文用户指南(上)_nvidia-uvm mps vgpu-CSDN博客
3.2 在Citrix Hypervisor上使用GPU透传&直通
3.2.1 通过XenCenter配置虚拟机进行GPU透传&直通
3.3 在Red Hat Enterprise Linux KVM或Ubuntu上配置使用GPU透传&直通
3.3.1 通过虚拟机管理器(virt-manager)配置虚拟机进行GPU透传
3.4 在Microsoft Windows Server上使用GPU透传
3.4.1 在Microsoft Windows Server上使用Hyper-V为虚拟机分配GPU
3.4.2 将GPU从运行Windows Server上的Hyper-V的虚拟机返回给主机操作系统
3.5 在VMware vSphere上使用GPU透传&直通模式
4.1 在Windows上安装NVIDIA vGPU软件图形驱动程序
4.2 在Linux上安装NVIDIA vGPU软件图形驱动程序
4.2.1 使用.run文件在Linux上安装NVIDIA vGPU软件图形驱动程序
4.2.3 在Red Hat发行版上从RPM包安装NVIDIA vGPU软件图形驱动程序
4.2.5 禁用Red Hat Enterprise Linux的Wayland显示服务器协议
5.6 验证已许可客户端的NVIDIA vGPU软件许可证状态
NVIDIA&GRID vGPU软件-中文用户指南第一章、第二章内容请看NVIDIA&GRID vGPU软件-中文用户指南(上)_nvidia-uvm mps vgpu-CSDN博客
第三章 使用GPU透传&直通
GPU透传&直通用于直接将整个物理GPU分配给一个虚拟机,绕过NVIDIA虚拟GPU管理器。在这种操作模式下,GPU仅由运行在其分配的虚拟机中的NVIDIA驱动程序独占访问;GPU不会在虚拟机之间共享。
在透传&直通模式下,基于Maxwell架构之后的NVIDIA GPU架构支持纠错码(ECC)。
GPU透传&直通可以与NVIDIA vGPU一起在服务器平台上使用,但有一些限制:
- 一个物理GPU可以承载NVIDIA vGPU,或者可以用于透传,但不能同时进行。一些虚拟化程序,例如VMware vSphere ESXi,需要主机重新启动才能将GPU从透传&直通模式更改为vGPU模式。
- 一个虚拟机不能同时配置为vGPU和GPU透传&直通。
- 传递给虚拟机的物理GPU的性能只能从虚拟机内部监视。这样的GPU无法通过通过Hypervisor操作的工具进行监视,例如XenCenter或nvidia-smi(请参阅GPU性能监视)。
- 您的服务器平台上必须启用以下BIOS设置:
- VT-D/IOMMU
- 高级选项中的SR-IOV
- 通过NVLink直接连接的所有GPU必须分配给同一个虚拟机。
您可以将多个物理GPU分配给一个虚拟机。您可以分配给一个虚拟机的物理GPU的最大数量取决于您选择的虚拟化程序支持的每个虚拟机的最大PCIe透传设备数量。有关更多信息,请参考您的虚拟化程序的文档,例如:
- Citrix Hypervisor:配置限制
- Red Hat Enterprise Linux:
- Red Hat Enterprise Linux 9发布:将GPU分配给虚拟机,已知问题
- Red Hat Enterprise Linux 8发布:将GPU分配给虚拟机,已知问题
- Red Hat Enterprise Linux 7发布:GPU PCI设备分配
- Red Hat Virtualization(RHV):设备分配要求
- VMware vSphere:vSphere 7.0配置限制
注意:如果您打算为服务器平台上的所有GPU配置透传&直通,您无需安装NVIDIA虚拟GPU管理器。
3.1 物理GPU的显示分辨率
物理GPU支持的显示分辨率取决于NVIDIA GPU架构和应用于GPU的NVIDIA vGPU软件许可证。vWS物理GPU分辨率 获得vWS许可证的GPU支持的最大组合分辨率基于可用像素的数量,这由NVIDIA GPU架构确定。对于这些GPU,您可以选择使用少量高分辨率显示器或较多数量的低分辨率显示器。 以下表格列出了每个支持的显示分辨率下每个GPU支持的显示器的最大数量,用于所有显示器具有相同分辨率的配置。
NVIDIA GPU 体系结构 | 可用像素 | 显示分辨率 | 显示每 GPU |
Pascal and later | 66355200 | 7680×4320 | 2 |
5120×2880 或更低 | 4 | ||
Maxwell | 35389440 | 5120×2880 | 2 |
4096×2160或更低 | 4 |
下表提供了混合显示的配置示例建议。
NVIDIA GPU 体系结构 | 可用像素 | 基础可用像素 | 最大显示器数量 | 混合配置显示示例 |
Pascal and later | 66355200 | 2 7680×4320 显示器 | 4 | 1 7680×4320 显示器+ 2 5120×2880 显示器 |
Maxwell | 35389440 | 4 4096×2160 显示器 | 4 | 1 5120×2880 显示器+ 2 4096×2160 显示器 |
注意:即使显示器的组合分辨率小于GPU可用像素的数量,您也不能使用超过四个显示器。例如,即使显示器的组合分辨率(44236800)小于GPU可用像素的数量(66355200),也不能在基于NVIDIA Pascal架构的GPU上使用五个4096×2160显示器。 vApps或vCS物理GPU分辨率 获得vApps或vCS许可证的GPU支持具有固定最大分辨率的单个显示器。
最大分辨率取决于以下因素:
- NVIDIA GPU架构
- 应用于GPU的NVIDIA vGPU软件许可证
- 运行在分配给GPU的系统上的操作系统
License | NVIDIA GPU 体系结构 | 操作系统 | 最大显示建议 | 每GPU 显示 |
vApps | Pascal或往后 | Linux | 2560×1600 | 1 |
Pascal或往后 | Windows | 1280×1024 | 1 | |
Maxwell | Windows and Linux | 2560×1600 | 1 | |
vCS | Pascal或往后 | Linux | 4096×2160 | 1 |
3.2 在Citrix Hypervisor上使用GPU透传&直通
您可以通过使用XenCenter或使用xe命令在Citrix Hypervisor上配置GPU进行透传。当在服务器平台上与NVIDIA vGPU一起使用GPU透传时,会有以下额外限制:
- 透传到虚拟机的物理GPU的性能无法通过XenCenter进行监控。
- dom0中的nvidia-smi不再能够访问GPU。
- 透传的GPU不会通过XenCenter的VM控制台选项卡提供控制台输出。请直接通过远程图形连接进入虚拟机以访问虚拟机的操作系统。
3.2.1 通过XenCenter配置虚拟机进行GPU透传&直通
在虚拟机的属性中选择“整个GPU透传”选项作为GPU类型:
图17. 使用XenCenter配置透传GPU
在为Citrix Hypervisor虚拟机配置GPU透传后,在虚拟机的客户操作系统中安装NVIDIA图形驱动程序,方法如在安装NVIDIA vGPU软件图形驱动程序中所述。
3.2.2 使用xe配置GPU直通虚拟机
创建一个类型为passthrough vgpu的vgpu对象:
[root@xenserver ~]# xe vgpu-type-list model-name="passthrough"
uuid ( RO) : fa50b0f0-9705-6c59-689e-ea62a3d35237
vendor-name ( RO):
model-name ( RO): passthrough
framebuffer-size ( RO): 0
[root@xenserver ~]# xe vgpu-create vm-uuid=753e77a9-e10d-7679-f674-65c078abb2eb vgpu-typeuuid=fa50b0f0-9705-6c59-689e-ea62a3d35237 gpu-group-uuid=585877ef-5a6c-66af-fc56-7bd525bdc2f66aa530ec-8f27-86bd-b8e4-fe4fde8f08f9
[root@xenserver ~]#
注意:不要使用传统的other-config:pci参数设置来分配透传GPU。这种机制不支持与XenCenter UI和xe vgpu机制一起使用,尝试使用它可能会导致未定义的结果。
在为Citrix Hypervisor虚拟机配置GPU透传&直通后,在虚拟机的客户操作系统中安装NVIDIA图形驱动程序,方法如在安装NVIDIA vGPU软件图形驱动程序中所述。
3.3 在Red Hat Enterprise Linux KVM或Ubuntu上配置使用GPU透传&直通
您可以通过以下任一工具在Red Hat Enterprise Linux基于内核的虚拟机(KVM)或Ubuntu上配置GPU进行透传&直通:
- 虚拟机管理器(virt-manager)图形工具
- virsh命令
- QEMU命令行
在为Red Hat Enterprise Linux KVM或Ubuntu配置GPU透传之前,请确保满足以下先决条件:
- 已安装Red Hat Enterprise Linux KVM或Ubuntu。
- 已创建虚拟磁盘。 注意:请勿在/root中创建任何虚拟磁盘。
- 已创建虚拟机。
3.3.1 通过虚拟机管理器(virt-manager)配置虚拟机进行GPU透传
有关使用虚拟机管理器的更多信息,请参阅Red Hat Enterprise Linux 7文档中的以下主题:
- 使用虚拟机管理器(virt-manager)管理客户机
- 启动virt-manager
- 使用virt-manager分配PCI设备
1、启动virt-manager。
2、在virt-manager主窗口中,选择您想要配置为透传的虚拟机。
3、从“编辑”菜单中选择“虚拟机详细信息”。
4、在打开的虚拟机硬件信息窗口中,点击“添加硬件”。
5、在打开的“添加新虚拟硬件”对话框中,在左侧的硬件列表中选择“PCI主机设备”。
6、从出现的主机设备列表中,选择您想要分配给虚拟机的GPU,然后点击“完成”。
如果您想从已分配的虚拟机中移除GPU,请在虚拟机硬件信息窗口中选择该GPU并点击“移除”。
在为虚拟机配置GPU透传后,在虚拟机的客户操作系统中安装NVIDIA图形驱动程序,方法如在安装NVIDIA vGPU软件图形驱动程序中所述。
3.3.2 使用virsh配置虚拟机进行GPU透传
有关使用virsh的更多信息,请参阅Red Hat Enterprise Linux 7文档中的以下主题:
- 使用virsh管理虚拟机
- 使用virsh分配PCI设备
1、确保vfio-pci模块已加载。
# lsmod | grep vfio-pci
2、获取要以透传模式分配给虚拟机的GPU的PCI设备总线/设备/功能(BDF)。
# lspci | grep NVIDIA
在此示例中列出的NVIDIA GPU具有PCI设备BDF 85:00.0和86:00.0。
# lspci | grep NVIDIA
85:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev
a1)
86:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev
a1)
3、从GPU的PCI设备BDF获取GPU的完整标识符。 转换后的BDF GPU的PCI设备BDF,
# virsh nodedev-list --cap pci| grep transformed-bdf
transformed-bdf
例如,85_00_0,其中冒号和句点被下划线替换。
此示例获取具有PCI设备BDF 85:00.0的GPU的完整标识符。
# virsh nodedev-list --cap pci| grep 85_00_0
pci_0000_85_00_0
4、获取GPU的域、总线、插槽和功能。
virsh nodedev-dumpxml full-identifier| egrep 'domain|bus|slot|function'
完整标识符full-identifier
您在上一步中获取的GPU的完整标识符,例如,pci_0000_85_00_0。
此示例获取具有PCI设备BDF 85:00.0的GPU的domain域、bus总线、slot插槽和function功能。
# virsh nodedev-dumpxml pci_0000_85_00_0| egrep 'domain|bus|slot|function'
<domain>0x0000</domain>
<bus>0x85</bus>
<slot>0x00</slot>
<function>0x0</function>
<address domain='0x0000' bus='0x85' slot='0x00' function='0x0'/>
5、在virsh中打开要将GPU分配给的虚拟机的XML文件进行编辑。
# virsh edit vm-name
6、在source元素内添加一个地址元素形式的设备条目,以将GPU分配给客户VM。
您还可以在source元素之后添加第二个地址元素,以在客户操作系统中设置GPU的固定PCI设备BDF。
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='domain' bus='bus' slot='slot' function='function'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</hostdev>
domain域、bus总线、slot插槽和function功能 是您在上一步中获取的GPU的域、总线、插槽和功能。
此示例为具有PCI设备BDF 85:00.0的GPU添加设备条目,并在客户操作系统中固定GPU的BDF。
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x85' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</hostdev>
7、启动已分配GPU的虚拟机。
# virsh start vm-name
在为GPU透传配置虚拟机后,在虚拟机上的客户操作系统中安装NVIDIA图形驱动程序,如《安装NVIDIA vGPU软件图形驱动程序》中所述。
3.3.3 使用QEMU命令行配置虚拟机进行GPU透传
1、获取要以透传模式分配给虚拟机的GPU的PCI设备总线/设备/功能(BDF)。
# lspci | grep NVIDIA
在此示例中列出的NVIDIA GPU具有PCI设备BDF 85:00.0和86:00.0。
# lspci | grep NVIDIA
85:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev
a1)
86:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev
a1)
将以下选项添加到QEMU命令行:
-device vfio-pci,host=bdf
bdf
要将GPU分配给虚拟机的透传模式的PCI设备BDF,例如,85:00.0。
此示例将具有PCI设备BDF 85:00.0的GPU分配给虚拟机的透传模式。
-device vfio-pci,host=85:00.0
在为GPU透传配置虚拟机后,在虚拟机上的客户操作系统中安装NVIDIA图形驱动程序,如《安装NVIDIA vGPU软件图形驱动程序》中所述。
3.3.4 为透传模式准备配置为vGPU的GPU
物理GPU的使用模式决定了GPU绑定的Linux内核模块。如果您想切换GPU的使用模式,必须将GPU从当前的内核模块解绑,并将其绑定到新模式的内核模块。将GPU绑定到正确的内核模块后,您可以将其配置为透传模式。
当在Red Hat Enterprise Linux KVM或Ubuntu主机上安装虚拟GPU管理器时,主机上的物理GPU会绑定到nvidia内核模块。绑定到nvidia内核模块的物理GPU只能用于vGPU。要使GPU能够透传到虚拟机,必须将GPU从nvidia内核模块解绑,并绑定到vfio-pci内核模块。
在开始之前,请确保您已获取准备用于透传模式的GPU的域、总线、插槽和功能。有关说明,请参见在KVM虚拟机管理程序上获取GPU的BDF和域。
1、如果您使用的是支持SR-IOV的GPU,例如基于NVIDIA Ampere架构的GPU,请在sysfs文件系统中禁用该GPU的虚拟功能。如果您的GPU不支持SR-IOV,请跳过此步骤。
注意:在执行此步骤之前,请确保没有其他进程正在使用该GPU,例如CUDA应用程序、监控应用程序或nvidia-smi命令。
请使用NVIDIA vGPU软件提供的自定义脚本sriov-manage来实现此目的。
# /usr/lib/nvidia/sriov-manage -d domain:bus:slot.function
domain域 bus总线 slot插槽 function功能
GPU的域、总线、插槽和功能,不带0x前缀。
此示例禁用域为00、总线为06、插槽为0000、功能为0的GPU的虚拟功能。
# /usr/lib/nvidia/sriov-manage -d 00:06:0000.0
2、通过在主机上的NVIDIA GPU上运行带有-k选项的lspci命令,确定GPU绑定的内核模块。
# lspci -d 10de: -k
“正在使用的内核驱动程序”字段指示GPU绑定的内核模块。 以下示例显示,具有BDF 06:00.0的NVIDIA Tesla M60 GPU绑定到nvidia内核模块,并用于vGPU。
06:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev
a1)
Subsystem: NVIDIA Corporation Device 115e
Kernel driver in use: nvidia
3、为确保没有客户端正在使用GPU,获取GPU的解绑锁。
a). 确保没有虚拟机正在运行,该虚拟机上分配了物理GPU上的vGPU,并且主机上没有进程正在使用该GPU。 在主机上使用GPU的进程包括nvidia-smi命令和所有基于NVIDIA管理库(NVML)的进程。
b). 切换到表示GPU的proc文件系统中的目录。
# cd /proc/driver/nvidia/gpus/domain\:bus\:slot.function
此示例切换到表示具有域0000和PCI设备BDF 06:00.0的GPU的proc文件系统中的目录。
# cd /proc/driver/nvidia/gpus/0000\:06\:00.0
c). 在该目录中将值1写入unbindLock文件。
# echo 1 > unbindLock
d). 确认unbindLock文件现在包含值1。
# cat unbindLock
1
如果unbindLock文件包含值0,则无法获取解绑锁,因为有进程或客户端正在使用GPU。
4、将GPU从nvidia内核模块解绑。
a). 切换到表示nvidia内核模块的sysfs目录。
# cd /sys/bus/pci/drivers/nvidia
b). 将GPU的域、总线、插槽和功能写入该目录中的unbind文件。
# echo domain:bus:slot.function > unbind
此示例将域0000和PCI设备BDF 06:00.0的GPU的域、总线、插槽和功能写入。
# echo 0000:06:00.0 > unbind
5、将GPU绑定到vfio-pci内核模块。
a). 切换到包含物理GPU的PCI设备信息的sysfs目录。
# cd /sys/bus/pci/devices/domain\:bus\:slot.function
此示例切换到包含域0000和PCI设备BDF 06:00.0的GPU的PCI设备信息的sysfs目录。
# cd /sys/bus/pci/devices/0000\:06\:00.0
b). 将内核模块名称vfio-pci写入该目录中的driver_override文件。
# echo vfio-pci > driver_override
c). 切换到表示nvidia内核模块的sysfs目录。
# cd /sys/bus/pci/drivers/vfio-pci
d). 将GPU的域、总线、插槽和功能写入该目录中的bind文件。
# echo domain:bus:slot.function > bind
此示例将域0000和PCI设备BDF 06:00.0的GPU的域、总线、插槽和功能写入。
# echo 0000:06:00.0 > bind
e). 切换回包含物理GPU的PCI设备信息的sysfs目录。
# cd /sys/bus/pci/devices/domain\:bus\:slot.function
f). 清空该目录中driver_override文件的内容。
# echo > driver_override
现在,您可以按照《在Red Hat Enterprise Linux KVM或Ubuntu上使用GPU透传》中的说明配置GPU以用于透传模式。
3.4 在Microsoft Windows Server上使用GPU透传
在支持Hyper-V角色的Microsoft Windows Server版本上,您可以使用离散设备分配(DDA)使虚拟机直接访问GPU。
3.4.1 在Microsoft Windows Server上使用Hyper-V为虚拟机分配GPU
请在Windows PowerShell中执行此任务。如果您不知道要分配给虚拟机的GPU的位置路径,请使用设备管理器获取该路径。
如果您使用的是主动冷却的NVIDIA Quadro显卡,例如RTX 8000或RTX 6000,则还必须透传显卡上的音频设备。
确保满足以下先决条件:
- 已在您的服务器平台上安装并配置Windows Server Desktop Experience和Hyper-V角色,并创建了虚拟机。 有关说明,请参阅Microsoft技术文档网站上的以下文章:
- 安装带桌面体验的服务器
- 在Windows Server上安装Hyper-V角色
- 为Hyper-V虚拟机创建虚拟交换机
- 在Hyper-V中创建虚拟机
- 虚拟机中已安装客户操作系统。
- 虚拟机已关闭。
1、获取要分配给虚拟机的GPU的位置路径。 a). 在设备管理器中,右键单击GPU,然后从弹出菜单中选择“属性”。 b). 在打开的属性窗口中,单击“详细信息”选项卡,并在“属性”下拉列表中选择“位置路径”。 示例位置路径如下:
PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000)
2、如果您使用的是主动冷却的NVIDIA Quadro显卡,请获取显卡上音频设备的位置路径并禁用该设备。
a). 在设备管理器中,从“查看”菜单中选择“按连接查看设备”。
b). 导航至 ACPI x64-based PC > Microsoft ACPI-Compliant System > PCI Express Root Complex > PCI-to-PCI Bridge。
c). 右键单击“高清音频控制器”,然后从弹出菜单中选择“属性”。
d). 在打开的属性窗口中,单击“详细信息”选项卡,并在“属性”下拉列表中选择“位置路径”。
e). 再次右键单击“高清音频控制器”,然后从弹出菜单中选择“禁用设备”。
3、从主机中卸载GPU以及(如果存在)音频设备,使其对主机不可用,以便仅供虚拟机使用。
对于每个要卸载的设备,输入以下命令:
Dismount-VMHostAssignableDevice -LocationPath gpu-device-location -force
gpu-device-location
您之前获取的GPU或音频设备的位置路径。
此示例卸载位置路径为 PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000) 的GPU。
Dismount-VMHostAssignableDevice -LocationPath
"PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000)" -force
4、将您在上一步中卸载的GPU和(如果存在)音频设备分配给虚拟机。
对于每个要分配的设备,输入以下命令:
Add-VMAssignableDevice -LocationPath gpu-device-location -VMName vm-name
vm-name
您要将GPU或音频设备附加到的虚拟机的名称。
注意:您只能将透传GPU及其音频设备(如果存在)同时分配给一个虚拟机。
此示例将位置路径为 PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000) 的GPU分配给虚拟机VM1。
Add-VMAssignableDevice -LocationPath
"PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000)" -VMName VM1
5、启动虚拟机。 客户操作系统现在应该能够使用GPU和(如果存在)音频设备。
在将GPU分配给虚拟机后,按照《安装NVIDIA vGPU软件图形驱动程序》中所述,在虚拟机的客户操作系统中安装NVIDIA图形驱动程序。
3.4.2 将GPU从运行Windows Server上的Hyper-V的虚拟机返回给主机操作系统
在Windows PowerShell中执行此任务。如果您正在使用主动冷却的NVIDIA Quadro显卡,如RTX 8000或RTX 6000,则还必须将显卡上的音频设备返回。
1、列出当前分配给虚拟机(VM)的GPU和(如果存在)音频设备。
Get-VMAssignableDevice -VMName vm-name
2、关闭已分配GPU和任何音频设备的VM。
3、从已分配给它们的VM中移除GPU和(如果存在)音频设备。
对于每个要移除的设备,请输入以下命令:
Remove-VMAssignableDevice –LocationPath gpu-device-location -VMName vm-name
gpu-device-location 您之前获取的GPU或音频设备的位置路径。
此示例从VM VM1 中移除位置路径为 PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000) 的GPU。
Remove-VMAssignableDevice –LocationPath
"PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000)" -VMName VM1
在从VM中移除GPU及(如果存在)其音频设备后,它们对主机操作系统(OS)不可用,直到您在主机OS上重新安装它们。
4、在主机OS上重新安装GPU和(如果存在)其音频设备。 对于每个要重新安装的设备,请输入以下命令:
Mount-VMHostAssignableDevice –LocationPath gpu-device-location
此示例在主机OS上重新安装位置路径为 PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000) 的GPU。
Mount-VMHostAssignableDevice -LocationPath
"PCIROOT(80)#PCI(0200)#PCI(0000)#PCI(1000)#PCI(0000)"
主机OS现在应该能够使用GPU及(如果存在)其音频设备。
3.5 在VMware vSphere上使用GPU透传&直通模式
在VMware vSphere上,您可以使用虚拟专用图形加速(vDGA)来使虚拟机直接访问GPU。vDGA是VMware vSphere的一个功能,它将ESXi主机上的单个物理GPU专用于单个虚拟机。
在配置支持vDGA的vSphere VM之前,请确保满足以下先决条件:
- VM和ESXi主机已按照VMware Horizon文档中的“为vDGA做准备”部分进行配置。
- VM已关闭。
- 打开vCenter Web UI。
- 在vCenter Web UI中,右键单击ESXi主机,选择“设置”。
- 从“硬件”菜单中选择“PCI设备”,然后点击编辑图标。
- 选择所有NVIDIA GPU,然后点击“确定”。
- 重新启动ESXi主机。
- ESXi主机启动后,右键单击VM,选择“编辑设置”。
- 从“新设备”菜单中选择“PCI设备”,然后点击“添加”。
- 在打开的页面中,从“新设备”下拉列表中选择GPU。
- 点击“保留所有内存”,然后点击“确定”。
- 启动VM。
有关vDGA的更多信息,请参阅VMware Horizon文档中的以下主题:
- 配置桌面的3D渲染
- 为vDGA配置RHEL 6
在配置支持vDGA的vSphere VM后,在VM上的客户操作系统中按照《安装NVIDIA vGPU软件图形驱动程序》中的说明安装NVIDIA图形驱动程序。
第四章、安装NVIDIA vGPU软件图形驱动程序
安装NVIDIA vGPU软件图形驱动程序的过程取决于您使用的操作系统。然而,对于任何操作系统,在配置了vGPU的虚拟机中安装驱动程序的过程与在运行透传GPU的虚拟机或在裸金属部署的物理主机上安装驱动程序的过程是相同的。安装完NVIDIA vGPU软件图形驱动程序后,您可以为正在使用的任何NVIDIA vGPU软件许可产品获取许可。
4.1 在Windows上安装NVIDIA vGPU软件图形驱动程序
在虚拟机中安装:在在虚拟化程序上创建Windows虚拟机并启动虚拟机后,虚拟机应该以VGA模式在800×600分辨率下启动到标准Windows桌面。您可以使用Windows屏幕分辨率控制面板将分辨率增加到其他标准分辨率,但要完全启用GPU操作,必须安装NVIDIA vGPU软件图形驱动程序。Windows客户虚拟机支持所有NVIDIA vGPU类型,即:Q系列、C系列、B系列和A系列NVIDIA vGPU类型。 在裸金属上安装:在安装NVIDIA vGPU软件图形驱动程序之前,物理主机启动时,启动和主显示由内置图形适配器处理。要安装NVIDIA vGPU软件图形驱动程序,请通过通过内置图形适配器连接的显示器访问主机上的Windows桌面。 在虚拟机和裸金属上安装驱动程序的过程是相同的。
1、将NVIDIA Windows驱动程序包复制到要安装驱动程序的虚拟机或物理主机。
2、执行该程序以解压并运行驱动程序安装程序。
![](https://i-blog.csdnimg.cn/direct/f7abdb47c6134437821fd60b93e4a517.png)
3、点击通过许可协议。
4、选择快速安装并点击下一步。 驱动程序安装完成后,安装程序可能会提示您重新启动平台。
5、如果提示重新启动平台,请执行以下操作之一:
‣ 选择立即重新启动以重新启动虚拟机或物理主机。
‣ 在准备好时退出安装程序并重新启动虚拟机或物理主机。
虚拟机或物理主机重新启动后,将启动到Windows桌面。
6、验证NVIDIA驱动程序是否正在运行。
a). 在桌面上右键单击。
b). 从打开的菜单中选择NVIDIA控制面板。
c). 在NVIDIA控制面板中,从帮助菜单中选择系统信息。 NVIDIA控制面板会报告正在使用的vGPU或物理GPU、其功能以及加载的NVIDIA驱动程序版本。
![](https://i-blog.csdnimg.cn/direct/f39b92b36301438da0ee265457264d19.png)
在虚拟机中安装:安装完NVIDIA vGPU软件图形驱动程序后,您可以为正在使用的任何NVIDIA vGPU软件许可产品获取许可。有关说明,请参阅虚拟GPU客户端许可用户指南。
注意:在此版本的NVIDIA vGPU软件中,Windows的图形驱动程序以符合DCH标准的软件包形式分发。对于符合DCH标准的软件包,用于许可设置的Windows注册表键与非DCH兼容的驱动程序软件包的键不同。如果您正在从以前已许可的非DCH兼容驱动程序软件包升级的虚拟机中进行升级,您必须重新配置虚拟机的许可设置。现有的许可设置不会传播到符合DCH标准软件包的新Windows注册表键。
在裸金属上安装:在安装完NVIDIA vGPU软件图形驱动程序后,请按照裸金属部署中的说明完成裸金属部署。
4.2 在Linux上安装NVIDIA vGPU软件图形驱动程序
NVIDIA vGPU软件图形驱动程序在Linux上以.run文件的形式分发,可以在所有支持的Linux发行版上安装。该驱动程序还以Debian软件包的形式分发给Ubuntu发行版,并以RPM软件包的形式分发给Red Hat发行版。
在虚拟机中安装:在虚拟化程序上创建Linux虚拟机并启动虚拟机后,在虚拟机中安装NVIDIA vGPU软件图形驱动程序,以完全启用GPU操作。自15.1版本起:Linux客户虚拟机支持所有NVIDIA vGPU类型,即:Q系列、C系列、B系列和A系列NVIDIA vGPU类型。仅15.0版本:Linux客户虚拟机仅支持Q系列、C系列和B系列NVIDIA vGPU类型,不支持A系列NVIDIA vGPU类型。
在裸金属上安装:在安装NVIDIA vGPU软件图形驱动程序之前,如果物理主机已经启动,vesa Xorg驱动程序将启动X服务器。如果主机连接了主要显示设备,请使用该设备访问桌面。否则,请使用安全外壳(SSH)从远程主机登录到主机。如果存在Nouveau驱动程序,请在安装NVIDIA vGPU软件图形驱动程序之前禁用它。有关说明,请参阅禁用NVIDIA显卡的Nouveau驱动程序。
在虚拟机和裸金属上安装驱动程序的过程是相同的。确保禁用NVIDIA直接渲染管理器内核模式设置(DRM KMS)。默认情况下,DRM KMS是禁用的。但是,如果已启用,请从内核命令行选项中移除nvidia-drm.modeset=1。如果您使用的Linux操作系统默认启用了Wayland显示服务器协议,请按照禁用Red Hat Enterprise Linux的Wayland显示服务器协议中的说明进行禁用。
在Linux上安装NVIDIA vGPU软件图形驱动程序的方法取决于您安装驱动程序的发行版格式。有关详细说明,请参阅:
‣ 从.run文件在Linux上安装NVIDIA vGPU软件图形驱动程序
‣ 从Debian软件包在Ubuntu上安装NVIDIA vGPU软件图形驱动程序
‣ 从RPM软件包在Red Hat发行版上安装NVIDIA vGPU软件图形驱动程序
在虚拟机中安装:安装完NVIDIA vGPU软件图形驱动程序后,您可以为正在使用的任何NVIDIA vGPU软件许可产品获取许可。有关说明,请参阅虚拟GPU客户端许可用户指南。
在裸金属上安装:安装完NVIDIA vGPU软件图形驱动程序后,请按照裸金属部署中的说明完成裸金属部署。
4.2.1 使用.run文件在Linux上安装NVIDIA vGPU软件图形驱动程序
您可以使用.run文件在任何支持的Linux发行版上安装NVIDIA vGPU软件图形驱动程序。从.run文件安装Linux的NVIDIA vGPU软件图形驱动程序需要以下条件:
编译器工具链
内核头文件 如果在虚拟机或物理主机上先前已从Debian包或RPM包安装了驱动程序,请在从.run文件安装驱动程序之前卸载该驱动程序。如果启用了动态内核模块支持(DKMS),请确保已安装dkms软件包。
1、将NVIDIA vGPU软件Linux驱动程序包(例如NVIDIALinux_x86_64-525.125.06-grid.run)复制到要安装驱动程序的虚拟机或物理主机上。
2、在尝试运行驱动程序安装程序之前,请退出X服务器并终止所有OpenGL应用程序。
在Red Hat Enterprise Linux和CentOS系统上,通过转换到运行级别3退出X服务器:
[nvidia@localhost ~]$ sudo init 3
在Ubuntu平台上,请执行以下操作:
a). 切换到控制台登录提示符。
如果您可以访问终端的功能键,请按下CTRL-ALT-F1。
如果您通过VNC或Web浏览器访问虚拟机或物理主机,并且无法访问终端的功能键,请以root身份运行操作系统的chvt命令。
[nvidia@localhost ~]$ sudo chvt 3
b). 登录并关闭显示管理器:
对于Ubuntu 18及更高版本,请停止gdm服务。
[nvidia@localhost ~]$ sudo service gdm stop
对于早于Ubuntu 18的版本,请停止lightdm服务。
[nvidia@localhost ~]$ sudo service lightdm stop
3、在控制台shell中以root用户身份运行驱动程序安装程序。
sudo sh ./NVIDIA-Linux_x86_64-525.125.06-grid.run
如果启用了DKMS,请设置-dkms选项。此选项要求安装dkms软件包。
sudo sh ./NVIDIA-Linux_x86_64-525.125.06-grid.run -dkms
在某些情况下,安装程序可能无法检测到已安装的内核头文件和源代码。在这种情况下,请重新运行安装程序,并使用--kernel-source-path选项指定内核源路径。
sudo sh ./NVIDIA-Linux_x86_64-525.125.06-grid.run \
–kernel-source-path=/usr/src/kernels/3.10.0-229.11.1.el7.x86_64
4、在提示时,接受更新X配置文件(xorg.conf)的选项。
5、安装完成后,选择“确定”以退出安装程序。
6、验证NVIDIA驱动程序是否正常运行。
a). 重启系统并登录。
b). 运行nvidia-settings。
[nvidia@localhost ~]$ nvidia-settings
NVIDIA X服务器设置对话框将打开,显示NVIDIA驱动程序正在正常运行。
4.2.2 在Ubuntu上从Debian包安装NVIDIA vGPU软件图形驱动程序
NVIDIA vGPU软件图形驱动程序在Ubuntu上以Debian包文件的形式分发。
此任务需要sudo权限。
1、将NVIDIA vGPU软件Linux驱动程序包(例如nvidia-linuxgrid-525_525.125.06_amd64.deb)复制到您要安装驱动程序的虚拟机中。
2、以具有sudo权限的用户身份登录到虚拟机。
3、打开命令行终端并切换到包含NVIDIA vGPU软件Linux驱动程序包的目录。
4、在命令行终端中运行命令以安装该包。
$ sudo apt-get install ./nvidia-linux-grid-525_525.125.06_amd64.deb
5、验证NVIDIA驱动程序是否正常运行。
a). 重启系统并登录。
b). 系统重启后,确认您可以在nvidia-smi命令的输出中看到您的NVIDIA vGPU设备。
$ nvidia-smi
4.2.3 在Red Hat发行版上从RPM包安装NVIDIA vGPU软件图形驱动程序
NVIDIA vGPU软件图形驱动程序在Red Hat发行版上以RPM包文件的形式分发。
此任务需要root用户权限。
1、将NVIDIA vGPU软件Linux驱动程序包(例如nvidia-linuxgrid-525_525.125.06_amd64.rpm)复制到您要安装驱动程序的虚拟机中。
2、以具有root用户权限的用户身份登录到虚拟机。
3、打开命令行终端并切换到包含NVIDIA vGPU软件Linux驱动程序包的目录。
4、在命令行终端中运行命令以安装该包。
$ rpm -iv ./nvidia-linux-grid-525_525.125.06_amd64.rpm
验证NVIDIA驱动程序是否正常运行。
a). 重启系统并登录。
b). 系统重启后,确认您可以在nvidia-smi命令的输出中看到您的NVIDIA vGPU设备。
$ nvidia-smi
4.2.4 禁用NVIDIA显卡的Nouveau驱动程序
如果存在NVIDIA显卡的Nouveau驱动程序,请在安装NVIDIA vGPU软件图形驱动程序之前禁用它。
注意:如果您使用的是SUSE Linux Enterprise Server,可以跳过此任务,因为SUSE Linux Enterprise Server中不存在Nouveau驱动程序。
运行以下命令,如果命令输出任何内容,则表示Nouveau驱动程序存在,必须禁用它。
1、创建文件/etc/modprobe.d/blacklist-nouveau.conf,内容如下:
blacklist nouveau
options nouveau modeset=0
2、重新生成内核初始RAM文件系统(initramfs)。
用于重新生成内核initramfs的命令取决于您使用的Linux发行版。
Linux Distribution Command
CentOS $ sudo dracut --force
Debian $ sudo update-initramfs -u
Red Hat Enterprise Linux $ sudo dracut --force
Ubuntu $ sudo update-initramfs -u
3、重启主机或虚拟机。
4.2.5 禁用Red Hat Enterprise Linux的Wayland显示服务器协议
从Red Hat Enterprise Linux Desktop 8.0开始,Wayland显示服务器协议在支持的GPU和图形驱动程序配置中默认使用。然而,NVIDIA vGPU软件图形驱动程序需要X Window系统。在安装驱动程序之前,您必须禁用Wayland显示服务器协议,以恢复到X Window系统。
请在运行Red Hat Enterprise Linux Desktop的主机或虚拟机上执行此任务。
此任务需要管理员访问权限。
1、在一个纯文本编辑器中,编辑文件/etc/gdm/custom.conf,并取消选项WaylandEnable=false的注释。
2、将更改保存到/etc/gdm/custom.conf。
3、重启主机或虚拟机。
4.2.6 禁用GSP固件
某些GPU包括GPU系统处理器(GSP),可用于卸载GPU初始化和管理任务。在Linux上的GPU直通和裸机部署中,GSP仅支持vCS。如果您在Linux上的GPU直通或裸机部署中使用其他任何产品,则必须禁用GSP固件。
注意:对于Linux上的NVIDIA vGPU部署和所有Windows上的NVIDIA vGPU软件部署,请省略此任务。
自15.1版本起:GSP固件在基于NVIDIA Ada Lovelace GPU架构的GPU上与NVIDIA vGPU部署兼容。对于基于早期GPU架构的GPU上的Linux NVIDIA vGPU部署和所有Windows上的NVIDIA vGPU软件部署,GSP也不受支持,但GSP固件已被禁用。
15.0版本仅适用:对于这些部署,GSP也不受支持,但GSP固件已被禁用。
对于每个NVIDIA vGPU软件产品,以下表格列出了在可以启用GSP固件的部署中是否支持GSP。该表还总结了当虚拟机或主机请求许可证时,NVIDIA vGPU软件在启用GSP固件时的行为。可以启用GSP固件的部署是Linux上的GPU直通和裸机部署。
产品 | GSP | 许可证要求 | 错误消息 |
vCS | 支持 | 允许 | 不适用 |
vApps | 不支持 | 锁定 | 打印 |
vWS | 不支持 | 锁定 | 打印 |
当许可证请求被阻止时,以下错误消息会被写入许可证事件日志文件,该文件的位置在《虚拟GPU客户端许可证用户指南》中给出:
请求的功能无效,适用于底层GSP固件配置。
请禁用GSP固件以使用此功能。
请在GPU直通的虚拟机或裸机主机上执行此任务。
确保在虚拟机或裸机主机上安装了NVIDIA vGPU软件图形驱动程序。
1、登录到虚拟机或裸机主机,并打开命令行终端。
2、确定GSP固件是否已启用。
$ nvidia-smi -q
如果GSP固件已启用,命令将显示GSP固件版本,例如:
GSP Firmware Version : 525.125.06
否则,命令将显示N/A作为GSP固件版本。
3、如果GSP固件已启用,通过将NVIDIA模块参数NVreg_EnableGpuFirmware设置为0来禁用它。
通过将以下条目添加到/etc/modprobe.d/nvidia.conf文件中来设置此参数:
options nvidia NVreg_EnableGpuFirmware=0
如果/etc/modprobe.d/nvidia.conf文件尚不存在,请创建它。
4、重启虚拟机或裸机主机。
如果您稍后需要启用GSP固件,请将NVIDIA模块参数NVreg_EnableGpuFirmware设置为1。
第五章 NVIDIA vGPU的许可证
NVIDIA vGPU是一个需要许可证的产品。当在支持的GPU上启动时,vGPU最初以完全能力运行,但如果虚拟机未能获得许可证,其性能会随着时间的推移而下降。如果vGPU的性能已被降低,则在获得许可证后,vGPU的全部能力将恢复。有关未授权vGPU性能如何降低的信息,请参见《虚拟GPU客户端许可证用户指南》。
在您为NVIDIA vGPU授权后,设置为使用NVIDIA vGPU的虚拟机能够运行全范围的DirectX和OpenGL图形应用程序。
如果已配置许可证,当在这些GPU上启动vGPU时,虚拟机(VM)会从许可证服务器获取许可证。虚拟机在关闭之前保留该许可证,然后将许可证释放回许可证服务器。许可证设置在重启之间保持有效,仅在许可证服务器地址更改或虚拟机切换到GPU直通模式时需要修改。
注意:有关配置和使用NVIDIA vGPU软件许可证功能(包括vGPU)的完整信息,请参阅《虚拟GPU客户端许可证用户指南》。
5.1 配置NVIDIA许可证系统的受许可客户端的先决条件
具有网络连接的客户端通过从NVIDIA许可证系统服务实例租用许可证来获取许可证。服务实例通过网络从从NVIDIA许可证门户获得的浮动许可证池向客户端提供许可证。当受许可客户端关闭时,许可证将返回给服务实例。
在配置受许可客户端之前,请确保满足以下先决条件:
- 客户端上已安装NVIDIA vGPU软件图形驱动程序。
- 您要部署在客户端上的客户端配置令牌已从NVIDIA许可证门户或DLS中创建,如《NVIDIA许可证系统用户指南》中所述
- 防火墙或代理中的端口443和80必须打开,以允许服务实例和其受许可客户端之间的HTTPS流量。这些端口必须为CLS实例和DLS实例打开。
注意:对于DLS 1.1之前的DLS版本,还需要打开端口8081和8082,以允许DLS实例和其受许可客户端之间的HTTPS流量。尽管这些端口不再是必需的,但它们仍然受支持以保持向后兼容性。
图形驱动程序会在客户端上创建一个默认位置,用于存储客户端配置令牌。
配置受许可客户端的过程对于CLS和DLS实例是相同的,但取决于客户端上运行的操作系统。
5.2 CLS实例的代理服务器要求和防火墙规则
为了通过代理服务器使受许可客户端与CLS实例之间进行通信,代理服务器必须满足一定要求。为了通过防火墙进行通信,必须定义允许特定URL上的流量的防火墙规则。配置代理服务器和定义防火墙规则的过程与配置CLS实例的过程是分开的。请使用您正在使用的代理服务器和防火墙的标准接口执行这些过程。
CLS实例的代理服务器要求
- NVIDIA许可证系统支持透明代理服务器和非透明代理服务器。
- 透明代理服务器向服务器标识自身,并且不修改客户端请求和响应。
非透明代理服务器不会显示客户端的IP地址,并且会修改客户端请求和响应。
位于受许可客户端和CLS实例之间的任何代理服务器必须允许对URL api.cls.licensing.nvidia.com的程序调用。
非透明代理服务器支持
NVIDIA许可证系统支持经过身份验证和未经身份验证的非透明代理服务器。
以下经过身份验证的代理服务器得到支持:
- Squid
对于经过身份验证的代理服务器,支持以下身份验证方法:
- 基本
- Microsoft Windows挑战/响应(Microsoft NTLM)(仅适用于Windows客户端)
- Kerberos(仅适用于属于Active Directory域的客户端)
CLS实例的防火墙规则
为了通过防火墙使受许可客户端与CLS实例之间进行通信,必须定义允许以下表中URL上的流量的防火墙规则。
URL | Traffic |
api.cls.licensing.nvidia.com | 许可操作,即许可证的试用、续订和归还。
|
api.licensing.nvidia.com | 未正常关闭的Windows受许可客户端的许可证归还 |
5.3 在Windows客户端上配置许可
从客户端执行以下任务:
1、仅物理GPU:将FeatureType DWord(REG_DWORD)注册表值添加到Windows注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm\Global\GridLicensing。
注意:
如果您正在为NVIDIA vGPU获取许可证,则不需要FeatureType DWord(REG_DWORD)注册表值。NVIDIA vGPU软件会根据vGPU类型自动选择正确的许可证类型。
如果您正在升级现有驱动程序,则此值已设置。
将此值设置为GPU处于透传模式或裸金属部署的功能类型:
- 0:NVIDIA虚拟应用程序
- 2:NVIDIA RTX虚拟工作站
- 4:NVIDIA虚拟计算服务器
2、可选:如果要将客户端配置令牌存储在自定义位置,请将ClientConfigTokenPath String(REG_SZ)注册表值添加到Windows注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm\Global\GridLicensing。
将值设置为要为客户端存储客户端配置令牌的文件夹的完整路径。您可以使用\完全限定域名-共享名称的语法指定文件夹的路径。默认情况下,客户端在%SystemDrive%:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken文件夹中搜索客户端配置令牌。通过指定映射到客户端的共享网络驱动器,可以简化在多个客户端上部署相同客户端配置令牌的过程。而不是将客户端配置令牌复制到每个客户端,您可以仅在共享网络驱动器中保留一个副本。
3、如果在受许可客户端和CLS实例之间配置了非透明代理服务器,请提供受许可客户端所需的代理服务器信息。
注意:在NVIDIA vGPU软件版本15.2之前,不支持经过身份验证的非透明代理服务器。
通过将以下注册表值添加到Windows注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm\Global\GridLicensing来提供此信息。
a). 对于所有非透明代理服务器,在以下Windows注册表值中提供代理服务器的地址和端口号。
ProxyServerAddress String(REG_SZ)
代理服务器的地址。地址可以是完全限定域名,例如iproxy1.example.com,或IP地址,例如10.31.20.45。
ProxyServerPort String(REG_SZ)
代理服务器的端口号。
b). 自15.2版本以来:如有必要,提供将登录到代理服务器的用户的凭据。
对于使用以下身份验证方法的代理服务器,需要此信息:
- 基本身份验证
- Microsoft Windows挑战/响应(Microsoft NTLM)身份验证,适用于不属于Active Directory域的客户端
ProxyUserName String(REG_SZ)
将登录到代理服务器的用户的用户名。
ProxyCredentialsFilePath String(REG_SZ)
包含将登录到代理服务器的用户的加密凭据的文件的完整路径,例如C:\Program Files\NVIDIA Corporation\vGPU Licensing\ProxySettings\proxy-credentials.dat。
此文件的生成方式如生成加密凭据文件中所述。
4、如果要将客户端配置令牌存储在自定义位置,请创建要存储客户端配置令牌的文件夹。
如果文件夹是共享网络驱动器,请确保满足以下条件:
- 该文件夹在客户端上本地映射到ClientConfigTokenPath注册表值中指定的路径。
- 计算机对象具有访问共享网络驱动器上文件夹的权限。计算机对象需要这些权限,因为许可证服务在任何用户登录之前运行。
如果要将客户端配置令牌存储在默认位置,请省略此步骤。客户端配置令牌存储在安装图形驱动程序后会自动创建的默认文件夹中。
5、将客户端配置令牌复制到要存储客户端配置令牌的文件夹中。
确保此文件夹仅包含要部署在客户端上的客户端配置令牌,而不包含其他文件或文件夹。如果文件夹包含多个客户端配置令牌,则客户端将使用文件夹中最新的客户端配置令牌。
- 如果要将客户端配置令牌存储在默认位置,请将客户端配置令牌复制到%SystemDrive%:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken文件夹。
- 如果要将客户端配置令牌存储在自定义位置,请将令牌复制到上一步中创建的文件夹中。
6、重新启动NvDisplayContainer服务。
现在,客户端上的NVIDIA服务应自动从CLS或DLS实例获取许可证。
配置完Windows受许可客户端后,在NVIDIA控制面板中不再提供为基于网络的许可证服务器配置许可证的选项。
5.4 在Linux客户端上配置许可
执行此任务来自客户端。
1、作为root用户,在纯文本编辑器(如vi)中打开文件/etc/nvidia/gridd.conf。
2、在文件/etc/nvidia/gridd.conf中添加FeatureType配置参数,作为FeatureType="value"的新行。 value取决于您正在配置的已许可客户端分配的GPU类型。
GPU类型 | 值 |
NVIDIA vGPU | NVIDIA vGPU软件会根据vGPU类型自动选择正确类型的许可证。 |
物理GPU | 在透传模式或裸金属部署中的GPU的特性类型: ‣ 0:NVIDIA虚拟应用程序 ‣ 2:NVIDIA RTX虚拟工作站 ‣ 4:NVIDIA虚拟计算服务器 |
这个例子展示了如何为NVIDIA虚拟计算服务器配置已许可的Linux客户端。
# /etc/nvidia/gridd.conf.template - Configuration file for NVIDIA Grid Daemon
…
# Description: Set Feature to be enabled
# Data type: integer
# Possible values:
# 0 => for unlicensed state
# 1 => for NVIDIA vGPU
# 2 => for NVIDIA RTX Virtual Workstation
# 4 => for NVIDIA Virtual Compute Server
FeatureType=4
...
3、如果在您的已许可客户端和CLS实例之间配置了非透明代理服务器,请提供已许可客户端所需的有关代理服务器的信息。
注意:在NVIDIA vGPU软件发布版本15.2之前,不支持经过身份验证的非透明代理服务器。
a). 对于所有非透明代理服务器,请提供代理服务器的地址和端口号。 通过将以下配置参数添加到文件/etc/nvidia/gridd.conf中的单独行来提供此信息。
ProxyServerAddress=address
ProxyServerPort=port
address 代理服务器的地址。地址可以是完全限定的域名,例如iproxy1.example.com,也可以是IP地址,例如10.31.20.45。
port 代理服务器的端口号。
这个例子将代理服务器的地址设置为10.31.20.45,端口号设置为3128。
# /etc/nvidia/gridd.conf.template - Configuration file for NVIDIA Grid Daemon
…
ProxyServerAddress=10.31.20.45
ProxyServerPort=3128
...
b). 自15.2版本起:如果需要,提供将登录到代理服务器的用户的凭据。 对于使用基本身份验证的代理服务器,需要提供此信息。 通过将以下配置参数添加到文件/etc/nvidia/gridd.conf中的单独行来提供此信息。
ProxyUserName=domain\username
ProxyCredentialsFilePath=path
domain 用户所属的域,例如example.com。
username 将登录到代理服务器的用户的用户名,例如clsuser。
path 包含用户登录到代理服务器的加密凭据的文件的完整路径,例如/etc/nvidia/proxy-credentials.dat。 此文件是根据生成加密凭据文件中所述生成的。 这个例子将将登录到代理服务器的用户的域和用户名设置为example.com\clsuser,并将包含用户加密凭据的文件路径设置为/etc/nvidia/proxy-credentials.dat。
# /etc/nvidia/gridd.conf.template - Configuration file for NVIDIA Grid Daemon
…
ProxyUserName=example.com\clsuser
ProxyCredentialsFilePath=/etc/nvidia/proxy-credentials.dat
...
4、可选:如果要将客户端配置令牌存储在自定义位置,请将ClientConfigTokenPath配置参数添加到文件/etc/nvidia/gridd.conf中的新行中,如ClientConfigTokenPath="path"。
path 要存储客户端配置令牌的目录的完整路径。默认情况下,客户端会在/etc/nvidia/ClientConfigToken/目录中搜索客户端配置令牌。 通过指定一个本地挂载的共享网络目录作为客户端的路径,您可以简化在多个客户端上部署相同客户端配置令牌的过程。 您可以在共享网络目录中仅保留一个副本,而不是将客户端配置令牌分别复制到每个客户端上。 这个例子展示了如何配置已许可的Linux客户端以在/mnt/nvidia/ClientConfigToken/目录中搜索客户端配置令牌。该目录是客户端上的一个共享网络目录的挂载点。
# /etc/nvidia/gridd.conf.template - Configuration file for NVIDIA Grid Daemon
…
ClientConfigTokenPath=/mnt/nvidia/ClientConfigToken/
...
5、保存对/etc/nvidia/gridd.conf文件的更改并关闭文件。
6、如果要将客户端配置令牌存储在自定义位置,请创建要存储客户端配置令牌的目录。 如果该目录是一个共享网络目录,请确保它在客户端上以ClientConfigTokenPath配置参数中指定的路径本地挂载。 如果要将客户端配置令牌存储在默认位置,请省略此步骤。在安装图形驱动程序后,客户端配置令牌的默认存储目录会自动生成。
7、将客户端配置令牌复制到要存储客户端配置令牌的目录中。 确保该目录中只包含您要部署在客户端上的客户端配置令牌,而不包含其他文件或目录。如果该目录包含多个客户端配置令牌,则客户端将使用该目录中最新的客户端配置令牌。
‣ 如果要将客户端配置令牌存储在默认位置,请将客户端配置令牌复制到/etc/nvidia/ClientConfigToken目录。
‣ 如果要将客户端配置令牌存储在自定义位置,请将令牌复制到上一步中创建的目录中。
8、确保客户端配置令牌的文件访问模式允许所有者读取、写入和执行令牌,而组和其他用户只能读取令牌。
a). 确定客户端配置令牌的当前文件访问模式。
# ls -l client-configuration-token-directory
b). 如果需要,将客户端配置令牌的模式更改为744。
# chmod 744 client-configuration-token-directory/client_configuration_token_*.tok
client-configuration-token-directory
客户端配置令牌目录 您在上一步中复制客户端配置令牌的目录。
9、重新启动nvidia-gridd服务。
客户端上的NVIDIA服务现在应该会自动从CLS或DLS实例获取许可证。 在配置了Linux已许可的客户端之后,在NVIDIA X Server设置中不再提供为基于网络的许可证服务器配置许可证的选项。
5.5 生成加密凭据文件
某些身份验证方法要求已许可的客户端在与代理服务器进行身份验证时提供用户凭据。为了使客户端能够安全地提供这些凭据而无需用户输入,您必须生成一个包含这些凭据的加密文件,客户端可以读取该文件。
以下身份验证方法需要加密凭据文件:
‣ 基本身份验证 ‣ Microsoft Windows挑战/响应(NTLM)身份验证(适用于不属于Active Directory域的客户端)
如何生成加密凭据文件取决于客户端所运行的操作系统。有关详细说明,请参考以下主题:
‣ 在Windows上生成加密凭据文件 ‣ 在Linux上生成加密凭据文件
5.5.1 在Windows上生成加密凭据文件
以管理员用户身份在客户端的Windows PowerShell窗口中执行此任务。
1、切换到C:\Program Files\NVIDIA Corporation\vGPU Licensing。
PS C:\> cd "C:\Program Files\NVIDIA Corporation\vGPU Licensing\ProxySettings"
2、运行grid-proxy-credentials Windows PowerShell脚本。
PS C:\> .\grid-proxy-credentials.ps1
3、在打开的“选择输出文件路径”窗口中,导航到您想要生成凭据文件的目录,输入文件名,然后点击“保存”。
4、当在Windows PowerShell窗口中提示时,指定将在已许可客户端请求许可证时登录到代理服务器的用户的密码。 在配置将使用该文件的已许可客户端时,请提供该文件的路径,如《在Windows上配置已许可客户端》中所述。
5.5.2 在Linux上生成加密凭据文件
在客户端的Linux命令行中执行此任务。
1、运行grid-proxy-credentials.sh命令。
# /usr/lib/nvidia/grid-proxy-credentials.sh -o output-file-path
output-file-path 您正在生成的凭据文件的完整路径。确保路径中的目录存在。
提示:要获取该命令的帮助信息,请输入/usr/lib/nvidia/grid-proxycredentials.sh --help。
这个例子创建了凭据文件/etc/nvidia/proxy-credentials.dat。
# /usr/lib/nvidia/grid-proxy-credentials.sh -o /etc/nvidia/proxy-credentials.dat
2、当提示时,指定将在已许可客户端请求许可证时登录到代理服务器的用户的密码。
在配置将使用该文件的已许可客户端时,请提供该文件的路径,如《在Linux上配置已许可客户端》中所述。
5.6 验证已许可客户端的NVIDIA vGPU软件许可证状态
在使用NVIDIA vGPU软件许可证配置客户端后,通过显示已许可产品的名称和状态来验证许可证状态。 要验证已许可客户端的许可证状态,请使用–q或--query选项运行nvidia-smi。如果产品已获得许可,则在许可证状态中将显示到期日期。
nvidia-smi -q
==============NVSMI LOG==============
Timestamp : Wed Nov 23 10:52:59 2022
Driver Version : 525.60.06
CUDA Version : 12.0
Attached GPUs : 2
GPU 00000000:02:03.0
Product Name : NVIDIA A2-8Q
Product Brand : NVIDIA RTX Virtual Workstation
Product Architecture : Ampere
Display Mode : Enabled
Display Active : Disabled
Persistence Mode : Enabled
MIG Mode
Current : Disabled
Pending : Disabled
Accounting Mode : Disabled
Accounting Mode Buffer Size : 4000
Driver Model
Current : N/A
Pending : N/A
Serial Number : N/A
GPU UUID : GPU-ba5b1e9b-1dd3-11b2-be4f-98ef552f4216
Minor Number : 0
VBIOS Version : 00.00.00.00.00
MultiGPU Board : No
Board ID : 0x203
Board Part Number : N/A
GPU Part Number : 25B6-890-A1
Module ID : N/A
Inforom Version
Image Version : N/A
OEM Object : N/A
ECC Object : N/A
Power Management Object : N/A
GPU Operation Mode
Current : N/A
Pending : N/A
GSP Firmware Version : N/A
GPU Virtualization Mode
Virtualization Mode : VGPU
Host VGPU Mode : N/A
vGPU Software Licensed Product
Product Name : NVIDIA RTX Virtual Workstation
License Status : Licensed (Expiry: 2022-11-23 10:41:16
GMT)
…
…