虚拟机透明迁移是让运行中的虚拟机在不中断业务、不丢失连接的情况下,从一台物理主机移动到另一台主机的技术,核心原理是共享存储加内存状态同步,实现零停机迁移的关键在于迁移期间业务进程完全不感知底层变化。
虚拟机零停机迁移方案的核心原理
很多运维朋友第一次听说透明迁移时,脑子里冒出的问题往往是:虚拟机明明在运行,内存里全是数据,怎么做到“瞬间”搬走? 这个过程不神秘,但背后有两根支柱缺一不可。
为什么虚拟机迁移需要共享存储
零停机迁移的第一步,是让两台物理主机看到同一份虚拟机磁盘文件,行业共识认为:没有共享存储,就没有真正意义的透明迁移,这里的共享存储可以是SAN、NAS,也可以是分布式存储(如Ceph、vSAN),磁盘文件本身不用“搬”,因为两端主机通过光纤或万兆网络访问的是同一个位置,这样一来,迁移动作就只剩下一件事:把CPU寄存器和内存里的数据同步过去。
举个例子,你在北京机房虚拟机迁移的场景里,物理机A和物理机B都连着同一个存储阵列,虚拟机的系统盘在存储上只有一个副本,谁接管都行,如果去掉共享存储,就必须先复制整个磁盘镜像,那段时间里虚拟机必须停机,这就是冷迁移。
内存复制与状态同步的细节
零停机迁移的第二根支柱,是内存位图迭代复制,迁移开始时,源主机把整块内存内容复制到目标主机,这个过程耗时几十秒甚至几分钟,期间虚拟机还在跑,内存里不断产生新数据,于是系统要持续标记哪些内存页被修改过,然后反复复制这些“脏页”,到最后一次脏页数量非常少时,才把虚拟机暂停几十毫秒,复制最后一批数据,然后在目标主机上恢复运行,这几十毫秒的暂停,对客户端来说几乎感知不到,所以叫透明迁移。
如何实现零停机迁移实操路径与命令
原理听懂了,动手才是真本事,下面按主流虚拟化平台拆解操作步骤。
基于VMware vMotion的操作流程
VMware的vMotion是业内最成熟的透明迁移实现,前提条件有三:源和目标主机使用相同版本的vSphere、CPU兼容性要匹配(或使用EVC模式)、共享存储已就绪。
- 在vSphere Client中,右键点击正在运行的虚拟机。
- 选择“迁移”(Migrate),类型选“仅更改计算资源”。
- 选择目标主机和网络端口组,系统会做兼容性检查。
- 确认后点击“完成”,迁移开始,期间虚拟机上的业务无感知,你可以开着ping测试验证丢包率几乎为零。
基于KVM/QEMU的迁移命令
开源生态里,透明迁移通常用 virsh migrate 命令实现,假设目标主机IP是192.168.1.10,使用NFS共享存储存放虚拟机镜像,执行:
virsh migrate --live web-server qemu+ssh://root@192.168.1.10/system --verbose
--live 参数就是热迁移开关,如果要指定带宽上限,可以加 --bandwidth 100(单位Mbps),更精细的做法是用 virsh migrate-set-maxdowntime 设置最大可接受停机时间,比如设置为100毫秒,系统会尽量控制在这个范围内完成最后的内存同步。
值得留意的坑:如果两台主机CPU型号不同,又没有配置 -cpu host 之类的CPU模型匹配,迁移会直接失败,动手前先执行 virsh cpu-baseline 对比一下。
虚拟机热迁移和冷迁移的区别何时选谁
透明迁移属于热迁移,但实际运维中经常要面对热迁移和冷迁移的选择,两者的适用场景完全不同,直接看下表:
| 对比维度 | 热迁移(透明迁移) | 冷迁移(常规迁移) |
|---|---|---|
| 业务中断时间 | 几乎为零(毫秒级) | 需要关机或暂停,持续数分钟 |
| 对共享存储的要求 | 必须 | 非必须(可复制磁盘) |
| 对网络带宽的要求 | 高,需要稳定的高速链路 | 中等,可离线慢慢传 |
| 典型场景 | 物理机维护、负载均衡、在线扩容 | 换机柜、存储迁移、虚拟化平台更换 |
| 风险等级 | 较高,需严格预检 | 较低,失败可重新来 |
什么时候必须用热迁移? 比如业务是7×24小时的支付接口,深夜也不允许停机,那就只能走透明迁移。什么时候用冷迁移更划算? 比如一台测试环境虚拟机,本身没有业务压力,直接关机拷数据就行,省去配置共享存储的成本和时间。
迁移前的风险评估与常见坑
透明迁移不是无脑点按钮,失败案例多数栽在资源预检上,以下三个环节最值得下功夫。
网络带宽与延迟的影响
零停机迁移需要持续复制内存数据,如果两台主机之间的网络带宽只有千兆,而虚拟机内存高达256GB,复制时间会非常漫长,脏页增长速度可能超过复制速度,导致迁移永远无法收敛,业内专家指出,万兆内网是生产环境热迁移的底线,建议迁移前用 iperf3 测试两台主机间的实际吞吐量,确认延迟低于2毫秒。
虚拟机迁移价格怎么算
很多企业咨询第三方服务商的虚拟机迁移价格,这里给你一个参考框架,费用通常分三块:评估费(检查现有环境复杂度)、实施费(按虚拟机数量或迁移窗口时长计费)、验证费(迁移后业务功能性测试),几十台规模的小型环境单价在几百元一台,超过百台后单价会下降,如果自己动手,主要成本是共享存储的采购和网络改造,整体投入远低于停机造成的业务损失。
最容易忽略的兼容性检查
- CPU指令集:源和目标主机最好同代硬件,否则要开启EVC模式。
- 磁盘类型:裸设备映射(RDM)和虚拟机磁盘文件在迁移时行为不同。
- 网卡类型:e1000和vmxnet3混杂时,迁移后可能断网。
- 时钟同步:Windows虚拟机若未配置时间同步,迁移后可能出现时间漂移。
虚拟机透明迁移常见问题解答
问:透明迁移过程中,外部访问会不会中断?
不会,因为虚拟机的IP地址和MAC地址在迁移前后保持不变,网络层没有感知到任何变化,唯一的微妙之处是内存暂停的几十毫秒内,TCP连接可能暂时没有响应,但不会断开,业务不会重连。
问:如果迁移中途网络断了,会发生什么?
系统会停止迁移动作,虚拟机继续在源主机上运行,你可以在目标主机上清理掉未完成的临时文件,然后检查网络后重新发起迁移,不会出现两边同时运行同一台虚拟机的情况,因为锁机制会保证同一时刻只有一个主机具有该虚拟机的控制权。
问:透明迁移和软件定义存储(SDS)有什么关系?
现代虚拟化平台常常将分布式存储和计算节点部署在同一套服务器上,这时虚拟机迁移还涉及存储资源均衡,比如vSAN环境中的存储策略会因为迁移而重新计算,如果目标主机所在集群的存储余量不足,迁移可能被阻止,这种情况下,你需要同时规划计算和存储资源,确保目标主机有足够的本地容量承载虚拟机副本。
透明迁移的价值一句话概括:让硬件维护和资源调度不再成为业务中断的理由,无论你是VMware还是KVM用户,只要提前规划好共享存储、网络带宽和CPU兼容性,零停机迁移就是一项稳定可靠的基础操作,运维的本质是消除不确定性,而这一项技术,值得你掌握到肌肉记忆里。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/628136.html





