热迁移与冷迁移是什么
热迁移在虚机运行状态下把内存与设备状态搬到另一台宿主。KVM 以预拷贝(pre-copy)为主:先整体传输内存,再反复重传被修改的脏页,等剩余量足够小后短暂暂停完成切换;另有 post-copy 等策略,代价是失败时恢复更麻烦。停机时间与脏页速率、迁移带宽强相关。冷迁移是关机后搬运配置与磁盘,简单可控但停机时间长。
基本信息
| KVM 实现 | 预拷贝(pre-copy)为主,另有 post-copy |
|---|---|
| 前提 | 两端 libvirt 版本兼容、存储与网络规划清楚、CPU 特性匹配 |
| 停机时间 | 与脏页速率和迁移带宽强相关 |
| 存储处理 | 共享存储只传内存;无共享存储需复制磁盘 |
| 冷迁移 | 关机后拷贝配置与磁盘:可控但停机时间长 |
典型使用场景
- 宿主维护或升级前把运行中的虚机迁走
- 手工均衡节点负载,避免热点宿主
- 机房搬迁时用冷迁移做批量搬运
- 容灾切换演练中验证迁移流程与回退路径
- 存储维护时只迁移计算资源,磁盘留在原地
观察迁移进度与执行迁移
观察迁移进度与执行迁移
virsh domjobinfo vm1 # 迁移过程中查看进度与剩余数据量
virsh migrate --live --verbose vm1 qemu+ssh://node2/system
virsh domblklist vm1 # 核对迁移后磁盘映射
virsh list --all | grep vm1 # 确认源端与目标端状态
# 冷迁移:关机后搬运定义与磁盘,再在目标端 define 并启动
virsh shutdown vm1热迁移与冷迁移对比
| 维度 | 热迁移 | 冷迁移 |
|---|---|---|
| 业务中断 | 通常为秒级 | 从分钟到小时,取决于数据量与链路 |
| 前提条件 | CPU 兼容、网络互通、存储方案明确 | 仅需能搬运定义与磁盘文件 |
| 主要影响因素 | 脏页速率与迁移带宽 | 磁盘容量与传输速度 |
| 失败处理 | 源端仍可回退,虚机不会同时运行 | 重新开机即可,风险较低 |
| 适用场景 | 在线维护与负载均衡 | 可停机业务、大容量数据搬运 |
预拷贝能否收敛取决于业务写入强度:写密集的大内存虚机可能长时间停在最后阶段,必要时限流业务写入或改用带停机时间目标的方式。
迁移前确认目标端的 CPU 特性、存储路径与网络名称:三者之一不匹配都会让迁移失败或迁移后虚机起不来,先做一次小规格虚机的试迁更稳妥。