服务器 频道

虚拟化环境可用计算资源相关综合分析

  【IT168 方案】虚拟化环境中可用计算资源的状态,一直是各企业对服务器虚拟化环境最为关心的问题。通过对虚拟化环境中服务器的集中监控,取得服务器的利用率情况,经过一系列的汇总和分析,就可以实时获得虚拟化环境中可用计算资源的信息。这一模式已经得到IT部门的普遍认同,同时也成为IT投资的一个重要参考依据。本文以ITM(IBM Tivoli Monitoring)对VMware 虚拟化环境的监控数据为基础,从以下几个方面介绍如何对虚拟化环境中可用计算资源进行分析:

  • 介绍如何获取虚拟服务器主机可用的计算资源。

  • 将可用计算资源折算成可以部署的虚拟机数量。

  • 如何从不同的角度以报表的形式体现虚拟化环境可用计算资源。

  • 可用资源分析过程中需要考虑的其它因素。

  1. 获取虚拟化服务器主机的可用计算资源

  本节以一个典型的ITM监控下的VMware虚拟化环境(12台VMware ESX 服务器由1台VMware vCenter服务器集中管理)为例,介绍如何从ITM数据仓库TDW(Tivoli Data Warehouse)的历史数据中获取主机计算资源使用情况。

  计算机环境的可用计算资源,一般会从虚拟化主机的CPU,内存,硬盘空间三个方面来衡量。而对于网络的使用情况,一般不作为衡量计算资源的一个指标计算。ITM数据仓库,记录了所有上述资源的使用情况的数据 (关于如何配置TEPS (Tivoli Enterprise Portal Server) 和数据仓库TDW (Tivoli Data Warehouse)收集历史数据,以及ITM数据仓库中VMware VI监视代理相关数据表格介绍,请参考IT168上的文章:虚拟化环境计算资源利用率信息获取分析) 。ITM监控数据收集到数据仓库后,针对不同的收集频率,数据将会存储到不同的数据库表中。对于可用资源的分析,一般需要精确到每天,然后根据一段时间的信息分析它的趋势。

  对虚拟化主机每天的数据进行分析,主要涉及到以下几个表格的数据信息:

  • KVM_SERVER_CPU_D ? 每天的虚拟化服务器主机CPU使用情况信息

  • KVM_SERVER_MEMORY_D ? 每天的虚拟化服务器主机内存使用情况信息

  • KVM_SERVER_DATASTORE_D ? 每天的虚拟化服务器主机存储空间使用情况信息

  • KVM_SERVER_D ? 每天的虚拟化服务器主机基本信息

  下面分别讨论如何获取计算虚拟服务器的可用资源(CPU,内存和磁盘空间),以便计算出能有多少虚拟机可以部署到虚拟化环境。

  虚拟主机CPU的使用情况,需要对每一台虚拟化主机,取得每天平均的CPU使用百分比(KVM_SERVER_CPU_D.”AVG_CPU_Utilization”)和这台虚拟主机上所部属的虚拟机的数量(KVM_SERVER_D.” AVG_Number_VMs_On”),从而计算得到每台虚机所占用的主机的百分比,以及根据剩余的CPU利用率计算得到的可用的CPU资源。

  虚拟主机内存的使用情况,则需要取得每个虚拟主机的所有物理内存的大小(KVM_SERVER_Memory_D."MAX_Physical_Memory"),以及已经分配给虚拟机的内存的大小(KVM_SERVER_Memory_D."AVG_Memory_Usage")。从而根据剩余的内存使用率计算得到的可用的内存大小。

  虚拟主机可用存储空间的信息,需要对某一虚拟主机所关联的所有存储空间进行求和得到,主要涉及到的数据包括可用的存储空间(KVM_SERVER_DATASTORE_D.” AVG_Free_Sapce”)和主机对应的所有空间(KVM_SERVER_DATASTORE_D.” AVG_Capacity”)。

  下面列出了查询VMware虚拟化环境下所有的虚拟化主机的名称、CPU、内存、磁盘空间、主机上所部属的虚拟机总数量的查询语句,其中“1130826000000000”代表是2013年8月26日的数据,TEMP1, TEMP2, TEMP3, TEMP4分别作为临时表,存放上述四个方面的基本信息数据。

  其查询结果如图1中所示。

WITH
TEMP1 AS
(SELECT A."Server_Hostname" as Server_Hostname, MAX(A."AVG_CPU_Utilization") AS AVG_CPU_Utilization
 FROM  ITMUSER.KVM_SERVER_CPU_D A
 WHERE A.SHIFTPERIOD = -1
 AND A.WRITETIME =  '1130826000000000'
 AND A."Server_Hostname" <>''
GROUP BY A."Server_Hostname"),

TEMP2 AS
(SELECT B."Server_Hostname" as Server_Hostname, MAX(B."MAX_Physical_Memory")- MAX(B."AVG_Memory_Usage") AS Free_Momory_MB
 FROM  ITMUSER.KVM_SERVER_Memory_D B
 WHERE B.SHIFTPERIOD = -1
 AND B.WRITETIME =  '1130826000000000'
 AND B."Server_Hostname" <>''
 AND B."AVG_Memory_Usage" >0
GROUP BY B."Server_Hostname"),

TEMP3 AS(SELECT C."Server_Hostname" as Server_Hostname, SUM(C."AVG_Free_Space") as Free_Space_MB
FROM ITMUSER.KVM_SERVER_DATASTORE_D C
WHERE  C.shiftperiod = -1
AND C.writetime = '1130826000000000'
AND C."Server_Hostname" <>''
GROUP BY C."Server_Hostname"),

TEMP4 AS
(SELECT  D."Server_Hostname" as Server_Hostname, MAX(D."MAX_Number_VMs_On") AS Max_Number_VMs_On
FROM  ITMUSER.KVM_SERVER_D D
WHERE D.SHIFTPERIOD = -1
 AND D.WRITETIME =  '1130826000000000'
 AND D."Server_Hostname" <>''
GROUP BY D."Server_Hostname")

SELECT TEMP1.Server_Hostname, TEMP1.AVG_CPU_Utilization, TEMP2.Free_Momory_MB, TEMP3.Free_Space_MB, TEMP4.Max_Number_VMs_On
FROM  TEMP1
LEFT OUTER JOIN TEMP2 ON TEMP1.Server_Hostname=TEMP2.Server_Hostname
LEFT OUTER JOIN TEMP3 ON TEMP1.Server_Hostname=TEMP3.Server_Hostname
LEFT OUTER JOIN TEMP4 ON TEMP1.Server_Hostname=TEMP4.Server_Hostname

 

  虚拟化环境可用计算资源分析的方案
▲图1 虚拟化主机CPU,内存和磁盘空间使用情况

  2. 将可用计算资源折算成可以部署的虚拟机数量

  衡量虚拟化环境中的可用资源,最直观的方式是计算某个环境中还可以部署多少个标准的虚拟机。基于上一节的查询结果,根据预先定义好的一个标准虚拟机的配置(这里以一个CPU,4000M内存,100,000M硬盘为例),分别从CPU,内存和磁盘空间的角度,计算出可以部署的虚拟机数量,这三个数值中最小的一个,就可以视为虚拟化环境中的可用资源,下面分别对这三个部分进行讨论。

  1) 从CPU的角度计算可以部署的虚拟机数量:

  某一虚拟主机所能部署的虚拟机数量=(100-当前CPU利用率(AVG_CPU_Utilization))/(当前CPU利用率(AVG_CPU_Utilization)/开机状态的虚拟机数量(Max_Number_VMs_On))

  其中“100-当前CPU利用率”得到CPU可用资源,“当前CPU利用率/开机状态的虚拟机数量”计算得到平均每台虚拟机所占用的CPU。

  以图1中第一行Server001为例,计算可到可以部属的虚拟机数量为:

  (100-37.89)/(37.89/59)=62.11/0.64≈96

  2) 从内存的角度计算可以部署的虚拟机数量:

  某一虚拟主机所能部署的虚拟机数量=可用内存(Free_Memory_MB)/标准虚拟机内存

  以图1中第一行数据为例,计算可到可以部属的虚拟机数量为:

  9,386.61/4000≈2

  3) 从磁盘空间的角度计算可以部署的虚拟机数量:

  某一虚拟主机所能部署的虚拟机数量=剩余磁盘空间(Free_Space_MB)/标准虚拟机磁盘空间

  以图2中第一行数据为例,计算得到可以部属的虚拟机数量为:

  209,764.13/100,000≈2

  综合上面三个角度的数据,取三个资源中最小能部署的虚拟机的数量,对于这台虚拟化主机,可部署的虚拟机数量为2,也就是目前这台机器的内存和磁盘空间是计算资源的瓶颈。在实际环境中,也可以依据这个数据,对硬件资源的具体配置进行调整,以优化虚拟化环境。对每台主机进行同样的分析,汇总后的结果如图2所示。

  ▲图2 虚拟化主机可部署虚拟机数量汇总

  3. 从不同的角度以报表形式体现虚拟化环境可用计算资源

  上一节中介绍了每台虚拟化主机每天可部署的虚拟机的数量,这样就可以得到整个虚拟化环境中还可以部署的虚拟机的数量,也就是整个虚拟环境的可用计算资源。可以用饼图的形式来体现,图3所示就是某虚拟环境的可用资源。图4为各虚拟化主机当天的可用计算资源情况。


▲ 图3 虚拟化环境总体可用资源情况

 


▲  图4 虚拟化环境各虚拟化主机可用资源情况

  从每天的历史数据,可以看到虚拟化环境中总体可用资源的变化情况,如图5中所示。从图中可以看到,在8月16日,虚拟化环境有一个整体部署能力的增长。从变化趋势图,能够反映出一些虚拟化环境的配置变化,事件或事故的发生等信息,以作为更深入分析的基础。

  
▲图5 虚拟化环境可用资源变化趋势

  4. 分析过程中需要考虑的其它因素

  上面对可用计算资源的分析,是从最理想的情况下进行分析。而在实际应用环境中,CPU,内存和磁盘空间的使用,不可能全部用来分配虚拟机器来使用,特别是在集群环境中,环境中某一台主机的故障,需要其它主机来分担它上面的负载,这就要求在计算资源上要留下一些富裕量,以提高整个环境的可靠性。下面分别对不同的资源的计算进行调整和修正。

  1) 对于CPU资源,通常环境下不会让它超过80%的利用率,这样前面提到的计算方法调整为:某一虚拟主机所能部署的虚拟机数量=(80-当前CPU利用率(AVG_CPU_Utilization))/(当前CPU利用率(AVG_CPU_Utilization)/开机状态的虚拟机数量(Max_Number_VMs_On))。对应前面的实例,计算得到:(80-37.89)/(37.89/59)=42.11/0.64≈65。

  2) 对于内存资源,通常情况下,会预留出10G左右的内存,这样前面提到计算方法调整为:某一虚拟主机所能部署的虚拟机数量=(可用内存(Free_Memory_MB)-10,000)/标准虚拟机内存数。对应前面的实例,计算得到:(9,386.61-10,000)/4000=0

  3) 对于磁盘空间,也需要预留空间,这里假设预留下100G,计算方法调整为:某一虚拟主机所能部署的虚拟机数量=(剩余磁盘空间(Free_Space_MB)-100,000)/标准虚拟机磁盘空间.。对应前面所述实例,计算得到:(209,764.13-100,000)/100,000≈1

  4) 对于标准虚拟机的配置定义,可以以现有环境中平均内存和磁盘空间的大小作为标准,这样计算得到的可部署虚拟机数量,更能体现实际的状况。

  综合上面的考虑,调整后的可用资源情况如图6中所示。


▲图6 调整后的虚拟环境可用计算资源情况

  上面的计算中的磁盘空间,是基于本地存储考虑的。在实际虚拟化环境中,多台虚拟化主机会对应多个存储空间(LUN)。这时如果仅仅是对这些空间进行求和汇总,就会和实际的情况有很大区别。这主要是由于虚拟机的部署不能跨不同的存储空间的原因。在这种情况下,需要对每个存储空间,除去预留空间后再计算可部署虚拟机数,然后对所有的空间进行求和汇总。同时还需要考虑如何把磁盘空间合理分配到多个主机上。由于篇幅所限,这里就不再详述。

  5. 总结

  本文主要以VMware虚拟化环境为例,讨论了如何获取虚拟化主机的可用计算资源信息,并从CPU,内存和磁盘空间的角度分析虚拟主机所能部署的虚拟机数量。同时用图形化的报告形式,呈现出虚拟主机每天的可用计算资源和历史的资源情况,为IT部门的资源规划和分析提供了有力的参考数据。

  上述可用资源分析的方法,同样适用应用于其它的虚拟化环境,如IBM Power System虚拟化,下面简单列出了Power虚拟化环境所涉及到的数据库表域信息供参考:

  • KPK_GLOBAL_CEC_D."LAT_Name" ? 虚拟主机名

  • KPK_GLOBAL_CEC_D."AVG_CPU_Total" ? 虚拟主机CPU总量

  • KPK_GLOBAL_CEC_D."AVG_Memory_Total_MB" ? 虚拟主机内存总量

  • KPK_GLOBAL_CEC_D."AVG_CPU_Unallocated" ? 未分配的CPU

  • KPK_GLOBAL_CEC_D."AVG_Memory_Unallocated_MB" ? 未分配的内存

  • KPK_GLOBAL_CEC_D."AVG_Number_of_Partitions" ? 当前已部署的LPAR数量

  6. 参考资料

  IBM网站和Tivoli软件信息中心提供了丰富的有关ITM和Monitoring for Virtual Servers的安装、配置和部署的文档,用户可以从下面的链接获得需要的帮助信息。

  IBM Tivoli Monitoring信息中心

  http://publib.boulder.ibm.com/infocenter/tivihelp/v15r1/index.jsp

  IBM Monitoring for Virtual Servers产品

  http://www-142.ibm.com/software/products/cn/zh/monitor-virtual-servers

  IBM Tivoli monitoring 产品

  http://www-142.ibm.com/software/products/cn/zh/tivomoni

  IBM Tivoli产品红皮书

  http://www.redbooks.ibm.com/portals/tivoli

  作者简介:

  史会卿

  x86平台虚拟化专家

  任职于某大型外资IT企业,从事x86服务器的虚拟化工作。熟悉主流的虚拟化技术、IBM System x系列服务器、IBM DS4000/5000系列存储器和IBM Tivoli相关软件产品。曾部署基于VMware View的桌面虚拟化环境,同时为企业内部提供服务器虚拟化的方案设计、部署、优化及技术支持。同时参与部署了多个基于Tivoli产品的管理项目。

  实践经验丰富,熟悉虚拟化环境的设计、部署和优化等。对于IBM Tivoli系列产品技术具有深入研究。

  栗江涛

  IT 项目经理

  任职于某大型外资IT企业, 从事IT项目管理类工作。有较为丰富的项目管理经验,参与多项全球和本地的IT项目,熟悉IT流程规范,熟悉主流的虚拟化技术、监控技术、自动化部署技术和IBM Tivoli相关软件产品和解决方案。

5
相关文章