KVM热迁移的核心是虚拟机不停机跨主机平滑迁移,依赖内存预拷贝与脏页迭代、共享存储、网络无缝切换三者协同;先全量传内存,再迭代同步脏页,待脏页率低于传输速率时毫秒级暂停完成最终同步。

内存预拷贝与脏页迭代同步
迁移启动后,KVM 先把源虚拟机当前全部内存页一次性传到目标主机;此时虚拟机仍在运行,内存持续被修改。系统通过脏页跟踪机制(如传统 dirty bitmap 或更高效的 dirty-ring)识别哪些页被写入,并在后续轮次中只传输这些“脏页”。该过程反复进行,每次间隔缩短、脏页数量递减,直到剩余脏页能在毫秒级内完成同步。
- 可通过
virsh migrate-setmaxdowntime <domain> 30设置最大停机时间为 30ms,强制在该时限内完成最终暂停与同步 - 高写负载场景(如频繁 GC 的 Java 应用)容易出现“脏页生成速度 > 传输速度”,导致迁移卡住;此时建议降低迁移速率(
--migrate-unsafe配合限速)、临时压降业务压力,或启用 dirty-ring 提升捕获效率
共享存储是前提条件
热迁移要求虚拟机磁盘镜像对源和目标宿主机同时可读写。常见方案包括 NFS、iSCSI、FC-SAN、CephFS 或 GlusterFS。其中:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- NFS 适合测试与中小规模环境,挂载时推荐参数:
hard,intr,rsize=1048576,wsize=1048576,vers=4.1 - 生产环境优先选 CephFS 或 FC-SAN,兼顾性能、可靠性及多节点并发访问能力
- 本地磁盘不支持原生热迁移;若必须使用,需借助 DRBD 或 QEMU 的 block migration,但会显著拉长迁移时间、占用大量带宽
- 确保两端挂载路径一致、UID/GID 权限匹配,且文件系统支持并发元数据操作(如 XFS + barrier 关闭)
网络连续性保障与 ARP 切换
迁移完成后,虚拟机 MAC 地址不变,但物理出口已切换至新宿主机。为避免网络闪断,目标宿主机会主动发送免费 ARP(Gratuitous ARP)通知交换机更新 MAC 地址表。配合内核 conntrack 和 TCP 重传机制,绝大多数长连接(SSH、数据库连接等)可自动恢复。
- 源/目标宿主机桥接网卡配置须完全一致:相同 bridge 名、STP 设置、MTU 值
- 若使用 OVS 或 SR-IOV,需提前在目标机部署同类型虚拟网络设备,并绑定对应 PCI 设备
- 部分老旧交换机禁用免费 ARP 学习,需手动刷新 MAC 表,或启用 IGMP Snooping 等兼容模式

















