本发明属于虚拟机资源调度领域,具体涉及一种面向高网络通信的虚拟机调度方法及系统。
背景技术:
在云计算时代,越来越多的用户减少购买物理硬件,转而向数据中心租用计算资源来完成其工作任务。合理高效的将用户请求计算资源分配到云环境中,并提高物理机的资源利用率,保证虚拟机的运行性能,是数据中心管理的最重要工作。虚拟机调度是保证虚拟机运行性能的常用方法,目前该类算法主要的关注点一是减少物理服务器上的cpu、内存碎片,以容纳更多虚拟机,提高数据中心物力资源的利用率;二是预留资源,应对物理资源负载变化。然而,云计算很多应用场景中,用户任务会涉及到虚拟机之间大量的网络通信,其所在的物理服务器通过网络连接,端到端的网络通信能力随着物理机的分布存在很大差异,这种差异造成用户虚拟机性能和使用体验的下降。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种面向高网络通信的虚拟机调度方法及系统,是非常有必要的。
技术实现要素:
本发明的目的在于,针对上述云计算中虚拟机之间的端到端的网络通信能力随着物理机的分布存在很大差异,造成用户虚拟机性能和使用体验的下降的缺陷,提供一种面向高网络通信的虚拟机调度方法及系统,以解决上述技术问题。
为实现上述目的,本发明给出以下技术方案:
一种面向高网络通信的虚拟机调度方法,将用户请求的一组虚拟机分配到同一个物理主机,或者分配到路由路径最短的多个物理主机;
将一个物理主机的虚拟机中同另一个物理主机交互最多的虚拟机迁移至交互的物理主机。最短路由路径,是从一个物理主机到另一个物理主机经过的交换机或路由器数量最少。
进一步地,包括如下步骤:
s1.获取用户的虚拟机组分配请求;
s2.判断第一物理主机是否满足虚拟机组资源需求;
若否,进入步骤s3;
s3.获取距离第一物理主机路由路径最短的物理主机,设定为第二物理主机;
s4.将虚拟机组分配到第一物理主机和第二物理主机。此时,若是,第一物理主机和第二物理主机仍是不满足虚拟机组资源需求,需要继续获取距离第一物理主机和第二物理主机路由路径最短的其他物理主机,继续将虚拟机组分配,直至满足虚拟机的需求。
进一步地,步骤s3中,当距离第一物理主机路由路径最短的物理主机数量为多个时,设定多个物理主机中物理资源多的物理主机作为第二物理主机。所述物理资源包括cpu和存储资源,即同样路由路径相同的情况下,选择速度快,内存大,硬盘大的物理主机。
进一步地,步骤s2中,当第一物理主机满足虚拟机组资源需求,则进入步骤s3a;
s3a.将虚拟机组分配到第一物理主机。同一个物理主机可以满足虚拟机资源分配,要分配到一个物理主机,此时,最大程度减少了虚拟机组内通信延迟和整个数据中心的通信流量。
进一步地,步骤s4和s3a之后均包括如下步骤:
s5.判断第一物理主机的输入输出压力是否超过阈值;
若否,结束;
若是,进入步骤s6;
s6.获取第一物理主机上的每个虚拟机的输入输出压力;
s7.将第一物理主机上的所有虚拟机按照输入输出压力大小排序,生成第一物理主机虚拟机序列;
s8.从第一物理主机虚拟机序列中,选择输入输出压力最大的虚拟机,设定为第一虚拟机;
s9.判断与第一虚拟机交互的虚拟机是否在第一物理主机;
若否,获取与第一虚拟机交互的虚拟机所在的物理主机,设定为第三物理主机;
s10.将第一虚拟机迁移至第三物理主机;返回步骤s5。监控一个物理主机的输入输出压力,超过阈值时,首先要找到造成输入输出压力超标的虚拟机以及与该虚拟机通信的虚拟机,将该虚拟机放到与其通信的虚拟机同一个物理机上,避免网络拥塞,造成虚拟机性能下降。
进一步地,步骤s9中,当与第一虚拟机交互的虚拟机是在第一物理主机时,将第一虚拟机从第一物理主机虚拟机序列中去除;返回步骤s8。同一物理主机内部虚拟机之间的交互不影响物理主机输入输出压力。
进一步地,步骤s10中还包括:
判断第三物理主机是否满足第一虚拟机的分配需求;
若是,将第一虚拟机迁移至第三物理主机;返回步骤s5;
若否,获取距离第三物理主机路由路径最短的物理主机,设定为第四物理主机;
将第一虚拟机迁移至第四物理主机;返回步骤s5。,当同一个物理主机不能满足时,将其放到路由路径最近的物理主机上,避免网络拥塞,造成虚拟机性能下降。
本发明还给出如下技术方案:
一种面向高网络通信的虚拟机调度系统,包括
虚拟机组分配请求获取模块,用于获取用户的虚拟机组分配请求;
虚拟机组资源需求判断模块,用于判断第一物理主机是否满足虚拟机组资源需求;
最短路由路径物理主机选择模块,用于当第一物理主机不满足虚拟机组资源需求时,获取距离第一物理主机路由路径最短的物理主机,设定为第二物理主机;
虚拟机组分配模块,用于当第一物理主机不满足虚拟机组资源需求时,将虚拟机组分配到第一物理主机和第二物理主机,或者,当第一物理主机满足虚拟机组资源需求时,将虚拟机组分配到第一物理主机;其中第二物理主机距第一物理主机路由路径最短。
进一步地,还包括:
第一物理主机输入输出压力判断模块,用于判断第一物理主机的输入输出压力是否超过阈值;
虚拟机主机输入输出压力获取模块,用于获取第一物理主机上的每个虚拟机的输入输出压力;
虚拟机主机序列生成模块,用于将第一物理主机上的所有虚拟机按照输入输出压力大小排序,生成第一物理主机虚拟机序列;
输入输出压力最大虚拟机选择模块,用于从第一物理主机虚拟机序列中,选择输入输出压力最大的虚拟机,设定为第一虚拟机;
交互虚拟机所在物理机判断模块,用于判断与第一虚拟机交互的虚拟机是否在第一物理主机;
交互虚拟机所在物理机获取模块,用于当与第一虚拟机交互的虚拟机不在第一物理主机时,获取与第一虚拟机交互的虚拟机所在的物理主机,设定为第三物理主机;
虚拟机迁移模块,用于将第一虚拟机从原来所在的第一物理主机迁移至第三物理主机;
虚拟机序列移除模块,用于当与第一虚拟机交互的虚拟机是在第一物理主机时,将第一虚拟机从第一物理主机虚拟机序列中去除。
进一步地,最短路由路径物理主机选择模块中,当距离第一物理主机路由路径最短的物理主机数量为多个时,设定多个物理主机中物理资源多的物理主机作为第二物理主机。
进一步地,所述物理资源包括cpu和存储资源。
本发明的有益效果在于:
本发明将虚拟机之间的网络通信能力作为调度的参考因素,将同一组通信需求高的虚拟机尽量分配到同一个物理主机,当物理主机通信压力超标,将通信需求高的虚拟机迁移,提高虚拟机之间的网络通信带宽,降低通信时延,从而减少网络阻塞和整个数据中心的通信流量,提高虚拟机性能。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明的流程图;
图2为虚拟机组按最短路由路径分配到物理主机的示意图;
图3为将同其他物理机交互多的虚拟机迁移的示意图;
图4为本发明的系统示意图;
其中,1-虚拟机组分配请求获取模块;2-虚拟机组资源需求判断模块;3-最短路由路径物理主机选择模块;4-虚拟机组分配模块;5-第一物理主机输入输出压力判断模块;6-虚拟机主机输入输出压力获取模块;7-虚拟机主机序列生成模块;8-输入输出压力最大虚拟机选择模块;9-交互虚拟机所在物理机判断模块;10-交互虚拟机所在物理机获取模块;11-虚拟机迁移模块;12-虚拟机序列移除模块。
具体实施方式:
为使得本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明具体实施例中的附图,对本发明中的技术方案进行清楚、完整地描述。
实施例1:
本发明提供一种面向高网络通信的虚拟机调度方法,将用户请求的一组虚拟机分配到同一个物理主机,或者分配到路由路径最短的多个物理主机;
将一个物理主机的虚拟机中同另一个物理主机交互最多的虚拟机迁移至交互的物理主机;如图1所示,具体包括如下步骤:
s1.获取用户的虚拟机组分配请求;
s2.判断第一物理主机是否满足虚拟机组资源需求;
若是,进入步骤s3a;
若否,进入步骤s3;
s3a.将虚拟机组分配到第一物理主机;进入步骤s5;
s3.获取距离第一物理主机路由路径最短的物理主机,设定为第二物理主机;当距离第一物理主机路由路径最短的物理主机数量为多个时,设定多个物理主机中物理资源多的物理主机作为第二物理主机;
s4.将虚拟机组分配到第一物理主机和第二物理主机;
s5.判断第一物理主机的输入输出压力是否超过阈值;
若否,结束;
若是,进入步骤s6;
s6.获取第一物理主机上的每个虚拟机的输入输出压力;
s7.将第一物理主机上的所有虚拟机按照输入输出压力大小排序,生成第一物理主机虚拟机序列;
s8.从第一物理主机虚拟机序列中,选择输入输出压力最大的虚拟机,设定为第一虚拟机;
s9.判断与第一虚拟机交互的虚拟机是否在第一物理主机;
若是,将第一虚拟机从第一物理主机虚拟机序列中去除;返回步骤s8;
若否,获取与第一虚拟机交互的虚拟机所在的物理主机,设定为第三物理主机;
s10.判断第三物理主机是否满足第一虚拟机的分配需求;
若是,将第一虚拟机迁移至第三物理主机;返回步骤s5;
若否,获取距离第三物理主机路由路径最短的物理主机,设定为第四物理主机;
将第一虚拟机迁移至第四物理主机;返回步骤s5。
实施例2:
如图2所示,应用上述实例1,最短路由路径,是从一个物理主机到另一个物理主机经过的交换机或路由器数量最少。设定host1为第一物理主机,计算云环境中各个物理主机的交换机距离。云环境通常有海量的物理服务器组成,这些物理服务器由交换机、路由器等连接,网络拓扑图可抽象为图2所示。从虚拟机到虚拟机的网络通讯,每经过一个交换机,通讯时长增加,经过的交换机越多越影响虚拟机通信时延。计算交换机距离为:虚拟机vmi所在主机到vmj所在主机的交换机距离为网络通讯经过交换机的个数,如图2所示,虚拟机所在主机从第一物理主机host1到host1、host2、host3及host4的距离可以一维数组表示为d(vm1)=(0,0,1,3),同理可计算其他物理主机到交换机距离。数据中心管理结点计算每个物理主机到另外的物理主机的交换机距离,并根据数据中心的物理拓扑变化不断更新;
当用户申请一组计算资源时,将用户申请的一组虚拟机按照流量聚类,部署到同一物理机第一物理主机host1上,当host1的计算资源不足以分配所有虚拟机时,向数据中心管理结点查询交换机距离最近的物理主机,host1和host2在同一机架上,路由路径为0,将虚拟机分配到host2物理主机上,继续判断虚拟机分配是否完成,直至虚拟机分配完成。
实施例3:
如图3所示,应用上述实施例1,为第一物理主机host1的输入输出i/o设置一个阈值,数据中心管理结点监控第一物理主机host1的输入输出i/o压力,假设第一物理主机host1的输入输出i/o超过该阈值,监控结点查询在该主机上的虚拟机,按照压力大小依次降序排列为vm1…vmn,依次查询与虚拟机vmi交互的虚拟机,如果交互的虚拟机在第一物理主机host1之外的第三物理主机host3,则将该虚拟机vmi迁出到第三物理主机host3,直至第一物理主机host1的输入输出i/o压力将至阈值以下。
实施例4:
如图4所示,本发明提供一种面向高网络通信的虚拟机调度系统,包括
虚拟机组分配请求获取模块1,用于获取用户的虚拟机组分配请求;
虚拟机组资源需求判断模块2,用于判断第一物理主机是否满足虚拟机组资源需求;
最短路由路径物理主机选择模块3,用于当第一物理主机不满足虚拟机组资源需求时,获取距离第一物理主机路由路径最短的物理主机,设定为第二物理主机;当距离第一物理主机路由路径最短的物理主机数量为多个时,设定多个物理主机中物理资源多的物理主机作为第二物理主机;所述物理资源包括cpu和存储资源;
虚拟机组分配模块4,用于当第一物理主机不满足虚拟机组资源需求时,将虚拟机组分配到第一物理主机和第二物理主机,或者,当第一物理主机满足虚拟机组资源需求时,将虚拟机组分配到第一物理主机;其中第二物理主机距第一物理主机路由路径最;
第一物理主机输入输出压力判断模块5,用于判断第一物理主机的输入输出压力是否超过阈值;
虚拟机主机输入输出压力获取模块6,用于获取第一物理主机上的每个虚拟机的输入输出压力;
虚拟机主机序列生成模块7,用于将第一物理主机上的所有虚拟机按照输入输出压力大小排序,生成第一物理主机虚拟机序列;
输入输出压力最大虚拟机选择模块8,用于从第一物理主机虚拟机序列中,选择输入输出压力最大的虚拟机,设定为第一虚拟机;
交互虚拟机所在物理机判断模块9,用于判断与第一虚拟机交互的虚拟机是否在第一物理主机;
交互虚拟机所在物理机获取模块10,用于当与第一虚拟机交互的虚拟机不在第一物理主机时,获取与第一虚拟机交互的虚拟机所在的物理主机,设定为第三物理主机;
虚拟机迁移模块11,用于将第一虚拟机从原来所在的第一物理主机迁移至第三物理主机;
虚拟机序列移除模块12,用于当与第一虚拟机交互的虚拟机是在第一物理主机时,将第一虚拟机从第一物理主机虚拟机序列中去除。
本发明的实施例是说明性的,而非限定性的,上述实施例只是帮助理解本发明,因此本发明不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他的具体实施方式,同样属于本发明保护的范围。