虚拟机热迁移
Overview
虚拟机热迁移技术允许在不关闭或中断虚拟机的情况下,将虚拟机从一台物理服务器迁移到另一台物理服务器。平台的虚拟机解决方案基于开源组件 KubeVirt 实现,默认采用一种称为 ProCopy 的模式进行热迁移。
ProCopy
ProCopy(预拷贝内存迁移)是一种常用的虚拟机迁移技术,通过预先拷贝虚拟机的内存数据来保证迁移过程中的服务连续性。具体过程如下:
- 初始阶段:迁移开始时,源主机在虚拟机继续运行的同时,将虚拟机的内存页拷贝到目标主机。由于虚拟机持续运行,部分内存页可能在拷贝过程中被修改。
- 迭代拷贝:源主机反复将被修改的内存页拷贝到目标主机,直到修改的内存页数量降至可接受的水平。每一轮拷贝称为一次迭代,经过每次迭代后未修改的内存页数量逐渐减少。
- 停止拷贝:当剩余未拷贝的内存页足够少时,虚拟机会短暂暂停(通常仅几秒到十几秒),在此期间将最后的内存页拷贝到目标主机,并将虚拟机的 CPU 和设备状态同步到目标主机。
- 恢复运行:虚拟机在目标主机上恢复运行。
约束与限制
建议参与热迁移操作的两台物理机使用相同的硬件配置。如果配置不一致(例如 CPU 型号不同),迁移可能失败。
前提条件
请提前启用相关的虚拟机热迁移功能。
操作步骤
部署 kubevirt-operator
注意:详细步骤及参数说明,请参考 Deploy Operator。
-
进入 管理员。
-
在左侧导航栏点击 应用商店管理 > Operators。
-
点击页面顶部的 集群,切换到需要部署 Operator 的集群。
-
在 OperatorHub 标签页,点击 KubeVirt HyperConverged Cluster Operator 卡片上的 部署。
-
根据需要配置参数,点击 部署。可在 已部署 标签页查看 Operator 部署状态。
创建 HyperConverged 实例
具体创建步骤请参考 Create HyperConverged Instance。
准备虚拟机
注意:建议使用 Kube-OVN Underlay 网络。相关配置请参考 Create Subnet (Kube-OVN Underlay Network)。
-
进入 容器平台。
-
在左侧导航栏点击 虚拟化 > 虚拟机。
-
点击 创建虚拟机。
-
在 基本信息 区域点击 更多 展开更多配置选项,点击 Annotations 对应的 添加,根据下表添加注解。如果网络插件是 Kube-OVN,则无需手动填写此注解。
注意:由于表单限制,请先输入注解的 值,再输入注解的 键。
-
根据需要配置其他虚拟机参数。具体参数说明请参考相关产品文档。
-
点击 创建。
启动热迁移
注意:虚拟机状态为 运行中 时才能启动热迁移。
-
进入 容器平台。
-
在左侧导航栏点击 虚拟化 > 虚拟机。
-
启动热迁移,有两种方式:
- 在列表中需要迁移的虚拟机右侧点击 ⋮ > 热迁移。
- 点击列表中需要迁移的虚拟机名称进入详情页,点击 操作 > 热迁移。
-
点击 确认。可通过 虚拟机状态 或 实时事件 查看迁移进度。当状态由 迁移中 变为 运行中,或实时事件出现类似 Migrated: The VirtualMachineInstance migrated to node 10.1.1.1. 的信息时,表示迁移成功。