2. vMotion技术原理与迁移类型
vMotion 是 vSphere 中最核心的在线迁移能力,但“vMotion”并不是单一功能,而是一组围绕虚拟机运行状态、磁盘位置和主机归属进行在线搬迁的机制集合。理解它的关键,是先分清迁移过程中到底“搬了什么”:是搬计算状态(CPU、内存、设备状态),还是搬存储位置(VMDK、配置文件),还是两者同时搬。围绕这三个维度,就形成了计算 vMotion、存储 vMotion、以及跨主机与跨存储的组合迁移。
一、计算 vMotion:只搬运行状态,不搬磁盘
计算 vMotion(常直接称为 vMotion)迁移的是虚拟机的运行状态,包括内存内容、CPU 寄存器状态、设备状态以及网络连接信息,而虚拟机的磁盘文件仍保留在原共享存储位置。因此它的前提是:源主机和目标主机必须能同时访问同一份存储(通常是共享的 VMFS、NFS 或 vSAN 数据存储),并且二者位于同一二层网络或具备相同的端口组可达性。
其核心机制可以概括为“预拷贝 + 快速切换”。迁移开始时,源主机为目标主机创建内存镜像,先把全部内存页复制过去;随后进入迭代预拷贝阶段,只复制在上一次拷贝期间被写脏的内存页,如此反复,直到剩余脏页量足够小。此时虚拟机会被短暂“暂停”(stun),把最后一批脏页和 CPU/设备状态一次性传输过去,目标主机接管运行,源主机释放资源。整个过程对外的业务中断通常只有毫秒级到秒级。
计算 vMotion 的典型适用场景是:主机硬件维护(如更换内存、升级 BIOS)、主机负载均衡(DRS 自动触发)、主机故障前的主动疏散,以及在不改变存储位置的前提下调整计算资源归属。它不解决存储层面的问题,因此如果磁盘本身在本地存储上,计算 vMotion 无法单独完成迁移。
二、存储 vMotion:只搬磁盘,不换主机
存储 vMotion(Storage vMotion)迁移的是虚拟机的磁盘文件和配置文件,而虚拟机仍运行在同一台 ESXi 主机上。它解决的是“数据放在哪里”的问题,而不是“在哪台主机上运行”的问题。典型用途包括:把虚拟机从本地存储迁到共享存储、从旧存储阵列迁到新阵列、在不同数据存储之间做容量或性能再平衡、以及在不中断业务的情况下更换存储后端。
存储 vMotion 的机制是“镜像 + 切换”。ESXi 会在目标数据存储上创建磁盘的镜像副本,把源磁盘的数据块逐步复制过去;在复制过程中,虚拟机对源磁盘的写入会被记录并同步到目标副本,保证两边数据一致。当增量同步收敛后,虚拟机会短暂 stun,完成最后一次数据同步,然后把磁盘路径切换到目标数据存储,并更新虚拟机的配置文件指向新位置。整个过程虚拟机保持运行,业务不中断。
需要注意的是,存储 vMotion 对存储类型有兼容性要求:源和目标数据存储必须能被同一台 ESXi 主机访问,且文件格式、块大小、快照状态等要满足迁移条件。如果虚拟机存在大量快照或正在执行某些特殊操作,迁移可能被阻止或需要额外处理。
三、跨主机与跨存储组合迁移:计算 + 存储同时搬迁
当虚拟机既需要更换运行主机,又需要更换磁盘所在存储时,就需要使用组合迁移。在 vSphere 中,这通常表现为“更改主机 + 更改数据存储”同时勾选,或者通过跨 vCenter 的 Hybrid vMotion 实现。它本质上是计算 vMotion 与存储 vMotion 的协同:内存状态向目标主机迁移,磁盘数据向目标数据存储迁移,两者并行推进,最后在目标主机上完成统一切换。
组合迁移的适用场景非常明确:跨集群迁移、跨数据中心迁移、主机与存储同时退役、以及把本地存储虚拟机整体搬迁到共享存储并更换主机。它的前提条件也更严格:源主机和目标主机之间需要网络互通,目标主机必须能访问目标数据存储,且源与目标之间的存储路径、网络带宽和延迟要满足迁移要求。由于同时涉及内存和磁盘两条数据流,组合迁移对网络带宽和存储性能的消耗明显高于单一迁移。
四、三类迁移的机制对比与选择依据
把三类迁移放在一起看,它们的共同点是都依赖“预拷贝或镜像 + 短暂暂停 + 切换”的基本机制,区别在于迁移对象和前提条件不同。计算 vMotion 迁移的是运行状态,要求共享存储;存储 vMotion 迁移的是磁盘数据,要求同一主机可访问源和目标存储;组合迁移两者都迁,要求主机和存储同时满足条件。
| 迁移类型 | 迁移对象 | 主机是否变更 | 存储是否变更 | 关键前提 | 典型场景 |
|---|---|---|---|---|---|
| 计算 vMotion | 内存、CPU、设备状态 | 是 | 否 | 共享存储、网络互通 | 主机维护、DRS 负载均衡 |
| 存储 vMotion | VMDK、配置文件 | 否 | 是 | 同一主机可访问源/目标存储 | 存储升级、容量再平衡 |
| 组合迁移 | 运行状态 + 磁盘数据 | 是 | 是 | 主机与存储条件同时满足 | 跨集群、跨数据中心搬迁 |
五、实际判断与操作要点
在实际工程中,选择哪种迁移方式,第一步不是看界面按钮,而是先确认虚拟机的磁盘位置。如果磁盘位于共享存储,且目标主机也能访问该存储,那么只做计算 vMotion 即可;如果磁盘在本地存储,或者需要更换存储阵列,就必须叠加存储 vMotion;如果主机和存储都要换,则直接使用组合迁移。
以一台运行在 ESXi-01 本地存储上的虚拟机为例,假设需要迁移到 ESXi-02 并放入共享 vSAN 数据存储。此时不能只做计算 vMotion,因为 ESXi-02 无法访问 ESXi-01 的本地磁盘。正确做法是选择“更改主机 + 更改数据存储”,即组合迁移。迁移过程中,内存状态向 ESXi-02 传输,磁盘数据向 vSAN 数据存储镜像复制,最终在 ESXi-02 上完成切换。判断迁移是否成功的依据包括:虚拟机在目标主机上正常运行、磁盘文件出现在目标数据存储、源主机上不再保留该虚拟机注册信息、业务网络连通性未中断。
总结来说,计算 vMotion 解决“换主机不换存储”,存储 vMotion 解决“换存储不换主机”,组合迁移解决“主机和存储一起换”。三者共享相似的在线迁移机制,但适用场景和前提条件不同。理解“搬什么”和“需要什么条件”,就能在实际运维中快速判断该用哪一种迁移方式。