获取验证码
在vSphere日常运维中,经常需要执行vMotion迁移,分为只迁移内存计算的Memory vMotion,以及同时迁移磁盘数据的Storage vMotion。很多运维存在疑问:执行存储vMotion切换虚拟机存储路径的时候,业务虚拟机到底会不会闪断? 不少文档笼统说明vMotion无中断,但实际生产环境Storage vMotion在最后切换存储路径时刻,虚拟机存在短暂IO无响应,业务会出现毫秒到数百毫秒级卡顿;而单纯内存vMotion几乎不会感知业务抖动。本文拆解两种迁移底层机制,量化业务影响,给出生产环境迁移最佳实践,规避迁移引发业务异常。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
Memory vMotion(仅跨主机迁移,存储位置不变):虚拟机网络、IO持续运行,业务几乎无感知,不会出现闪断;
Storage vMotion(迁移虚拟机磁盘,存储路径切换,主机不变或同时跨主机):迁移进度到95%‑99%阶段,虚拟机发生短暂IO无响应;
业务表现:数据库、中间件会出现短暂IO超时,部分TCP业务出现毫秒‑几百毫秒抖动,敏感业务可以观测业务卡顿;
该现象属于Storage vMotion固有机制,不属于故障异常。
某生产VMware集群,运维业务低峰执行Storage vMotion,把十几台业务虚拟机从旧存储迁移到新共享存储。单纯跨主机vMotion业务全部平稳;执行Storage vMotion的数据库虚拟机,迁移临近结束瞬间,监控捕获IO延迟突增,数据库日志报短暂IO等待,部分应用出现少量请求超时。 最开始怀疑存储或者网络故障,查阅VMware官方文档确认:Storage vMotion完成阶段切换磁盘句柄,会存在短暂停顿,属于设计机制。后续调整迁移执行窗口,避开业务高峰,拆分批量迁移任务,规避业务抖动风险。
虚拟机磁盘文件保留在原有存储,只把虚拟机运行内存状态迁移到目标ESXi主机。迁移全程持续迭代拷贝内存脏页,最后极短时间切换CPU执行上下文。整个过程磁盘IO路径完全不变,磁盘句柄没有发生变更,磁盘IO不会中断,网络切换时间极短,绝大多数业务无任何感知。
Storage vMotion把虚拟机磁盘完整复制到目标存储,前期后台拷贝磁盘数据,虚拟机仍然读写原始磁盘。当磁盘拷贝接近100%完成时,vSphere需要切换虚拟机磁盘句柄,把IO访问路径从源存储切向目标存储。 这个切换动作需要暂停虚拟机IO,造成短暂IO停顿。停顿时长受存储性能、磁盘数量、快照数量影响,通常几毫秒到几百毫秒。如果虚拟机存在多块磁盘、快照链过长,停顿时间会进一步拉长。
同时迁移计算主机+存储,该操作会同时包含内存迁移逻辑与Storage vMotion存储句柄切换逻辑,依然会出现存储切换带来短暂VM IO无响应。
虚拟机带有大量快照:快照链越长,Storage vMotion切换阶段开销越大,停顿时间明显拉长;
虚拟机多块虚拟磁盘:磁盘数量越多,句柄切换开销累加;
源/目标存储性能差:机械存储、存储负载高的时候切换延迟会放大;
虚拟机IO压力高:迁移期间业务IO很高,切换瞬间更容易出现应用IO超时;
旧版本ESXi:ESXi7.0及更早版本Storage vMotion停顿相比8.0更长,新版本做了优化。
vCenter监控虚拟机磁盘IO延迟,迁移进度走到95%~99%区间,观察磁盘Latency瞬间冲高;
查看虚拟机任务事件,Storage vMotion任务完成时刻对应IO抖动时间点;
业务侧监控:数据库慢查询、应用接口响应时间监控,可捕捉短暂抖动;
ESXi主机日志路径 /var/log/vmware/vmkernel.log,可以检索storage vmotion、switch over关键词查看切换事件。
如果只是主机资源均衡,不需要迁移存储,优先执行普通Memory vMotion,不会产生存储路径切换,不会带来IO停顿。
Storage vMotion不可避免存在短暂IO停顿,数据库、核心交易类敏感业务,严禁业务高峰期批量执行存储迁移,放到夜间维护窗口操作。
长时间未合并的快照会极大加重Storage vMotion切换开销,迁移前优先删除、合并快照,减少磁盘链复杂度,降低切换停顿时长。
不要一次性同时执行大量Storage vMotion,多任务并行会加重存储负载,放大每台虚拟机切换时IO延迟。修改vSphere并发存储迁移数量,避免存储过载。
ESXi8.0对Storage vMotion切换逻辑做优化,相比7.0可以降低切换停顿时间,有条件优先升级ESXi版本。
| 现象描述 | 根因说明 | 处理建议 |
|---|---|---|
| Memory vMotion迁移,业务完全无抖动 | 仅迁移内存上下文,磁盘IO路径不变 | 计算负载均衡优先选用该迁移模式 |
| Storage vMotion临近完成,虚拟机短暂IO无响应,业务毫秒卡顿 | 磁盘句柄切换,虚拟机IO短暂暂停,产品固有机制 | 低峰窗口执行,清理快照,减少单批次任务 |
| Storage vMotion停顿时间长达数秒,业务报错断开 | 快照链过长、存储繁忙、多磁盘叠加影响 | 合并快照,降低存储负载,拆分迁移任务 |
| 同时跨主机+存储迁移依然出现IO卡顿 | 混合迁移包含Storage vMotion存储切换逻辑 | 敏感业务拆分操作,先迁移计算,再迁移存储 |
| Storage vMotion迁移失败,虚拟机磁盘只读 | 迁移过程存储链路抖动,属于异常故障 | 检查存储多路径,排查存储性能,重新发起迁移 |
1. 误区:所有vMotion迁移都是完全零中断,不会产生任何业务停顿纠正:只有纯Memory vMotion做到几乎无感知;Storage vMotion磁盘句柄切换阶段会有短暂IO停顿,属于产品固有行为,不是BUG。
2. 误区:Storage vMotion短暂停顿等于虚拟机宕机纠正:虚拟机不会重启、不会关机,只是磁盘IO短暂阻塞,大部分非敏感业务无感知,高IO敏感数据库会观测到超时告警。
3. 误区:业务高峰期大批量执行Storage vMotion没有风险纠正:业务IO压力大时,短暂停顿会放大业务报错概率,核心业务避开高峰执行存储迁移。
4. 误区:有快照不影响Storage vMotion性能纠正:快照链会成倍增加磁盘切换开销,迁移前优先清理快照。
日常主机负载均衡:优先使用纯Memory vMotion,不改动虚拟机存储路径;
存储迁移任务统一规划至业务低峰维护窗口,核心数据库业务重点评估影响;
Storage vMotion执行前检查虚拟机快照,合并过期快照,缩短快照链;
限制集群并发Storage vMotion任务数量,防止存储带宽耗尽,放大IO停顿;
迁移过程监控存储延迟、虚拟机磁盘IO指标,一旦存储负载过高暂停剩余迁移任务;
版本方面,对IO极度敏感业务,优先升级ESXi8.0,利用新版本Storage vMotion优化能力。
vMotion存储路径切换是否闪断,要区分迁移类型。Memory vMotion只迁移计算内存,磁盘IO链路不变,虚拟机不会发生IO闪断;Storage vMotion存储迁移在任务末尾切换磁盘句柄,会产生短暂虚拟机IO无响应,停顿时间毫秒级到数百毫秒不等,快照多、存储压力大时卡顿会加剧。 生产运维不要混淆两种迁移的业务影响,核心敏感业务尽量规避高峰执行Storage vMotion,迁移前清理快照,控制并发迁移任务,避免短暂IO停顿引发上层应用报错。