虚拟机热迁移

概述

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

ProCopy

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

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

约束与限制

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

前提条件

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

操作步骤

部署 kubevirt-operator

提示:具体步骤及参数说明请参考 部署 Operator

  1. 进入 平台管理

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

  3. 单击页面最上方的 集群,切换至需要部署 Operator 的集群。

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

  5. 按需配置参数并单击 部署,可在 已部署 页签中查看 Operator 部署状态。

创建 HyperConverged 实例

具体创建步骤请参考 创建 HyperConverged 实例

准备虚拟机

说明:推荐使用 Kube-OVN Underlay 网络,相关配置请参考 创建子网(Kube-OVN Underlay 网络)

  1. 进入 容器平台

  2. 在左侧导航栏中,单击 虚拟化 > 虚拟机

  3. 单击 创建虚拟机

  4. 单击 基本信息 区域的 更多 展开更多配置项,并单击 注解 对应的 添加,按照下述键值添加注解。若网络插件为 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. 此类事件信息时,表示已迁移成功。