一种分布式文件容量均衡的方法与装置与流程

文档序号:11654437阅读:157来源:国知局
一种分布式文件容量均衡的方法与装置与流程

本发明涉及分布式文件系统技术领域,特别是涉及一种分布式文件系统容量均衡的方法与装置。



背景技术:

分布式文件系统(distributedfilesystem,dfs)可以有效解决数据的存储和管理难题,将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。

在使用分布式文件系统,创建存储池之后,pg(数据存储的最小逻辑单元)成员会按照伪随机数据分布算法(controlledreplicationunderscalablehashing,crush),在存储资源(objectstoragedevice,osd)上进行伪随机分布。由于crush算法计算得出的pg分布并不能达到完美的均衡,使得有些osd上分布的pg数量较多,有些osd上分布的pg数量较少。pg是数据存储的最小逻辑单元,因此数据写入分布式文件系统的时候,直观的现象就是osd上的数据分布不均,可能会出现整体容量写入到80%的时候,有些pg分布较多的osd实际占用量已经达到95%,导致系统无法继续写入。

可见,如何提升分布式文件系统容量利用率,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种分布式文件系统容量均衡的方法与装置,可以实现不同osd的数据均衡分布,从而提升分布式文件系统容量利用率。

为解决上述技术问题,本发明实施例提供一种分布式文件系统容量均衡的方法,包括:

s10:利用crush算法对存储池中包括的所有osd进行pg的分配,得到pg分布;

s11:计算所述存储池中pg的目标平均数;

s12:依据所述pg分布,判断各个所述osd所对应的pg数目是否超过所述目标平均数;

s13:若超过,则依据预先存储的权重调整命令,调整所述osd的权重,并返回所述s10;

s14:若不超过,则结束调整所述osd的权重,得到满足容量均衡的pg分布。

可选的,在所述s11中:

利用公式:pg的目标平均数=(pg总数量/osd总个数)*1.05,计算出pg的目标平均数。

可选的,在所述s13中:

从所述pg数目超过所述目标平均数的osd中,查询是否存在pg数目超过最大值的osd;

若存在pg数目超过最大值的osd,则按照极限调整值,调整所述osd的权重;

若不存在pg数目超过最大值的osd,则依据预先存储的梯度值,从高到低依次查询是否存在pg数目超过目标梯度值的osd;其中,所述目标梯度值为所述梯度值中的其中一个梯度值;

若存在,则按照所述目标梯度值,调整所述osd的权重。

本发明实施例还提供了一种分布式文件系统容量均衡的装置,包括分配单元、计算单元、判断单元、调整单元、和结束单元:

所述分配单元,用于利用crush算法对存储池中包括的所有osd进行pg的分配,得到pg分布;

所述计算单元,用于计算所述存储池中pg的目标平均数;

所述判断单元,用于依据所述pg分布,判断各个所述osd所对应的pg数目是否超过所述目标平均数;

若超过,则触发所述调整单元,所述调整单元,用于依据预先存储的权重调整命令,调整所述osd的权重,并触发所述分配单元;

若不超过,则触发所述结束单元,所述结束单元,用于结束调整所述osd的权重,得到满足容量均衡的pg分布。

可选的,所述计算单元具体用于利用公式:pg的目标平均数=(pg总数量/osd总个数)*1.05,计算出pg的目标平均数。

可选的,所述调整单元包括:查询子单元和调整子单元;

所述查询子单元,用于从所述pg数目超过所述目标平均数的osd中,查询是否存在pg数目超过最大值的osd;

若存在pg数目超过最大值的osd,则触发所述调整子单元,所述调整子单元,用于按照极限调整值,调整所述osd的权重;

若不存在pg数目超过最大值的osd,则触发所述查询子单元,所述查询子单元还用于依据预先存储的梯度值,从高到低依次查询是否存在pg数目超过目标梯度值的osd;其中,所述目标梯度值为所述梯度值中的其中一个梯度值;

若存在,则触发所述调整子单元,所述调整子单元还用于按照所述目标梯度值,调整所述osd的权重。

由上述技术方案可以看出,依据crush算法对存储池中包括的所有osd进行初始化的pg分布,计算存储池中pg的目标平均数;从而依据所述pg分布,判断各个所述osd所对应的pg数目是否超过所述目标平均数;若超过,则说明此时pg分布不均衡,则可以依据预先存储的权重调整命令,调整所述osd的权重;每进行一次osd权重的调整,crush算法会依据调整后的权重,对存储池中的所有osd重新进行pg的分配,得到调整后的pg分布,依据该pg分布判断各个所述osd所对应的pg数目是否超过所述目标平均数,若不超过,则结束调整所述osd的权重,得到满足容量均衡的pg分布。可见,通过对osd权重的不断调整,来达到pg分布的均衡,从而实现容量均衡,有效的提升分布式文件系统的容量利用率。

附图说明

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

图1为本发明实施例提供的一种分布式文件系统容量均衡的方法的流程图;

图2为本发明实施例提供的一种权重调整的方法的流程图;

图3为本发明实施例提供的一种分布式文件系统容量均衡的装置的结构示意图。

具体实施方式

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

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

传统方式中,利用crush算法进行pg分布,由于crush算法采用伪随机的方式进行pg的分配,往往会出现pg分布不均衡的问题,导致分布式文件系统容量利用率较低。

为了解决pg分布不均衡的问题,可以从crush算法的机制入手。调研发现,crush算法会根据osdmap中每个osd的权重进行pg的分配,权重减小能够降低osd被选中的概率,因此,解决容量均衡问题的关键,在于合理的调整osd的权重,对于pg分布较多的osd适当的降低其权重,使该osd上的部分pg可以重新分配到其他osd上,最终实现容量均衡,从而可以有效的提升分布式文件系统容量利用率。

在本发明实施例中,实现容量均衡的目的在于提升容量的利用率,通过调整osd的权重,可以实现pg分布的均衡,当pg分布达到均衡后,相应的,容量利用率会得到有效的提升。故此,在本发明实施例中,实现容量均衡也即是实现pg分布的均衡。

在实际应用中,当pg分布较多的osd的实际占用量(利用率)达到额定数值时,会导致分布式文件系统无法继续写入数据,为了介绍方便,后续介绍中均以利用率的最高值为95%为例介绍。

接下来,详细介绍本发明实施例所提供的一种分布式文件系统容量均衡的方法。图1为本发明实施例提供的一种分布式文件系统容量均衡的方法的流程图,该方法包括:

s10:利用crush算法对存储池中包括的所有osd进行pg的分配,得到pg分布。

用于存储数据的pg可以有一个或多个,可以将这些pg称作为一个集群,创建存储池后,集群会根据crush算法进行初始化的pg分布,也即为该存储池中的每一个osd分配pg。

分配完成后,计算机系统可以通过相关的命令,将pg与osd的对应关系进行统计,获取到相应的pg分布表,如表1所示:

表1

表1中第一列和第三列表示存储池中包括的osd,为了对不同的osd进行区分,每个osd有其对应的编号,第二列的pg数目为第一列中各个osd所对应的pg数目,第四列的pg数目为第三列中各个osd所对应的pg数目。

s11:计算所述存储池中pg的目标平均数。

目标平均数可以用于表示一个osd所对应的pg数目的最大值。考虑到实际情况的可实现性,在本发明实施例中,可以将pg的目标平均数设定为pg分布平均值的105%,其计算公式如下:

pg的目标平均数=(pg总数量/osd总个数)*1.05

以osd的最高利用率为95%为例,选定平均值的1.05倍作为目标平均数,从而限定每个osd所对应的pg数目最多超过平均值的5%,从而可以保证整个存储池的平均利用率可以达到90%。

参照表1的pg分布表,可以计算出pg的目标平均数=6144/32*1.05=201.6,因为pg是整数,所以可以只取整数部分的数值作为目标平均数,即目标平均数为201,当存储池中每个osd上分布的pg数目不超过201个即可实现均衡的目标。

需要说明的是,选定平均值的x倍作为目标平均数,其中x=1.05只是一种可选的方式,也可以根据实际要求,设置x的具体取值,本发明实施例对此不做限定。

s12:依据所述pg分布,判断各个所述osd所对应的pg数目是否超过所述目标平均数。

以一个osd为例,当该osd对应的pg数目超过该目标平均值后,则说明该osd实际占用量可能会比其他未超过目标平均值的osd提前达到额定数值,从而导致系统无法继续写入数据。

在本发明实施例中,可以以目标平均数作为容量均衡的依据,通过判断各个osd所对应的pg数目是否超过目标平均数的方式,来衡量pg分布是否达到均衡。

s13:若超过,则依据预先存储的权重调整命令,调整所述osd的权重,并返回所述s10。

计算机系统可以通过相关命令查询到每个osd的权重,在初始化pg分布时,每个osd的权重值为1。由表1可知,虽然每个osd的权重值相同,但是pg分布并不是非常平均,总计6144个pg,分布在32个osd上,平均值为6144/32=192,然而根据表1实际的分布情况可知,最高的pg数目为211个,最低为161个,相差很大,pg分布并不均衡。

当存在pg数目超过目标平均数的osd时,说明pg分布并未达到均衡,需要对pg分布进行调整。

在分布式文件系统中会预先存储有相应的权重调整命令,该权重调整命令可以实现对osd权重的调整。

结合表1所示的数据,对osd进行一次权重调整后,各个osd对应的权重,如表2所示:

表2

表2中第一列和第三列表示存储池中包括的osd,为了对不同的osd进行区分,每个osd有其对应的编号,第二列的权重为第一列中各个osd所对应的权重,第四列的权重为第三列中各个osd所对应的权重。

需要说明的是,每进行一次osd权重的调整,crush算法会依据调整后的权重,对存储池中的所有osd重新进行pg的分配。

根据表2所示的权重表,重新进行pg分配的pg分布表如表3所示:

表3

表3中第一列和第三列表示存储池中包括的osd,为了对不同的osd进行区分,每个osd有其对应的编号,第二列的pg数目为第一列中各个osd所对应的pg数目,第四列的pg数目为第三列中各个osd所对应的pg数目。

结合表1、表2和表3的数据,可知,在第一次权重调整中,降低了编号为10、12、21和30的osd的权重,将这四个的osd的权重降低后,重新分配后的pg数目,由表1和表3的对比可以看出,这四个osd所对应的pg数目均有所下降。

s14:若不超过,则结束调整所述osd的权重,得到满足容量均衡的pg分布。

由于crush算法进行pg分配的结果无法提前预知,所以往往需要进行多次调整后,才能获取到满足容量均衡的pg分布,也即不存在pg数目超过目标平均数的osd。分布式文件系统依据该pg分布,便可以有效的提升容量的利用率。

结合表1所示的数据,经过多次权重调整后,pg分布最终达到均衡,其权重表如表4所示,对应的pg分布表如表5所示:

表4

表4中第一列和第三列表示存储池中包括的osd,为了对不同的osd进行区分,每个osd有其对应的编号,第二列的权重为第一列中各个osd所对应的权重,第四列的权重为第三列中各个osd所对应的权重。

依据该权重表,对osd重新进行pg分配后,得到的pg分布表如表5所示:

表5

表5中第一列和第三列表示存储池中包括的osd,为了对不同的osd进行区分,每个osd有其对应的编号,第二列的pg数目为第一列中各个osd所对应的pg数目,第四列的pg数目为第三列中各个osd所对应的pg数目。

结合上述介绍中,计算的目标平均数为201,由表5可以看出,不存在pg数目超过该目标平均数的osd,表明表5所示的pg分布表已经达到pg分布的均衡,也即已经达到容量均衡。

在本发明实施例中,以调整osd权重的方式,来实现各个osd上pg数目的均衡分布即pg分布的均衡,从而达到容量均衡。接下来,将对该调整过程展开介绍。如图2所示,该调整过程的具体实现包括:

s201:从所述pg数目超过所述目标平均数的osd中,查询是否存在pg数目超过最大值的osd。

在本发明实施例中,调整osd的权重后,集群会利用crush算法对各个osd进行pg的再次分配,由于crush算法采用伪随机方式为osd分配pg,该分配结果是预先无法获知的。如果第一次调整权重时,就将pg数目超过目标平均值的所有osd的权重降低,由于crush算法的伪随机性,权重降低的osd分配到的pg数目会相应的减少,但可能会出现为降低权重的osd分配到的pg数目增多,超过目标平均值。为了更好的实现pg分布均衡,在本发明实施例中,可以采用递进的方式,对osd的权重进行调整。对于超过目标平均数的pg数目可以从高到低依次进行比较,也即对于osd权重的调整,可以先调整pg数目较高的osd的权重。

在具体实现中,可以预先设置pg数目的最大值,先从pg数目超过最大值的osd开始进行权重的调整。

s202:若存在pg数目超过最大值的osd,则按照极限调整值,调整所述osd的权重。

权重的调整范围可以与pg数目超过目标平均值的范围呈正相关,即pg数目越高,所对应的osd的权重调整幅度可以越大。但是为了保证最终实现容量均衡,对于osd的权重值不能无限度的降低,故此,可以预先设置一个极限调整值,极限调整值可以用于表示权重调整的最大范围。也即对于osd权重的最大调整幅度不能超过该极限调整值。例如,将该极限调整值设置为0.05,一个osd的权重为1,则在一次调整中该osd的权重值最多只能降低至0.95。

相应的,对于pg数目的最大值与该极限调整值相对应,当osd所对应的pg数目超过该最大值时,则可以按照极限调整值,对该osd的权重进行一次调整。

s203:若不存在pg数目超过最大值的osd,则依据预先存储的梯度值,从高到低依次查询是否存在pg数目超过目标梯度值的osd;其中,所述目标梯度值为所述梯度值中的其中一个梯度值。

在本发明实施例中,为了更加准确快速的调整osd的权重,可以将osd所对应的pg数目进行范围的划分,每一个区间范围可以对应一个权重值。

在本发明实施例中,对于pg数目不超过目标平均值的osd,可以不对其权重进行调整。故此,对于pg数目进行范围的划分,可以是以目标平均值到最大值的范围进行划分。

例如,目标平均值为pg平均值的1.05倍,最大值为pg平均值的1.2倍,则设置的梯度值可以包括pg平均值的1.17倍、pg平均值的1.14倍、pg平均值的1.11倍、pg平均值的1.08倍。相应的,可以划分出5个梯度范围,从高到低依次为(1.17,1.20],(1.14,1.17],(1.11,1.14],(1.08,1.11],(1.05,1.08],每个梯度范围对应一个权重值,以一个梯度范围为例,梯度值1.17对应的梯度范围为(1.17,1.20]即表示pg数目处于pg平均值的1.17倍的数值和pg平均值的1.20倍的数值之间,不包含pg平均值的1.17倍的数值,包含pg平均值的1.20倍的数值。

需要说明的是,上述梯度划分的方式仅是本发明实施例一种可行的方式,也可以采用其它划分方式对osd的权重进行调整,在此不做限定。

s204:若存在pg数目超过目标梯度值的osd,按照所述目标梯度值,调整所述osd的权重。

在进行权重调整时,可以按照从高到低的范围依次进行调整,也即按照划分的梯度值,从高到低依次查看是否存在pg数目超过梯度值的osd,若存在,则按照该梯度值所属梯度范围对应的权重值,对该osd进行权重的调整。

由上述技术方案可以看出,依据crush算法对存储池中包括的所有osd进行初始化的pg分布,计算存储池中pg的目标平均数;从而依据所述pg分布,判断各个所述osd所对应的pg数目是否超过所述目标平均数;若超过,则说明此时pg分布不均衡,则可以依据预先存储的权重调整命令,调整所述osd的权重;每进行一次osd权重的调整,crush算法会依据调整后的权重,对存储池中的所有osd重新进行pg的分配,得到调整后的pg分布,依据该pg分布判断各个所述osd所对应的pg数目是否超过所述目标平均数,若不超过,则结束调整所述osd的权重,得到满足容量均衡的pg分布。可见,通过对osd权重的不断调整,来达到pg分布的均衡,从而实现容量均衡,有效的提升分布式文件系统的容量利用率。

图3为本发明实施例提供的一种分布式文件系统容量均衡的装置的结构示意图,所述装置包括:分配单元31、计算单元32、判断单元33、调整单元34和结束单元35;

所述分配单元31,用于利用crush算法对存储池中包括的所有osd进行pg的分配,得到pg分布。

所述计算单元32,用于计算所述存储池中pg的目标平均数。

所述判断单元33,用于依据所述pg分布,判断各个所述osd所对应的pg数目是否超过所述目标平均数。

若超过,则触发所述调整单元34,所述调整单元34,用于依据预先存储的权重调整命令,调整所述osd的权重,并触发所述分配单元31。

若不超过,则触发所述结束单元35,所述结束单元35,用于结束调整所述osd的权重,得到满足容量均衡的pg分布。

可选的,所述计算单元具体用于利用公式:pg的目标平均数=(pg总数量/osd总个数)*1.05,计算出pg的目标平均数。

可选的,所述调整单元包括:查询子单元和调整子单元;

所述查询子单元,用于从所述pg数目超过所述目标平均数的osd中,查询是否存在pg数目超过最大值的osd;

若存在pg数目超过最大值的osd,则触发所述调整子单元,所述调整子单元,用于按照极限调整值,调整所述osd的权重;

若不存在pg数目超过最大值的osd,则触发所述查询子单元,所述查询子单元还用于依据预先存储的梯度值,从高到低依次查询是否存在pg数目超过目标梯度值的osd;其中,所述目标梯度值为所述梯度值中的其中一个梯度值;

若存在,则触发所述调整子单元,所述调整子单元还用于按照所述目标梯度值,调整所述osd的权重。

图3所对应实施例中特征的说明可以参见图1和图2所对应实施例的相关说明,这里不再一一赘述。

以上对本发明实施例所提供的一种分布式文件系统容量均衡的方法与装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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