当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 为 Windows Server 上的 Hyper-V 虚拟机配置 SR-IOV

作者:精品下载站 日期:2024-12-14 23:18:59 浏览:15 分类:玩电脑

为 Windows Server 上的 Hyper-V 虚拟机配置 SR-IOV


SR-IOV (

Single Root Input/Output Virtualization

)是一种主机硬件设备虚拟化技术,允许虚拟机直接访问主机设备。它可以虚拟化不同类型的设备,但最常用于虚拟化网络适配器。在本文中,我们将向您展示如何在 Windows Hyper-V 服务器上为虚拟机网络适配器启用和配置 SR-IOV。

SRV-IOV 在 Hyper-V 2012+ 中受支持,包括免费的 Windows Hyper-V Server。我们不会详细讨论 SR-IOV 原理,因为您可以在 Web 上获得完整的指南。为了实际理解,了解 SR-IOV 允许为虚拟机提供对主机物理网络适配器的直接访问并绕过 Hyper-V 虚拟交换机的流量处理就足够了。 SR-IOV 模式下的一个物理网络适配器可以为多个虚拟机提供服务。

由于对 Hyper-V 虚拟机使用 SR-IOV,您将能够显着提高吞吐量减少由 Hyper-V 软件处理网络流量引起的网络延迟和 CPU 负载

SR-IOV 与 NIC 组合不兼容。

为了在 Hyper-V 主机上启用 SRV-IOV,必须满足一些要求。

首先,在服务器的 BIOS 中启用 SRV-IOV 和虚拟化支持。根据供应商的不同,设置可能会有所不同。

  • 虚拟化支持:Intel(虚拟化技术、Intel VT、VT-d、Vanderpool)、AMD(SVM、AMD-V)

  • IOMMU

  • SR-IOV

  • ASPM

[玩转系统] 为 Windows Server 上的 Hyper-V 虚拟机配置 SR-IOV

您可能没有拥有所有物品,甚至没有 SR-IOV。但这并不意味着您的服务器不支持 SR-IOV。例如,Supermicro 主板的 BIOS 中可能没有 SR-IOV,但默认情况下禁用 ASPM。如果启用 ASPM 和虚拟化支持,SR-IOV 将自动启用。

需要注意的是,如果主机Windows操作系统在BIOS设置中禁用了SR-IOV,则启用SR-IOV后,系统会认为您更换了网卡(重置当前静态IP地址)。

您可以使用 PowerShell 确定 Hyper-V 服务器在硬件级别是否支持 SR-IOV:

(get-vmhost).IovSupport
(get-vmhost).IovSupportReasons

[玩转系统] 为 Windows Server 上的 Hyper-V 虚拟机配置 SR-IOV

如果您的服务器支持该功能,IovSupport 将包含

True

。如果没有的话,就会是

False

。在这种情况下,IovSupportReasons 项显示不支持 SR-IOV 的原因。通常,会详细描述原因。以下是典型原因:

  • 系统上的芯片组不进行中断重新映射,否则无法支持 SR-IOV。

  • SR-IOV 无法在此计算机上使用,因为该处理器不支持二级地址转换 (SLAT)。对于 Intel 处理器,此功能可能称为扩展页表 (EPT)。对于 AMD 处理器,此功能可能称为快速虚拟化索引 (RVI) 或嵌套页表 (NPT)。

  • SR-IOV 无法在此系统上使用,因为 PCI Express 硬件在任何根端口都不支持访问控制服务 (ACS)。请联系您的系统供应商以获取更多信息。

  • 要在此计算机上使用 SR-IOV,必须更新 BIOS,因为它包含描述硬件功能的不正确信息。请联系您的计算机制造商获取更新。

  • 系统上的芯片组不执行 DMA 重新映射,否则无法支持 SR-IOV。

  • SR-IOV 无法在此系统上使用,因为它已配置为禁用 I/O 重新映射硬件。

  • 要在此系统上使用 SR-IOV,必须更新系统 BIOS 以允许 Windows 控制 PCI Express。请联系您的系统制造商以获取更新。

  • 确保系统具有支持 SR-IOV 的芯片组,并且在 BIOS 中启用了 I/O 虚拟化。

  • SR-IOV 无法在此系统上使用,因为它报告没有 PCI Express 总线。请联系您的系统制造商以获取更多信息。

的完整输出

get-vmswitch | fl *iov*

命令包含一些有用的信息。例如:

IovVirtualFunctionCount : 6
IovVirtualFunctionsInUse : 3

这些数字显示有多少 IOV 虚拟设备可用以及其中有多少被虚拟机使用。

创建 Hyper-V 虚拟交换机时,请选中 SR-IOV 支持选项 - 启用单根 I/O 虚拟化 (SR-IOV)

[玩转系统] 为 Windows Server 上的 Hyper-V 虚拟机配置 SR-IOV

或者在使用 PowerShell 创建虚拟交换机时启用 EnableIOV 选项:

New-VMSwitch -Name "VMNetExt" -NetAdapterName "Ethernet 2" -EnableIov 1

重要。创建虚拟交换机后无法启用 SR-IOV。如果您没有立即执行此操作,则必须删除 vswitch 并重新创建。

如果虚拟机管理程序主机支持 SR-IOV,并不意味着它可以在特定的虚拟交换机上工作。交换机必须绑定到支持 SR-IOV 的网络适配器。

还有一件重要的事情。一块主板可能有多个网络适配器,但可能只有其中一些支持 SR-IOV。此外,如果适配器根据其数据表支持 SR-IOV,并不意味着它可以在您的主板上工作。

因此,配置交换机后,请使用以下命令检查它:

get-vmswitch | select IovSupport, IovSupportReasons, IovEnabled

IovEnabled 选项显示 SR-IOV 是否已启用。

您可以使用 PowerShell 显示支持 SR-IOV 的网络适配器列表:

Get-NetAdapterSriov | sort name | ft Name, InterfaceDescription, SriovSupport

在虚拟机管理程序和虚拟交换机级别启用 SR-IOV 后,您可以在虚拟机上启用它(默认情况下处于禁用状态)。您可以在虚拟机网络适配器的硬件加速部分找到启用SR-IOV选项。

[玩转系统] 为 Windows Server 上的 Hyper-V 虚拟机配置 SR-IOV

或者您可以通过 PowerShell 为虚拟机的网络适配器启用 SR-IOV:

Set-VMNetworkAdapter -VMName mytestvm -VMNetworkAdapterName “Network Adapter” -IovWeight 100

要禁用 SR-IOV,请将 IovWeight 的值更改为 0。

您可以使用单独的事件查看器日志找到 Hyper-V 中的所有 SR-IOV 错误和事件:

应用程序和服务日志 -> Microsoft -> Windows -> Hyper-V-SynthNic -> 管理。

如果 SR-IOV 正常工作,您将在虚拟机启动时在事件查看器中看到以下条目:

12597 Network adapter (%NIC_ID%) Connected to virtual network.
12582 Network adapter (%NIC_ID%) started successfully.
12584 Network adapter (%NIC_ID%) allocated a virtual function.
12588 Network adapter (%NIC_ID%) assigned a virtual function.

SR-IOV 可提高虚拟机和虚拟机管理程序的网络性能。您可能会看到在 Hyper-V 主机上使用 SR-IOV 的最高结果,因为虚拟机流量较高,导致主机 CPU 负载过重。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯