文档目录

问题说明

本文用于排查“模板创建的虚拟机跨集群迁移报 No host available”。在完成证据检查前,不将该现象归因于单一产品缺陷。

现象

基于模板创建的虚拟机跨集群/存储迁移时找不到目标主机,报 No host available for block live migration;使用普通镜像创建的虚拟机 可能正常。

适用环境

  • 产品:ZVF ZSphere
  • 版本:5.0.3(已记录案例)
  • 组件:ZSphere 跨集群存储迁移、资源绑定和 Host Allocator
  • 部署形态:虚拟机 从源集群迁移到只能由目标集群访问的数据存储

可能原因

确认 虚拟机 创建时带有 resourceBindings::Cluster:SOURCE_CLUSTER_UUID 系统标签。源集群主机因无法访问目标数据存储被 HostPrimaryStorageAllocatorFlow 过滤,目标集群主机又因 not bound resource 被 ResourceBindingAllocatorFlow 过滤,最终没有主机同时满足两个条件。失败发生在迁移数据面启动前,不是 SharedBlock Agent 或实际拷贝失败。

排查步骤

1. 找到把候选主机降为 0 的 allocator flow

  • 检查对象:失败迁移 API/LongJob、源/目标集群和目标数据存储。
  • 操作位置:在 management-server.log 按 API ID 检索 rejected candidate host,按 allocator flow 的执行顺序整理候选主机数量和拒绝理由。
  • 预期结果:至少有一台主机同时可访问目标数据存储并满足 虚拟机 资源绑定。
  • 异常处理:最后由 ResourceBindingAllocatorFlow 以 not bound resource 把候选数降为 0 时,进入绑定标签分支;如果是容量、CPU 或存储 flow 清零,则转入对应排查。

2. 查询 虚拟机 上的集群绑定标签

  • 检查对象:失败虚拟机的系统标签和创建请求。
  • 操作位置:通过受支持查询查看是否存在 resourceBindings::Cluster:SOURCE_CLUSTER_UUID,并核对 UUID 是否为 虚拟机 当前源集群;同时对比模板创建 虚拟机 与普通镜像创建 虚拟机。
  • 预期结果:需要跨集群迁移的 虚拟机 不应仍被绑定到源集群。
  • 异常处理:标签存在且目标主机属于另一集群时,即可解释 not bound resource;不要继续排查数据拷贝或强制迁移。

3. 通过虚拟机级策略解除绑定

临时方案(Workaround)

  • 适用条件:allocator 日志已经证明 ResourceBindingAllocatorFlow 因源集群绑定把目标候选降为零,业务也接受解除绑定后扩大的 HA/DRS 调度范围;容量或存储 flow 清零时不适用。
  • 已验证自助方案:先由业务负责人确认该 虚拟机 可以跨集群调度,再在虚拟机级打开“跨集群高可用”策略;随后重新查询,确认 resourceBindings::Cluster:* 已按产品流程删除。
  • 预期结果:目标集群主机不再被 ResourceBindingAllocatorFlow 拒绝,同时仍能访问目标数据存储。
  • 异常处理:只修改集群/全局配置但虚拟机 标签仍在时不会生效;不要直接修改数据库或手工删除系统标签,交由 ZStack 技术支持核对版本行为。

4. 迁移并复核隔离边界

  • 检查对象:同一虚拟机的新迁移任务、目标主机选择和 HA/DRS 范围。
  • 操作位置:先迁移一台测试或低风险 虚拟机,确认 host allocation 通过并完成数据迁移,再扩展到其余 虚拟机。
  • 预期结果:迁移成功,目标主机与数据存储可达,且业务接受解除绑定后扩大的 HA/DRS 调度范围。
  • 异常处理:解除标签后仍无主机可用时,重新查看新的最后失败 flow;不要默认仍是资源绑定问题。

补充信息

  • 提交支持信息时,应包含准确时间窗、资源和任务 UUID、完整错误文本及相关组件日志。
  • 不能从单个现场结果外推所有版本;根因未闭合或操作可能影响业务、数据时,应停止自助处理并提交本文列出的证据。
模板创建的虚拟机跨集群迁移报 No host available | 故障排查 · KB | ZStack 资源中心