VMotion迁移要成功,必须同时满足主机CPU兼容性、网络连通性、共享存储可见性以及虚拟机自身状态这几个核心条件,缺一不可。 很多管理员在迁移时遇到失败,往往不是单个条件没满足,而是几个问题叠加在一起,下面按照实际排障的顺序,把每个条件拆开讲透。
VMotion迁移的核心条件:四道关卡逐一过关
CPU兼容性:不同代际CPU能否迁移?
VMotion迁移要求源主机和目标主机的CPU在指令集上兼容,注意,这里说的兼容不是“型号相同”,而是“目标主机能完整运行源虚拟机所需的CPU指令”。
最容易踩坑的场景是:一台老款Intel服务器上的虚拟机,想迁到新款AMD服务器上,或者从Intel迁到Intel但跨了太多代,新建虚拟机时默认的CPU模式是“自定义”,这意味着虚拟机的CPU指令集跟物理宿主机完全一致,跨代际迁移时,虚拟机会带着源主机的CPU特性(比如SSE4.2、AVX2)跑到目标主机上,如果目标不支持,迁移就会报错。
行业共识认为,解决这个问题最有效的方式是开启集群级EVC(Enhanced vMotion Compatibility)模式,EVC会屏蔽掉集群里所有主机CPU的最新技术,让虚拟机只使用公共指令集,配置路径是:vCenter中选中集群 → 右键“编辑设置” → 选择“VMware EVC” → 选择一个CPU基准模式(Intel Penryn”或“AMD Bulldozer”),开启EVC后,跨代际迁移成功率会大幅提升,如果集群已经建好,需要在所有主机处于维护模式时才能开启EVC,这点操作前要规划好。
检查虚拟机是否有“迁移兼容性”问题,最直接的方法是:在vSphere Web Client中选中虚拟机 → “监控” → “兼容性” → “迁移兼容性”,点“启动检查”,选择目标主机和网络,系统会明确列出哪些硬件条件不满足。
网络条件:VMotion迁移网络要求有哪些?
网络是VMotion迁移失败的重灾区,迁移数据会先通过TCP连接传输内存页面,所以源和目标主机必须能通过VMotion网络互通,这里的“互通”有几个层面的要求:
- 必须有一个独立的VMotion VMkernel端口,最佳实践是使用单独的物理网卡或VLAN来承载迁移流量,避免和管理网络、业务流量抢带宽,如果实在没条件,至少要把VMotion流量打上独立VLAN,并设置流量整形。
- 源和目标主机的VMotion端口必须位于同一广播域,也就是同一二层网络,跨三层路由需要配置强制vMotion,但默认情况下要求二层互通,否则会报“主机无法访问”错误。
- 网络延迟和丢包率要低,迁移过程中内存页面会反复拷贝,如果延迟超过10ms,或丢包超过0.1%,迁移很容易中断,对于超长距离迁移,要专门启用压缩和加速特性(比如VMotion压缩),并调大TCP接收缓冲区。
实际配置时,在vCenter里选中主机 → “配置” → “网络” → “VMkernel适配器” → 添加“VMotion”流量类型,并分配静态IP,注意,不要只依赖管理网络的同一IP来跑迁移流量,虽然VMware允许这么做,但会显著增加失败风险。
存储条件:共享存储是硬性要求吗?
传统VMotion迁移有一个硬性前提:虚拟机的磁盘文件必须存放在源和目标主机都能访问的共享存储上,这意味着你得有SAN、NAS或者vSAN,而不是本地磁盘,如果虚拟机在本地存储上,直接做VMotion会报“未共享存储”错误。
但很多场景下,源和目标主机可能没有共享存储,这时有两条路可选:
- 使用Storage vMotion配合VMotion:在vCenter中,把迁移类型选为“同时更改主机和存储”,系统会先把磁盘文件从本地存储复制到目标存储,然后再切换内存状态,这种方式不要求共享存储,但是迁移时间会成倍增加,因为磁盘复制很耗时。
- 先挂载临时共享存储:如果条件允许,可以临时给两台主机挂载同一个NFS数据存储,迁移完成后取消挂载,但这增加了运维复杂度,生产环境最好还是用第一种方式。
另外要注意,共享存储的数据存储版本和特性要匹配,比如源存储支持快照或加密,目标存储也必须支持相同特性,否则虚拟机迁移后某些操作会失败。
虚拟机自身状态:哪些虚拟机不能直接迁移?
即便主机条件全部满足,虚拟机自身的配置也可能触发迁移障碍,常见的有以下几种情况:
- 连接了物理设备(如USB直通):直通设备跟宿主机硬件绑定,无法随虚拟机迁移,需要先断开直通设备。
- 使用了VM DirectPath I/O(PCI直通):同样的道理,PCI设备直通后,虚拟机只能在特定宿主机上运行。
- 启用了CPU亲和性(CPU affinity):如果虚拟机绑定了指定CPU核心,迁移到主机后可能因核心布局不同而失败,建议迁移前清除亲和性设置。
- 虚拟机磁盘位于不支持的存储类型
:比如RDM物理映射模式,在某些场景下也影响迁移。
解决办法很简单:在迁移前,把虚拟机上的直通设备和CPU亲和性全部去掉,或改为自动,这些操作在vCenter的“编辑设置”里都可以完成。
VMotion迁移失败常见原因及排查思路
很多管理员问“VMotion迁移失败原因有哪些”,其实最频繁出现的就那么几个,这里列出典型的错误信息和对应的排查路径:
-
“CPU不兼容”或“主机迁移兼容性检查失败”
检查集群是否已启用EVC,以及虚拟机的CPU模式是否设为“自动”,如果虚拟机从别处导入,CPU模式是“自定义”,需要改成“兼容任意主机”并选择低版本系列。 -
“源和目标主机无法进行通信”
先ping通VMotion网段,再确认VMkernel端口是否绑定到正确的网卡和VLAN,有时是防火墙拦截了VMotion使用的8000端口,需要放行TCP/UDP 8000。 -
“无法与远程主机建立连接”
检查目标主机是否处于维护模式或已断开连接,如果目标主机在另一个vCenter中,还需要配置增强型Linked Mode或跨vCenter VMotion。 -
“内存或活动状态迁移失败”
大多因为主机负载过高,用于迁移的内存窗口不足,可以降低迁移速度级别(低、中、高),或暂停其他任务。 -
“存储未共享”
确认虚拟机磁盘所在的数据存储是否在两台主机的“存储”页面里都能看到,若是临时迁移,考虑使用“同时更改主机和存储”模式。
排查时,不要只看vCenter事件,要同时打开/var/log/vmkernel.log(ESXi主机上)和/var/log/vpxd.log(vCenter服务器上),业内专家指出,80%的迁移问题在日志里都能找到明确线索,比看报错信息更可靠。
实操建议:如何准备一次成功的VMotion迁移?
与其等迁移失败再排查,不如提前做一次清单检查,以下操作步骤可以直接复制执行:
- 确认网络:在源和目标主机的“VMkernel适配器”页面记录各自的IP,确保它们能互ping,且ping的延迟小于1ms(同机房)。
- 确认存储:在vCenter的“数据存储”视图中,检查虚拟机所在数据存储是否被两台主机同时挂载。
- 检查虚拟机硬件:进入虚拟机“编辑设置”,确认“CPU”模式为“自动”,“内存预留”没有被锁定,没有连接物理设备或PCI直通。
- 执行兼容性检查:选中虚拟机 → “监控” → “兼容性” → “迁移兼容性”,选择“仅更改主机”,并勾选目标主机。
- 调整迁移优先级:如果是在业务高峰期迁移,把迁移速度改成“低”,避免影响生产流量。
- 观察迁移过程:在任务栏里看迁移进度,如果卡在某个百分比(比如92%),不要急着取消,有时是内存重拷贝阶段,耐心等1-2分钟。
这套流程同样适用于跨vCenter迁移(需要在vCenter中先建立跨vCenter服务连接),以及混合云环境下的迁移(VMware Cloud on AWS等场景),只要四个核心条件都满足,迁移就只是时间问题。
VMotion迁移需要满足哪些条件?三个典型问题解析
Q1:VMotion迁移需要停机吗?
不需要,VMotion的设计目标就是零停机迁移,迁移期间内存页面会持续拷贝,最后一次拷贝完成后,仅存在毫秒级的网络切换窗口,业务基本无感知,但这要求虚拟机必须运行在共享存储上,如果没有共享存储,走“同时更改主机和存储”模式,迁移过程中会复制磁盘数据,期间对虚拟机磁盘读写有性能影响,但同样不会停机。
Q2:VMotion迁移和Storage vMotion区别是什么?
VMotion迁移负责把虚拟机的内存和CPU状态从一台主机搬到另一台主机,磁盘文件位置不变;Storage vMotion则是在同一台主机或不同主机之间迁移虚拟机磁盘文件,改变的是存储位置,二者可以独立使用,也可以组合搭配,组合时,vCenter会先复制磁盘,再切换主机,耗时较长,但能解决源和目标没有共享存储的问题。
Q3:VMotion迁移对业务中断的影响有多大?
在共享存储环境下,最终切换阶段业务中断时间通常小于1秒,多数应用不需要重连,对于数据库这类对网络瞬断敏感的应用,可以通过配置高可用性来容忍这次瞬断,若走存储复制路径,磁盘复制阶段会有持续IO开销,建议在业务低谷期操作,只要网络和存储条件达标,VMotion迁移本身不会造成可感知的中断。
最后再强调一遍:VMotion迁移成功的关键,不是某一项的“最优配置”,而是四个核心条件的整体配合,CPU兼容性决定虚拟机能不能跑,网络决定数据传不传得动,存储决定底座稳不稳,虚拟机自身状态决定有没有暗雷,把这四关逐一确认,再复杂的迁移场景也能从容应对。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/727250.html





