一种局部部分重复循环码的分组构造方法与流程

文档序号:15850628发布日期:2018-11-07 09:49阅读:237来源:国知局
一种局部部分重复循环码的分组构造方法与流程

本发明属于计算机领域,涉及一种局部部分重复循环码的分组构造方法。

背景技术

信息数据的海量化使得分布式存储系统规模变大,为了确保数据的可用性,存储系统通常采用“复制”生成冗余数据,然而“复制”的冗余策略产生的存储代价过高,需要存储大量副本数据确保系统的高可靠性;为了确保数据的可靠性,通常采用“纠删码”策略,与复制策略相比,纠删码可以使分布式存储系统的存储开销达到最优,但是在修复单个故障节点过程中必须还原整个文件,带宽开销过大。针对“复制”和“纠删码”冗余策略存在的局限性,提出了再生码,但再生码在故障节点修复过程中连接的节点数量较多,具有较高的磁盘i/o开销。



技术实现要素:

针对上述现有技术中存在的问题,本发明的目的在于,提供一种局部部分重复循环码的分组构造方法,该方法能够降低故障节点修复过程中的磁盘i/o开销和故障节点修复过程中的带宽开销。

为了实现上述目的,本发明采用如下技术方案:

一种局部部分重复循环码的分组构造方法,该方法用于将原始文件m存储到分布式存储系统的节点中,分布式存储系统的节点至少包括n个,包括以下步骤:

步骤1,将原始文件m分成多个数据块,将多个数据块分成m组,每组包括k个数据块;

步骤2,将分布式存储系统中的n个节点分成m个局部修复组,每个局部修复组包括n个节点v1...,vi,...vn,其中,vi表示局部修复组内第i个节点,具体方法如下:

当n除以4的余数为0时,m个局部修复组中的每个局部修复组包括n=4个节点;

当n除以4的余数为1时,前m-1个局部修复组中每个局部修复组包括n=4个节点,第m个局部修复组包括n=5个节点;

当n除以4的余数为2时,前m-2个局部修复组中每个局部修复组包括n=4个节点,第m-1个局部修复组和第m个局部修复组分别包括n=5个节点,或者,前m-1个局部修复组中每个局部修复组包括n=4个节点,第m个局部修复组包括n=6个节点;

当n除以4的余数为3时,前m-3个局部修复组中每个局部修复组包括n=4个节点,第m-2个局部修复组、第m-1个局部修复组和第m个局部修复组分别包括n=5个节点,或者前m-2个局部修复组中每个局部修复组包括n=4个节点,第m-1个局部修复组和第m个局部修复组中一个局部修复组包括n=6个节点,另一个局部修复组包括5个节点;

步骤3,将步骤1得到的每组中的k个数据块存储到步骤2中的一个局部修复组中的n个节点上,采用的方法如下:

步骤3.1,对k个数据块采用mds码进行编码,得到个编码数据块,cj表示第j个编码数据块,表示向上取整;

步骤3.2,将步骤3.1得到的编码数据块存储到局部修复组中的n个节点v1...,vi,...vn上,采用的方法如下:

当n=4时,将每个编码数据块复制一次,得到两个副本,将所有副本存储到局部修复组中的n个节点上,采用的方法如下:

节点v1上存储的编码数据块为c1、c2和c5;节点v2上存储的编码数据块为c2、c3和c6;节点v3上存储的编码数据块为c3、c4和c6;节点v4上存储的编码数据块为c4、c5和c1;

当n=6时,将每个编码数据块复制一次,得到两个副本,将所有副本存储到局部修复组中的n个节点上,采用的方法如下:

节点v1上存储的编码数据块为c1、c2和c7;节点v2上存储的编码数据块为c2、c3和c8;节点v3上存储的编码数据块为c3、c4和c8;节点v4上存储的编码数据块为c4、c5和c9;节点v5上存储的编码数据块为c5、c6和c9;节点v6上存储的编码数据块为c6、c7和c1;

当n=5时,将前个编码数据块复制一次,得到两个副本,将第个编码数据块复制两次,得到三个副本,将所有副本存储到局部修复组中的n个节点上,采用的方法如下:

节点v1上存储的编码数据块为c1、c2和c6;节点v2上存储的编码数据块为c2、c3和c7;节点v3上存储的编码数据块为c3、c4和c7;节点v4上存储的编码数据块为c4、c5和c7;节点v5上存储的编码数据块为c5、c6和c1。

本发明还提供一种节点的故障修复方法,包括以下步骤:

按照权利要求1所述的局部部分重复循环码的分组构造方法将原始文件m存储到分布式存储系统的n个节点中,分布式存储系统中的n个节点分成m个局部修复组;

若局部修复组中的第i个节点vi发生故障,采集相邻节点vi-1和vi+1上的节点vi上存储的编码数据块,将采集到的编码数据块传送给节点vi,即可实现节点vi的故障修复。

与现有技术相比,本发明具有以下技术效果:本发明节点中冗余数据部分由前后两相邻节点的数据块简单复制生成,当修复组中存在单节点故障时,可以通过相邻节点快速实现故障节点的数据重构,修复过程运算简单。

下面结合附图和实施例对本发明的方案做进一步详细地解释和说明。

附图说明

图1是实施例中存储系统具有4个节点的局部修复组中单节点2出现故障的修复示意图;

图2是实施例中存储系统具有5个节点的局部修复组中单节点4出现故障的修复示意图;

图3是实施例中局部修复组包含4个节点的单节点故障修复的局部示意图;

图4是实施例中传统分段复制方法对应的局部修复组包含4个节点的单节点故障修复的局部示意图;

图5是实施例中本发明方法对应的局部修复组包含5个节点的单节点故障修复的局部示意图;

图6是实施例中传统分段复制方法对应的修复组包含5个节点的单节点故障修复的局部示意图;

具体实施方式

本发明提供一种局部部分重复循环码的分组构造方法,该方法用于将原始文件m存储到分布式存储系统的节点中,分布式存储系统的节点至少包括n个,该方法具体包括以下步骤:

步骤1,将原始文件m分成多个数据块,将多个数据块分成m组,每组包括k个数据块;

步骤2,将分布式存储系统中的n个节点分成m个局部修复组,每个局部修复组包括n个节点v1...,vi,...vn,其中,vi表示局部修复组内第i个节点,具体方法如下:

当n除以4的余数为0时,m个局部修复组中的每个局部修复组包括n=4个节点;

当n除以4的余数为1时,前m-1个局部修复组中每个局部修复组包括n=4个节点,第m个局部修复组包括n=5个节点;

当n除以4的余数为2时,前m-2个局部修复组中每个局部修复组包括n=4个节点,第m-1个局部修复组和第m个局部修复组分别包括n=5个节点,或者前m-1个局部修复组中每个局部修复组包括n=4个节点,第m个局部修复组包括n=6个节点;

当n除以4的余数为3时,前m-3个局部修复组中每个局部修复组包括n=4个节点,第m-2个局部修复组、第m-1个局部修复组和第m个局部修复组分别包括n=5个节点,或者前m-2个局部修复组中每个局部修复组包括n=4个节点,第m-1个局部修复组和第m个局部修复组中一个局部修复组包括n=6个节点,另一个局部修复组包括5个节点。

步骤3,将步骤1得到的每组中的k个数据块存储到步骤2中的一个局部修复组中的节点上,采用的方法如下:

步骤3.1,对k个数据块采用mds码进行编码,得到个编码数据块,cj表示第j个编码数据块,表示向上取整;

步骤3.2,将步骤3.1得到的编码数据块存储到局部修复组中的n个节点v1...,vi,...vn上,采用的方法如下:

当n=4时,将每个编码数据块复制一次,得到两个副本,将副本存储到局部修复组中的n个节点上,采用的方法如下:

节点v1上存储的编码数据块为c1、c2和c5;节点v2上存储的编码数据块为c2、c3和c6;节点v3上存储的编码数据块为c3、c4和c6;节点v4上存储的编码数据块为c4、c5和c1;

当n=6时,将每个编码数据块复制一次,得到两个副本,将副本存储到局部修复组中的n个节点上,采用的方法如下:

节点v1上存储的编码数据块为c1、c2和c7;节点v2上存储的编码数据块为c2、c3和c8;节点v3上存储的编码数据块为c3、c4和c8;节点v4上存储的编码数据块为c4、c5和c9;节点v5上存储的编码数据块为c5、c6和c9;节点v6上存储的编码数据块为c6、c7和c1;

当n=5时,将前个编码数据块复制一次,得到两个副本,将第个编码数据块复制2次,得到三个副本,将所有副本存储到局部修复组中的n个节点上,采用的方法如下:

节点v1上存储的编码数据块为c1、c2和c6;节点v2上存储的编码数据块为c2、c3和c7;节点v3上存储的编码数据块为c3、c4和c7;节点v4上存储的编码数据块为c4、c5和c7;节点v5上存储的编码数据块为c5、c6和c1。

本发明的另一个方面还提供一种节点故障修复方法,包括以下步骤:

按照上述局部部分重复循环码的分组构造方法将将原始文件m存储到分布式存储系统的节点中;

若局部修复组中的节点vi发生故障,采集相邻节点vi-1和vi+1上的节点vi上存储的编码数据块,将采集到的编码数据块传送给节点vi,即可实现节点vi的故障修复。

随着存储数据的海量化,分布式存储系统中的节点也相应增多,若采用传统的分段复制局部性修复编码,在修复故障节点的过程中需要连接较多的存活节点来恢复数据,将增加节点的访问开销以及带宽开销,为此本发明采用部分重复循环码作为局部码,在局部组内修复单节点故障过程中减少了连接存活节点数,则整个系统在修复故障节点过程中连接存活节点数也相应减少。

实施例1

将大小为m=120m的文件存储于分布式存储系统中,首先对整个系统的节点数n=120进行分组,每组含n=4个节点,分为m=30组,每组所存储的文件数据块个数为k=4,在有限域gf(8)中构造(6,4)mds码,生成6个编码数据块,用m=[m1m2m3m4]表示分布式存储系统中存储节点的原始信息数据,其中的m1,m2,…,m4表示信息符号;c=[c1c2…c6]表示在分布式存储节点中存储的mds码的生成码字,且c=m·gmds,这里的(6,4)mds码的生成矩阵gmds=[i|p]4×6,其中i为4×4单位矩阵,p为4×2维子矩阵。(6,4)mds码可以表示为:

c=m·gmds=m·[i|p]4×6

在含n=4个存储节点的局部修复组内,将通过(6,4)mds编码得到的6个编码数据块,分别复制一次,以重复循环的方式存储于4个节点中,在该具有4个存储节点的局部修复组内构造局部性修复编码,确保mds性质以及简单修复特性。

图1给出了分布式存储系统中含n=4个存储节点的局部修复组中单节点2出现故障的修复方案。从节点1和节点3上分别采集数据2和3、6,并传送给节点2,完成节点2的修复,在此过程中连接的存活节点数为2(修复局部性为2),如图3所示,较传统的基于分段复制的局部性修复(修复局部性为3),如图4所示,减少了节点的访问开销。

实施例2

将大小为m=120m的文件存储于分布式存储系统中,此时整个系统的节点数n=121,对其进行分组,分为m=30组,每组含n=4个节点,最后一组含n=5个节点,每组所存储的文件数据块个数为k=4,存储系统的前29个局部组同实施例1;最后一组含n=5个存储节点的局部修复组内采用实施例1方法构造(7,4)mds码,将生成的7个编码数据块,分别复制一次,得到两个副本,以重复循环的方式存储于5个节点中,由于存储节点数为奇数5,每个节点存储三份数据,存储总数为15,则将第7个编码数据块复制两次,得到其三个副本,其中一份存放于节点4,在该具有5个存储节点的局部修复组内构造局部性修复编码,确保mds性质以及简单修复特性。

图2给出了分布式存储系统中含n=5个存储节点的局部修复组中单节点4出现故障的修复方案。从节点3和节点5上分别采集数据4、7和5,并传送给节点4,完成节点4的修复,在此过程中连接的存活节点数为2(修复局部性为2),如图5所示,较传统的基于分段复制的局部性修复(修复局部性为3),如图6所示,减少了节点的访问开销。

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