11.8. 迁移故障排除

虚拟机迁移期间可能会出现多种问题:

  1. 迁移过程遇到错误。
  2. 迁移过程永远不结束。
  3. 迁移后虚拟机性能下降

迁移期间出错

以下问题可使迁移操作进入错误状态:

  1. 使用不同版本的 OpenStack 运行集群。
  2. 指定的虚拟机 ID 找不到。
  3. 您尝试迁移的虚拟机处于错误状态。
  4. Compute 服务正在关闭。
  5. 发生争用情形。
  6. 实时迁移进入失败状态。

当实时迁移进入失败状态时,通常会随之进入错误状态。以下常见问题可能导致失败状态:

  1. 目标 Compute 主机不可用。
  2. 发生调度程序异常。
  3. 由于计算资源不足,重新构建过程失败。
  4. 服务器组检查失败。
  5. 源 Compute 节点上的虚拟机在完成迁移到目标 Compute 节点之前被删除。

永不结束的实时迁移

实时迁移可能无法及时完成,使迁移一直处于运行状态。实时迁移永远完不成的常见原因是对源 Compute 节点上运行的虚拟机的客户端请求的变化速度快于 nova 将其复制到目标 Compute 节点的速度。

应对此情形有几种方式:

  1. 中止实时迁移。
  2. 强制实时迁移完成。

中止实时迁移

如果虚拟机的状态变化比迁移步骤将其复制到目标节点更快,且您不想临时暂停虚拟机的操作,则可中止实时迁移步骤。

  1. 检索虚拟机的迁移列表:

    $ nova server-migration-list [vm]

    用虚拟机名称或 ID 替换 [vm]

  2. 中止实时迁移:

    $ nova live-migration-abort [vm] [migration]

    用虚拟机的名称或 ID 替换 [vm],用迁移 ID 替换 [migration]

强制实时迁移完成

如果虚拟机的状态变化比迁移步骤将其复制到目标节点更快,且您想临时暂停虚拟机的操作以强制迁移完成,则可强制完成实时迁移步骤。

重要

强制完成实时迁移可能导致明显的停机时间。

  1. 检索虚拟机的迁移列表:

    $ nova server-migration-list [vm]

    用虚拟机名称或 ID 替换 [vm]

  2. 强制实时迁移完成:

    $ nova live-migration-force-complete [vm] [migration]

    用虚拟机名称或 ID 替换 [vm]。用迁移 ID 替换 [migration]

迁移后虚拟机性能下降

对于使用 NUMA 拓扑的虚拟机,源和目标 Compute 节点必须具有相同的 NUMA 拓扑和配置。目标 Compute 节点的 NUMA 拓扑必须有足够的资源可用。如果源和目标 Compute 节点之间的 NUMA 配置不同,实时迁移可能在虚拟机性能下降时成功。例如,如果源 Compute 节点将 NIC 1 映射到 NUMA 节点 0,但目标 Compute 节点将 NIC 1 映射到 NUMA 节点 5,则迁移后,虚拟机可能通过总线将网络流量从第一个 CPU 路由到第二个 CPU,并使用 NUMA 节点 5 将流量路由到 NIC 1—​从而导致预期的行为,但性能降低。同样,如果源 Compute 节点上的 NUMA 节点 0 有足够可用的 CPU 和 RAM,但目标 Compute 节点上的 NUMA 节点 0 已经有使用部分资源的虚拟机,则虚拟机可能运行正常,但性能会降低。请参见 第 11.2 节 “迁移限制”了解更多详细信息。