在激活了 DRS 的集群中,您可能会看到 DRS 仅针对集群中的某些主机而启动的大量虚拟机迁移。

DRS 会每分钟扫描一次集群中的主机,以作为负载均衡工作流的一部分寻找可能的建议。结果取决于已打开电源的虚拟机与集群中主机的兼容性检查结果。如果存在兼容性限制,将虚拟机的兼容主机集缩小到仅集群中的特定主机,则 DRS 将尝试通过将该虚拟机迁移到其中一个兼容的主机来满足这些限制。

这些限制通常来自两个源:集群中的静态用户配置和运行时状态更改。本文重点介绍用户可能无法预料的运行时状态更改。

可能影响已打开电源的虚拟机和主机之间兼容性的运行时状态更改可能位于以下某个区域。

vSphere High Availability

在激活了 HA 的集群中,所有主机的 HA 状态应为正常。如果主机在某个时间没有正常的 HA 状态,它将在虚拟机兼容性检查期间生成兼容性故障。此类情况的一些示例包括:HA 代理无法访问、HA 代理隔离、HA 代理已分区。有关详细信息,请参见“对 vSphere HA 主机状态进行故障排除”。

这些状态更改通常会在 vCenter Server 中伴随以下事件。

“主机上的 vSphere HA 代理出错”

存储可访问性

如果虚拟机无法访问其当前主机中的配置文件(VMX 文件)、虚拟磁盘 (VMDK) 或交换文件,则兼容性检查将失败,从而导致当前主机不兼容。如果集群中的其他主机仍可访问这些文件,DRS 可能会尝试将虚拟机迁移到该主机。根据虚拟机的 VMX 文件在其当前主机中的可访问性,此类迁移的结果会有所不同。如果虚拟机仅无法访问其 VMDK,而无法访问 VMX 文件,则迁移可能会成功。如果虚拟机无法访问其 VMX 文件,迁移可能会失败。

网络可访问性

对于具有 NSX-T 的环境,NSX 组件状态可能会在不同的时间在部分主机或所有主机上关闭。在 7.0u2 之前的 vCenter Server 版本中,这可能会导致虚拟机和受影响主机的兼容性检查失败。

解决方案

  1. 如果用户计划执行可能导致上述运行时状态更改的操作,则临时将 DRS 设置为手动模式可避免意外迁移。或者,用户也可以临时将 DRS 高级选项 VmsPerLBIteration 设置为 0。它会要求 DRS 在其负载均衡工作流期间不扫描任何虚拟机,因此没有迁移建议。
  2. 自 vCenter 7.0 Update 1 起,DRS 引入了一个高级选项,允许已打开电源的虚拟机在其预定义的时间段 (CompatCheckTransientFailureTimeSeconds) 内与其当前主机不兼容。用户可以配置此选项以避免由于暂时性不兼容而导致的意外迁移。
注: 此选项的默认值为 600(10 分钟),这意味着,如果虚拟机的不兼容时间不超过 10 分钟,则 DRS 不会仅仅因为与当前主机不兼容而将虚拟机移出。此选项的最大值为 3600(60 分钟)。

自 vCenter 7.0 Update 3 和 8.0 Update 1 起,也可以将此选项设置为 -1,由于虚拟机与当前主机不兼容,这不允许 DRS 将虚拟机移出。

自 vCenter 8.0 Update 3 起,此选项的默认值设置为 -1。

要设置 DRS 高级选项,请从 vSphere Client 执行以下步骤:

  1. 右键单击 DRS 群集,然后单击 Settings > vSphere DRS > Edit > Advanced Options > Add
  2. 在“选项”列中输入选项名称。
  3. 单击“值”列以输入所需的值,然后单击“确定”以使此设置生效。