要使用 vMotion 迁移虚拟机,虚拟机必须满足特定网络、磁盘、CPU、USB 及其他设备的要求。

使用 vSphere vMotion 时,以下虚拟机条件和限制适用:

  • 源和目标管理网络 IP 地址系列必须匹配。您不能将虚拟机从使用 IPv4 地址注册到 vCenter Server 的主机迁移到使用 IPv6 地址注册的主机。
  • 如果迁移具有大型 vGPU 配置文件的虚拟机,则对 vSphere vMotion 网络使用 1 GbE 网络适配器可能会导致迁移失败。对 vSphere vMotion 网络使用 10 GbE 网络适配器。
  • 如果已启用虚拟 CPU 性能计数器,则可以将虚拟机只迁移到具有兼容 CPU 性能计数器的主机。
  • 可以迁移启用了 3D 图形的虚拟机。如果 3D 渲染器设置为“自动”,虚拟机会使用目标主机上显示的图形渲染器。渲染器可以是主机 CPU 或 GPU 图形卡。要使用设置为“硬件”的 3D 渲染器迁移虚拟机,目标主机必须具有 GPU 图形卡。
  • 从 vSphere 6.7 Update 1 及更高版本开始,vSphere vMotion 支持具有 vGPU 的虚拟机。
  • vSphere DRS 支持在没有负载均衡支持的情况下对运行 vSphere 6.7 Update 1 或更高版本的 vGPU 虚拟机进行初始放置。
  • 您可使用连接到主机上物理 USB 设备的 USB 设备迁移虚拟机。您必须为 vSphere vMotion 启用设备。
  • 如果虚拟机使用目标主机上无法访问的设备所支持的虚拟设备,则不能使用“通过 vSphere vMotion 迁移”功能来迁移该虚拟机。例如,您不能使用由源主机上物理 CD 驱动器支持的 CD 驱动器迁移虚拟机。在迁移虚拟机之前,要断开这些设备的连接。
  • 如果虚拟机使用客户端计算机上设备所支持的虚拟设备,则不能使用“通过 vSphere vMotion 迁移”功能来迁移该虚拟机。在迁移虚拟机之前,要断开这些设备的连接。

使用 vSphere vMotion 迁移 vGPU 虚拟机

可以使用 vMotion 实时迁移由 NVIDIA vGPU 提供技术支持的虚拟机,且不会导致数据丢失。

要为 vGPU 虚拟机启用 vMotion,需要将 vgpu.hotmigrate.enabled 高级设置设定为 true。有关如何配置 vCenter Server 高级设置的详细信息,请参见《vCenter Server 配置》文档中的配置高级设置

在 vSphere 6.7 Update 1 和 vSphere 6.7 Update 2 中,通过 vMotion 迁移 vGPU 虚拟机且 vMotion 关闭时间超过 100 秒时,对于具有 24 GB 帧缓冲区或更大大小的 vGPU 配置文件,迁移过程可能会失败。要避免 vMotion 超时,请升级到 vSphere 6.7 Update 3 或更高版本。

在关闭时间内,无法访问虚拟机、桌面或应用程序。迁移完成后,将恢复对虚拟机的访问,并且所有应用程序将从以前的状态继续运行。有关 vGPU 配置文件中帧缓冲区大小的信息,请参阅 NVIDIA 虚拟 GPU 文档

下表列出了预期的虚拟机关闭时间(即在 vMotion 期间用户无法访问虚拟机的时间)以及预计最坏情况关闭时间。使用 NVIDIA Tesla V100 PCIe 32 GB GPU 通过10 Gb 网络对这些预期的关闭时间进行了测试:

表 1. vGPU 虚拟机的 vMotion 所需的关闭时间
已使用的 vGPU 帧缓冲区 (GB) 虚拟机关闭时间(秒)
1 2
2 4
4 6
8 12
16 22
32 39
表 2. 预计的最坏情况关闭时间(秒)
vGPU 内存 虚拟机内存 4 GB 虚拟机内存 8 GB 虚拟机内存 16 GB 虚拟机内存 32 GB
1 GB 5 6 8 12
2 GB 7 9 11 15
4 GB 13 14 16 21
8 GB 24 25 28 32
16 GB 47 48 50 54
32 GB 91 92 95 99
注: 考虑预期和预计的最坏情况关闭时间时,请记住以下几点:
  • 配置的 vGPU 配置文件表示已使用的 vGPU 帧缓冲区的上限。在许多用例中,虚拟机在任意给定时间使用的 vGPU 帧缓冲区内存量均低于配置文件中分配的 vGPU 内存。
  • 预期和预计的最坏情况关闭时间仅在迁移单个虚拟机时均有效。如果同时迁移多个虚拟机,即对于 vSphere 手动修复过程,关闭时间将产生不利影响。
  • 上述预计值假设 CPU、内存、PCIe 和网络容量足以实现 10 Gbps 迁移吞吐量。

DRS 支持在没有负载均衡支持的情况下对运行 vSphere 6.7 Update 1 和更高版本的 vGPU 虚拟机进行初始放置。

VMware vSphere vMotion 仅在兼容的 NVIDIA GPU 设备型号和 NVIDIA GRID 主机驱动程序版本(由 NVIDIA 定义和支持)上和它们之间受支持。有关兼容性信息,请参阅《NVIDIA 虚拟 GPU 用户指南》

要检查 NVIDIA vGPU 主机驱动程序、vSphere 和 Horizon 之间的兼容性,请参阅 VMware 兼容性列表

如何为 vGPU 虚拟机设置关闭时间限制

了解如何在使用 vSphere vMotion 迁移由 NVIDIA vGPU 驱动的虚拟机时设置每个虚拟机的关闭时间限制。设置关闭时间限制可能会阻止 vCenter Server 打开虚拟机电源或将其迁移到预计最大关闭时间超过该限制的主机和网络。

虚拟机关闭时间是用户在 vMotion 期间无法访问虚拟机的时间。从 vSphere 8.0 Update 2 开始,您可以为 vGPU 虚拟机设置 vMotion 关闭时间限制。

您设置的限制必须高于当前设备配置的预计最大关闭时间。对于多个 PCI 设备,您设置的关闭时间限制必须大于所有 PCI 设备贡献的总和。将关闭时间限制设置为低于估计的最大关闭时间可能会阻止虚拟机打开电源。

注: 最大关闭时间估算值仅适用于 C 系列和 Q 系列 vGPU 类型。

最大关闭时间是根据虚拟机当前运行所在的主机的带宽计算得出的。如果目标主机的带宽较低,则计算在迁移时可能会发生变化。例如,如果虚拟机在具有 25 Gbps vMotion 网卡的主机上运行,但目标主机具有 10 Gbps vMotion 网卡。迁移时,最大关闭时间计算基于 10 Gbps vMotion 网卡。

前提条件

  • 确认 vCenter Server 实例的版本为 8.0 Update 2。
  • 确认源和目标 ESXi 主机的版本为 8.0 Update 2。
  • 确认 vSphere 集群服务 (vCLS) 虚拟机处于正常状态。有关 vCLS 的信息,请参见vSphere 集群服务
  • 确认 vMotion 网络是通过快速入门工作流配置的。有关为 vMotion 流量配置网络连接选项的信息,请参见如何使用快速入门工作流配置 vSphere 集群
  • 确认已为 vGPU 虚拟机启用 vMotion。vgpu.hotmigrate.enabled 高级设置必须设置为 true。有关如何配置 vCenter Server 高级设置的详细信息,请参见《vCenter Server 配置》文档中的配置高级设置

过程

  1. vSphere Client 中,导航到 vGPU 虚拟机。
  2. 右键单击虚拟机,然后选择编辑设置
    此时将显示 编辑设置对话框。
  3. 单击虚拟机选项选项卡,然后展开高级
    “编辑设置”对话框中展开了虚拟机高级设置。
  4. vMotion 关闭时间限制输入字段中,输入关闭时间限制(以秒为单位)。
    在展开的“高级”设置中,“vMotion 关闭时间”输入字段突出显示。
    如果设置的关闭时间限制低于 PCI 设备配置的预计最大关闭时间,则会显示一条警告消息。 虚拟硬件选项卡上也会显示一条警告消息。
  5. 单击确定

虚拟机交换文件位置和vSphere vMotion兼容性

根据虚拟机主机上运行的 ESXi 版本,虚拟机交换文件位置会以不同方式影响 vMotion 兼容性。

您可以配置 ESXi 6.7 或更高版本的主机来存储虚拟机交换文件与虚拟机配置文件,或将这些文件存储到为该主机指定的本地交换文件数据存储。

虚拟机交换文件的位置对 vMotion 兼容性的影响如下所示:

  • 对于运行 ESXi 6.7 及更高版本主机之间的迁移,允许通过 vMotion 迁移以及迁移已挂起或已关闭电源的虚拟机。
  • 在通过 vMotion 进行迁移的过程中,如果在目标主机上指定的交换文件位置与源主机上的交换文件位置不同,则会将交换文件复制到新的位置。该活动会导致通过 vMotion 迁移时的速度变慢。如果目标主机不能访问指定的交换文件位置,会将交换文件与虚拟机配置文件存储在一起。

有关配置交换文件策略的信息,请参见《vSphere 资源管理》文档。

延迟敏感型应用程序的 vSphere vMotion 通知

从 vSphere 8.0 开始,可以在 vSphere vMotion 事件开始和完成时通知在虚拟机的客户机操作系统内运行的应用程序。此通知机制允许延迟敏感的应用程序准备或延迟 vSphere vMotion 操作。

对于延迟敏感型应用程序(例如 VoIP 应用程序和高频交易应用程序),通常会停用 vSphere vMotion 和 vSphere DRS。vSphere 8.0 引入了一种通知机制,使您可以通知应用即将发生 vSphere vMotion,以便应用程序执行必要的步骤进行准备。vSphere vMotion 会在生成开始事件后暂停,并等待应用程序确认开始通知后再继续。

注:

为 vSphere vMotion 操作启用通知机制可能会增加整体 vSphere vMotion 时间。

如何为 vSphere vMotion 通知配置虚拟机

默认情况下,通知机制处于停用状态。要在虚拟机上启用通知机制,虚拟机的硬件版本必须为 20 或更高版本,并且您必须配置以下高级虚拟机配置选项。

您可以使用 vSphere Web Services API 允许向虚拟机中运行的应用程序发送通知,并指定应用程序必须为 vMotion 操作准备的最长时间(以秒为单位)。

  • 要启用向虚拟机内运行的应用程序发送通知的机制,请将 vmx.vmOpNotificationToApp.enabled 虚拟机属性设置为 true

  • 要指定应用程序必须为 vMotion 操作做好准备的最长时间段(以秒为单位),请使用 vmx.vmOpNotificationToApp.timeout 虚拟机属性。当 vSphere vMotion 操作生成启动事件时,vMotion 操作将暂停并等待应用程序确认后继续。vSphere vMotion 等待指定的通知超时。

    此属性为可选,默认情况下不设置此属性。您可以使用此属性为特定虚拟机配置更严格的超时。如果未设置,将使用主机通知配置。

有关详细信息,请参见 vSphere Web Services API 文档中的虚拟机数据对象属性。有关如何使用 vSphere Web Services SDK 的信息,请参见 vSphere Web Services SDK 编程指南

如何为 vSphere vMotion 通知配置主机

您可以使用 VmOpNotificationToApp.Timeout 高级主机配置设置来指定应用于主机上所有虚拟机的通知超时。使用 ConfigManager API 为此配置属性设置值。默认通知超时为 0。在这种情况下,将生成应用程序通知,但 vSphere vMotion 操作不会延迟。

如果同时在主机和该主机上运行的虚拟机上设置了通知超时,则使用较小的值。

有关如何使用 vSphere Web Services SDK 的信息,请参见 vSphere Web Services SDK 编程指南

如何注册 vSphere vMotion 通知的应用程序

要使应用程序能够接收 vSphere vMotion 事件的通知,必须在托管该应用程序的虚拟机上安装 VMware Tools。有关安装和配置 VMware Tools 的详细信息,请参见 VMware Tools 文档。

使用 vSphere 8.0,每个虚拟机只能注册一个应用程序。要接收 vSphere vMotion 通知的应用程序可以使用以下客户机 RPC 调用,并使用 vm-operation-notification.check-for-event 客户机 RPC 调用定期(例如,每 1 秒或 2 秒)检查新的 vMotion 事件。

有关如何使用客户机 RPC 调用的信息,请参见《VMware Guest SDK 编程指南》

命令

描述

vm-operation-notification.register

注册应用程序以开始接收 vSphere vMotion 事件的通知。

vm-operation-notification.unregister

取消注册应用程序以停止接收 vSphere vMotion 事件的通知。

vm-operation-notification.list

检索有关在主机上的虚拟机上运行的已注册应用程序的信息。

vm-operation-notification.check-for-event

检索有关调用时注册的 vSphere vMotion 事件的信息。

vm-operation-notification.ack-event

确认 vSphere vMotion 启动事件。