【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
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为各虚拟化主机当天的可用计算资源情况。
从每天的历史数据,可以看到虚拟化环境中总体可用资源的变化情况,如图5中所示。从图中可以看到,在8月16日,虚拟化环境有一个整体部署能力的增长。从变化趋势图,能够反映出一些虚拟化环境的配置变化,事件或事故的发生等信息,以作为更深入分析的基础。
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中所示。
上面的计算中的磁盘空间,是基于本地存储考虑的。在实际虚拟化环境中,多台虚拟化主机会对应多个存储空间(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相关软件产品和解决方案。