一种基于存储熵的存储负载均衡方法与流程

文档序号:12135450阅读:530来源:国知局

本发明涉及一种基于存储熵的存储负载均衡方法。



背景技术:

人类历史上从未有哪个时代像今天一样以如此快的速度产生如此多的数据,面对海量数据的存储和计算需求,通常采用分布式模型,这种模型可以通过横向扩展的方式,将待处理的数据存储到不同的节点上,其典型代表是Apache开源的Hadoop。

随着海量数据的不断增长,分布式存储系统往往通过横向扩展的方式,不断增加新节点,使其规模越来越大;同时,为了节省成本,整个集群中的存储节点大多采用可靠性较低的设备,这必然导致节点故障越来越频繁。这也给整个分布式存储集群带来了存储和计算资源的不确定性,这种情况给资源分配和任务调度带来了极大的挑战。因此如何解决分布式存储系统中资源均衡分布的问题,是当前分布式系统中的研究热点。一个好的负载均衡方案可以充分利用系统中的资源,避免出现性能瓶颈和资源的浪费,有效提高整个分布式存储系统的整体性能。

在分布式存储系统中,一般都是以磁盘空间利用率来判断各存储节点的负载均衡程度,当所有节点的磁盘空间利用率相等时,是整个分布式存储系统的存储负载均衡点。但是在实际的应用场景中,磁盘IO速率比较低的存储节点和可靠性比较低的存储节点往往成为影响整个存储系统数据读写性能的瓶颈,因此在异构分布式存储系统中,特别是各存储节点磁盘IO速率和可靠性差异较大的分布式存储系统中,如果仅仅以磁盘空间利用率作为存储负载均衡的判定条件,则其数据的读写效率必然受到限制。



技术实现要素:

为了克服现有技术的上述缺点,本发明提供了一种基于存储熵的存储负载均衡方法。

本发明解决其技术问题所采用的技术方案是:一种基于存储熵的存储负载均衡方法,包括如下步骤:

步骤一、计算分布式存储系统的存储熵值H;

步骤二、判断存储熵值H是否大于均衡阈值:如是,则判定系统存储负载为均衡;如否,则判断单节点的存储负载均衡程度,并按照均衡程度构建超载节点有序队列和空载节点有序队列,然后执行存储负载迁移操作。

与现有技术相比,本发明的积极效果是:

本发明的基于存储熵的负载均衡方法按照系统存储负载判定、单节点存储负载判定和存储负载迁移三个步骤调整分布式存储系统中各个存储节点间存储的数据量,以达到均衡存储负载的目的。这种追求全局均衡的机制可以有效控制各节点间的资源均衡程度,能够最大化的提高整个分布式存储系统的数据读写效率。

在异构分布式存储系统中,特别是在各存储节点磁盘IO速率和可靠性差异较大(这是常态)的分布式存储系统中,基于存储熵的负载均衡方法与基于磁盘空间利用率的方法相比,在有效控制系统负载失衡的情况下,具有更好的数据读写效率。如果根据磁盘IO速率和可靠性,适当的调整新节点的磁盘容量,这样既可以保证整个分布式存储系统的读写效率,也能够充分利用磁盘空间资源。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1为本发明的数据迁移流程图。

具体实施方式

1、名词约定

(1)数据总量DN:系统中所有节点存储的数据量累加数。设分布式系统中有n个节点,第i个节点的存储数据量为DNi,则该系统中的存储数据总量为:

(2)磁盘IO速率DR:磁盘平均读写速率。第i个节点中磁盘的读写速率为DRi,则磁盘平均读写速率为:

(3)节点可靠性Ri:第i个节点中磁盘能够正常运行的概率。

磁盘属于电子设备,其失效率符合“浴盆曲线”,考虑到磁盘的早期失效期比较短,为了简化计算,将其与恒定失效期合并,并通过公式3的方法近似计算。其中,Tlife表示磁盘寿命(一般为3万小时);Ti表示磁盘已经使用时间。

(4)节点读写时间DTi:第i个节点中磁盘可靠的情况下读写数据所需要的时间

(5)基于读写效率的节点负载率Li:第i个节点的数据读写时间在整个集群中的比重:

其中,DTmax表示节点不可靠情况下,读写数据所需要的时间。

2、存储熵定义

定义1:在分布式集群系统中,如果系统中有n个存储节点,则分布式系统的存储熵H定义为:

存储熵是熵理论在分布式存储系统中资源均衡领域的一种延展,其具有熵的一切性质,根据熵增原理和最大熵原理可以证明:存储熵的熵值总是从最不均衡状态的最小值H0,逐渐增加,直到完全均衡状态的最大值Hmax。通过计算存储熵的熵值,可以简单高效的度量分布式存储系统整体资源负载的均衡程度。

定理1:当时,存储熵H取得最大值,且Hmax=log2n

证明:由公式4可知:

问题转变成求H的条件极值,因此构造拉格朗日函数:

分别对Li(i=1,2,…,n)求偏导,可以得到:

根据公式8可以获得拉格朗日函数的驻点L1=L2=……=Ln,并将其代入公式6,可以得到此时H取得最大值。根据公式5可以计算出Hmax=log2n

证毕。

根据定义1和定理1可知,0=<H<=Hmax,因此可以通过存储熵H的大小来判断分布式存储系统中存储资源的均衡程度:当系统中的存储负载完全均衡时,存储熵的熵值最大;当存储负载不均衡时,存储熵的熵值会逐渐变小,甚至等于0。

3、基于存储熵的负载均衡方法

根据存储熵的定义,要计算其熵值H,需要求出所有节点负载率Li,而当节点已知的情况下,需要求出该节点的数据读写时间DTi和DTmax以及节点可靠性Ri。其中,DTi可以通过采集节点存储的数据量DNi和磁盘IO速率DRi来计算;DTmax可以通过人工设定的方式,比如令DTmax=3DTi或其他固定值;Ri可以根据磁盘已使用时间和磁盘的使用寿命来计算。因此,在存储熵的计算公式中,需要采集的数据包括每个节点存储的数据量DNi和磁盘的已使用时间Ti,其他数据都可以通过设备参数(如DRi和Tlife)或人工设定(如DTmax)来确定。

本文提出的基于存储熵的负载均衡方法就是根据存储熵的熵值,判断分布式存储系统中存储负载的均衡程度,当该熵值小于一定的阈值,则进行负载迁移。该方法包括三个组成部分:判断系统存储负载均衡程度,判断单节点存储负载均衡程度,执行存储负载迁移操作。

(1)系统存储负载判定

系统存储负载是否均衡的判定是本方法的关键环节,如果系统存储负载判定是均衡的,则无需进行后续的单点存储负载判定和存储负载迁移工作。由于执行一次存储负载迁移需要占用一定的计算资源和存储资源,并且系统开销比较大,为了避免频繁的进行存储负载迁移操作,所以方法中设置一个均衡阈值,只有当存储熵熵值H小于该阈值时,表明整个分布式存储系统中存储负载不均衡情况达到了相对严重的程度,需要进行存储负载迁移。

系统存储负载情况判定的过程包括:

①设定均衡因子α(0<α<1),可以据此得到均衡阈值Hα=αHmax

②收集每个节点存储的数据量DNi和磁盘已经使用时间Ti,并根据公式3-5计算出每个存储节点的存储负载率Li

③根据公式6计算出整个分布式存储系统的实际存储熵值H。

④判定系统存储负载是否均衡。如果H>=Hα,说明整个系统的存储负载均衡程度在可以忍受的范围内,不做调整;如果H<Hα,说明整个系统的存储负载需要进行存储迁移。

(2)单节点存储负载判定

如果整个分布式存储系统中存储资源的负载均衡情况不理想,需要进行存储负载迁移操作,那就需要计算出哪些存储节点是超负载,哪些存储节点是空负载,并按照其存储负载程度构建超载节点有序队列和空载节点有序队列。

单节点存储负载判定的过程包括:

①计算每个节点的存储负载率Li

②计算系统平均负载Lavg

③创建超载节点有序队列和空载节点有序队列。如果Li>Lavg,说明该存储节点超载,就将该存储节点按大根堆序插入到超载节点队列中;如果Li<Lavg,说明该存储节点空载,就将该存储节点按小根堆序插入到空载节点队列中。

(3)存储负载迁移

存储负载迁移的目的是将负载较多的存储节点上的数据迁移到负载较少的存储节点上,使得整个分布式存储系统整体达到存储资源的负载均衡。

存储负载迁移的具体过程包括:

①计算每一个超载存储节点需要迁移出的数据量:

②计算每一个空载节点需要迁移进的数据量:

③根据存储节点需要迁移的数据量,按序循环迁移数据,具体方法如图1所示:

1)如果超载队列不为空,则取超载队列根元素i,计算需要迁移出的数据量ΔNi,取空载队列根元素j,计算需要迁移进的数据量ΔNj

2)判断ΔNi是否大于ΔNj

如是,则将节点i上的ΔNj数据量迁移到节点j上,并令ΔNi=ΔNi-ΔNj,再将节点i重新插入到大根堆超载节点队列,对大根堆超载节点队列进行更新;如否,则将节点i上的ΔNi数据量迁移到节点j上,并令ΔNj=ΔNj-ΔNi,再将节点j重新插入到小根堆空载节点队列,对小根堆空载节点队列进行更新。

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