部署虚拟化时最先考虑到的方面就是基础设施的支持,也就是服务器的选择。其中,刀片服务器在虚拟化领域一直十分活跃。美国虚拟化专家Dave Convery前日撰写了一篇博文,从数学的角度对不同刀片在支持虚拟机方面的能力进行了一番比较。Dave Convery是2009年的VMware vExpert。
以下是该博文的节选编译:
我去了一个惠普的活动,那天的最后一个演示探讨了来自不同制造商的刀片服务器的区别,讲得相当不错。虽然我工作的公司出售惠普、EMC和思科的产品,但是在硬件方面,我相信所有的x64服务器都是差不多的。大家都在宣称自己的是最好的,但是用户选择品牌时考虑更多的往往是他们与供应商、制造商之间的关系,或者说他们会选择自己“偏爱的厂商”。我去的这次演示自然是偏向惠普的,不过这位惠普刀片系统工程师的演示中包含的一些数学还是十分值得思考的。
首先我们来看看一个典型的VM配置。工程师说这是“Gartner的推荐配置”。虽然我没有找到相关的资料,不过这数据似乎还算靠谱。
典型的虚拟机配置
﹥3-4GB内存
﹥300Mbps I/O(0.3Gb)
﹥﹥100Mbps以太网(0.1Gb)
﹥﹥200Mbps存储(0.2Gb)
以上没有包括CPU count,不过你会发现它在这里并不是什么关键因素,因为如今处理器的处理能力往往大于应用需求的处理能力(大部分情况)。IOps也没有考虑在内,那是存储系统的指标。
然后我们来看看一个典型的服务器配置。这篇文章讨论的是刀片服务器,不过下面的配置对于一个2U机架式服务器也是很常见的。工程师称之为“八成”服务器,意思是它满足了对一个服务器需求的80%。
典型的服务器配置
﹥2个CPU插座
﹥﹥每个插座可配置四核或六核
﹥12个DIMM插槽
﹥2个热插拔驱动
﹥主板配备2个Lan(LOM)
﹥2个Mezzanine插槽
假设我们为这个典型的服务器加载4GB或8GM的DIMM。这就是48GB的内存。接下来就是数学时间:
使用4GB的DIMM的情况
﹥总共48GB内存 / 每个VM的3GB内存 = 16个VM
﹥16个VM / 8个核 = 每个核上运行2个VM
﹥16个VM * 每个VM的0.3Gb = 4.8Gb的I/O需求(考虑到冗余还需x2)
﹥16个VM * 每个VM的0.1Gb = 1.6Gb的以太网(考虑到冗余还需x2)
﹥16个VM * 每个VM的0.2Gb = 3.2Gb的存储(考虑到冗余还需x2)
使用8GB的DIMM的情况
﹥总共96GB内存 / 每个VM的3GB内存 = 32个VM
﹥32个VM / 8个核 = 每个核上运行4个VM
﹥32个VM * 每个VM的0.3Gb = 9.6Gb的I/O需求(考虑到冗余还需x2)
﹥32个VM * 每个VM的0.1Gb = 3.2Gb的以太网(考虑到冗余还需x2)
﹥32个VM * 每个VM的0.2Gb = 6.4Gb的存储(考虑到冗余还需x2)
这样没错吧?看起来合乎情理。
下面,让我们来看看刀片们的数值。
注:IBM LS42和HP BL490c有两个内部不可插拔的驱动槽。
细数每块刀片的软肋:
﹥Cisco B200M1没有LOM,只有一个mezzanine插槽
﹥Cisco B250M1没有LOM
﹥Cisco机箱只有一对I/O模块
﹥Cisco机箱只有四个电源,使用三相电可能会遇到问题
﹥Dell M710和M905只有1GbE的LOM(出于某种原因,这两个型号的机箱中板无法支持10GbE的LOM)
﹥IBM LS42只有1GbE的LOM
﹥IBM机箱只有四个电源,使用三相电可能会遇到问题
工程师花了一些时间比较这些刀片在加载4GB和8GB DIMM时的不同。简单总结的说,并不是DIMM装载的足够多就能够支持更多的VM。也就是说,不要简单的冲到厂商那里购买一台插满了DIMM的刀片,否则你的内存利用率很可能会低于预期。你要分析你的需求,并根据需求设计你的基础设施。
我的做法一般是,告诉你一个刀片以及一个机箱能够支持的最大VM数。在我看来这应该是在设计阶段考虑好的东西,也方便用户在接触厂商时进行TCO(总体拥有成本)的计算。我根据内存容量和总I/O容量分别计算每个刀片支持的最大VM数,并取出两者之间较小的那个数作为结果。为了简化理解,这里用的计算很简单:
内存的算法
用内存的总合,减去虚拟系统所使用的以及额外消耗的6GB,然后除以3,也就是每个VM所需求的3GB。
I/O的算法
用最大冗余I/O,除以0.3Gb,也就是每个VM的I/O。
然后我查阅了每个机箱的物理参数,计算了每个机架所能放置的最大机箱数,从而计算出每个机架能够支持的VM数。机箱数量的计算中并没有包括机架交换机。真实情况是,每个机架都会预留出一些空闲空间或放置核心交换机所需的空间,因此会减少一台机箱。
当然了,这是个简化的计算结果。这个计算假设虚拟系统和额外消耗占据了6GB的内存。这个假设并没有依据任何真实测试结果。
译者注:这篇文章发表之后,其中使用的数据引起了很多争议,其中最大的争议就是针对那个“Gartner推荐的VM配置”的数值。为此,本文作者Dave之后发了另一篇文章,提供了一些虚拟化评测的真实数据。
首先是性能总览:
(点击查看原图)
如果你做过虚拟化评测(Virtualization Assessment),那么你会认出这是评测结果的总结页。这份评测结果收集了1956个服务器的数据,平均内存使用2069MB,平均CPU使用率在5.2%,平均网络流量在31KB/s。
也是总结页的一部分。这部分表格告诉我们,平均分配内存为4342MB,平均空闲内存为2273MB。
然后是所有参数的平均值。
(点击查看原图)
(点击查看原图)
上面这最后一张图是一张存储总结报告。平均磁盘读取速度为442000字节/秒,平均写入速度为200000字节/秒,加起来一共是600000字节/秒。所以总共的I/O应该是632000字节/秒(600000来自存储,32000来自网络)。用Google做下简单的换算:
632000 bytes = 0.00470876694 gigabits
这个数值远远小于“Gartner提供的”0.3Gb。因此以下是我计算的平均VM配置数值:
﹥2GB内存
﹥0.005Gbps I/O
﹥﹥0.0002Gbps以太网
﹥﹥0.004Gbps存储
当然了,这仍然也是个参考,我并没有说这是任何形式的“推荐配置”。当然有一个结果是肯定的,那就是每个刀片能够支持的VM数量要比我之前计算的数值多很多。最后我要说的还是,请根据你自己的环境分析需求并收集数据,从而设计出适合自己的配置。