【VMware】ESXi 6.0 vMotion 只能迁出不能迁入:移出并重新加入 DRS 集群恢复
文章目录8 节
这次遇到的是一台 VMware ESXi 6.0 主机。主机此前发生过网卡故障并一度卡死,拔除故障网卡并重启后,虚拟机可以从这台主机迁往其他主机,却无法从其他主机迁入。
最终现场确认的恢复方法是:将问题主机移出 DRS 集群,再重新加入原集群,vMotion 恢复正常。
我们把排查重点放在 ESXi、vCenter 与 DRS 对主机状态的识别上。本文记录相关现象、处理方法和适用条件。截图中的主机、地址等环境标识已脱敏。
现象:只能迁出,不能迁入
问题主机是 ESXi 6.0,位于 vCenter 管理的 DRS 集群中。网卡故障前,主机曾经卡死;拔除故障网卡并重启后,主机在 vCenter 中看起来可以继续被管理,虚拟机也能从这台主机迁往其他主机,但反向迁移失败。
在迁移向导的兼容性检查阶段,vCenter 显示:
在主机的当前状况下不允许执行此操作。
这不是迁移已经开始后出现的网络超时,而是目标主机在预检查阶段就没有通过。因此,排查重点放在目标主机当前状态是否被 vCenter 和 DRS 正确识别,而不是先检查 vMotion 数据传输速度、TCP 8000 或 MTU。

为什么怀疑主机状态没有同步
网卡故障和主机卡死可能让 ESXi 管理服务、vCenter 清单对象和 DRS 对主机状态的观察出现短暂或残留的不一致。这里的判断是工作假设,并不是“拔掉网卡必然造成 DRS 状态错误”:
- 网卡故障导致主机异常,管理连接曾经不稳定。
- 拔卡后主机重启,物理故障被移除,但管理代理、vCenter 和 DRS 之间需要重新建立状态。
- 主机能够迁出,说明它并非完全失联;但作为迁入目标时,vCenter 在兼容性检查中仍拒绝了当前状态。
现场还出现过两个辅助现象:vCenter 有任务显示为 0%,另一个操作弹出 propertyCollector 对象已删除或未完全创建的错误。这些现象支持“管理对象或任务状态不干净”的方向,但它们本身不能证明具体对象已经被删除,也不能单独证明就是 DRS 缺陷。


现场排查过程
当时给现场的建议是按以下顺序逐层处理,每做完一种方法就迁入一台测试虚拟机,观察是否恢复:
| 顺序 | 方法 | 处理范围 |
|---|---|---|
| 1 | 在 vCenter 中断开主机,再重新连接 | 主机管理连接 |
| 2 | 重启 hostd 和 vpxa | ESXi 管理服务与 vCenter 代理 |
| 3 | 将主机移出 DRS 集群,再重新加入 | 主机与集群的成员关系 |
| 4 | 从 vCenter 清单中移除主机,再重新添加 | 主机在 vCenter 中的注册关系,作为后备方案 |
这些方法处理的对象不同,不能简单理解为同一种“刷新”。
1. 断开并重新连接主机
在 vCenter 中对问题主机执行“断开连接”,等待任务结束后再执行“连接”。这一步和重启 ESXi 不是同一件事:
- 重启 ESXi 是重启主机操作系统及其服务。
- 断开/连接是让 vCenter 重新建立并确认与现有 ESXi 主机的管理关系。
断开连接通常不会关闭运行中的虚拟机,但会影响 vCenter 对主机的管理和状态采集。应避开正在进行的关键管理任务,重新连接完成后再验证迁入。
2. 重启 ESXi 管理代理
SSH 登录问题 ESXi 主机后,重启负责本地主机管理和 vCenter 协同的两个服务:
风险等级:CAUTION(重启管理服务)
作用: 重新加载 ESXi 的
hostd和 vCenter 代理vpxa,用于刷新管理会话、任务状态和主机协同信息。 执行对象: 已确认身份的 ESXi 6.0 问题主机,在 ESXi Shell 中执行。 权限要求: root 或等效的 ESXi 管理权限;执行前确认没有正在进行的迁移、快照、存储或网络变更。 影响: vCenter 对该主机的管理操作和状态采集会短暂中断;通常不会关停正在运行的虚拟机。 完成验证: 等待主机在 vCenter 中恢复为“已连接”,再用测试虚拟机验证迁入。 回退: 这两条命令没有配置回退动作;如果代理没有自动恢复,应查看服务状态和日志。
/etc/init.d/hostd restart
/etc/init.d/vpxa restart排查期间,现场曾反馈重启管理代理后测试虚拟机迁入成功。后续最终反馈确认,将主机移出集群并重新加入后,vMotion 恢复正常。两个反馈分别记录阶段性测试和最终处理结果;现有记录不足以判断两者之间是否发生过复发,也不足以说明重启代理在所有类似故障中都会无效。
最终处理:移出并重新加入 DRS 集群
这次最终采用了第三种方法。它改变的是主机与集群的成员关系,使 vCenter 和集群功能重新处理这台主机的加入过程。
这与“从 vCenter 移除主机再添加”是两种操作。移出集群时,主机仍保留在 vCenter 清单中,只是暂时不属于原集群。在 vCenter 6.0 的实验环境中,我们也没有观察到移出和加入集群时重新安装 Agent 的过程,因此不能把该方法的效果解释为“重新安装了 vpxa”。
下面是依据官方 KB 整理的操作步骤,用于复现处理方法;维护模式和操作前检查是执行条件,不代表现场记录已逐项保留了这些步骤的截图。
风险等级:CAUTION(变更集群成员关系)
作用: 通过移出再加入,重新建立主机与原集群的成员关系。 执行对象: vCenter 中已经确认身份的 ESXi 主机和目标 DRS 集群。 执行条件: 使用有权限变更主机集群归属的 vCenter 账户;先迁走或关闭全部虚拟机,确认主机已进入维护模式,记录原集群、网络和存储配置。KB 344925 明确要求,不要在启用 vSAN、NSX、VCD 或 VMware Horizon 的集群执行这组步骤。 影响与恢复: 主机暂时退出原集群的资源管理,加入时可能触发 HA 等功能的重新配置。如重新加入失败,保持维护模式,检查任务错误和原集群配置,再恢复成员关系;不要贸然迁回业务。
- 将问题主机上的虚拟机迁往其他主机;如果 DRS 没有自动迁移,手动迁移并确认没有运行中的虚拟机。
- 在 vCenter 中让问题主机进入维护模式,等待任务完成。
- 将主机拖出原集群,放到同一数据中心下的集群外。保留它在 vCenter 清单中,不执行“从清单中移除”。
- 等待移出任务完成,再将主机拖回原 DRS 集群。
- 等待主机连接及集群相关配置任务完成,退出维护模式。
- 迁入一台测试虚拟机,检查兼容性检查和迁移任务,再验证反向迁移。全部通过后再恢复正常调度。
现场确认,移出并重新加入集群后,vMotion 恢复正常。没有继续执行第四种“从 vCenter 移除主机再添加”的方案。
与官方 KB 的关系
这个现场现象与以下官方资料存在部分重合:
- KB 328652:Power on or vMotion operations could fail if any host in a DRS cluster is in an invalid state:描述主机无效状态可能导致开机或 vMotion 失败,并列出
The operation is not allowed in the current state of the host错误;修复版本是 vSphere 6.0 U3。 - KB 344925:“Unable to apply DRS resource settings on host” error in vCenter Server:针对 DRS 资源设置无法应用到主机的告警,建议先重启
hostd和vpxa,问题持续时移出集群再加入;适用产品包含 ESXi 和 vCenter 6.0。
KB 328652 提供了与本次报错相近的官方案例,但没有把移出集群再加入写成该缺陷的解决方法。KB 344925 提供了这组操作的官方依据,但它针对的是特定 DRS 告警,不能仅凭处理方法相同就证明本次一定属于同一个问题。
我们没有保留足以确认具体缺陷的完整日志和版本构建号。因此,目前能够确认的是“移出并重新加入集群后恢复”,而“网卡故障后管理状态或 DRS 状态未完全同步”仍是与现象一致的排查判断。
复盘后的处理路径
以后再遇到 ESXi 只能迁出、不能迁入,而且错误发生在兼容性检查阶段,可以按下面的顺序缩小范围:
- 确认主机已经启动完成,vCenter 中没有卡住的关机、维护模式或其他状态转换任务。
- 检查整个 DRS 集群是否存在断开、无响应或状态异常的主机。
- 对目标主机执行一次 vCenter“断开连接 → 连接”,等待任务完全结束。
- 如果问题仍在,安排维护窗口,在目标 ESXi 上重启
hostd和vpxa。 - 如果管理代理刷新仍无效,确认主机可安全进入维护模式,再评估移出并重新加入 DRS 集群。
- 每一步之后只迁移一台测试虚拟机,记录结果,避免把多个变量混在一起。
- 如果兼容性检查已经通过、迁移在数据传输阶段失败,再转向 vMotion VMkernel、物理上联、TCP 8000、MTU 和双向网络连通性排查。
这次处理最有参考价值的地方,是报错发生在兼容性检查阶段:先检查 vCenter 和 DRS 识别到的主机状态,再逐层刷新管理连接、代理和集群成员关系。现场最终通过移出并重新加入集群恢复,但这组操作仍需遵守官方 KB 的适用条件。