暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

#工作小结# 虚拟化环境中相同CPU主机间不能迁移虚机的原因

子衿技术联盟 2016-05-12
1118
点击上方“子衿技术论坛” 一键关注技术干货

  

        虚拟化项目中一个重要且实用的功能是虚拟机的在线迁移。实现在线迁移的先决条件是:同家族CPU(同是intel或AMD)、相同的指令集、共享存储、vmotion网络。指令集相近、型号不同的CPU之间要想实现在线迁移,需要开启EVC功能。EVC功能是使不同CPU之间运作于相同的指令集上,这样势必会降低某些CPU的性能,是不得已而求其次的办法。



       西安灾备数据中心建设2年,虚拟化宿主服务器137台,集群22个,目前存在的主要问题之一就是机器采购批次多,型号不统一,缺乏统一规划,集群内的虚拟机受限于宿主机CPU不同而无法在线迁移。


       开启EVC功能是简单直接的解决方法。然而损失性能为代价不是我们追求的目标。在实际项目中,好的架构设计应该是:满足需求—安全稳定—简单设计—成本与性能相平衡—充分发挥硬件性能。在这样的指导原则下,我开始尝试不开启EVC的集群整合方案。




       之前听同事说“遇到相同型号CPU的不同品牌主机之间不能在线迁移”的话题,没有引起注意。而今,这样的问题我也遇到了。


       以CPU型号为IntelXeon E7-4830  @2.13GHz的服务器为例,同型号CPU的服务器45台,包含了3个品牌5种型号。按照以前的经验,相同CPU的宿主机之间肯定是可以在线迁移的,这也是创建vmware集群硬件选型的依据之一。然而实测发现,确实存在主机之间有些可以在线迁移,有些不行的问题。


下表记录了实测结果:


表:实测可在线迁移的CPU兼容列表

从表中记录可看出:

1.      兼容组1包含序号为1、3、4的服务器,相互间支持在线迁移;

2.      兼容组2包含序号为2、5的服务器,相互间支持在线迁移;

3.      兼容组1与兼容组2之间不支持在线迁移。


那么是什么原因导致同型号CPU主机之间不能在线迁移呢?


通过查看vmware官方文档,可看到虚拟机在线迁移的原理是:


(1)首先,虚拟机的封装特性将整个虚拟机以一组文件的形式保存在共享存储设备上。VMWare群集文件系统(VMFS)允许多个ESX Server以并行方式访问同一组虚拟机文件。 


(2)第二,虚拟机的活动内存及精确的执行状态通过高速网络快速传输,因而虚拟机可以从源ESX Server上切换到目标ESX Server上运行。Vmotion通过在位图中连续跟踪内存事物来确保用户察觉不到此传输期。一旦整个内存和系统状态拷贝到目标ESX Server,Vmotion将终止源虚拟机的运行,并在目标ESX Server上恢复虚拟机的运行。


(3)第三,虚拟机使用的网络也被底层ESX Server虚拟化,确保即使在迁移之后,虚拟机的网络身份和网络连接也能保留下来。Vmotion在此过程中管理虚拟MAC。一旦目标机被激活,Vmotion就会ping网络路由器,以确保它知道MAC地址的新物理位置。因为用Vmotion进行虚拟机迁移可保持精确的执行状态、网络身份和活动网络连接,因而实现了零停机时间而且不中断用户操作。




分析项目中的特定环境,上述几个动作条件都是满足的,那么最有可能的限制因素还是在计算资源CPU上。


再来看看CPU厂家的相关资料,忽然发现一个陌生的名词:CoreStepping


       Intel的官方文档中的CoreStepping,解释为“核心步进”。步进是CPU的一个重要参数,也叫分级鉴别产品数据转换规范,“步进”编号用来标识一系列 CPU的设计或生产制造版本数据,步进的版本会随着这一系列CPU生产工艺的改进、BUG的解决或特性的增加而改变,也就是说步进编号是用来标识CPU的这些不同的“修订”的。同一系列不同步进的CPU或多或少都会有一些差异,例如在稳定性、核心电压、功耗、发热量、超频性能甚至支持的指令集方面可能会有所差异。



看到这里,我们终于有了一个答案:相同型号CPU之间,还有一个CoreStepping来标识可能存在的指令集的差异。这也就是导致同型号CPU主机之间不能在线迁移的真正原因。

那么怎么样才能识别CoreStepping信息呢?


答案就是在处理器表面的S-Spec,它是最直观最准确的。


标识一:在盒装处理器标签上查找sSpec 编号

 

上图是一颗Core2处理器表面的文字,第三行中,第二个字段“SL9SA”就是S-Spec号。由于S-Spec号都是以“SL”开头,也被称作SL号。SL号是识别处理器的重要依据,每一个SL号只对应某一特定频率,缓存外频和步进的处理器。所以S-Spec号对处理器的分类是最精细的。处理器的任何一个参数发生变化都会引起SL号的变化。比如,都是E6300处理器,也会因为步进的不同而有不同的S-Spec号这就是以S-Spec号来识别步进的依据。

 

标识二:在处理器标记中查找sSpec 编号



 

联系我们


子衿技术公众号邀请IT界技术大牛激扬文字,发表真知灼见,篇篇干货。

我们依托南瑞集成实验室,开展线下交流,动手实践,欢迎您的加入!

地址:南京市江宁区诚信大道19号南京南瑞集团公司信息系统集成分公司

电话:025-81095705




欢迎扫码关注子衿技术


1)推送在【子衿技术】平台的文章,阅读量超过1000,该文章作者可获赠礼品。

2)投稿数量较多的作者可获赠礼品。

3)定期从关注的用户中抽取3名幸运关注用户,这3名幸运用户可获赠礼品。


 技术干货文章随时欢迎向“子衿技术团队”订阅号投稿。

 投稿邮箱:xx.miaojingwen@163.com

文章转载自子衿技术联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论