虚拟化一体机集群中虚拟机调度方法及系统的制作方法

文档序号:6634404阅读:483来源:国知局
虚拟化一体机集群中虚拟机调度方法及系统的制作方法
【专利摘要】本发明公开了一种虚拟化一体机集群中虚拟机调度方法及系统,该虚拟机调度方法包括:S1.在用户启动虚拟机时,获取该虚拟机的文件名;S2.根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点;S3.优先从查询到的节点中选择目标节点;S4.在所选择的目标节点上运行该虚拟机。实施本发明的技术方案,由于在运行虚拟机前,先根据所需启动的虚拟机的文件名查询该虚拟机的副本所在的节点,并优先从查询到的节点中选择目标节点来运行该虚拟机,这样,就不需要跨网络读写磁盘中存储的副本,可有效节省网络流量,在不增加网络带宽的前提下提高虚拟机的运行速度,使虚拟机读磁盘能力突破网络限制。
【专利说明】虚拟化一体机集群中虚拟机调度方法及系统

【技术领域】
[0001]本发明涉及虚拟化一体机领域,尤其涉及一种虚拟化一体机集群中虚拟机调度方法及系统。

【背景技术】
[0002]虚拟化一体机是指虚拟化管理软件和存储软件合一运行在同一物理服务器上,存储软件利用服务器的磁盘组成一个分布式存储系统,为虚拟化管理软件提供存储服务。在如图1所示的虚拟化一体机集群中,共有A、B、C、D四个节点。在用户启动虚拟机时,需要选择在某一节点上运行虚拟机。目前,主要依赖CPU处理能力进行负载均衡,即,根据虚拟机所需的CPU频率和内存的配置来选择节点,例如,如果节点B的CPU和内存的配置满足待运行的虚拟机VM2,则选择在节点B上运行虚拟机VM2。但是,由于该虚拟机的副本存储位于节点C和节点D上,则虚拟机VM2的读写磁盘就必须通过网络读写节点C或节点D上的副本,而跨网络的磁盘1将会严重拖慢虚拟机的运行速度,当网络带宽能力(比如IGbps网络)低于磁盘1能力^Gbps SSD)或网络拥塞的情况下,就会严重降低虚拟机的运行速度,针对这种情况,目前比较常用的方法有:
[0003]1.加大带宽,使用1Gbps光纤网络;
[0004]2.使用专用技术网络,比如RDMA、InfiniBand技术。
[0005]但是,上述两种方法都有成本偏高的缺点。


【发明内容】

[0006]本发明要解决的技术问题在于,针对现有技术的上述成本高的缺陷,提供一种成本低的虚拟化一体机集群中虚拟机调度方法及系统。
[0007]本发明解决其技术问题所采用的技术方案是:构造一种虚拟化一体机集群中虚拟机调度方法,包括:
[0008]S1.在用户启动虚拟机时,获取该虚拟机的文件名;
[0009]S2.根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点;
[0010]S3.优先从查询到的节点中选择目标节点;
[0011]S4.在所选择的目标节点上运行该虚拟机。
[0012]在本发明所述的虚拟化一体机集群中虚拟机调度方法中,所述步骤S3包括:
[0013]S30.获取该虚拟机所需要的CPU和内存的配置;
[0014]S31.遍历集群中的所有节点,以获取第一集合;
[0015]S32.逐一判断第一集合中每个节点的内存是否满足该虚拟机所需内存的配置要求,并在所述第一集合中剔除不满足要求的节点,以获取第二集合;
[0016]S33.将步骤S2查询到的所有节点确定为第三集合;
[0017]S34.将第二集合和第三集合的交集确定为第四集合;
[0018]S35.计算第四集合中每个节点的分数;
[0019]S36.将分数最高的节点选择为目标节点。
[0020]在本发明所述的虚拟化一体机集群中虚拟机调度方法中,在步骤S33和步骤S34之间,还包括:
[0021]S37.判断第二集合和第三集合是否有交集,若否,则执行步骤S38 ;若是,则执行步骤S34 ;
[0022]S38.将第二集合确定为第四集合,然后执行步骤S35。
[0023]在本发明所述的虚拟化一体机集群中虚拟机调度方法中,在步骤S4之后,还包括:
[0024]判断所选择的目标节点是否属于第三集合,若否,则重新执行步骤S3。
[0025]在本发明所述的虚拟化一体机集群中虚拟机调度方法中,在步骤S32和步骤S33之间,还包括:
[0026]S39.判断第二集合是否为空,若是,则提示启动失败;若否,则执行步骤S33。
[0027]在本发明所述的虚拟化一体机集群中虚拟机调度方法中,在所述步骤S35中,根据以下公式计算第四集合中每个节点的分数:
[0028]S = F0/F*(N+1)-N0
[0029]其中,S为当前节点的分数;匕为当前节点的CPU的频率;F为集群中所有节点的CPU的频率和;N为集群中虚拟机的个数;%为当前节点上运行的虚拟机的个数。
[0030]本发明还构造一种虚拟化一体机集群中虚拟机调度系统,包括:
[0031]文件名获取模块,用于在用户启动虚拟机时,获取该虚拟机的文件名;
[0032]副本查询模块,用于根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点;
[0033]目标选择模块,用于优先从查询到的节点中选择目标节点;
[0034]运行模块,用于在所选择的目标节点上运行该虚拟机。
[0035]在本发明所述的虚拟化一体机集群中虚拟机调度系统中,所述目标选择模块包括:
[0036]配置获取单元,用于获取该虚拟机所需要的CPU和内存的配置;
[0037]第一集合确定单元,用于遍历集群中所有节点,以获取第一集合;
[0038]第二集合确定单元,用于逐一判断第一集合中每个节点的内存是否满足该虚拟机所需内存的配置要求,并在所述第一集合中剔除不满足要求的节点,以获取第二集合;
[0039]第三集合确定单元,用于将所述副本查询模块所查询到的所有节点确定为第三集合;
[0040]第四集合确定单元,用于将第二集合和第三集合的交集确定为第四集合;
[0041]分数计算单元,用于计算第四集合中每个节点的分数;
[0042]目标选择单元,用于将分数最高的节点选择为目标节点。
[0043]在本发明所述的虚拟化一体机集群中虚拟机调度系统中,所述目标选择模块还包括:
[0044]交集判断单元,用于判断第二集合和第三集合是否有交集;而且,
[0045]所述第四集合确定单元,用于在交集判断单元判断有交集时,将第二集合和第三集合的交集确定为第四集合;在交集判断单元判断无交集时,将第二集合确定为第四集合。
[0046]在本发明所述的虚拟化一体机集群中虚拟机调度系统中,所述目标选择模块,还用于在所选择的目标节点上运行该虚拟机,且所选择的目标节点不属于第三集合时,优先从查询到的节点中选择目标节点。
[0047]在本发明所述的虚拟化一体机集群中虚拟机调度系统中,所述目标选择模块还包括:
[0048]空集判断单元,用于判断第二集合是否为空;
[0049]提示单元,用于在空集判断单元判断为空时,提示启动失败。
[0050]在本发明所述的虚拟化一体机集群中虚拟机调度系统中,所述分数计算单元根据以下公式计算第四集合中每个节点的分数:
[0051]S = F0/F*(N+1)_N0
[0052]其中,S为当前节点的分数;匕为当前节点的CPU的频率;F为集群中所有节点的CPU的频率和;N为集群中虚拟机的个数;%为当前节点上运行的虚拟机的个数。
[0053]实施本发明的技术方案,由于在运行虚拟机前,先根据所需启动的虚拟机的文件名查询该虚拟机的副本所在的节点,并优先从查询到的节点中选择目标节点来运行该虚拟机,这样,就不需要跨网络读写磁盘中存储的副本,可有效节省网络流量,在不增加网络带宽的前提下提高虚拟机的运行速度,使虚拟机读磁盘能力突破网络限制。

【专利附图】

【附图说明】
[0054]下面将结合附图及实施例对本发明作进一步说明,附图中:
[0055]图1是使用现有方法的虚拟化一体机集群的结构图;
[0056]图2是本发明虚拟化一体机集群中虚拟机调度方法实施例一的流程图;
[0057]图3是使用图2所示方法的虚拟化一体机集群的结构图;
[0058]图4是图2中步骤S3实施例一的流程图;
[0059]图5是图2中步骤S3实施例二的流程图;
[0060]图6是本发明虚拟化一体机集群中虚拟机调度系统实施例一的逻辑图;
[0061]图7是图6中目标选择模块实施例一的逻辑图。

【具体实施方式】
[0062]图2是本发明虚拟化一体机集群中虚拟机调度方法实施例一的流程图,该虚拟机调度方法包括:
[0063]S1.在用户启动虚拟机时,获取该虚拟机的文件名,在该步骤中,需说明的是,在用户启动虚拟机时会指定相应文件名的虚拟机,当该虚拟化一体机接收到用户启动虚拟机的指令时,就可获取该虚拟机的文件名;
[0064]S2.根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点;
[0065]S3.优先从查询到的节点中选择目标节点;
[0066]S4.在所选择的目标节点上运行该虚拟机,在该步骤中,需说明的是,由于步骤S3所选择的目标节点优先为该虚拟机的副本所在的节点,当在所选择的目标节点上运行该虚拟机时,就不需要跨网络读写磁盘中存储的副本,从而节省网络流量。
[0067]下面结合图2和图3来说明虚拟化一体机集群中虚拟机调度方法,若用户所要启动的虚拟机的文件名为VM2,则在步骤SI中就可获取该虚拟机的文件名VM2。然后,就可根据该虚拟机的文件名VM2,在图3所示的虚拟化一体机集群的存储模块中查询该虚拟机的副本所在的节点,所查询到的节点为节点C、D,而且,优先从节点C、D中选择目标节点,例如,所选择的目标节点为节点C,就可在该节点C上运行该虚拟机,这样,由于不需要跨网络读写磁盘中存储的副本,可有效节省网络流量,在不增加网络带宽的前提下提高虚拟机的运行速度,使虚拟机读磁盘能力突破网络限制,与本地磁盘1能力持平。
[0068]图4是图2中步骤S3实施例一的流程图,在该实施例中,步骤S3具体包括:
[0069]S30.获取该虚拟机所需要的CPU和内存的配置,例如,获取CPU的频率、内存的大小;
[0070]S31.遍历集群中的所有节点,以获取第一集合;
[0071]S32.逐一判断第一集合中每个节点的内存是否满足该虚拟机所需内存的配置要求,即,判断第一集合中每个节点的内存的大小是否大于等于待运行的虚拟机所需要的内存的大小,并在所述第一集合中剔除不满足要求的节点,以获取第二集合;
[0072]S33.将步骤S2查询到的所有节点确定为第三集合;
[0073]S34.将第二集合和第三集合的交集确定为第四集合;
[0074]S35.计算第四集合中每个节点的分数;
[0075]S36.将分数最高的节点选择为目标节点。
[0076]在上述实施例中,需说明的是,步骤S30至步骤S32与步骤S33并无顺序关系,可以先执行步骤S30至步骤S32,再执行步骤S33,也可以先执行步骤S33,再执行步骤S30至步骤S32,或者,两者同时执行。
[0077]优选地,在步骤35中,根据以下公式计算第四集合中每个节点的分数:
[0078]S = Fq/F*(N+1)_N0
[0079]其中,S为当前节点的分数;匕为当前节点的CPU的频率;F为集群中所有节点的CPU的频率和;N为集群中虚拟机的个数;%为当前节点上运行的虚拟机的个数。
[0080]图5是图2中步骤S3实施例二的流程图,该实施例相比图4所示的实施例,所不同的仅是:
[0081]在步骤S33和步骤34之间,还包括:
[0082]S37.判断第二集合和第三集合是否有交集,若否,则该虚拟机的副本所在的节点集合中不存在有能力启动该虚拟机的节点,可执行步骤S38 ;若是,则说明该虚拟机的副本所在的节点集合中存在有能力启动该虚拟机的节点,可执行步骤S34 ;
[0083]S38.将第二集合确定为第四集合,然后执行步骤S35。
[0084]另外,在步骤S32和步骤S33之间,还包括:
[0085]S39.判断第二集合是否为空,若是,则说明集群中没有节点能运行该虚拟机,提示启动失败;若否,则说明集群中有节点能运行该虚拟机,然后执行步骤S33。
[0086]优选地,在步骤S4之后,还包括:
[0087]判断所选择的目标节点是否属于第三集合,若否,则重新执行步骤S3。
[0088]在该实施例中,在第二集合和第三集无交集时,需要从第二集合中选择一个节点作为目标节点来运行该虚拟机,在该虚拟机运行之后,还可重新执行步骤S3。这样,如果在启动该虚拟机时,该虚拟机的副本所在的节点集合中不存在有能力启动该虚拟机的节点,但是,当该虚拟机运行之后,若该虚拟机的副本所在的节点集合中又存在有能力启动该虚拟机的节点,就可重新执行步骤S3,使该虚拟机在一个由不属于第三集合的节点上运行动态迁移到第三集合的一个节点(该虚拟机的副本所在的节点)上运行。
[0089]图6是本发明虚拟化一体机集群中虚拟机调度系统实施例一的逻辑图,该虚拟机调度系统包括依次连接的文件名获取模块10、副本查询模块20、目标选择模块30和运行模块40。其中,文件名获取模块10用于在用户启动虚拟机时,获取该虚拟机的文件名;副本查询模块20用于根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点;目标选择模块30用于优先从查询到的节点中选择目标节点;运行模块40用于在所选择的目标节点上运行该虚拟机。
[0090]图7是图6中目标选择模块实施例一的逻辑图,该目标选择模块30具体包括:配置获取单元31、第一集合确定单元32、第二集合确定单元33、第三集合确定单元34、第四集合确定单元35、分数计算单元36和目标选择单元37。其中,配置获取单元31用于获取该虚拟机所需要的CPU和内存的配置;第一集合确定单元32用于遍历集群中所有节点,以获取第一集合;第二集合确定单元33用于逐一判断第一集合中每个节点的内存是否满足该虚拟机所需内存的配置要求,并在所述第一集合中剔除不满足要求的节点,以获取第二集合;第三集合确定单元34用于将所述副本查询模块所查询到的所有节点确定为第三集合;第四集合确定单元35用于将第二集合和第三集合的交集确定为第四集合;分数计算单元36用于计算第四集合中每个节点的分数;目标选择单元37用于将分数最高的节点选择为目标节点。
[0091]在其它实施例中,该目标选择模块还可包括交集判断单元、空集判断单元和提示单元。其中,交集判断单元,连接于第二集合确定单元33、第三集合确定单元34和第四集合确定单元35,且用于判断第二集合和第三集合是否有交集;而且,第四集合确定单元35用于在交集判断单元判断有交集时,将第二集合和第三集合的交集确定为第四集合;在交集判断单元判断无交集时,将第二集合确定为第四集合。另外,空集判断单元,连接于第二集合确定单元33,且用于判断第二集合是否为空,而且,提示单元用于在空集判断单元判断为空时,提示启动失败。
[0092]优选地,目标选择模块30,还用于在所选择的目标节点上运行该虚拟机,且所选择的目标节点不属于第三集合时,优先从查询到的节点中选择目标节点。这样,在交集判断单元判断第二集合和第三集合无交集时,第四集合确定单元35将第二集合确定为第四集合,分数计算单元36计算第四集合中每个节点的分数,目标选择单元37将分数最高的节点选择为目标节点,运行模块40在所选择的目标节点上运行该虚拟机。在这种情况下,在该虚拟机运行后,该虚拟机的副本所在的节点集合中又存在有能力启动该虚拟机的节点,目标选择模块重新从该虚拟机的副本所在的节点集合且有能力启动该虚拟机的节点中选择运行该虚拟机的目标节点,从而使该虚拟机在一个由不属于第三集合的节点上运行动态迁移到第三集合的一个节点(该虚拟机的副本所在的节点)上运行。优选地,分数计算单元36根据以下公式计算第四集合中每个节点的分数:
[0093]S = F0/F*(N+1)-N0
[0094]其中,S为当前节点的分数;匕为当前节点的CPU的频率;F为集群中所有节点的CPU的频率和;N为集群中虚拟机的个数;%为当前节点上运行的虚拟机的个数。
[0095]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
【权利要求】
1.一种虚拟化一体机集群中虚拟机调度方法,其特征在于,包括: 51.在用户启动虚拟机时,获取该虚拟机的文件名; 52.根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点; 53.优先从查询到的节点中选择目标节点; 54.在所选择的目标节点上运行该虚拟机。
2.根据权利要求1所述的虚拟化一体机集群中虚拟机调度方法,其特征在于,所述步骤S3包括: 530.获取该虚拟机所需要的CPU和内存的配置; 531.遍历集群中的所有节点,以获取第一集合; 532.逐一判断第一集合中每个节点的内存是否满足该虚拟机所需内存的配置要求,并在所述第一集合中剔除不满足要求的节点,以获取第二集合; 533.将步骤S2查询到的所有节点确定为第三集合; 534.将第二集合和第三集合的交集确定为第四集合; 535.计算第四集合中每个节点的分数; 536.将分数最高的节点选择为目标节点。
3.根据权利要求2所述的虚拟化一体机集群中虚拟机调度方法,其特征在于,在步骤S33和步骤S34之间,还包括:537.判断第二集合和第三集合是否有交集,若否,则执行步骤S38;若是,则执行步骤S34 ; 538.将第二集合确定为第四集合,然后执行步骤S35。
4.根据权利要求3所述的虚拟化一体机集群中虚拟机调度方法,其特征在于,在步骤S4之后,还包括: 判断所选择的目标节点是否属于第三集合,若否,则重新执行步骤S3。
5.根据权利要求2所述的虚拟化一体机集群中虚拟机调度方法,其特征在于,在步骤S32和步骤S33之间,还包括: 539.判断第二集合是否为空,若是,则提示启动失败;若否,则执行步骤S33。
6.根据权利要求2所述的虚拟化一体机集群中虚拟机调度方法,其特征在于,在所述步骤S35中,根据以下公式计算第四集合中每个节点的分数:
S = fq/f*(n+i)-n0 其中,S为当前节点的分数A为当前节点的CPU的频率;F为集群中所有节点的CPU的频率和;N为集群中虚拟机的个数;凡为当前节点上运行的虚拟机的个数。
7.—种虚拟化一体机集群中虚拟机调度系统,其特征在于,包括: 文件名获取模块,用于在用户启动虚拟机时,获取该虚拟机的文件名; 副本查询模块,用于根据该虚拟机的文件名在存储模块中查询该虚拟机的副本所在的节点; 目标选择模块,用于优先从查询到的节点中选择目标节点; 运行模块,用于在所选择的目标节点上运行该虚拟机。
8.根据权利要求7所述的虚拟化一体机集群中虚拟机调度系统,其特征在于,所述目标选择模块包括: 配置获取单元,用于获取该虚拟机所需要的CPU和内存的配置; 第一集合确定单元,用于遍历集群中所有节点,以获取第一集合; 第二集合确定单元,用于逐一判断第一集合中每个节点的内存是否满足该虚拟机所需内存的配置要求,并在所述第一集合中剔除不满足要求的节点,以获取第二集合; 第三集合确定单元,用于将所述副本查询模块所查询到的所有节点确定为第三集合; 第四集合确定单元,用于将第二集合和第三集合的交集确定为第四集合; 分数计算单元,用于计算第四集合中每个节点的分数; 目标选择单元,用于将分数最高的节点选择为目标节点。
9.根据权利要求8所述的虚拟化一体机集群中虚拟机调度系统,其特征在于,所述目标选择模块还包括: 交集判断单元,用于判断第二集合和第三集合是否有交集;而且, 所述第四集合确定单元,用于在交集判断单元判断有交集时,将第二集合和第三集合的交集确定为第四集合;在交集判断单元判断无交集时,将第二集合确定为第四集合。
10.根据权利要求9所述的虚拟化一体机集群中虚拟机调度系统,其特征在于,所述目标选择模块,还用于在所选择的目标节点上运行该虚拟机,且所选择的目标节点不属于第三集合时,优先从查询到的节点中选择目标节点。
11.根据权利要求8所述的虚拟化一体机集群中虚拟机调度系统,其特征在于,所述目标选择模块还包括: 空集判断单元,用于判断第二集合是否为空; 提示单元,用于在空集判断单元判断为空时,提示启动失败。
12.根据权利要求8所述的虚拟化一体机集群中虚拟机调度系统,其特征在于,所述分数计算单元根据以下公式计算第四集合中每个节点的分数:
S = Fq/F*(N+1)-N0 其中,S为当前节点的分数A为当前节点的CPU的频率;F为集群中所有节点的CPU的频率和;N为集群中虚拟机的个数;凡为当前节点上运行的虚拟机的个数。
【文档编号】G06F9/455GK104391735SQ201410650493
【公开日】2015年3月4日 申请日期:2014年11月14日 优先权日:2014年11月14日
【发明者】王正 申请人:深信服网络科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1