服务器中的slom是虚拟机在线迁移过程中的资源调度与服务质量保障机制,作用是确保迁移操作不拖垮业务。简单说,slom像一位交通调度员,在虚拟机从一台物理机搬到另一台物理机时,替它规划好路线,控制好占用带宽和CPU的节奏,让正在运行的业务感受不到明显卡顿,下面详细拆解它的工作原理、适用场景和常见问题。
slom在服务器虚拟化中的具体身份
从名字看职责:Smart Live Object Migration
slom全称是Smart Live Object Migration,最初由VMware在vSphere的分布式资源调度(DRS)体系中引入,后来OpenStack等开源虚拟化平台也借鉴了类似思路,它解决的核心矛盾是:虚拟机迁移时既要复制大量内存数据,又不能因为复制动作抢走太多宿主机资源。
业内专家指出,slom本质上是一个自适应的流控算法模块,它实时监听两个指标:源主机CPU和网络吞吐量的剩余空间,以及目标主机的接收能力,根据这些数据,slom动态调整内存预拷贝的迭代次数和每轮传输的数据量。
它管的不只是“搬数据”
很多人误以为slom只负责压缩和传输内存页,其实它还参与三个层面的协调:
- 迁移前评估:判断当前网络带宽是否足够支撑完整迁移,避免中途失败回滚。
- 迁移中调优:每轮内存拷贝完成后,对比脏页产生速率,决定是继续迭代还是触发停机切换。
- 迁移后收尾:清理源端的临时缓存和CPU上下文,确保资源完全释放。
与普通迁移机制的本质区别
普通迁移逻辑是“有多少传多少”,slom则是“业务感知式迁移”,它会参考虚拟机配置的保留内存、CPU预留值,如果检测到业务负载突然升高,哪怕迁移进度只剩最后两步,也会主动降低拷贝速度甚至暂停几秒,优先保障业务计算能力。
slom参数设置对迁移性能的影响
关键参数有哪些
在VMware ESXi环境中,slom的行为由一组高级参数控制,最常见的是vpxd.params文件中的vpxd.migrate.pressurethreshold和VMkernel层面的Migrate.CpuThreshold,在OpenStack的Nova组件里,对应的是live_migration_downtime和live_migration_completion_timeout。
参数调优的真实场景
实际运维中,slom参数设置不当会产生两种极端:
- 阈值设得太高:调度员认为链路“还很宽裕”,于是暴力拷贝内存,结果就是物理网卡的软中断占用飙升,同一台宿主机上的其他虚拟机网络延迟暴涨。
- 阈值设得太低:调度员过于保守,每轮只传一小部分数据,当业务产生的脏页速率大于传输速率时,迁移永远无法收敛,最终被迫强行停机切换,造成秒级业务中断。

推荐的调优路径
根据VMware技术文档的公开指导,修改slom相关参数应按以下步骤操作:
- 通过SSH登录到vCenter Server,编辑
/etc/vmware-vpx/vpxd.cfg文件。 - 在
<config>标签下找到<vpxd>段落,新增<migrate>子项,并指定maxMigrations和maxMigrationsPerHost数值。 - 在每台ESXi主机的
/etc/vmware/config中添加Migrate.CpuThreshold = "90",这个值控制单次迁移允许占用的CPU比例。 - 执行
/etc/init.d/vpxa restart重启服务使配置生效。
参数修改的禁忌
不要在生产环境高峰期直接修改slom阈值,即使新配置已经推送,也需要观察至少一个完整迁移周期,如果虚拟机内存规格超过256GB,建议先扩容网络队列或使用RDMA网卡,否则单纯调参解决不了物理瓶颈。
slom如何使用在常见虚拟化平台
VMware vSphere环境下的slom
vSphere中的slom深度集成在vMotion流程里,当管理员右键虚拟机选择“迁移”时,vCenter会先与源主机和目标主机的VMkernel网卡协商,为这次迁移建立一个专用的TCP连接,此时slom负责检测该连接上的有效吞吐量,而不是简单依赖网卡的万兆速率标称值。
一个典型的现象是:明明宿主机是10GbE网络,但vMotion迁移速度只有200MB/s左右,原因就是slom发现目标主机的存储写入延迟较高,主动降速以避免目标端磁盘队列堆积,这种情况下,能做的不是关闭slom(无法关闭),而是优化目标主机的存储配置。
OpenStack Nova中的类似机制
开源领域没有直接复制slom这个名字,但Nova的libvirt驱动实现了同样的逻辑,它通过VIR_DOMAIN_JOB_STATS接口读取迁移状态,再根据cpu_time和memory_iteration两项数据判断是否需要额外分配资源,国内不少云厂商基于OpenStack二次开发时,会把相关参数重写,调整bandwidth字段的取值策略。
混合架构下slom的兼容性

多数情况下,物理机同时运行KVM和Xen虚拟机时,slom的表现会不一致,KVM默认将迁移带宽上限设置为100Mbps(较保守),而Xen的默认策略更激进,如果使用统一管理平台,建议在编排层通过API显式指定每次迁移的带宽上限,避免两者行为差异导致资源争抢。
容器场景与slom的距离
容器迁移不依赖slom机制,因为镜像和容器层的复制策略完全不同,容器实例通常被设计为无状态,迁移时直接销毁重建,只有使用Kata Containers等具备虚拟机特性的运行时,才需要重新审视slom的语义。
slom与迁移中断风险的关系
迁移中断的根源
一个完整的在线迁移要经历预拷贝、停机拷贝、恢复执行三个阶段,slom真正发挥作用的是预拷贝阶段,它试图让“脏页产生速率”低于“网络传输速率”,一旦这个条件不满足,系统只能进入强制停机拷贝,此时虚拟机被冻结,所有写操作暂停,直到内存快照传输完毕。
如何用slom判断风险
通过sikepurview工具或esxtop观察迁移过程中的MIG字段,可以实时看到slom给出的评级,如果MIG列数值长期处于9x,说明当前迁移风险极高,系统随时可能强制切换,此时应暂停迁移,为虚拟机增加内存或减少业务压力后再重试。
应对迁移风暴的slom策略
当多台虚拟机同时发起迁移时,slom必须处理带宽竞争问题,VMware采用的方法是动态降低每个迁移任务的优先级,且在总数不超过maxMigrationsPerHost的前提下,按虚拟机配置的CPU份额比例分配带宽,如果业务对可用性要求极高,建议把slom的优先级数值调高,确保核心应用能抢到更多带宽资源。
日志信息里的slom提示
在/var/log/vmkernel.log中,与slom相关的日志往往包含关键词migrate和throttle,例如持续出现Migrate: instance 0: setting cpu throttle to 1500,表示slom正在限制CPU周期,出现这条日志时,不要尝试重启服务,正确的做法是检查同一物理机上的其他虚拟机是否有突发负载。
服务器slom会影响迁移速度吗
会的,而且直接影响最终迁移总时长。 slom的机制决定了它会在“快”和“稳”之间寻找平衡,如果迁移目标是承载高并发交易业务的数据库虚拟机,slom会刻意降低速度,以换取业务零感知,以下是具体影响表现和排查方向:

- 迁移时长波动:同一批配置相同的虚拟机,由于宿主机负载不同,同一迁移任务耗时可能相差2到3倍,slom会根据实时负载动态调整,这是正常现象。
- 显卡透传场景的迁移特例:配置了GPU直通的虚拟机,slom默认不参与迁移计算,因为直通设备的显存无法由宿主机管理,如果未配置vGPU,在线迁移会被强制禁用。
- 限速参数与吞吐量的关系:手动设置迁移带宽上限后,slom会以此值为天花板,但即使不手动限速,slom也不会让单次迁移占用超过物理网卡七成左右的带宽,多网卡绑定模式下会按主适配器速率计算。
- 跨vCenter迁移的影响:slom在跨vCenter的迁移场景中降级为单纯速率控制,无法感知另一套vCenter内部的其他迁移任务,容易导致两端策略互不知情。
查看实际切换阶段的停机时间,是目前评估slom影响的最可靠方法,专业工具可以充分利用迁移后的性能基线数据来优化参数。
常见问题与排查思路
为什么slom没有按预期降低CPU占用
检查目标端主机的CPU电源策略是否设置为“最大性能”,有些节能模式会干扰slom的调度依据,让它误判CPU已处于高负荷而主动降低迁移速度。
修改slom参数后是否需要重启虚拟机
不需要,slom运行在宿主机管理层,修改参数属于热配置,但要求vCenter和ESXi主机版本一致,否则少数参数不生效,且重启服务会造成短暂的管理网络中断。
如何确认slom功能已经生效
执行vim-cmd vmsvc/get.summary命令,查看migrate字段中的nice值,在虚拟机启动选项中添加migrate.ramSpeed = "high"也可以让slom更激进一些,前提是物理主机硬件支持并在BIOS里开启了VT-d相关的虚拟化特性,确认生效的另一种方法是,在迁移过程中使用vsish -e get /vm/迁移任务ID/migrationState,输出的progressPercent字段会伴随slom的节流节奏跳变,如果该值保持线性增长则表明slom未干预。
slom是保障迁移过程平稳的“幕后管家”,它牺牲了部分迁移速度换取业务在迁移期间的稳定运行,无论是vSphere用户调整vpxd参数,还是OpenStack平台理顺带宽分配策略,理解slom的核心逻辑,都能更准确地定位虚拟化环境中的异常现象,避免在抓不到数据真相的情况下盲目调优底层网络。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/854291.html


评论列表(1条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于修改的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!