一种虚拟机磁盘输入输出调度方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种虚拟机磁盘输入输出调度方法及系统。
【背景技术】
[0002]Linux Container (lxc)容器是一种内核虚拟化技术,目前lxc作为一种轻量级的虚拟化方案,被广泛应用;lxc在CPU和内存方面有较好的隔离性,但磁盘输入输出(或读写)10方面隔离较差。对于部署于同一底层磁盘的多个子机,在一 /多个子机磁盘10密集时,其他子机会因10饥饿而无法正常工作;为了消除这种影响,必须对高10进行限制,以实现10隔离。
[0003]现有技术可以通过逻辑卷管理(Logical Volume Manager, LVM)技术来实现lxc的?ο隔离,LVM作为lxc的存储设备,底层是一块scsi盘;例如通过1-throttle限速机制,根据具体的每秒读写次数(Input/Output Operat1ns Per Second, 1ps)和位/秒(bps)来限制10。具体地,结合控制组control groups (cgroup)和块输入输出限制(blk1),设置相应cgroup对各个块设备的访问1ps和bps限制后,各个cgroup中的进程读写块设备的带宽不会超过设定值,从而达到限速效果,实现10的隔离。
[0004]现有技术的1-throttle限速机制是通过设定固定的值去限定每个cgroup产生的10个数和字节数,从根本上限制住高10产生的频率,留出足够的带宽给其他cgroup使用;即,1-throttle需要一个固定的bps或者1ps值,然而,在实际应用过程中,磁盘10是动态变化的,因此,现有技术中设固定值的方法来实现磁盘10隔离将大大降低磁盘10的效率,不利于虚拟机的运行。
【发明内容】
[0005]本发明实施例所要解决的技术问题在于,提供一种虚拟机磁盘输入输出调度方法及系统,通过监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,解决了现有技术中通过设固定值来实现磁盘10隔离造成磁盘10的效率降低的技术问题,大大提高了虚拟机的运行速度。
[0006]为了解决上述技术问题,本发明实施例第一方面公开了一种虚拟机磁盘输入输出调度方法,包括
[0007]当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
[0008]根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一 LVM使用的带宽,所述第一 LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM ;
[0009]当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。
[0010]本发明实施例第二方面公开了一种虚拟机磁盘输入输出调度系统,包括:
[0011]获取模块,用于当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
[0012]带宽减少模块,用于根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一 LVM使用的带宽,所述第一 LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM ;
[0013]触发执行模块,用于当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则触发所述获取模块重复执行获取的步骤。
[0014]实施本发明实施例,具有如下有益效果:
[0015]通过监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,实现动态地限制各个cgroup中进程读写块设备的带宽,从而实现了虚拟机磁盘10的隔离,解决了现有技术中通过设固定值来实现磁盘10隔离造成磁盘10的效率降低的技术问题,大大提高了虚拟机的运行速度。
【附图说明】
[0016]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]图1是本发明实施例提供的虚拟机磁盘输入输出调度方法的流程示意图;
[0018]图2是本发明提供的监测虚拟机磁盘的输入输出服务状态方法的流程示意图;
[0019]图3是本发明提供的另一实施例的监测虚拟机磁盘的输入输出服务状态方法的流程示意图;
[0020]图4是本发明提供的获取的LVM使用的带宽的流程示意图;
[0021]图5是本发明提供的另一实施例的虚拟机磁盘输入输出调度方法的流程示意图;
[0022]图6是本发明提供的虚拟机磁盘输入输出调度系统的结构示意图;
[0023]图7是本发明提供的另一实施例的虚拟机磁盘输入输出调度系统的结构示意图;
[0024]图8是本发明提供的监测模块的结构示意图;
[0025]图9是本发明提供的带宽减少模块的结构示意图;
[0026]图10是本发明提供的另一实施例的虚拟机磁盘输入输出调度系统的结构示意图;
[0027]图11是本发明提供的虚拟机磁盘输入输出调度系统的另一实施例的结构示意图。
【具体实施方式】
[0028]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029]参见图1,是本发明实施例提供的虚拟机磁盘输入输出调度方法的流程示意图,该方法包括:
[0030]步骤S100:当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
[0031]具体地,步骤S100之前,本发明实施例还包括监测虚拟机磁盘的10服务状态的步骤,那么在监测到虚拟机磁盘的10服务状态为繁忙状态时执行步骤S100 ;需要说明的是,本发明各个实施例中的第一预设时间段可以根据实际使用情况自定义设置,包括但不限于1秒、1.5秒、2秒、3秒等等;优选地,该第一预设时间段为1秒到2秒之间。
[0032]步骤S102:根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一 LVM使用的带宽,所述第一 LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的 LVM ;
[0033]具体地,可以通过在虚拟机磁盘的10服务状态为繁忙状态下获取的各个LVM使用的带宽中找出带宽最大对应的LVM,将该找出的最大带宽对应的LVM作为限速对象(即本发明实施例中的第一 LVM),减少该第一 LVM使用的带宽;减少的方式可以根据实际使用情况来设定,包括但不限于将该第一 LVM使用的带宽乘以一个系数,以达到减少该第一 LVM使用的带宽,该系数可以为0.7,0.8或0.9等,不作限制。
[0034]步骤S104:当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。
[0035]具体地,随着磁盘10进行,磁盘10将不断地动态改变,在执行完步骤S102后,可能出现以下情况:1、10限速效果不够,磁盘继续繁忙;2、磁盘10不再繁忙;因此,执行完步骤S102后,本发明实施例还执行对虚拟机磁盘的输入输出服务状态的监测,详细地,在执行完步骤S102并经过第二预设时间段后仍然监测到虚拟机磁盘的输入输出服务状态为繁忙状态,那么将重复执行上述步骤S100中获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤,可理解的是,后续将继续往下执行步骤S102。
[0036]可理解的是,步骤S102每次执行完减少该第一 LVM使用的带宽后,可以将该第一LVM对应的throttle队列的限速change标志置为1,以使新的限速值生效;另,每次执行步骤S102时的第一 LVM使用的带宽可以与之前执行时找出的第一 LVM使用的带宽不同,该第一 LVM使用的带宽是指当次获取的各个LVM使用的带宽中带宽最大对应的LVM。
[0037]需要说明的是,本发明各个实施例中的第二预设时间段可以根据实际使用情况自定义设置,包括但不限于1秒、1.5秒、2秒、3秒等等;优选地,该第一预设时间段为1秒到2秒之间。该第二预设时间段可以等于该第一预设时间段。
[0038]通过图1实施例,监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,实现了动态地限制各个cgroup中进程读写块设备的带宽,从而实现了虚拟机磁盘10的隔离,解决了现有技术中通过设固定值来实现磁盘10隔离造成磁盘10的效率降低的技术问题,大大提高了虚拟机的运行速度。
[0039]进一步地,本发明实施例中监测所述虚拟