一种分布式存储系统中Qos的实现方法及装置与流程

文档序号:11778233阅读:417来源:国知局
一种分布式存储系统中Qos的实现方法及装置与流程

本发明属于分布式存储技术领域,尤其涉及一种分布式存储系统中qos的实现方法及装置。



背景技术:

随着云计算的兴起,分布式存储迈入云存储时代。云存储向用户提供可定制化和按需付费的服务,用户可以根据自身实际需求购买对应服务质量(qos)的存储服务。

qos的保证对于资源有限的分布式存储场景来说是十分重要,尤其对于流多媒体应用场景,这些应用场景对每秒进行读写(i/o)操作的次数(iops)和带宽具有较高的要求。

现有技术在分布式存储系统中qos的实现方法无法同时满足iops和带宽的较高要求。

为此,提供一种能够同时满足iops和带宽的较高要求的qos实现方法,是本领域技术人员亟需解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式存储系统中qos的实现方法及装置,用于解决现有技术在分布式存储系统中qos的实现方法无法同时满足iops和带宽的较高要求。

技术方案如下:

本发明提供一种分布式存储系统中qos的实现方法,包括:

在接收到读/写操作指令后,从令牌桶中申请令牌;其中,所述令牌桶包括读写操作令牌桶和带宽令牌桶;

判断从所述读写操作令牌桶和所述带宽令牌桶中是否都申请到令牌;

判断从所述读写操作令牌和所述带宽令牌桶中都申请到令牌,则执行与所述读写操作指令对应的操作。

优选地,所述从令牌桶中申请令牌包括:

判断所述令牌桶中是否存在令牌;

判断所述令牌桶中存在令牌,则从所述令牌桶中获得令牌,并将获得的令牌从所述令牌桶中去除。

优选地,所述判断所述令牌桶中是否存在令牌后,还包括:

判断所述令牌桶中不存在令牌,则更新所述令牌桶;

从更新后的所述令牌桶中获取令牌。

优选地,所述更新所述令牌桶包括:

获取与所述读写操作指令对应的存储块的卷属性;

从所述卷属性中获取向所述令牌桶中添加令牌的速度;

根据所述令牌桶中添加令牌的速度,按照预设规则更新所述令牌桶。

优选地,所述预设规则为:

t(i+1)=t(i)+v*interval

t(i+1)=(t(i+1)>max)?max:t(i+1)

其中,t(i)表示第i次迭代时所述令牌桶中令牌的数量,interval代表第i次迭代与第i+1次迭代之间的时间差,单位为秒,max表示所述令牌桶中令牌数量的最大值,max=α*v,v表示所述令牌桶中添加令牌的速度,单位为个/秒,α为大于1的任意自然数。

本发明还提供一种分布式存储系统中qos的实现装置,包括:

获取单元,用于在接收到读/写操作指令后,从令牌桶中申请令牌;其中,所述令牌桶包括读写操作令牌桶和带宽令牌桶;

判断单元,用于判断从所述读写操作令牌桶和所述带宽令牌桶中是否都申请到令牌;

执行单元,用于当所述判断单元判断从所述读写操作令牌和所述带宽令牌桶中都申请到令牌时,执行与所述读写操作指令对应的操作。

优选地,所述获取单元具体包括:

判断所述令牌桶中是否存在令牌;

判断所述令牌桶中存在令牌,则从所述令牌桶中获得令牌,并将获得的令牌从所述令牌桶中去除。

优选地,还包括:

更新单元,用于在判断所述令牌桶中不存在令牌时,更新所述令牌桶;

所述获取单元还用于从更新后的所述令牌桶中获取令牌。

优选地,所述更新单元具体包括:

获取与所述读写操作指令对应的存储块的卷属性;

从所述卷属性中获取向所述令牌桶中添加令牌的速度;

根据所述令牌桶中添加令牌的速度,按照预设规则更新所述令牌桶。

优选地,所述预设规则为:

t(i+1)=t(i)+v*interval

t(i+1)=(t(i+1)>max)?max:t(i+1)

其中,t(i)表示第i次迭代时所述令牌桶中令牌的数量,interval代表第i次迭代与第i+1次迭代之间的时间差,单位为秒,max表示所述令牌桶中令牌数量的最大值,max=α*v,v表示所述令牌桶中添加令牌的速度,单位为个/秒,α为大于1的任意自然数。

与现有技术相比,本发明提供的上述技术方案具有如下优点:

从上述技术方案可知,本申请中在接收到读写操作指令后,从读写操作令牌桶和带宽令牌桶中分别申请令牌,每个令牌桶中存储的令牌的总数与用户自身实际需求购买的服务质量相关,只有在令牌桶中存在令牌时,才能从令牌桶中申请到令牌,并且只有从读写操作令牌和带宽令牌桶中都申请到令牌,才能执行与读写操作指令对应的操作。其中,读写操作令牌桶中令牌数量用于限制每秒进行读写操作的次数(iops),带宽令牌桶中令牌数量用于限制读写操作的带宽。实现了同时满足iops和带宽的要求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种分布式存储系统中qos的实现方法的流程图;

图2是本发明实施例提供的另一种分布式存储系统中qos的实现方法的流程图;

图3是本发明实施例提供的一种分布式存储系统中qos的实现装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明公开了一种分布式存储系统中qos的实现方法,参见图1,该实施例包括以下步骤:

s101、接收到读/写操作指令后,从令牌桶中申请令牌;其中,所述令牌桶包括读写操作令牌桶和带宽令牌桶;

采用令牌桶算法实现分布式存储qos流量监管,核心原理就是通过监督进入存储网络端口的流量速率,对超出部分的流量进行惩罚,调配各客户端流量,使流量被控制在设定的范围之内。

在令牌桶算法中,令牌就是分布式存储系统中控制读写操作是否执行的标记。令牌桶是存储令牌的存储池,令牌桶中存储的令牌数量具有最大值。其中,最大值与用户自身实际需求购买的服务质量相关,因此提供给不同用户的令牌桶中存储的令牌数量不同。

本实施例中令牌桶包括读写操作令牌桶和带宽令牌桶这两种类型的令牌桶,其中,读写操作令牌桶用于限制每秒进行读写操作的次数(iops),带宽令牌桶用于限制读写操作的带宽。且令牌桶仅对iops和带宽的上限值进行限制,并不对下限值进行限制,下限值默认为0。

针对读/写操作,读操作和写操作可分别限制各自的iops上限值,即读操作对应一个读写操作令牌桶,写操作对应一个读写操作令牌桶,且两个读写操作令牌桶内存储的令牌数量并不相同;读操作和写操作可以分别限制各自的带宽,此时读操作对应一个带宽令牌桶,写操作对应一个带宽令牌桶;读操作和写操作也可以限制读写混合带宽,此时读/写操作共同对应一个带宽令牌桶。

在执行一次读操作或者写操作时,先要从令牌桶中申请令牌。只有令牌桶中当前令牌数量不为0,即令牌桶中存在令牌时,才能从令牌桶中申请到令牌;如果当前令牌桶为空,则不能从令牌桶中申请到令牌。

在本实施例中,为了实现对iops和带宽的限制,分别设置了读写操作令牌桶和带宽令牌桶,在接收到读/写操作指令后,需要分别从读写操作令牌桶和带宽令牌桶中申请令牌。其中,申请令牌的顺序是先从读写操作令牌桶中申请令牌,再从带宽令牌桶中申请令牌。

一个读/写操作指令,对应一次读/写操作,需要从读写操作令牌桶中获得一支令牌;由于一次读/写操作指令,对应的需要读取的数据或者需要写入的数据的位数不同,而数据的每一位都需要从带宽令牌桶中获得一支令牌,因此一次读/写操作指令需要从带宽令牌桶中获得的令牌数不是固定的,而是根据读/写数据的位数相关。

s102、判断从所述读写操作令牌桶和所述带宽令牌桶中是否都申请到令牌;

判断从所述读写操作令牌和所述带宽令牌桶中都申请到令牌,则执行步骤s103;

分别从读写操作令牌桶和带宽令牌桶中申请令牌后,判断从所述读写操作令牌桶和所述带宽令牌桶中是否都申请到令牌;

其中,由于针对一个读/写操作指令,需要从带宽令牌桶中获得的令牌数是不固定的,因此在判断是否从所述带宽令牌桶中申请到令牌具体是判断从所述带宽令牌桶中获得的令牌数是否与读写数据的位数相同。只有从带宽令牌桶中获得与读写数据位数相同的令牌,才能完成读写操作。

s103、执行与所述读写操作指令对应的操作。

从读写操作令牌桶中申请到允许读写操作的令牌,且从带宽令牌桶中申请到允许读写操作指令需要读写的数据的令牌后,执行与此次读写操作指令对应的读写操作。

只要没有从两个令牌桶中的任意一个令牌桶中申请到所需要数量的令牌,则此次读写操作将会被阻塞或者返回相应的错误消息。

从上述技术方案可知,本申请中在接收到读写操作指令后,从读写操作令牌桶和带宽令牌桶中分别申请令牌,每个令牌桶中存储的令牌的总数与用户自身实际需求购买的服务质量相关,只有在令牌桶中存在令牌时,才能从令牌桶中申请到令牌,并且只有从读写操作令牌和带宽令牌桶中都申请到令牌,才能执行与读写操作指令对应的操作。其中,读写操作令牌桶中令牌数量用于限制每秒进行读写操作的次数(iops),带宽令牌桶中令牌数量用于限制读写操作的带宽。实现了同时满足iops和带宽的要求。

本发明公开了另一种分布式存储系统中qos的实现方法,参见图2,该实施例包括以下步骤:

s201、接收到读/写操作指令后,判断所述令牌桶中是否存在令牌;

判断所述令牌桶中存在令牌,则执行步骤s202;

判断所述令牌桶中不存在令牌,则执行步骤s205;

s202、获取与所述读写操作指令对应的存储块的卷属性;

令牌桶中存储的令牌数量会随着时间按照一定的速率递增。即按照一定的速度向令牌桶中添加令牌。其中,向令牌桶中添加令牌的速度是由用户自身实际需求购买的服务质量决定的。在实际应用中,向读写操作令牌桶中添加令牌的速度设置为iops的上限值,向带宽令牌桶中添加令牌的速度设置为带宽的上限值。

本实施例中应用场景为分布式块存储。将向令牌桶中添加令牌的速度存储在后端存储集群中,避免了数据的丢失。

当建立存储数据块时,从分布式存储集群的配置文件中读取该向令牌桶中添加令牌的速度值,并在存储数据块的卷属性中设置读取到的速度值。

如果不能从分布式存储集群的配置文件中读取到该向令牌桶中添加令牌的速度值,则在存储数据块的卷属性中设置默认速度值。

当删除存储数据块时,将存储数据块的卷属性数据一起删除,而不需要进行额外的操作。

当用户购买的服务质量发生变化时,可以在配置文件中修改存储在后端存储集群中的向令牌桶中添加令牌的速度值。当然,也可以在建立存储数据块后,通过相应的命令修改存储数据块的卷属性,而无需重启集群,即可按照修改后的卷属性中向令牌桶中添加令牌的速度值更新令牌桶。

s203、从所述卷属性中获取向所述令牌桶中添加令牌的速度;

s204、根据所述令牌桶中添加令牌的速度,按照预设规则更新所述令牌桶;

预设规则为:

t(i+1)=t(i)+v*interval

t(i+1)=(t(i+1)>max)?max:t(i+1)

其中,t(i)表示第i次迭代时所述令牌桶中令牌的总数,interval代表第i次迭代与第i+1次迭代之间的时间差,单位为秒,max表示所述令牌桶中令牌总数的最大值,max=α*v,v表示所述令牌桶中添加令牌的速度,单位为个/秒,α为大于1的任意自然数。

v是通过从卷属性中获取到的iops的上限值和带宽的上限值。interval代表第i次迭代与第i+1次迭代之间的时间差,即令牌桶更新的时间间隔,interval可以根据实际需要进行合理的设置。本实施例中interval=1s。

由于在特定的场景下,例如很长时间没有访问某一存储数据块,在刚开始访问此数据块时,会同时产生大量的读写数据操作指令,即产生io突发洪流。因此,为了能够处理io突发洪流,需要保障每一个读写数据操作指令都能分别从读写操作令牌桶和带宽令牌桶中获取到令牌。基于此,如果读写操作令牌桶中存储的令牌总数是iops的上限值,带宽令牌桶中存储的令牌总数是带宽的上限值,那么io突发洪流中的部分读写数据操作指令将不能获取到令牌,进而不能及时处理io突发洪流。对此,设置令牌桶中令牌总数的最大值max=α*v,α为大于1的任意自然数,即令牌桶中能够存储的令牌的总数量大于v,大于iops的上限值和带宽的上限值。

又由于每隔一定时间,令牌桶就完成一次更新,而令牌桶本身能够存储的令牌总数是固定的,因此,可能出现按照向令牌桶中添加令牌的速度对令牌桶进行更新后,计算得到的令牌桶中应该存储的令牌数量大于令牌桶自身能够存储的令牌总数。对此,当出现计算得到的令牌桶中应该存储的令牌数量大于令牌桶自身能够存储的令牌总数时,设置令牌桶中存储的令牌数为令牌桶自身能够存储的令牌总数。

在本实施例中,虽然更新令牌桶的步骤在判断令牌桶中令牌的总数为0步骤的后面,但是实际上,在每次更新令牌桶时,并不需要判断令牌桶中当前存储的令牌的总数是多少。无论当前令牌桶中令牌的总是是0还是不是0,只要每隔一定的时间,就会完成一次令牌桶的更新。

s205、从所述令牌桶中获得令牌,并将获得的令牌从所述令牌桶中去除;

从令牌桶中获取令牌的操作与更新令牌桶的操作是并行处理的,两者之间并不互相影响。

针对一个读/写操作指令,从令牌桶中获得令牌后,不同类型的令牌桶中令牌数量减少的不同。对读写操作令牌桶而言,一个读/写操作指令对应一次读/写操作,每个读/写操作只获得一支令牌,因此读写操作令牌桶中令牌数量每次减少1支;对带宽令牌桶而言,一次读/写操作指令,对应的需要读取的数据或者需要写入的数据的位数不同,而数据的每一位都需要从带宽令牌桶中获得一支令牌,因此一次读/写操作指令需要从带宽令牌桶中获得的令牌数不是固定的,而是根据读/写数据的位数相关,因此带宽令牌桶中令牌数量每次减少的令牌数量与读/写数据的位数相同。

s206、判断从所述读写操作令牌桶和所述带宽令牌桶中是否都申请到令牌;

判断从所述读写操作令牌和所述带宽令牌桶中都申请到令牌,则执行步骤s207;

s207、执行与所述读写操作指令对应的操作。

本实施例中步骤s206-s207的实现方式与上一实施例中步骤s102-s103的实现方式类似,此处不再赘述。

从上述技术方案可知,本申请中将iops的上限值和带宽的上限值存储在分布式存储集群中,可以保证数据的不丢失,且将iops的上限值和带宽的上限值作为存储数据块的卷属性,在建立存储数据块后,当用户需求发生变化,即iops的上限值和带宽的上限值发生变化,可以直接通过相应命令修改卷属性,而且无需重启集群,即可按照修改后的卷属性中的iops的上限值和带宽的上限值更新令牌桶。提高了用户体验。

对应上述分布式存储系统中qos的实现方法,本发明还提供了一种分布式存储系统中qos的实现装置,所述实现装置的结构示意图请参阅图3所示,本实施例中实现装置包括:

获取单元301、判断单元302、执行单元303和更新单元304;

获取单元301,用于在接收到读/写操作指令后,从令牌桶中申请令牌;其中,所述令牌桶包括读写操作令牌桶和带宽令牌桶;

获取单元301具体包括:

判断所述令牌桶中是否存在令牌;

判断所述令牌桶中存在令牌,则从所述令牌桶中获得令牌,并将获得的令牌从所述令牌桶中去除。

判断单元302,用于判断从所述读写操作令牌桶和所述带宽令牌桶中是否都申请到令牌;

执行单元303,用于当所述判断单元判断从所述读写操作令牌和所述带宽令牌桶中都申请到令牌时,执行与所述读写操作指令对应的操作;

更新单元304,用于在判断所述令牌桶中不存在令牌时,更新所述令牌桶;

更新单元304具体包括:

获取与所述读写操作指令对应的存储块的卷属性;

从所述卷属性中获取向所述令牌桶中添加令牌的速度;

根据所述令牌桶中添加令牌的速度,按照预设规则更新所述令牌桶。

其中,所述预设规则为:

t(i+1)=t(i)+v*interval

t(i+1)=(t(i+1)>max)?max:t(i+1)

其中,t(i)表示第i次迭代时所述令牌桶中令牌的数量,interval代表第i次迭代与第i+1次迭代之间的时间差,单位为秒,max表示所述令牌桶中令牌数量的最大值,max=α*v,v表示所述令牌桶中添加令牌的速度,单位为个/秒,α为大于1的任意自然数。

获取单元301还用于从更新后的所述令牌桶中获取令牌。

从上述技术方案可知,本实施例中在接收到读写操作指令后,从读写操作令牌桶和带宽令牌桶中分别申请令牌,每个令牌桶中存储的令牌的总数与用户自身实际需求购买的服务质量相关,只有在令牌桶中存在令牌时,才能从令牌桶中申请到令牌,并且只有从读写操作令牌和带宽令牌桶中都申请到令牌,才能执行与读写操作指令对应的操作。其中,读写操作令牌桶中令牌数量用于限制每秒进行读写操作的次数(iops),带宽令牌桶中令牌数量用于限制读写操作的带宽。实现了同时满足iops和带宽的要求。同时,将iops的上限值和带宽的上限值存储在分布式存储集群中,可以保证数据的不丢失,且将iops的上限值和带宽的上限值作为存储数据块的卷属性,在建立存储数据块后,当用户需求发生变化,即iops的上限值和带宽的上限值发生变化,可以直接通过相应命令修改卷属性,而且无需重启集群,即可按照修改后的卷属性中的iops的上限值和带宽的上限值更新令牌桶。提高了用户体验。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1