一种带宽流量监管方法及系统与流程

文档序号:13168858阅读:349来源:国知局
一种带宽流量监管方法及系统与流程

本发明涉及分布式存储领域,特别涉及一种带宽流量监管方法及系统。



背景技术:

分布式存储系统中性能是一个关键性的指标,而性能跟cpu、网络等紧密相关。对于存储系统来说,每一款存储产品的推出,也都是围绕着如何提升系统iops、带宽等性能指标,如何能增加存储系统的稳定性,以更好、更快地服务前端服务器的io请求。在实际应用中,存在一种限定性能的用户需求,也称为配额。具体就是针对不同用户或者不同数据流采用不同的优先级,或者是根据应用程序的要求,保证数据流的性能达到一定的水准。配额对于性能有限的分布式存储系统来说是十分重要的,特别在流多媒体应用场景中,例如voip和iptv等,因为这些应用常常需要存储系统提供固定的流量。

块存储一般是指由控制器以及一组磁盘驱动器组成一个独立磁盘冗余阵列,并对外提供固定大小的raid块作为lun(逻辑单元号)的卷。

目前在分布式块存储领域中已存在带宽控制方案,然而出现的问题就是控制不精确,性能抖动较大,因此,如何解决这些问题,是当前需要克服的难题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种带宽流量监管方法及系统,使得性能稳定,抖动较低,带宽控制的精确度更高,具备良好的故障隔离性。其具体方案如下:

一种带宽流量监管方法,应用于分布式存储系统的每个卷中,包括:

接收目标io数据,将所述目标io数据切分为小于等于预设大小的io数据块,得到io数据块集;

判断令牌桶中的令牌数是否大于等于目标io数据块的大小,其中,所述目标io数据块为所述io数据块集中的一个io数据块;

如果是,则下发所述目标io数据块,并清除所述令牌桶中与所述目标io数据块的大小相应的令牌数;

如果否,则阻塞所述目标io数据块,等待令牌桶重新生成令牌。

可选的,带宽限定值为卷属性,存储在后端存储集群中。

可选的,所述令牌桶重新生成令牌的过程,包括:

每间隔预设时间生成预设数量的令牌,直到达到所述令牌桶的存储上限。

可选的,所述判断令牌桶中的令牌数是否大于等于目标io数据块的大小的过程,包括:

每间隔所述预设时间判断令牌桶中的令牌数是否大于等于目标io数据块的大小。

可选的,还包括:在预设条件下,临时提高所述令牌桶的存储上限和缩短所述预设时间。

可选的,所述接收目标io数据后,还包括:

判断所述目标io数据是否小于所述预设大小;

如果是,则所述令牌桶的存储上限大于所述目标io数据预设倍数。

本发明还公开了一种带宽流量监管系统,应用于分布式存储系统的每个卷中,包括:

切分模块,接收目标io数据,将所述目标io数据切分为小于等于预设大小的io数据块,得到io数据块集;

判断模块,用于判断令牌桶中的令牌数是否大于等于目标io数据块的大小,其中,所述目标io数据块为所述io数据块集中的一个io数据块;

下发模块,用于如果是,则下发所述目标io数据块,并清除所述令牌桶中与所述目标io数据块的大小相应的令牌数;

阻塞模块,用于如果否,则阻塞所述目标io数据块,等待令牌桶重新生成令牌。

可选的,所述阻塞模块,包括:

令牌生成单元,用于每间隔预设时间生成预设数量的令牌,直到达到所述令牌桶的存储上限。

可选的,所述判断模块,具体用于每间隔所述预设时间判断令牌桶中的令牌数是否大于等于目标io数据块的大小。

可选的,还包括:

临时上限调整模块,用于在预设条件下,临时提高所述令牌桶的存储上限和缩短所述预设时间。

本发明中,带宽流量监管方法,应用于分布式存储系统的每个卷中,包括:接收目标io数据,将目标io数据切分为小于等于预设大小的io数据块,得到io数据块集;判断令牌桶中的令牌数是否大于等于目标io数据块的大小,其中,目标io数据块为io数据块集中的一个io数据块;如果是,则下发目标io数据块,并清除令牌桶中与目标io数据块的大小相应的令牌数;如果否,则阻塞目标io数据块,等待令牌桶重新生成令牌。本发明通过建立令牌桶,利用令牌桶中的令牌数,来控制io数据的下发速度,且令牌桶特有的令牌生成方式,使得性能稳定,抖动较低,并且利用令牌与目标io数据块的大小一对一的特性,使得带宽控制的精确度更高,且应用于分布式存储系统的每个卷中,一个卷中出现错误,不会影响分布式存储系统中其他卷的带宽控制。

附图说明

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

图1为本发明实施例公开的一种带宽流量监管方法流程示意图;

图2为本发明实施例公开的一种带宽流量监管系统结构示意图。

具体实施方式

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

本发明实施例公开了一种带宽流量监管方法,参见图1所示,应用于分布式存储系统的每个卷中,该方法包括:

步骤s11:接收目标io数据,将目标io数据切分为小于等于预设大小的io数据块,得到io数据块集。

具体的,由于用户在读写操作时,可能会产生数据大小超过令牌桶的存储上限的大io数据,而一旦产生此种数据,令牌桶无法产生满足大io数据的令牌数,则会造成该大io数据的永久阻塞,为此,在接收目标io数据后,将目标io数据切分为小于等于预设大小的io数据块,得到io数据块集。

其中,io数据块的预设大小可以根据用户实际应用需求进行设定,,目标io数据将被切分为数个大小为预设大小的io数据块,从而形成一个与目标io数据对应的io数据块集,如果目标io数据无法按照预设大小均分,则剩余的小于预设大小的io数据部分仍将作为一个单独的数据块被切分出来,例如,用户预先设定的切割大小为4mb,目标io数据大小为30mb,则目标io数据将被分为包括7个4mb的io数据块和一个2mb的io数据块的io数据块集。

可以理解的是,令牌桶的存储上限,应大于io数据块,通常大于切分过程中的预设大小。

步骤s12:判断令牌桶中的令牌数是否大于等于目标io数据块的大小,其中,目标io数据块为io数据块集中的一个io数据块。

具体的,再对每个io数据块进行下发前,需要判断令牌桶中的令牌数是否大于等于目标io数据块的大小,以此来实现控制io数据的下发速度,实现对带宽上限的控制。

其中,目标io数据块,即,下发队列中当前进行判断的io数据块。

步骤s13:如果是,则下发目标io数据块,并清除令牌桶中与目标io数据块的大小相应的令牌数。

具体的,如果令牌桶中的令牌数大于等于目标io数据块的大小,则下发目标io数据块,并清除令牌桶中与目标io数据块的大小相应的令牌数,例如,目标io数据块大小为4mb,此时令牌桶中包括5mb个令牌,因此令牌桶中的令牌数大于目标io数据块的大小,则下发目标io数据块,并清除令牌桶中4mb个令牌,此时,令牌桶中仅剩1mb个令牌。

步骤s14:如果否,则阻塞目标io数据块,等待令牌桶重新生成令牌。

具体的,如果令牌桶中的令牌数小于目标io数据块的大小,则阻塞目标io数据块,等待令牌桶重新生成令牌,例如,令牌桶中仅剩1mb个令牌,而目标io数据块大小为4mb,令牌桶中的令牌数小于目标io数据块的大小,则不对目标数据块进行下发操作,暂时阻塞目标io数据块的下发,从而实现控制io数据的下发速度,实现对带宽上限的控制,在此期间,则等待令牌桶重新生成令牌。

可以理解的是,待令牌桶中重新生成出大于等于目标io数据块的大小的令牌数,目标io数据块则将被再次下发,即,在执行完步骤s14后,将再次执行步骤s12,直到目标io数据块完成下发。

需要说明的是,本发明实施例中的带宽流量监管方法应用于分布式存储系统的每个卷中,每个卷中包括一个带宽流量监控模块,卷只有被使用监控模块才会生效,每个卷的带宽流量监控模块相互独立,从而使得各模块相互不影响,单个带宽流量监控模块出现功能异常,不会将错误传播给其他卷,具备良好的故障隔离性。

可见,本发明实施例通过建立令牌桶,利用令牌桶中的令牌数,来控制io数据的下发速度,且令牌桶特有的令牌生成方式,使得性能稳定,抖动较低,并且利用令牌与目标io数据块的大小一对一的特性,使得带宽控制的精确度更高,且应用于分布式存储系统的每个卷中,一个卷中出现错误,不会影响分布式存储系统中其他卷的带宽控制。

需要说明的是,判断令牌桶中的令牌数是否大于等于目标io数据块的大小的过程是io数据块依序进行的,每当判断完一个io数据块后才会判断下一个io数据块,直到判断完整个io数据。

本发明实施例公开了一种具体的带宽流量监管方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

本发明实施例中,上一实施例中令牌桶重新生成令牌的过程,可以具体包括:每间隔预设时间生成预设数量的令牌,直到达到令牌桶的存储上限,其中,预设时间和预设数量均可由用户根据实际应用需求进行设定,例如,预设时间为1秒,预设数量为2mb个,则每间隔1秒,令牌桶中生成2mb个令牌,如果令牌桶中还剩余1mb个令牌,需要下发4mb大小的io数据块,则该数据块需要等待2秒,直到令牌桶中包括5mb个令牌。

由于令牌桶中的令牌生成需要间隔预设时间,因此,当令牌桶中的令牌数小于目标io数据块的大小,目标io数据块处于阻塞状态时,需要重复判断令牌桶中当前的令牌数是否大于等于目标io数据块的大小,如果实时判断,则浪费性能,因此,可以设定每间隔预设时间判断令牌桶中的令牌数是否大于等于目标io数据块的大小;通过设置于令牌桶中的令牌生成所需的相同的预设时间,可以保证令牌桶中一旦生成出足够的令牌数,就可以立刻执行判断,保证目标io数据块的及时下发,例如,令牌桶每间隔1秒生成一次令牌,则可以每间隔1秒判断令牌桶中当前的令牌数是否大于等于目标io数据块的大小;当然,也可以设置不同于令牌桶中的令牌生成需要的预设时间,例如,令牌桶每间隔1秒生成一次令牌,可以每间隔2秒判断一次,或每间隔0.5秒判断一次。

在实际应用中,可能会出现突发的io洪流,为此,可以临时提高令牌桶的存储上限和缩短令牌生成的预设时间,以保证能够快速的下发io数据。在预设条件下,临时提高令牌桶的存储上限和缩短预设时间;预设条件可以由用户设置在某一个时间间隔内提高令牌桶存储上限和缩短令牌生成的预设时间,例如,在用户初次启动客户端期间,如,用户在启动客户端5分钟内,可以利用业务层的存储端接口函数修改预设时间和令牌桶存储上限,临时提高令牌桶的存储上限和缩短预设时间,如提高至正常状态下令牌桶上限的两倍,预设时间缩短为正常状态的二分之一,例如,令牌桶正常上限为40mb,正常预设时间为1秒,用户在启动客户端5分钟内,将令牌桶的存储上限提高至80mb,预设时间缩短至0.5秒,因此,令牌桶可以快速的在5分钟之内下发大量的io数据。

可以理解的是,在预设条件结束后,可以利用接口函数恢复正常状态。

其中,用户在启动客户端前令牌桶中的令牌一般都是存储满的,因此,提高令牌桶的上限,便可使令牌桶在一定时间内快速的下发更多的io数据。

在实际应用中,如果用户下发io数据都小于切分数据时的预设大小,而令牌桶的存储上限仍大于等于预设大小时,可能会引发一定的抖动,因此,在io数据小于预设大小时,调整令牌桶的上限,具体的,在接收目标io数据后,判断所述目标io数据是否小于所述预设大小;如果是,则所述令牌桶的存储上限大于所述目标io数据预设倍数,例如:预设大小为4m,io数据均小于128k,可以设置令牌桶的存储上限为128k的2倍256k。

当然,如果否,则令牌桶的存储上限仍需大于等于预设大小。

其中,带宽令牌桶更新令牌的策略如下所示:

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

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

max=((α*v>seg)?(α*v):seg)

其中,seg为固定分块大小,t(i)代表第i次io操作时带宽令牌桶中的令牌数量,v是预设数量,表示每间隔预设时间向带宽令牌桶中添加v支令牌,interval代表当前时间与上一次迭代之间的时间差,第一次迭代时,该数值为1,max代表带宽令牌桶中令牌的最大的数量,α存储上限系数。

本发明实施例中,带宽限定值为卷属性,存储在后端存储集群中,这样可以保证限定值不丢失。

相应的,本发明实施例中还公开了一种带宽流量监管系统,参见图2所示,应用于分布式存储系统的每个卷中,该系统包括:

切分模块11,接收目标io数据,将目标io数据切分为小于等于预设大小的io数据块,得到io数据块集;

判断模块12,用于判断令牌桶中的令牌数是否大于等于目标io数据块的大小,其中,目标io数据块为io数据块集中的一个io数据块;

下发模块13,用于如果是,则下发目标io数据块,并清除令牌桶中与目标io数据块的大小相应的令牌数;

阻塞模块14,用于如果否,则阻塞目标io数据块,等待令牌桶重新生成令牌。

可见,本发明实施例通过建立令牌桶,利用令牌桶中的令牌数,来控制io数据的下发速度,且令牌桶特有的令牌生成方式,使得性能稳定,抖动较低,并且利用令牌与目标io数据块的大小一对一的特性,使得带宽控制的精确度更高,且应用于分布式存储系统的每个卷中,一个卷中出现错误,不会影响分布式存储系统中其他卷的带宽控制。

本发明实施例中,上述阻塞模块14,包括令牌生成单元;其中,

令牌生成单元,用于每间隔预设时间生成预设数量的令牌,直到达到令牌桶的存储上限。

上述判断模块12,具体用于每间隔预设时间判断令牌桶中的令牌数是否大于等于目标io数据块的大小。

本发明实施例中,还可以包括:

临时上限调整模块,用于在预设条件下,临时提高令牌桶的存储上限和缩短预设时间。

数据大小判断模块,用于判断所述目标io数据是否小于所述预设大小;

存储上限调整模块,用于如果是,则所述令牌桶的存储上限大于所述目标io数据预设倍数。

其中,带宽限定值为卷属性,存储在后端存储集群中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本发明所提供的一种带宽流量监管方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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