发明内容
本发明的目的是提供一种动态可扩展的增加虚拟机资源的方法。
本发明的目的是按以下方式实现的,以高性能网络为核心,通过对内存索引客户端(1)、内存服务程序(2)、内存节点池(3)、存储客户端(4)、存储服务程序(5)、存储池(6)的整合,使***能够满足虚拟机动态增加内存、存储资源以及虚拟机动态迁移的需求,其中:
内存索引客户端(1),在虚拟机管理程序中实现,客户端向内存服务程序发起请求,获取内存服务集群中可用的内存节点索引映像,并按需动态申请内存服务集群中的内存节点或内存节点集合;内存索引客户端(1)申请空闲内存节点较多的内存服务或负载较轻的内存服务,同时,当需要虚拟机迁移时,选择空闲内存节点较多的内存服务或负载较轻的内存服务;
内存服务程序(2)根据内存索引客户端请求来进行处理:当内存索引客户端(1)请求内存节点池(3)索引时,内存服务程序(2)将内存节点池(3)统计信息返回给内存索引客户端(1);当内存索引客户端(1)按需请求内存时,内存服务程序(2)拆分或合并内存节点,满足内存索引客户端(1)请求,即内存服务程序(2)以2的幂次级分配大于等于内存索引客户端(1)请求的内存,如果需要一个内存节点分解为两半,则自动将未用的一半加入到对应的链表中,如果在未来某个时刻,由于内存释放的缘故,两个内存节点区域都处于空闲状态,可通过地址来判断是否合并为一个内存节点,分配完毕后,内存服务程序(2)将标记分配的内存节点或内存节点集合,集群模式下会更新通知其他的内存服务程序(2),多个内存服务也能构成集群模式,在集群模式下,内存服务程序(2)会使用心跳动态交互、更新所有节点上内存节点使用情况,这样每个内存服务程序(2)都会知道集群模式下,所有内存服务程序(2)管理的内存节点池(3)使用情况;
内存节点池(3)负责管理本内存服务器集群提供的内存空间,将本内存服务器集群中的内存空间虚拟为内存节点池(3),每个内存节点大小定义为2的幂次级,相同大小的内存节点索引使用链表链接起来,在集群模式下,内存节点池(3)还需要记录其他内存服务管理的内存节点索引信息,内存节点池(3)动态扫描内存服务器集群提供的内存空间,实现内存节点池(3)的动态扩展;
存储客户端(4)在虚拟机管理程序中实现,存储客户端(4)向存储服务程序(5)发起请求,获取存储服务集群中可用的存储块索引映像,并按需动态申请存储服务集群中的存储块或存储块集合;存储客户端(4)申请空闲存储块较多的存储服务或负载较轻的存储服务,同时,当需要虚拟机迁移时,也选择空闲存储块较多的存储服务或负载较轻的存储服务;
存储服务程序(5)根据存储客户端(4)请求来进行处理:当存储客户端(4)请求存储块索引时,存储服务程序(5)将存储统计信息返回给存储客户端(4);当存储客户端(4)按需请求存储块时,存储服务程序(5)拆分或合并存储块,满足存储客户端(4)请求,即存储服务程序(5)以2的幂次级分配大于等于存储客户端(4)请求的存储块,如果需要一个存储块分解为两半,则自动将未用的一半加入到对应的链表中,如果在未来某个时刻,由于存储块释放的缘故,两个存储块区域都处于空闲状态,可通过地址来判断是否合并为一个存储块,分配完毕后,存储服务程序(5)将标记分配的存储块或存储块集合,在集群模式下会更新通知其他的存储服务程序(5),多个存储服务也能构成集群模式,在集群模式下,存储服务程序(5)会使用心跳动态交互、更新所有节点上存储块使用情况,这样每个存储服务程序(5)都会知道集群模式下,所有存储服务程序(5)管理的存储池(6)的使用情况;
存储池(6)负责管理本存储服务器集群提供的存储空间,将本存储服务器集群中的存储空间虚拟为存储池(6),每个存储块大小定义为2的幂次级,相同大小的存储块索引使用链表链接起来,在集群模式下,存储池(6)还需要记录其他存储服务管理的存储池(6)索引信息,存储池(6)动态扫描存储服务器集群提供的存储空间,实现存储池(6)的动态扩展。
内存节点池(3)负责管理本内存服务器集群提供的内存空间,将本内存服务器集群中的内存空间虚拟为内存节点池(3),每个内存节点大小定义为2的幂次级,相同大小的内存节点索引使用链表链接起来,在集群模式下,内存节点池(3)还需要记录其他内存服务管理的内存节点索引信息, 内存节点池(3)动态扫描内存服务器集群提供的内存空间,实现内存节点池(3)的动态扩展。
根据内存索引客户端(1)请求来进行处理:当内存索引客户端(1)请求内存池节点索引时,内存服务程序(2)将内存节点池(3)统计信息返回给内存索引客户端(1);当内存索引客户端(1)按需请求内存时,内存服务程序(2)拆分或合并内存节点,满足内存索引客户端(1)请求,分配完毕后,内存服务程序(2)将标记分配的内存节点或内存节点集合,在集群模式下会更新通知其他的内存服务程序(2),多个内存服务也能构成集群模式,在集群模式下,内存服务程序(2)会使用心跳动态交互、更新所有节点上内存节点使用情况,这样每个内存服务程序(2)都会知道集群模式下,所有内存服务程序(2)管理的内存节点池(3)的使用情况。
存储池(6)负责管理本存储服务器集群提供的存储空间,将本存储服务器集群中的存储空间虚拟为存储池(6),每个存储块大小定义为2的幂次级,相同大小的存储块索引使用链表链接起来,在集群模式下,存储池(6)还需要记录其他存储服务管理的存储池(6)索引信息,存储池(6)动态扫描存储服务器集群提供的存储空间,实现存储池(6)的动态扩展。
当存储客户端(4)请求存储块索引时,存储服务程序(5)将存储统计信息返回给存储客户端(4);当存储客户端(4)按需请求存储块时,存储服务程序(5)拆分或合并存储块,满足存储客户端(4)请求,分配完毕后,存储服务程序(5)将标记分配的存储块或存储块集合,在集群模式下会更新通知其他的存储服务程序(5),多个存储服务也能构成集群模式,在集群模式下,存储服务程序(5)会使用心跳动态交互、更新所有节点上存储块使用情况,这样每个存储服务程序(5)都会知道集群模式下,所有存储服务程序(5)管理的存储池(6)使用情况。
内存节点池(3)及存储池(6)基于后端的内存服务器集群或存储器集群,实现动态内存、存储扩容。
本发明的有益效果是:内存服务程序将内存服务器集群提供的内存空间虚拟成内存节点池,能够根据内存索引客户端请求动态拆分内存节点,当有空闲相邻的内存节点时,也可以合并内存节点,满足不同客户端的动态内存需求。内存服务程序还可以集群模式运行,集群模式下,内存池还需要记录其他内存服务程序管理的内存节点,从而支持客户端从空闲内存节点较多或负载较小的内存服务程序中选择服务。当需要动态迁移虚拟机时,内存索引客户端可以从空闲内存节点较多或负载较小的内存服务程序中选择所需的内存资源,实现虚拟机的动态迁移。
存储服务程序将存储服务器集群提供的存储空间虚拟成存储池,能够根据存储客户端请求动态拆分存储块,当有空闲相邻的存储块时,也可以合并存储块,满足不同客户端的存储需求。存储服务程序还可以集群模式运行,集群模式下,存储池还需要记录其他存储服务程序管理的存储块,从而支持客户端从空闲存储块较多或负载较小的存储服务程序中选择服务。当需要动态迁移虚拟机时,存储客户端可以从空闲存储块较多或负载较小的存储服务程序中选择所需的存储资源,实现虚拟机的动态迁移。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。
下面参照附图,对本发明的内容以一个具体实例来描述实现这一方法的过程。
正如发明内容中所描述的,本发明体系结构主要包括:内存索引客户端(1),内存服务程序(2)、内存节点池(3)、存储客户端(4)、存储服务程序(5)、存储池(6)。
内存索引客户端(1),向内存服务程序发起请求,获取内存服务集群中可用的内存节点索引映像,并按需动态申请内存服务集群中的内存节点或内存节点集合;在此过程中,内存索引客户端可以申请空闲内存节点较多的内存服务或负载较轻的内存服务。
内存服务程序(2)根据内存索引客户端请求来进行处理:当内存索引客户端请求内存池节点索引时,内存服务程序将内存节点池统计信息返回给内存索引客户端;当内存索引客户端按需请求内存时,内存服务程序拆分或合并内存节点,满足客户端请求,即内存服务程序以2的幂次级分配大于等于内存索引客户端请求的内存,如果需要一个内存节点分解为两半,则自动将未用的一半加入到对应的链表中。也可以根据两个内存节点区域都处于空闲状态,可通过地址来判断是否可以合并为一个内存节点,分配完毕后,内存服务程序将标记分配的内存节点或内存节点集合,在集群模式下,内存服务程序会使用心跳动态交互、更新所有节点上内存节点使用情况,这样每个内存服务程序都会知道集群模式下,所有内存服务程序管理的内存节点池使用情况。
内存节点池(3)负责管理本内存服务器集群提供的内存空间,将本内存服务器集群中的内存空间虚拟为内存节点池,每个内存节点大小定义为2的幂次级(比如128MB、256MB等),相同大小的内存节点索引使用链表链接起来。集群模式下,内存节点池还需要记录其他内存服务管理的内存节点索引信息。内存节点池可以动态扫描内存服务器集群提供的内存空间,实现内存池的动态扩展。
存储客户端(4)向存储服务程序发起请求,获取存储服务集群中可用的存储块索引映像,并按需动态申请存储服务集群中的存储块或存储块集合;存储客户端可以申请空闲存储块较多的存储服务或负载较轻的存储服务。
存储服务程序(5)根据存储客户端请求来进行处理:当存储客户端请求存储块索引时,存储服务程序将存储统计信息返回给存储客户端;当存储客户端按需请求存储块时,存储服务程序拆分或合并存储块,满足客户端请求,即存储服务程序以2的幂次级分配大于等于存储客户端请求的存储块,如果需要一个存储块分解为两半,则自动将未用的一半加入到对应的链表中。如果两个存储块区域都处于空闲状态,可通过地址来判断是否可以合并为一个存储块,分配完毕后,存储服务程序将标记分配的存储块或存储块集合,集群模式,存储服务程序会使用心跳动态交互、更新所有节点上存储块使用情况,这样每个存储服务程序都会知道集群模式下,所有存储服务程序管理的存储池使用情况。
存储池(6)负责管理本存储服务器集群提供的存储空间,将本存储服务器集群中的存储空间虚拟为存储池,每个存储块大小定义为2的幂次级(比如8GB、16GB等),相同大小的存储块索引使用链表链接起来。集群模式下,存储池还需要记录其他存储服务管理的存储池索引信息。存储池可以动态扫描存储服务器集群提供的存储空间,实现存储池的动态扩展。