虚拟机热迁移

目录

Overview

虚拟机热迁移技术允许在不关闭或中断虚拟机的情况下,将虚拟机从一台物理服务器迁移到另一台物理服务器。平台的虚拟机解决方案基于开源组件 KubeVirt 实现,默认采用一种称为 ProCopy 的模式进行热迁移。

ProCopy

ProCopy(预拷贝内存迁移)是一种常用的虚拟机迁移技术,通过预先拷贝虚拟机的内存数据,确保迁移过程中的服务连续性。具体流程如下:

  1. 初始阶段:迁移开始时,源主机在虚拟机继续运行的同时,将虚拟机的内存页拷贝到目标主机。由于虚拟机持续运行,部分内存页可能在拷贝过程中被修改。
  2. 迭代拷贝:源主机反复将被修改的内存页拷贝到目标主机,直到被修改的内存页数量降至可接受的水平。每轮拷贝称为一次迭代,经过多次迭代后未修改的内存页数量逐渐减少。
  3. 停止并拷贝:当剩余未拷贝的内存页足够少时,虚拟机会短暂暂停(通常仅几秒到十几秒),在此期间将最后的内存页拷贝到目标主机,并将虚拟机的 CPU 和设备状态同步到目标主机。
  4. 恢复运行:虚拟机在目标主机上恢复运行。

约束与限制

建议参与热迁移操作的两台物理机使用相同的硬件配置。如果配置不一致(例如 CPU 型号不同),迁移可能失败。

前提条件

请提前启用相关的虚拟机热迁移功能。

操作步骤

部署 kubevirt-operator

注意:详细步骤及参数说明,请参考 Deploy Operator

  1. 进入 平台管理

  2. 在左侧导航栏点击 应用商店管理 > Operators

  3. 点击页面顶部的 集群,切换到需要部署 Operator 的集群。

  4. 在 OperatorHub 标签页中,点击 KubeVirt HyperConverged Cluster Operator 卡片上的 部署

  5. 根据需要配置参数,点击 部署。可在 已部署 标签页查看 Operator 部署状态。

创建 HyperConverged 实例

具体创建步骤请参考 Create HyperConverged Instance

准备虚拟机

注意:建议使用 Kube-OVN Underlay 网络。相关配置请参考 Create Subnet (Kube-OVN Underlay Network)

  1. 进入 容器平台

  2. 在左侧导航栏点击 虚拟化 > 虚拟机

  3. 点击 创建虚拟机

  4. 基本信息 区域点击 更多 展开更多配置选项,点击 Annotations 对应的 添加,根据下表添加注解。如果网络插件是 Kube-OVN,则无需手动填写此注解。

    注意:由于表单限制,请先输入注解的 ,再输入注解的

    注解
    true
    kubevirt.io/allow-pod-bridge-network-live-migration
  5. 根据需要配置其他虚拟机参数。具体参数说明请参考相关产品文档。

    参数说明
    卷模式必须使用 块模式
    存储类必须使用 CephRBD 块存储类型存储类
    网络模式推荐使用 桥接模式
  6. 点击 创建

启动热迁移

注意:虚拟机状态为 运行中 时,方可启动热迁移。

  1. 进入 容器平台

  2. 在左侧导航栏点击 虚拟化 > 虚拟机

  3. 启动热迁移,有两种方式:

    • 在列表中需要迁移的虚拟机右侧点击 ⋮ > 热迁移
    • 点击列表中需要迁移的虚拟机名称进入详情页,点击 操作 > 热迁移
  4. 点击 确认。可通过 虚拟机状态实时事件 查看迁移进度。当状态由 迁移中 变为 运行中,或实时事件出现类似 Migrated: The VirtualMachineInstance migrated to node 10.1.1.1. 的信息时,表示迁移成功。