直通设备可提供有效的方式来使用资源并提高环境性能。

在 vSphere 8.0 及更低版本中,仅当虚拟机关闭电源时才会添加或移除直通设备。当前版本的 vSphere 对 VMDirectPathI/O 设备提供了热添加和热移除支持。热添加是指在虚拟机打开电源时添加直通设备的过程。

对于 VMDirectPathI/O 设备的热添加和热移除支持,可用使用以下功能。
  • 通过 vSphere API 将启用了直通的设备热添加到虚拟机。您可以通过下列方法之一执行此操作:
    1. 您可以为 ESXi 引导时发现的现有设备启用直通,并将该设备热添加到虚拟机。
    2. 或者,也可以通过物理方式将新设备热添加到主机的空 PCIe 热插拔插槽,为新添加的设备启用直通,然后将该设备热添加到虚拟机。
      注: 此功能需要对服务器进行 PCIe 本机热插拔认证。
  • 通过 vSphere API 从虚拟机热移除直通设备。
  • 可通过物理方式从主机中拔出虚拟机正在使用的直通设备,从而意外热移除该设备。
    注: 此功能需要对服务器进行 PCIe 本机意外热插拔认证。
    注: 仅 NVMe 设备支持热添加和热移除 VMDirectPath I/O。 vSphere Client 不支持热添加和热移除 VMdirectPathI/O。
启用了直通热插拔的虚拟机不支持以下功能:
  • 向客户机操作系统公开输入-输出内存管理单元 (IOMMU)。
  • CPU 热插拔。
  • 内存热插拔。
  • 动态 Direct Path I/O。
  • 支持 vCPU 数量大于 128 的虚拟机。
  • 对于启用了直通热插拔的虚拟机,可能会禁用虚拟中断(也称为中断发布)。
  • 不支持通过物理方式从主机正常热移除直通设备。
  • UI 对热添加和热移除的支持。
  • 虚拟机 Direct Path I/O 不可用的所有功能。

平台、设备和客户机操作系统的要求

服务器和设备要求

  • 确保服务器原始设备制造商 (OEM) 支持热添加和热移除 VMDirectPath I/O 设备功能。
  • 服务器平台固件必须是 Unified Extensible Firmware Interface (UEFI)。
  • 确保服务器平台和设备符合 KB 2142307 中所述的要求。
  • 应对服务器进行虚拟机 Direct Path I/O 认证。
  • 如果从虚拟机中意外热移除直通设备,服务器型号应经过 PCIe 本机意外热插拔认证。
注: 有关服务器认证的详细信息,请参见 VMware 兼容性指南

客户机操作系统要求

  • 确保客户机操作系统支持 NVMe 热插拔和 NVMe 意外热移除。
  • 使用最新且稳定的 GOS 发行版,其中包含 NVMe 驱动程序 I/O 堆栈的所有修复。

vCenter 和 ESXi 要求

ESXi 和 vCenter 版本必须为 8.0 Update 1 或更高版本。

限制

  • 在单个 ReconfigureVM API 调用中最多可以热添加 1 个直通设备。
  • 在单个 ReconfigureVM API 调用中最多可以热移除 1 个直通设备。
  • 请求热添加或热移除直通设备时,无法在同一 ReconfigureVM API 调用中请求其他虚拟机重新配置更改。
  • 一个虚拟机最多支持 32 个 NVMe 直通设备。

启用 VMDirectPath I/O 设备的热添加和热移除

您可以通过准备 vCenter 和 ESXi 主机来启用 VMDirectPath I/O 设备的热添加和热移除。

前提条件

准备 vCenter 和 ESXi 主机。
  • 使用内部版本组合部署 vCenter 和有状态安装 ESXi
  • 设置 VMKernel 引导参数。
    set -s maxIntrCookies -v 4096
  • 重新启动 ESXi 主机。
  • 部署数据中心并添加主机。

过程

  1. vSphere Client 中浏览到某台主机。
  2. 配置选项卡上,展开硬件并单击 PCI 设备
  3. 选择 NVMe PCI 设备,然后按切换直通

下一步做什么

准备并配置虚拟机。

准备并配置虚拟机

直通设备可提供有效的方式来使用资源并提高环境性能。您可以准备和配置虚拟机。

部署和配置虚拟机(UEFI 引导)

过程

  1. vSphere Client 中,浏览到虚拟机。
    1. 要查找虚拟机,请选择数据中心、文件夹、集群、资源池或主机。
    2. 单击虚拟机选项卡。
  2. 右键单击虚拟机,然后选择编辑设置
  3. 展开内存部分,然后设置预留所有客户机内存 (全部锁定)
  4. 单击保存
  5. 对于使用 vSphere API ReconfigVM_Task() 的虚拟机,将 fixedPassthruHotPlugEnabled 设置为 TRUE。有关详细信息,请参见https://developer.broadcom.com
    注: 使用 https://developer.broadcom.com 中的搜索栏搜索 Hotplug 一词。
    1. 在 vCenter 上,右键单击虚拟机 → 兼容性 → 升级虚拟机兼容性,升级到 vmx-20,然后单击“保存”。
    2. 使用 vSphere API 将 motherboardLayout 设置为 ACPI。有关详细信息,请参见https://developer.broadcom.com
      注: 使用 https://developer.broadcom.com 中的搜索栏搜索 Hotplug 一词。
  6. (可选)将启用了直通的 PCI 设备添加到虚拟机。
  7. 打开虚拟机电源。
    注: 验证正在进行的热插拔操作是否成功,然后再继续执行下一个热插拔操作。
  8. 使用 vSphere API 执行直通设备的热添加和热移除。有关详细信息,请参见https://developer.broadcom.com
    注: 使用 https://developer.vmware.com/samples 中的搜索栏搜索 Hotplug 一词。

下一步做什么

验证热插拔操作是否成功。

使用 vSphere Client 验证热插拔操作是否成功

要检查热添加、热移除和意外热移除操作是否成功,可以使用 vSphere Client 进行验证。

过程

  1. vSphere Client 中找到虚拟机。
  2. 选择数据中心、文件夹、集群、资源池或主机,然后单击“虚拟机”选项卡。
  3. 单击虚拟机,然后从列表中单击虚拟机。
  4. PCI 设备表中,验证以下内容:
    选项 描述

    验证通过 vSphere API 将启用了直通的设备热添加到虚拟机是否成功。

    显示热添加的直通设备。

    验证通过 vSphere API 从虚拟机热移除直通设备是否成功。

    不显示热移除的直通设备。

    验证从 ESXi 主机对虚拟机的直通设备执行意外热移除(物理热移除)是否成功。

    • 将不显示意外热移除的设备。
    • 在主机视图中,
      1. vSphere Client 中浏览到某台主机。
      2. 配置选项卡上,展开硬件并单击 PCI 设备
      3. 确认未显示意外热移除的设备。

使用虚拟机验证热插拔操作是否成功

要检查热添加、热移除和意外热移除操作是否成功,可以使用虚拟机进行验证。

过程

  1. 在虚拟机中,打开与客户机操作系统的 SSH 连接。
  2. 以 root 用户身份登录。
  3. 运行命令 lspci
  4. 验证结果。
    选项 描述

    验证通过 vSphere API 将启用了直通的设备热添加到虚拟机是否成功。

    显示热添加的直通设备。
    注: 直通设备的 Spotfire 二进制数据文件 (SBDF) 地址可能与主机上的地址不同。

    验证通过 vSphere API 从虚拟机热移除直通设备是否成功。

    不显示热移除的直通设备。

    验证从 ESXi 主机意外热移除(物理热移除)虚拟机的直通设备是否成功。

    不显示意外热移除的设备。