一种基于代理服务的虚拟机内部数据采集方法

文档序号:7859770阅读:281来源:国知局
专利名称:一种基于代理服务的虚拟机内部数据采集方法
技术领域
本发明属于计算机虚拟化技术领域,更具体地,涉及一种基于代理服务的虚拟机内部数据采集方法。
背景技术
系统虚拟化技术能够动态组织多种计算资源,隔离具体的硬件体系结构和软件系统之间的紧密依赖关系,实现透明化的可伸缩计算系统架构。随着计算系统的资源规模不断扩展、处理能力快速增强、资源种类日益丰富,越来越多的企业借助于虚拟化技术来构建满足多种应用需求的计算环境,提高计算资源的使用效率,发挥计算资源的聚合效能,提供个性化和普适化的计算资源使用环境。
随着多机系统虚拟化的普及,如何准确有效地监控多个物理计算节点以及部署在物理计算节点上的数十乃至数百台虚拟机变得日益重要,而虚拟机的实时状态是所有监控工作的基础。如果管理员不能掌握虚拟机的内部运行状况,虚拟机的运行状况对于管理员来说几乎是透明的,这样不利于大规模的集群虚拟机的管理,也存在着一定的安全隐患。如果虚拟机内部发生异常情况,而管理员不能及时进行处理的话,可能会造成巨大的数据损失,因此,对虚拟机内部的运行情况进行监控显得尤为重要。传统的集群监控软件虽然监控功能强大并且性能优秀,但却无法识别虚拟化层的存在,从而不能适用于多机虚拟化环境。VMware Infrastructure是目前较为成熟的商业多虚拟机管理系统软件,仅支持VMware的虚拟机监视器(VMM),而且其监控数据信息有限。现有大多数虚拟机管理软件存在以下两个问题(1)很难准确详尽地获取虚拟机内部的数据信息,采集的数据很有限,通常只能获取到CPU利用率、内存大小等一些基本信息,不便于虚拟机集群的高效管理;(2)集中管理所采集的虚拟机内部数据信息,不具备较好的扩展性。当集群内的虚拟机数量不断增加时,数据信息的集中管理性能将会大幅度下降;(3)由于客户虚拟机定期采集其内部的各种运行状态信息,数据量较大,通信性能往往成为一个瓶颈。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于代理服务的虚拟机内部数据采集方法,旨在解决上述现有技术中存在的采集的虚拟机内部数据有限和扩展性差的问题。为实现上述目的,本发明提供了一种基于代理服务的虚拟机内部数据采集方法,应用于包括多台物理机和一个核心管理节点的集群环境中,物理机上运行有客户虚拟机和特权虚拟机,该方法包括下列步骤( I)启动物理机及其特权虚拟机;(2)特权虚拟机启动后台守护进程,以等待接收来自客户虚拟机的虚拟机内部状态信息,一旦接收到虚拟机内部状态信息,就保存在本地的数据库中;
(3)特权虚拟机启动XML-RPC服务进程,为核心管理节点提供各虚拟机内部运行状态信息;(4)启动客户虚拟机,并在客户虚拟机中启动代理服务程序,利用域间通信发送客户虚拟机的内部运行状态信息到同一物理机上特权虚拟机中的后台守护进程;(5)核心管理节点定期通过XML-RPC远程调用方法获取各物理机上实时的虚拟机内部运行状态信息。虚拟机内部运行状态信息包括内存使用状态信息、CPU使用状态信息、磁盘I/O使用状态信息、进程信息。步骤(2)包括以下子步骤(2-1)后台守护进程为该物理机上每一个虚拟机创建信息持久化线程;(2-2)信息持久化线程向控制请求模块发出控制命令,请求相应的客户虚拟机开始传输虚拟机内部运行状态数据信息;(2-3)控制请求模块调用控制环的写接口,将控制命令写入相应客户虚拟机操作系统的控制环中,通过事件通道告诉客户虚拟机“有控制信息到达”。(2-4)信息持久化线程等待,并判断是否接收到来自相应客户虚拟机的“控制信息已读取”的通知,若是则转入步骤(2-5),否则重复步骤(2-4);(2-5)信息持久化线程判断是否接收到来自相应客户虚拟机的“有数据到达”的通知,如是则转入步骤(2-6 ),否则重复步骤(2-5 );(2-6)信息持久化线程唤醒数据监听模块,数据监听模块通过后端的数据设备接口读取共享数据环中的数据; (2-7)信息持久化线程将读取的数据写入本地数据库中; (2-8)数据监听模块通知相应的客户虚拟机“数据已读取”,并转入步骤(2-5)。步骤(3)包括以下子步骤(3-1) XML-RPC服务进程开启XML-RPC服务器;(3-2) XML-RPC服务进程监听本地端口,以判断是否接收到一个新的XML-RPC请求,若是则转入步骤(3-3),否则重复步骤(3-2);(3-3)判断XML-RPC请求是否为读数据请求,若是则执行该XML-RPC读数据请求,然后返回步骤(3-2),否则返回步骤(3-2)。步骤(4)包括以下子步骤(4-1)代理服务程序判断是否接收到来自特权虚拟机的“有控制信息到达”的通知,如是则转入步骤(4-2 ),否则转入步骤(4-1);(4-2)代理服务程序唤醒控制监听模块,控制监听模块从共享控制环中读取命令,并通知特权虚拟机“控制信息已读取”;(4-3)代理服务程序创建一个信息采集线程;( 4-4 )代理服务程序创建一个先进先出队列,用于保存虚拟机内部运行状态数据
信息;(4-5)信息采集线程每秒获取内存使用状态信息、CPU使用状态信息、磁盘I/O使用状态信息、进程信息,写入先进先出队列的队尾;( 4-6 )数据发送模块从先进先出队列的队头取出数据进行打包,通过数据设备接口将数据写入共享数据环中,通过事件通道告诉特权虚拟机“有数据到达”;(4-7)代理服务程序判断是否接收到来自特权虚拟机的“数据已读取”的通知,如是则返回步骤(4-6 ),否则重复步骤(4-7 )。步骤(5)包括以下子步骤(5-1)核心管理节点在本地数据库中保存集群中所有托管节点的网络地址;(5-2)核心管理节点创建一个存储有所有托管节点实时信息的全局信息表;(5-3)核心管理节点创建一个线程,用于管理对应各个托管节点的信息收集处理线程的生命周期;该线程被称为信息收集管理器;
(5-4)核心管理节点在启动时从数据库中读取所有托管节点的基本信息,并根据这些信息为每一个托管节点分别创建一个信息收集线程,并为每个信息收集线程分配N个令牌,其中N为正整数;(5-5)判断信息收集线程的令牌数是否为N/2,如是则转入步骤(5-6),否则转入步骤(5-9);(5-6)判断是否存在托管节点被删除,若是则设置该托管节点对应的信息收集线程的令牌数为0,并转入步骤(5-7),否则转入步骤(5-7);(5-7)判断是否存在托管节点没有对应的信息收集线程,若是则为其创建信息收集线程并分配令牌,并转入步骤(5-8 ),否则转入步骤(5-8 );(5-8)将其余正常托管节点对应的信息收集线程的令牌数重新置为N ;(5-9)判断信息收集线程的令牌数是否为0,若是则过程结束,否则转入步骤(5-10);(5-10)信息收集线程每秒向其对应的托管节点上特权虚拟机的后台守护进程请求获取系统实时数据,并更新全局信息表;(5-11)信息收集线程的令牌个数减1,并返回步骤(5-5)。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果I、对所采集的数据信息进行分布式管理,具有较好的可扩展性因为采用了步骤
(2),将各虚拟机的内部运行状态数据信息分别保存在各自所在物理机的数据库中,而不是集中存储于某一个管理节点,其管理性能不会随着虚拟机数量的增大而受到较大的影响,所以具有较好的扩展性;2、可采集详尽的虚拟机内部运行状态数据信息因为采用了步骤(4),在虚拟机内部启动代理服务,由代理服务可以采集到虚拟机内部各种运行状态信息,包括真实的各资源使用状态信息以及各应用进程的相关信息,所以,本发明采集的虚拟机内部信息更为详尽准确。3、同一台物理机上的数据传递具有较好的通信性能因为采用了步骤(4),客户虚拟机内的代理服务程序利用域间通信的方式将虚拟机内部运行状态数据信息发送给特权虚拟机的后台守护程序,所以,本发明的数据传递具有较好的通信性能。


图I是本发明基于代理服务的虚拟机内部数据采集方法的应用环境图。
图2是本发明基于代理服务的虚拟机内部数据采集方法的流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图I所示,本发明应用于包括多台物理机和一个核心管理节点的集群环境中,物理机上运行有一个特权虚拟机和多个客户虚拟机,物理机和虚拟机之间有虚拟机管理器。每个客户虚拟机内运行代理服务,物理机的特权虚拟机内启动后台守护程序和XML-RPC服务程序,且每个物理机都有本地数据库。代理服务定时把采集到的虚拟机内部状态信息传递给后台守护程序,由后台守护程序将这些数据信息写入本地数据库。核心管理节点则可以实时从每个物理机上的XML-RPC服务程序获取各个虚拟机的内部状态信息。 如图2所示,本发明基于代理服务的虚拟机内部数据采集方法包括以下步骤(I)启动物理机及其特权虚拟机;物理机也被称为物理节点,处于被监控状态的物理节点被称为托管节点;(2)特权虚拟机启动后台守护进程,以等待接收来自客户虚拟机的虚拟机内部状态信息,一旦接收到虚拟机内部状态信息,就保存在本地的数据库中,其中虚拟机内部运行状态信息包括内存使用状态信息、CPU使用状态信息、磁盘I/O使用状态信息、进程信息,具体包括以下子步骤(2-1)后台守护进程为该物理机上每一个虚拟机创建信息持久化线程;(2-2)信息持久化线程向控制请求模块发出控制命令,请求相应的客户虚拟机开始传输虚拟机内部运行状态数据信息;(2-3)控制请求模块调用控制环的写接口,将控制命令写入相应客户虚拟机操作系统的控制环中,通过事件通道告诉客户虚拟机“有控制信息到达”。(2-4)信息持久化线程等待,并判断是否接收到来自相应客户虚拟机的“控制信息已读取”的通知,若是则转入步骤(2-5),否则重复步骤(2-4);(2-5)信息持久化线程判断是否接收到来自相应客户虚拟机的“有数据到达”的通知,如是则转入步骤(2-6 ),否则重复步骤(2-5 );(2-6)信息持久化线程唤醒数据监听模块,数据监听模块通过后端的数据设备接口读取共享数据环中的数据;(2-7)信息持久化线程将读取的数据写入本地数据库中;(2-8)数据监听模块通知相应的客户虚拟机“数据已读取”,并转入步骤(2-5)。(3)特权虚拟机启动XML-RPC服务进程,为核心管理节点提供各虚拟机内部运行状态信息;具体包括以下子步骤(3-1) XML-RPC服务进程开启XML-RPC服务器;(3-2) XML-RPC服务进程监听本地端口,以判断是否接收到一个新的XML-RPC请求,若是则转入步骤(3-3),否则重复步骤(3-2);(3-3)判断XML-RPC请求是否为读数据请求,若是则执行该XML-RPC读数据请求,然后返回步骤(3-2),否则返回步骤(3-2)。
(4)启动客户虚拟机,并在客户虚拟机中启动代理服务程序,利用域间通信一即共享内存发送客户虚拟机的内部运行状态信息到同一物理机上特权虚拟机中的后台守护进程;具体包括以下子步骤(4-1)代理服务程序判断是否接收到来自特权虚拟机的“有控制信息到达”的通知,如是则转入步骤(4-2 ),否则转入步骤(4-1);(4-2)代理服务程序唤醒控制监听模块,控制监听模块从共享控制环中读取命令,并通知特权虚拟机“控制信息已读取”;(4-3)代理服务程序创建一个信息采集线程;(4-4)代理服务程序创建一个先进先出队列,用于保存虚拟机内部运行状态数据信息;(4-5)信息采集线程每秒获取内存使用状态信息、CPU使用状态信息、磁盘I/O使 用状态信息、进程信息,写入先进先出队列的队尾;(4-6)数据发送模块从先进先出队列的队头取出数据进行打包,通过数据设备接口将数据写入共享数据环中,通过事件通道告诉特权虚拟机“有数据到达”;(4-7)代理服务程序判断是否接收到来自特权虚拟机的“数据已读取”的通知,如是则返回步骤(4-6 ),否则重复步骤(4-7 )。(5)核心管理节点定期通过XML-RPC远程调用方法获取各物理机上实时的虚拟机内部运行状态信息;具体包括以下子步骤(5-1)核心管理节点在本地数据库中保存集群中所有托管节点的网络地址;(5-2)核心管理节点创建一个存储有所有托管节点实时信息的全局信息表;(5-3)核心管理节点创建一个线程,用于管理对应各个托管节点的信息收集处理线程的生命周期;该线程被称为信息收集管理器;(5-4)核心管理节点在启动时从数据库中读取所有托管节点的基本信息,并根据这些信息为每一个托管节点分别创建一个信息收集线程,并为每个信息收集线程分配N个令牌,其中N为正整数;(5-5)判断信息收集线程的令牌数是否为N/2,如是则转入步骤(5-6),否则转入步骤(5-9);(5-6)判断是否存在托管节点被删除,若是则设置该托管节点对应的信息收集线程的令牌数为0,并转入步骤(5-7),否则转入步骤(5-7);(5-7)判断是否存在托管节点没有对应的信息收集线程,若是则为其创建信息收集线程并分配令牌,并转入步骤(5-8 ),否则转入步骤(5-8 );(5-8)将其余正常托管节点对应的信息收集线程的令牌数重新置为N ;(5-9)判断信息收集线程的令牌数是否为0,若是则过程结束,否则转入步骤(5-10);(5-10)信息收集线程每秒向其对应的托管节点上特权虚拟机的后台守护进程请求获取系统实时数据,并更新全局信息表;(5-11)信息收集线程的令牌个数减1,并返回步骤(5-5)。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于代理服务的虚拟机内部数据采集方法,应用于包括多台物理机和一个核心管理节点的集群环境中,物理机上运行有客户虚拟机和特权虚拟机,其特征在于,所述方法包括下列步骤 (1)启动物理机及其特权虚拟机; (2)特权虚拟机启动后台守护进程,以等待接收来自客户虚拟机的虚拟机内部状态信息,一旦接收到虚拟机内部状态信息,就保存在本地的数据库中; (3)特权虚拟机启动XML-RPC服务进程,为核心管理节点提供各虚拟机内部运行状态信息; (4)启动客户虚拟机,并在客户虚拟机中启动代理服务程序,利用域间通信发送客户虚拟机的内部运行状态信息到同一物理机上特权虚拟机中的后台守护进程; (5)核心管理节点定期通过XML-RPC远程调用方法获取各物理机上实时的虚拟机内部运行状态信息。
2.根据权利要求I所述的虚拟机内部数据采集系统,其特征在于,虚拟机内部运行状态信息包括内存使用状态信息、CPU使用状态信息、磁盘I/O使用状态信息、进程信息。
3.根据权利要求I所述的虚拟机内部数据采集系统,其特征在于,步骤(2)包括以下子步骤 (2-1)后台守护进程为该物理机上每一个虚拟机创建信息持久化线程; (2-2)信息持久化线程向控制请求模块发出控制命令,请求相应的客户虚拟机开始传输虚拟机内部运行状态数据信息; (2-3)控制请求模块调用控制环的写接口,将控制命令写入相应客户虚拟机操作系统的控制环中,通过事件通道告诉客户虚拟机“有控制信息到达”。
(2-4)信息持久化线程等待,并判断是否接收到来自相应客户虚拟机的“控制信息已读取”的通知,若是则转入步骤(2-5 ),否则重复步骤(2-4 ); (2-5)信息持久化线程判断是否接收到来自相应客户虚拟机的“有数据到达”的通知,如是则转入步骤(2-6),否则重复步骤(2-5); (2-6)信息持久化线程唤醒数据监听模块,数据监听模块通过后端的数据设备接口读取共享数据环中的数据; (2-7)信息持久化线程将读取的数据写入本地数据库中; (2-8)数据监听模块通知相应的客户虚拟机“数据已读取”,并转入步骤(2-5)。
4.根据权利要求I所述的虚拟机内部数据采集系统,其特征在于,步骤(3)包括以下子步骤 (3-1) XML-RPC服务进程开启XML-RPC服务器; (3-2) XML-RPC服务进程监听本地端口,以判断是否接收到一个新的XML-RPC请求,若是则转入步骤(3-3),否则重复步骤(3-2); (3-3)判断XML-RPC请求是否为读数据请求,若是则执行该XML-RPC读数据请求,然后返回步骤(3-2),否则返回步骤(3-2)。
5.根据权利要求I所述的虚拟机内部数据采集系统,其特征在于,步骤(4)包括以下子步骤 (4-1)代理服务程序判断是否接收到来自特权虚拟机的“有控制信息到达”的通知,如是则转入步骤(4-2),否则转入步骤(4-1); (4-2)代理服务程序唤醒控制监听模块,控制监听模块从共享控制环中读取命令,并通知特权虚拟机“控制信息已读取”; (4-3)代理服务程序创建一个信息采集线程; (4-4)代理服务程序创建一个先进先出队列,用于保存虚拟机内部运行状态数据信息; (4-5)信息采集线程每秒获取内存使用状态信息、CPU使用状态信息、磁盘I/O使用状态信息、进程信息,写入先进先出队列的队尾; (4-6)数据发送模块从先进先出队列的队头取出数据进行打包,通过数据设备接口将数据写入共享数据环中,通过事件通道告诉特权虚拟机“有数据到达”; (4-7)代理服务程序判断是否接收到来自特权虚拟机的“数据已读取”的通知,如是则返回步骤(4-6),否则重复步骤(4-7)。
6.根据权利要求I所述的虚拟机内部数据采集系统,其特征在于,步骤(5)包括以下子步骤 (5-1)核心管理节点在本地数据库中保存集群中所有托管节点的网络地址; (5-2)核心管理节点创建一个存储有所有托管节点实时信息的全局信息表; (5-3)核心管理节点创建一个线程,用于管理对应各个托管节点的信息收集处理线程的生命周期;该线程被称为信息收集管理器; (5-4)核心管理节点在启动时从数据库中读取所有托管节点的基本信息,并根据这些信息为每一个托管节点分别创建一个信息收集线程,并为每个信息收集线程分配N个令牌,其中N为正整数; (5-5)判断信息收集线程的令牌数是否为N/2,如是则转入步骤(5-6),否则转入步骤(5-9); (5-6)判断是否存在托管节点被删除,若是则设置该托管节点对应的信息收集线程的令牌数为O,并转入步骤(5-7),否则转入步骤(5-7); (5-7)判断是否存在托管节点没有对应的信息收集线程,若是则为其创建信息收集线程并分配令牌,并转入步骤(5-8 ),否则转入步骤(5-8 ); (5-8)将其余正常托管节点对应的信息收集线程的令牌数重新置为N ; (5-9)判断信息收集线程的令牌数是否为O,若是则过程结束,否则转入步骤(5-10);(5-10)信息收集线程每秒向其对应的托管节点上特权虚拟机的后台守护进程请求获取系统实时数据,并更新全局信息表; (5-11)信息收集线程的令牌个数减I,并返回步骤(5-5)。
全文摘要
本发明公开了一种基于代理服务的虚拟机内部数据采集方法,应用于包括多台物理机和一个核心管理节点的集群环境中,物理机上运行有客户虚拟机和特权虚拟机,该方法包括步骤启动物理机及其特权虚拟机,特权虚拟机启动后台守护进程,以等待接收来自客户虚拟机的虚拟机内部状态信息,一旦接收到虚拟机内部状态信息,就保存在本地的数据库中,启动客户虚拟机,并在客户虚拟机中启动代理服务程序,利用域间通信发送客户虚拟机的内部运行状态信息到同一物理机上特权虚拟机中的后台守护进程。本发明可采集详尽的虚拟机内部运行状态数据信息,利用域间通信改善了数据传递的通信性能,并且由于采用分布式数据管理而具有较好的可扩展性。
文档编号H04L29/08GK102929769SQ20121032798
公开日2013年2月13日 申请日期2012年9月6日 优先权日2012年9月6日
发明者吴松, 石宣化, 金海 , 邓莉 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1