一种控制分布式块存储逻辑卷突发服务质量的方法和设备与流程

    专利2023-06-03  37



    1.本领域涉及计算机领域,并且更具体地涉及一种控制分布式块存储逻辑卷突发服务质量的方法和设备。


    背景技术:

    2.由于分布式存储对接场景的不断丰富,虚拟化使用场景也越来越多,由于虚拟机承载着不同的业务,普遍会存在着资源竞争的现象,严重时,一个吞吐量特别大的业务机,可能造成其他业务的严重卡顿,严重影响用户体验,目前虚拟机普遍承载的是银行、企业等重要的数据,若发生死机,可能造成不可估量的损失,因此对于虚拟机的资源控制必不可少。


    技术实现要素:

    3.有鉴于此,本发明实施例的目的在于提出一种控制分布式块存储逻辑卷突发服务质量的方法和设备,通过使用本发明的方法,能够避免回调线程的卡顿造成后续业务的阻塞,有效的控制了逻辑卷上的qos(服务质量)上限,通过设置突发qos和突发时长,可通过实际应用场景,灵活的配置所需突发对应配置,以及限制令牌桶和突发流控令牌桶的双令牌桶控制,适当设置令牌桶的高度,保证能根据用户所设置配置值进行io(输入输出)的流控,大大的提高了用户体验,增强了我们产品的易用性、可靠性、扩展性,提高了我们产品的竞争力。
    4.基于上述目的,本发明的实施例的一个方面提供了一种控制分布式块存储逻辑卷突发服务质量的方法,包括以下步骤:
    5.设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;
    6.响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量;
    7.响应于返回的io触发突发服务质量,使突发令牌桶基于配置参数开始产生令牌并且使返回的io中的第一个io请求消耗令牌桶中的令牌以使第一个io请求通过;
    8.使第一个io请求之后的io请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量。
    9.根据本发明的一个实施例,突发服务质量的配置参数包括突发服务质量的最大值、突发服务质量的持续时间和非突发服务质量的最大值。
    10.根据本发明的一个实施例,将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌包括:
    11.响应于逻辑卷打开,从分布式存储底层数据库中加载服务质量的信息;
    12.响应于服务质量的信息加载完成,对逻辑卷进行加压并检测io是否从分布式存储底层数据库中返回;
    13.响应于检测到io从分布式存储底层数据库中返回,将io加入到服务质量队列中并
    判断令牌桶中是否有剩余的令牌。
    14.根据本发明的一个实施例,响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量包括:
    15.判断两次io请求的间隔时间是否超过阈值;
    16.响应于两次io请求的间隔时间超过阈值,判断返回的io触发突发服务质量。
    17.根据本发明的一个实施例,使第一个io请求之后的io请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量包括:
    18.响应于接收到第一个io请求之后的一个io请求,判断突发令牌桶中是否已经生产了一个周期的令牌;
    19.响应于突发令牌桶中已经生产了一个周期的令牌,判断突发令牌桶中是否有足够的令牌以使本次io请求通过;
    20.响应于突发令牌桶中没有足够的令牌以使本次io请求通过,使本次io请求消耗突发令牌桶中的所有令牌和令牌桶中不足的令牌数量以使本次io请求通过。
    21.根据本发明的一个实施例,还包括:
    22.响应于突发令牌桶中有足够的令牌使本次io请求通过,使本次io请求消耗突发令牌桶中的令牌以使本次io请求通过。
    23.根据本发明的一个实施例,还包括:
    24.响应于突发令牌桶中未生产一个周期的令牌,等待突发令牌桶生产令牌以使突发令牌桶至少生产一个周期的令牌;
    25.响应于突发令牌桶中已经生产了一个周期的令牌,判断突发令牌桶中是否有足够的令牌以使本次io请求通过;
    26.响应于突发令牌桶中没有足够的令牌以使本次io请求通过,本次io请求消耗突发令牌桶中的所有令牌和令牌桶中不足的令牌数量以使本次io请求通过。
    27.根据本发明的一个实施例,还包括:
    28.响应于突发令牌桶中有足够的令牌使本次io请求通过,本次io请求消耗突发令牌桶中的令牌以使本次io请求通过。
    29.根据本发明的一个实施例,还包括:
    30.响应于解除突发服务质量,将突发令牌桶中的令牌清零。
    31.本发明的实施例的另一个方面,还提供了一种控制分布式块存储逻辑卷突发服务质量的设备,设备包括:
    32.设置模块,设置模块配置为设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;
    33.判断模块,判断模块配置为响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量;
    34.生产模块,生产模块配置为响应于返回的io触发突发服务质量,使突发令牌桶基于配置参数开始产生令牌并且使返回的io中的第一个io请求消耗令牌桶中的令牌以使第一个io请求通过;
    35.解除模块,解除模块配置为使第一个io请求之后的io请求消耗突发令牌桶中的令
    牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量。
    36.本发明具有以下有益技术效果:本发明实施例提供的控制分布式块存储逻辑卷突发服务质量的方法,通过设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量;响应于返回的io触发突发服务质量,使突发令牌桶基于配置参数开始产生令牌并且使返回的io中的第一个io请求消耗令牌桶中的令牌以使第一个io请求通过;使第一个io请求之后的io请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量的技术方案,能够避免回调线程的卡顿造成后续业务的阻塞,有效的控制了逻辑卷上的qos上限,通过设置突发qos和突发时长,可通过实际应用场景,灵活的配置所需突发对应配置,以及限制令牌桶和突发流控令牌桶的双令牌桶控制,适当设置令牌桶的高度,保证能根据用户所设置配置值进行io的流控,大大的提高了用户体验,增强了我们产品的易用性、可靠性、扩展性,提高了我们产品的竞争力。
    附图说明
    37.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
    38.图1为根据本发明一个实施例的控制分布式块存储逻辑卷突发服务质量的方法的示意性流程图;
    39.图2为根据本发明一个实施例的控制分布式块存储逻辑卷突发服务质量的设备的示意图。
    具体实施方式
    40.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
    41.基于上述目的,本发明的实施例的第一个方面,提出了一种控制分布式块存储逻辑卷突发服务质量的方法的一个实施例。图1示出的是该方法的示意性流程图。
    42.如图1中所示,该方法可以包括以下步骤:
    43.s1设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌,配置参数突发服务质量的最大值、突发服务质量的持续时间和非突发服务质量的最大值,将这些配置参数写入header元数据中,并根据配置参数更新服务质量信息;
    44.s2响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量,如果令牌桶中有剩余的令牌那么可以触发突发服务质量,如果令牌桶中没有剩余的令牌那么不可以触发突发服务质量,突发服务质量的触发门限可以根据两次io的间隔时长来判断,如果两次io的间隔时间大于设定的阈值则可以判断为触发了突发服务质量;
    45.s3响应于返回的io触发突发服务质量,使突发令牌桶基于配置参数开始产生令牌
    并且使返回的io中的第一个io请求消耗令牌桶中的令牌以使第一个io请求通过,触发突发服务质量之前,突发令牌桶中没有令牌且不生产令牌,只有刚触发了突发服务质量,突发令牌桶中才会开始生产令牌,由于触发突发服务质量时突发令牌桶中没有令牌,那么触发后的第一个io请求消耗令牌桶中的令牌以使io请求通过;
    46.s4使第一个io请求之后的io请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量,后面再过来的io请求就需要同时消耗突发令牌桶中的令牌和令牌桶中的令牌以使io请求通过,如果令牌桶中的令牌全部消耗完则突发服务质量结束,再过来的io请求需要按照正常的流程进行处理。
    47.通过本发明的技术方案,能够避免回调线程的卡顿造成后续业务的阻塞,有效的控制了逻辑卷上的qos上限,通过设置突发qos和突发时长,可通过实际应用场景,灵活的配置所需突发对应配置,以及限制令牌桶和突发流控令牌桶的双令牌桶控制,适当设置令牌桶的高度,保证能根据用户所设置配置值进行io的流控,大大的提高了用户体验,增强了我们产品的易用性、可靠性、扩展性,提高了我们产品的竞争力。
    48.在本发明的一个优选实施例中,突发服务质量的配置参数回包括突发服务质量的最大值、突发服务质量的持续时间和非突发服务质量的最大值。可以通过这些配置参数计算突发令牌桶的令牌高度,公式为:(突发服务质量的最大值-非突发服务质量的最大值)*突发服务质量的持续时间。突发令牌桶中的令牌数量不能超过上式计算的值。
    49.在本发明的一个优选实施例中,将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌包括:
    50.响应于逻辑卷打开,从分布式存储底层数据库中加载服务质量的信息,逻辑卷打开时从rados(作为ceph分布式文件系统的一个子项目)加载qos(服务质量)信息,qos信息包括服务质量开关状态、每秒输入输出开关状态、带宽开关状态、每秒输入输出上限和带宽上限;
    51.响应于服务质量的信息加载完成,对逻辑卷进行加压并检测io是否从分布式存储底层数据库中返回,响应于服务质量的信息加载完成,对逻辑卷进行加压并检测io是否从分布式存储底层数据库中返回,当服务质量信息加载完成后,使用加压程序对客户端提供的逻辑卷进行加压,这时会在分布式存储底层数据库中产生大量的io,io会从分布式底层数据库向客户端返回;
    52.响应于检测到io从分布式存储底层数据库中返回,将io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌,响应于检测到io从分布式存储底层数据库中返回,将io加入到服务质量队列中并判断令牌桶中是否有足够的令牌,建立服务质量队列,将返回的io加入到该队列中,在队列中的io按照加入队列的顺序依次进行处理,处理时需要判断当前的令牌桶中的令牌是否足够本次io通过,响应于令牌桶中有足够的令牌,确认io的请求通过并更新令牌桶中的令牌数量,如果令牌桶中有足够的令牌,那么本次io的请求就会通过,并消耗本次io通过需要的令牌,更新令牌桶中令牌的数量后开始处理下一个io请求。
    53.在本发明的一个优选实施例中,响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量包括:
    54.判断两次io请求的间隔时间是否超过阈值;
    55.响应于两次io请求的间隔时间超过阈值,判断返回的io触发突发服务质量。
    56.在本发明的一个优选实施例中,使第一个io请求之后的io请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量包括:
    57.响应于接收到第一个io请求之后的一个io请求,判断突发令牌桶中是否已经生产了一个周期的令牌;
    58.响应于突发令牌桶中已经生产了一个周期的令牌,判断突发令牌桶中是否有足够的令牌以使本次io请求通过;
    59.响应于突发令牌桶中没有足够的令牌以使本次io请求通过,使本次io请求消耗突发令牌桶中的所有令牌和令牌桶中不足的令牌数量以使本次io请求通过。如果突发令牌桶已经生产了至少一个周期的令牌,那么需要判断突发令牌桶中的令牌是否足够本次io请求通过,如果足够则全部消耗突发令牌桶中的令牌,如果不够则需要消耗令牌桶中的令牌。
    60.在本发明的一个优选实施例中,还包括:
    61.响应于突发令牌桶中有足够的令牌使本次io请求通过,使本次io请求消耗突发令牌桶中的令牌以使本次io请求通过。
    62.在本发明的一个优选实施例中,还包括:
    63.响应于突发令牌桶中未生产一个周期的令牌,等待突发令牌桶生产令牌以使突发令牌桶至少生产一个周期的令牌;
    64.响应于突发令牌桶中已经生产了一个周期的令牌,判断突发令牌桶中是否有足够的令牌以使本次io请求通过;
    65.响应于突发令牌桶中没有足够的令牌以使本次io请求通过,本次io请求消耗突发令牌桶中的所有令牌和令牌桶中不足的令牌数量以使本次io请求通过。如果io请求过来时,突发令牌桶还没有生产至少一个周期的令牌,那么需要等待突发令牌桶生产令牌,然后判断突发令牌桶中的令牌是否足够本次io请求通过,如果足够则全部消耗突发令牌桶中的令牌,如果不够则需要消耗令牌桶中的令牌。
    66.在本发明的一个优选实施例中,还包括:
    67.响应于突发令牌桶中有足够的令牌使本次io请求通过,本次io请求消耗突发令牌桶中的令牌以使本次io请求通过。
    68.在本发明的一个优选实施例中,还包括:
    69.响应于解除突发服务质量,将突发令牌桶中的令牌清零。当一次突发服务质量结束后,突发令牌桶中的令牌需要被清空以使每次触发突发服务质量时突发令牌桶中都没有令牌。
    70.基于上述目的,本发明的实施例的第二个方面,提出了一种控制分布式块存储逻辑卷突发服务质量的设备,如图2所示,设备200包括:
    71.设置模块,设置模块配置为设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;
    72.判断模块,判断模块配置为响应于令牌桶中有剩余的令牌,判断返回的io是否触发突发服务质量;
    73.生产模块,生产模块配置为响应于返回的io触发突发服务质量,使突发令牌桶基于配置参数开始产生令牌并且使返回的io中的第一个io请求消耗令牌桶中的令牌以使第
    一个io请求通过;
    74.解除模块,解除模块配置为使第一个io请求之后的io请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量。
    75.通过本发明的技术方案,能够避免回调线程的卡顿造成后续业务的阻塞,有效的控制了逻辑卷上的iops和带宽上限,能允许系统出现临时的卡顿同时不影响qos的限制效果,保证了qos特性的稳定性,提高了用户体验,提高了产品的竞争力。
    76.需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(read-only memory,rom)或随机存取存储器(random access memory,ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
    77.此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。
    78.上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

    技术特征:
    1.一种控制分布式块存储逻辑卷突发服务质量的方法,其特征在于,包括以下步骤:设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;响应于令牌桶中有剩余的令牌,判断所述返回的io是否触发突发服务质量;响应于所述返回的io触发突发服务质量,使突发令牌桶基于所述配置参数开始产生令牌并且使所述返回的io中的第一个io请求消耗所述令牌桶中的令牌以使所述第一个io请求通过;使所述第一个io请求之后的io请求消耗所述突发令牌桶中的令牌和所述令牌桶中的令牌来获得通过,直到所述令牌桶中的令牌全部消耗完,解除突发服务质量。2.根据权利要求1所述的方法,其特征在于,突发服务质量的配置参数包括突发服务质量的最大值、突发服务质量的持续时间和非突发服务质量的最大值。3.根据权利要求1所述的方法,其特征在于,将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌包括:响应于逻辑卷打开,从分布式存储底层数据库中加载服务质量的信息;响应于所述服务质量的信息加载完成,对所述逻辑卷进行加压并检测io是否从所述分布式存储底层数据库中返回;响应于检测到io从所述分布式存储底层数据库中返回,将io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌。4.根据权利要求1所述的方法,其特征在于,响应于令牌桶中有剩余的令牌,判断所述返回的io是否触发突发服务质量包括:判断两次io请求的间隔时间是否超过阈值;响应于两次io请求的间隔时间超过阈值,判断所述返回的io触发突发服务质量。5.根据权利要求1所述的方法,其特征在于,使所述第一个io请求之后的io请求消耗所述突发令牌桶中的令牌和所述令牌桶中的令牌来获得通过,直到所述令牌桶中的令牌全部消耗完,解除突发服务质量包括:响应于接收到所述第一个io请求之后的一个io请求,判断所述突发令牌桶中是否已经生产了一个周期的令牌;响应于所述突发令牌桶中已经生产了一个周期的令牌,判断所述突发令牌桶中是否有足够的令牌以使本次io请求通过;响应于所述突发令牌桶中没有足够的令牌以使本次io请求通过,使本次io请求消耗所述突发令牌桶中的所有令牌和令牌桶中不足的令牌数量以使本次io请求通过。6.根据权利要求5所述的方法,其特征在于,还包括:响应于所述突发令牌桶中有足够的令牌使本次io请求通过,使本次io请求消耗所述突发令牌桶中的令牌以使本次io请求通过。7.根据权利要求5所述的方法,其特征在于,还包括:响应于所述突发令牌桶中未生产一个周期的令牌,等待所述突发令牌桶生产令牌以使所述突发令牌桶至少生产一个周期的令牌;响应于所述突发令牌桶中已经生产了一个周期的令牌,判断所述突发令牌桶中是否有足够的令牌以使本次io请求通过;
    响应于所述突发令牌桶中没有足够的令牌以使本次io请求通过,本次io请求消耗所述突发令牌桶中的所有令牌和令牌桶中不足的令牌数量以使本次io请求通过。8.根据权利要求7所述的方法,其特征在于,还包括:响应于所述突发令牌桶中有足够的令牌使本次io请求通过,本次io请求消耗所述突发令牌桶中的令牌以使本次io请求通过。9.根据权利要求1所述的方法,其特征在于,还包括:响应于解除突发服务质量,将所述突发令牌桶中的令牌清零。10.一种控制分布式块存储逻辑卷突发服务质量的设备,其特征在于,所述设备包括:设置模块,所述设置模块配置为设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的io加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;判断模块,所述判断模块配置为响应于令牌桶中有剩余的令牌,判断所述返回的io是否触发突发服务质量;生产模块,所述生产模块配置为响应于所述返回的io触发突发服务质量,使突发令牌桶基于所述配置参数开始产生令牌并且使所述返回的io中的第一个io请求消耗所述令牌桶中的令牌以使所述第一个io请求通过;解除模块,所述解除模块配置为使所述第一个io请求之后的io请求消耗所述突发令牌桶中的令牌和所述令牌桶中的令牌来获得通过,直到所述令牌桶中的令牌全部消耗完,解除突发服务质量。
    技术总结
    本发明提供了一种控制分布式块存储逻辑卷突发服务质量的方法和设备,该方法包括:设置突发服务质量的配置参数并将从分布式存储底层数据库中返回的IO加入到服务质量队列中并判断令牌桶中是否有剩余的令牌;响应于令牌桶中有剩余的令牌,判断返回的IO是否触发突发服务质量;响应于返回的IO触发突发服务质量,使突发令牌桶基于配置参数开始产生令牌并且使返回的IO中的第一个IO请求消耗令牌桶中的令牌以使第一个IO请求通过;使第一个IO请求之后的IO请求消耗突发令牌桶中的令牌和令牌桶中的令牌来获得通过,直到令牌桶中的令牌全部消耗完,解除突发服务质量。通过使用本发明的方案,能够避免回调线程的卡顿造成后续业务的阻塞,大大的提高了用户体验。大大的提高了用户体验。大大的提高了用户体验。


    技术研发人员:白战豪 胡永刚
    受保护的技术使用者:苏州浪潮智能科技有限公司
    技术研发日:2020.12.11
    技术公布日:2021/3/9

    转载请注明原文地址:https://wp.8miu.com/read-64567.html

    最新回复(0)