一种便于存储节点数量扩增的并行存储系统构造方法转让专利

申请号 : CN200710018109.8

文献号 : CN101079897B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 伍卫国张虎董小社钱德沛王恩东胡雷钧戴罗庚

申请人 : 西安交通大学浪潮(北京)电子信息产业有限公司

摘要 :

本发明公开一种便于存储节点数量扩增的并行存储系统构造方法,该方法使用按序选取的数据分布方式来构造存储系统,当增加存储节点时,只需从原有存储节点向新增存储节点移动数据,原有存储节点间不需移动数据即可保证各存储节点容量均衡和按序选取方式的一致性。这种构造方法缩短了重均衡操作的时间,便于存储节点数量的扩增。

权利要求 :

1.便于存储节点数量扩增的并行存储系统构造方法,其特征在于,对于拟存储在并行存储系统中的数据,将其进行分块并从零开始顺序编号,根据数据块的编号及当前系统的存储节点数目,通过使用按序选取的数据分布方式,可以得到数据块应该存放的存储节点编号以及数据块在该存储节点内的顺序号,所述按序选取的数据分布方式是指在一个存储节点数目为N的并行存储系统中,数据块编号到存储节点编号和节点内顺序号的映射过程,该映射过程是模拟存储节点数从1增加到N的N-1次数据均衡的过程,且每次只增加1个存储节点,增加的这个存储节点的编号设定为当前存储节点的数目减1,则一个数据块的最终存储位置为该数据块经过N-1次数据重均衡操作后被移动到的存储节点的编号及在该节点内的顺序号,所述的数据均衡的过程是指一个具有N个存储节点的并行存储系统,新增加1个存储节点后,在原有N个存储节点上,采用间隔抽取方式选择相应的数据块移动到新增存储节点上,按照数据块的编号从小到大排序生成其在新存储节点内的顺序号,保留在原N个存储节点上的数据块则重新按照编号从小到大排序生成新的顺序号,使得原存储节点内数据块顺序号连续,间隔抽取方式是指当存储节点数目为N,新增一个存储节点时,在原有每个存储节点上,每间隔N个数据块选择一个数据块,作为将被移动到新增节点上的备选数据块,间隔小于N则不进行抽取。

2.根据权利要求1所述的便于存储节点数量扩增的并行存储系统构造方法,其特征在于,所述的数据块在存储节点内的顺序号表征的是该数据块在经过数据分布后,在某个存储节点上的存储位置编号,作为该数据块在某个存储节点上相对于存储起始位置的偏移量,当并行存储系统的存储节点数为1时,数据块按照其编号在存储节点上从小到大顺序排列,此时数据块的编号与其在该存储节点内的顺序号相同。

说明书 :

一种便于存储节点数量扩增的并行存储系统构造方法

技术领域

[0001] 本发明涉及计算机应用技术领域,提供了一种便于存储节点数量扩增的并行存储系统构造方法。

背景技术

[0002] 并行存储系统常面临增加新的存储节点以满足应用对存储空间和存储带宽方面不断增长的需求。然而现有并行存储系统多以轮转的数据分布方式存储数据,数据被按照一定大小分割为数据块并从零开始顺序编号,数据块根据其编号以取模函数的计算结果来确定其所存储的节点和节点内的顺序号。这种方式下,当需要新增存储节点后,必须进行数据重均衡操作以保持存储节点间存储容量均衡,同时也保证取模函数在节点数目改变前后的一致性。然而,由于取模函数的性质,当新增存储节点后的节点数目与原有节点数目互质时,几乎需要移动系统内所有的数据块,而且大多数数据块是在原有存储节点之间移动,这种移动对于新系统内节点间的容量均衡来说是无效的移动。这种无效的移动是为了保证取模函数的一致性,但是对于拥有大数据量的并行存储系统来说,重均衡操作则会因为移动大量数据而耗用大量的CPU处理能力和带宽,而且会造成较长时间的系统服务停顿。
[0003] 针对这种情况,一些并行存储系统要求新增存储节点数目为原有节点数目的倍数关系,这样可以消除无效的数据块移动,但是对于较大型的并行存储系统,由于存储节点数目本身较大,以倍数方式增加新节点,会导致系统扩展的成本巨大,同时也丧失了系统扩展的灵活性,不能十分契合用户的需求。
[0004] 在其他领域,某些研究针对数据/对象分布方式进行研究,如web cache中应用Consistent Hashing可以实现节点数据量变化时的零无效移动率,但其实现方式是基于不可控的哈希函数,存储节点间只能做到概率上的容量均衡,且其数据并行度很低。
[0005] 因此,在并行存储系统中,寻找新型的数据分布方式时,新方式应该兼顾零无效数据块移动、存储节点间存储容量均衡、并行度高的目标,使得系统更便于节点扩增,减少服务停顿,从而提高系统的可用性。

发明内容

[0006] 本发明的目的在于克服上述现有技术不足,提供一种便于存储节点数量扩增的并行存储系统构造方法,该方法缩短了重均衡操作的时间,提高了重均衡的效率,从而提高了系统的可用性。
[0007] 本发明的技术方案是这样实现的:便于存储节点数量扩增的并行存储系统构造方法,对于拟存储在并行存储系统中的数据,将其进行分块并从零开始顺序编号,根据数据块的编号及当前系统的存储节点数目,通过使用按序选取的数据分布方式,可以得到数据块应该存放的存储节点编号以及数据块在该存储节点内的顺序号。
[0008] 所述的并行存储系统是由多个存储节点组成,存储节点从零开始顺序编号并通过网络互连,数据分块存储在多个存储节点之上。
[0009] 所述按序选取的数据分布方式是指在一个存储节点数目为N的并行存储系统中,数据块编号到存储节点编号和节点内顺序号的映射过程,该映射过程是模拟存储节点数从1增加到N的N-1次数据均衡的过程,且每次只增加1个存储节点,增加的这个存储节点的编号设定为当前存储节点的数目减1,则一个数据块的最终存储位置为该数据块经过N-1次数据重均衡操作后被移动到的存储节点的编号及在该节点内的顺序号。
[0010] 所述的数据块在存储节点内的顺序号表征的是该数据块在经过数据分布后,在某个存储节点上的存储位置编号,作为该数据块在某个存储节点上相对于存储起始位置的偏移量,当并行存储系统的存储节点数为1时,数据块按照其编号在存储节点上从小到大顺序排列,此时数据块的编号与其在该存储节点内的顺序号相同。
[0011] 所述的数据重均衡过程是指一个具有N个存储节点的并行存储系统,新增加1个存储节点后,在原有N个存储节点上,采用间隔抽取方式选择相应的数据块移动到新增存储节点上,按照数据块的编号从小到大排序生成其在新存储节点内的顺序号,保留在原N个存储节点上的数据块则重新按照编号从小到大排序生成新的顺序号,使得原存储节点内数据块顺序号连续。
[0012] 间隔抽取方式是指当存储节点数目为N,新增一个存储节点时,在原有每个存储节点上,每间隔N个数据块选择一个数据块,作为将被移动到新增节点上的备选数据块,间隔小于N则不进行抽取。
[0013] 本发明在采用按序选取的数据分布方式构造并行存储系统时,当系统增加存储节点时,在存储节点间的数据块移动量能够达到最小,所以与采用其他的数据分布方式构造的并行存储系统相比,缩短了重均衡操作的时间,减少了系统资源消耗。并行存储系统采用按序选取的数据分布方式,在系统增加新的存储节点时,可在最少的时间内完成数据重均衡操作,并保证数据访问的并行度,可以有效减少并行存储系统服务停顿时间,增强其可用性。

附图说明

[0014] 图1所示是本发明应用按序选取方式的并行存储系统图;
[0015] 图1(a)是在当某数据分布的存储节点数为1,新增一个存储节点时的数据块移动情况图;
[0016] 图1(b)是在某数据分布的存储节点数为2,新增一个存储节点时的数据块移动情况图;
[0017] 图1(c)是在某数据分布的存储节点数为4,新增一个存储节点时的数据块移动情况图;
[0018] 图2所示是本发明应用按序选取方式的并行存储系统中某数据分布的存储节点数为3,新增两个存储节点时的数据块移动情况图。

具体实施方式

[0019] 首先,便于存储节点扩增的并行存储系统构造方法采用按序选取数据分布方式。在增加存储节点时,需要进行重均衡操作,若能保证每增加一个存储节点时的零无效移动率,就可以实现增加任意数目存储节点时的零无效移动率。按序选取的数据分布方式就是按照这种思路设计的:一个采用按序选取方式的并行存储系统,存储节点从零开始编号,某数据分割为多个数据块,数据块从零开始编号,存储在N个存储节点上,那么一次数据块编号到存储节点号的映射过程可以看作是存储节点数目从1开始,每次增加一个存储节点的N-1次数据重均衡过程,而每次数据重均衡操作都保证只从每个原有节点的数据块中按照规则抽取一定比例的数据块移动到新增存储节点上,并保证不在原有存储节点间移动数据块。
[0020] 这里采用的抽取规则是将每个原有存储节点的数据块顺序编号,根据存储节点数目设定一个抽取间隔,依照当前的抽取间隔抽取数据块移动到新增存储节点上,按照数据块的编号从小到大排序生成其在新存储节点内的顺序号,保留在原N个存储节点上的数据块则重新按照编号计算顺序号,使得原存储节点内数据块顺序号连续。抽取间隔通常为新增存储节点后的存储节点数减一,这样可以保证数据在新增节点后每个存储节点的数据块数大致相等,若间隔小于N则不进行抽取。因此,一个数据块编号到存储节点编号和节点内顺序号的映射过程其实就是该数据块在N-1次重均衡操作后最终所在存储节点位置的计算过程。
[0021] 数据块的分布方式是周期性的,若当前数据分布的存储节点数目为N,则该周期为1到N的所有整数的最小公倍数,记为M。在每个周期内,所有存储节点上的数据块数目是相等的。也就是说,若编号连续的数据块数目为M的倍数,那么分布在每个存储节点上的数据块数量就是相等的,这就可以满足数据在其分布的所有存储节点间存储容量均衡的目标。同时,按序选取方式在存储节点增加时,只是将一些数据块移动到新的存储节点,而在原有存储节点间没有数据移动,因此,这种方式还满足零无效数据块移动的目标。
[0022] 在按序选取方式下,若给定一个数据块的编号,要得到它的存储节点号和存储节点内的顺序号,就需要模拟一次系统从1个存储节点增加到N个存储节点的数据重均衡过程,每次只能增加一个存储节点。计算并记录该数据块每经过一次重均衡操作后的新节点号(如果发生移动)和新顺序号,从而得到该数据块在存储节点数为N时的存储节点编号和节点内顺序号。这个操作流程可以用伪代码表示如下:
[0023] 输入:系统内存储节点数目N,数据块编号s。
[0024] 输出:所在存储节点编号Node,在该存储节点顺序号Seq,Node和Seq从0编号。
[0025] BEGIN
[0026] Node=0;
[0027] Seq=s;
[0028] FOR I=1TO(N-1)
[0029] BEGIN
[0030] IF(Seq+1)MOD(I+1)==0THEN /*移动到新增存储节点*/
[0031] Seq=I*((Seq+1)/(I+1)-1)+Node;
[0032] Node=I;
[0033] ELSE /*保留在原有存储节点*/
[0034] Seq=Seq-(Seq+1)/(I+1);
[0035] ENDIF
[0036] END
[0037] END
[0038] 流程中“MOD”表示取模操作,“/”为整除操作。可以看出,流程中的每次循环,模拟了一次数据重均衡操作,循环中的语句根据是否移动该数据块计算新的节点号和新的顺序号,最终循环退出时的Node表示最终该数据块所在的存储节点编号,Seq表示该数据块的当前顺序号。
[0039] 在一个抽取间隔内如何选择被移动的数据块,可以在小范围内调整和优化按序选取方式的并行度。本数据分布方式未确定一个抽取间隔内的数据块选择策略,以任何规则方式在抽取间隔中选取数据块的方式均可被应用。
[0040] 参照图1所示,这三个图分别为当存储系统中的某数据分布的存储节点数目从(a).1个存储节点增加到2个存储节点,(b).2个存储节点增加到3个存储节点,(c).4个存储节点增加到5个存储节点时数据重均衡操作的示意图。从图1(a)中可以看出,在只有一个存储节点时,所有逻辑数据块按照逻辑顺序存储,增加一个存储节点,抽取间隔为1,则在Node 0的数据块中,每2个数据块抽取一个移动到新增存储节点上Node 1,图中虚线框表示的数据块是将被移动到新增存储节点的数据块。在图1(b)中,抽取间隔设置为2,那么在原有的node0和nodel的数据块中,按顺序每隔2个数据块取一个移动到新增节点Node2,移动到Node 2的数据块按照其原所在节点号排序,那么在各自原所在存储节点上顺序号为2的数据块4和5,移动到node 2后,其新顺序号分别为0,1,而第二个间隔抽取的数据块10和11则在node 2上的新编号为2和3。在图1(c)所示的情况中,存储节点数量从
4增加到5,那么取抽取间隔为4以完成重均衡操作。这种采用新增存储节点后的节点数目作为抽取间隔的方式,可以保证重均衡操作后各节点的数据块数量大致相等。
[0041] 参照图2所示,当前数据数据分布在3个存储节点,然后增加2个存储节点后,从原3个存储节点中移动一些特定数据块到新增2个存储节点上的情况。通过这次移动,这5个存储节点上的数据得到了一种均衡。
[0042] 当应用按序选取方式时,并行存储系统实现一个数据块映射函数,该函数的具体流程为上述伪代码所示。客户端在访问任意逻辑数据块时,将其编号和当前存储节点数目作为该映射函数的输入,函数输出为存储节点编号和节点内序号,客户端则可直接将数据访问发送到对应节点,并要求访问节点内序号所指的数据块,以此完成数据的访问。
[0043] 采用按序选取的数据分布方式时,并行存储系统新增多个存储节点后的数据重均衡操作的基本流程为:若原系统有N个存储节点,增加节点后为M个存储节点,数据分布方式的映射函数为H,那么给定需要均衡的一段数据,将其分块,从其起始数据块开始直到结束数据块,针对每个数据块标号I,判断H(N,I)是否等于H(M,I),如果相等,则不做任何处理;如果不等,将该数据块从原存储节点取出,移动到H(M,I)所指定的节点上并写入新顺序号所指定的位置。根据零无效移动率的定义,该节点必定是新增的节点中的某个存储节点。最后从原有节点上删除该数据块,并调整原有节点上的数据块顺序号。附图2所示是一个拥有3个存储节点的并行存储系统,新增两个存储节点时的数据块移动方式。此时,N为3,M为5。可以看出H(3,2)=H(5,2),所以数据块2留在node0中,而H(3,8)=0,H(5,8)=3,因此数据块8被移动到node3。
[0044] 本发明的方法可广泛应用于大型存储系统的构造中;也可应用于大多数的现存并行存储系统中,在具体应用时,只需要对原有系统的与数据分布相关的部分进行修改即可。