1. 硬件描述

Lab1
Lenovo R525
Intel E5620
Lab2
Lenovo R520
Intel E5620
Lab3
Lenovo R515
Intel E5405

2. 软件产品描述

这次测试的版本环境是 Citrix XenServer 6.0 铂金版


3. 系统要求限制

CPU 类型要求是一个池内需要同厂商的CPU类型,即Intel CPU的归在一个池内,AMD CPU的归在另外一个池内。不能在一个池内混用Intel和AMD的CPU。

另外需要CPU能够支持Intel FlexMigration 或AMD EnhanceMigration 功能。这个功能是提供VM虚机CPU Feature Mask的功能,可以屏蔽一些CPU的特性指令集。

原则是池内所有的Host 以完全相同的CPU指令集来执行运算。


4. 测试步骤
4.1 确认Host CPU 类型

Citrix XenServer 异构 CPU Pool 池搭建步骤_第1张图片
Citrix XenServer 异构 CPU Pool 池搭建步骤_第2张图片

4.2 取得Lab01、Lab02、Lab03上运行物理CPU使用的feature
使用命令:xe host-cpu-info
参数说明:features 当前CPU使用的feature
features_after_reboot 修改后重启使用的feature
physical_features CPU物理上支持的feature
maskable:Full 表示该CPU硬件支持修改FeatureMask
Citrix XenServer 异构 CPU Pool 池搭建步骤_第3张图片


4.3 通过比对两台不同CPU主机的CPU feature,计算出主机功能测Common Mask
Lab01 029ee3ff-bfebfbff-00000001-2c100800 E5620
Lab02 029ee3ff-bfebfbff-00000001-2c100800 E5620
Lab03 040ce33d-bfebfbff-00000001-20100800 E5405
将两种16进制字串转换程二进制进行AND操作:
示例:
00000100000011001110001100111101 00100000000100000000100000000000
AND
00000010100111101110001111111111 00101100000100000000100000000000
=
00000000000011001110001100111101 00100000000100000000100000000000
上面的2进制大家有兴趣的话,可以看看代表了CPU具体什么功能。
方便的算法直接那计算器,拿每段16进制的数据 逻辑AND即可得出所需的Common Mask值出来。
比如:029ee3ff AND 040ce33d = CE33D。

Citrix XenServer 异构 CPU Pool 池搭建步骤_第4张图片 

因为XenServer的Mask是8位16进制的,需要补全前面的位数,所以正确的应该为000CE33D。

最终得到二进制的Common Mask后的16进制格式为:

000CE33D-BFEBFBFF-00000001-20100800

使用命令:xe host-set-cpu-features features=000CE33D-BFEBFBFF-00000001-20100800 UUID=HOST_UUID

参数说明:features CPU使用的Common Mask

UUID 主机端的Host UUID (不加这个参数也可)

Citrix XenServer 异构 CPU Pool 池搭建步骤_第5张图片

4.4在lab02上设置common mask,重启生效
过程如上图


4.5在lab03上设置common mask,重启生效
过程如上图
系统重启后的状态如下:

Citrix XenServer 异构 CPU Pool 池搭建步骤_第6张图片

注意:这里当前的Features 已经生效了 Features=000ce33d-bfebfbff-00000001-20100800

重启后的Features 也已经生效了

features_after_reboot=000ce33d-bfebfbff-00000001-20100800

3.5按正常步骤完成Lab02及Lab03异构池建立

系统重启后的状态如下:

Citrix XenServer 异构 CPU Pool 池搭建步骤_第7张图片
  Citrix XenServer 异构 CPU Pool 池搭建步骤_第8张图片

4.6 将已经修改好CPU Feature的Host加入到同一个Pool池中

Citrix XenServer 异构 CPU Pool 池搭建步骤_第9张图片

5. 经验总结:

一般的操作步骤为以下过程:

1. 选取不同CPU型号的机器的CPU Feature值

2. 将得到的CPU Feature 值进行逻辑AND操作,(如果场景中有更多的CPU类型,需要全部做一边逻辑AND操作),从而得到Common Mask值

3. 在每台XenServer Host上,将CPU Feature 设置成Common Mask值

Citrix XenServer 异构 CPU Pool 池搭建步骤

4. 设备重启

5. 将不同的Host主机加入的Pool池中

6. 完成

6. 问题探讨:

有时存在老的Pool,需要重新建Pool的时候,会发生以下的现象:

Citrix XenServer 异构 CPU Pool 池搭建步骤_第10张图片

修改 HOST CPU Feature会报 The use of this feature is restricted.的错,这表明这个操作

注意:Host退出Pool池后,本地存储会被格式化清空,XAIP Database会被清空,License Server注册信息也会被清空。所以这里需要重新分配License Server。

Citrix XenServer 异构 CPU Pool 池搭建步骤_第11张图片
Citrix XenServer 异构 CPU Pool 池搭建步骤_第12张图片