CN110750382A - 用于提高数据修复性能的最小存储再生码编码方法及系统 - Google Patents
用于提高数据修复性能的最小存储再生码编码方法及系统 Download PDFInfo
- Publication number
- CN110750382A CN110750382A CN201910880818.XA CN201910880818A CN110750382A CN 110750382 A CN110750382 A CN 110750382A CN 201910880818 A CN201910880818 A CN 201910880818A CN 110750382 A CN110750382 A CN 110750382A
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- block
- check
- repair
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
Abstract
本发明公开了一种用于提高数据修复性能的最小存储再生码编码方法及系统,属于计算机存储领域,包括:将原始数据等分为k个数据块,并将每个数据块等分为α个数据分片;将每个校验块等分为α个校验分片;确定用于数据编码的生成矩阵后,对k×α个数据分片进行编码,得到各校验块中的各个校验分片;编码完成后,将数据块和校验块分别存储到不同的存储节点上;定期检查是否存在失效块;若失效块的总数大于编码块数量m,则修复失败;若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求1/(d‑k+1)的数据量来修复失效的数据块;在其他情况下,从m个有效存储节点请求完整的块来修复失效块。本发明能够提高不稳定网络环境中的数据修复性能。
Description
技术领域
本发明属于计算机存储领域,更具体地,涉及一种用于提高数据修复性能的最小存储再生码编码方法及系统。
背景技术
纠删码是一种保证数据冗余的编码方法,它首先将原始数据分裂为等大的数据块,然后再将数据块编码为校验块。当若干个数据块或校验块丢失时,纠删码技术可以保证原始数据仍然可以恢复。该技术广泛地应用在分布式存储系统和云存储系统上来提高系统可靠性,以防止磁盘失效或数据丢失等导致的数据不可访问。
传统的纠删码方法中,会将大小为M的原始数据等分为k个数据块:D0、D1、…、Dk-1,对数据块编码之后产生m个编码块:P0、P1、…、Pm-1,由此共得到n个块,数据块、编码块会存储在n个不同的存储节点上。存储节点是存储设备的逻辑抽象,既可以是一个磁盘也可以是一个存储服务器。相比于传统的副本技术,纠删码技术一般具有最优的存储效率或者最大距离可分(MDS)性质,可以在较低的存储开销下提供与之对等的系统可靠性。然而,纠删码在数据修复过程中需要读取并传输多个磁盘上的数据,占用大量的存储资源和网络资源,所以在性能方面不及副本策略。以(n,k)里德-所罗门编码为例,只要该数据可修复,都需要k块整块数据块或校验块进行重建,所需要的数据量都是M。
最小存储再生码是一种特殊的纠删码,它会将编码块进行更加细粒度划分,然后可以通过有选择性地选取可以重复使用的一些片段参与修复来实现最佳修复带宽。除了传统的纠删码方法中的参数n和k,最小存储再生码还有参数d用以代表修复时通过网络连接除失效块之外的有效块数目。单点失效时,现有的最小存储再生码大多是在通过网络连接除失效块之外的所有有效块(d=n-1),从每个块上按照一定规则下载1/m的数据量来修复损坏的数据,可以有效地减小修复带宽。但是在复杂的网络环境中,每次的修复都需要所有有效节点的参与是不切实际的。而且,数据修复时延取决于最后一个节点返回数据请求的时间,当系统不稳定而出现拥塞节点或者节点被其他任务征用而延缓发送修复所需数据时,系统的数据修复性能大大地降低。总的来说,采用最小存储再生码时,在不稳定的网络环境下,数据修复性能有待提高。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种用于提高数据修复性能的最小存储再生码编码方法及系统,其目的在于,提高不稳定网络环境中的数据修复性能。
为实现上述目的,按照本发明的第一方面,提供了一种用于提高数据修复性能的最小存储再生码编码方法,包括:
将原始数据等分为k个数据块D0~Dk-1,并将每个数据块等分为α个数据分片,共得到k×α个数据分片;将待编码生成的m个校验块中,每个校验块等分为α个校验分片,共需生成m×α个校验分片;
确定用于数据编码的生成矩阵G后,根据生成矩阵G对k×α个数据分片进行编码,得到m个校验块中的各个校验分片;编码完成后,将k个数据块和m个校验块分别存储到n个不同的存储节点上;
定期检查各存储节点上的块是否失效;
若存在失效的块,且失效块的总数大于m,则修复失败,修复结束;若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块;在其他情况下,从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块;
其中,n=k+m,k≤d≤n-1,α的取值与d相关,k≥2。
本发明中,针对单个失效数据块进行数据修复时,通过网络连接的有效节点数d可根据网络拥塞情况在[k,n-1]的范围内灵活设定;具体地,在稳定网络环境下,本发明可以构建d=n-1的最小存储再生码,以获得比传统纠删码更小的修复带宽;在不稳定的网络环境中,本发明可以构建k≤d<n-1的最小存储再生码来适应感知节点的负载状况,选择向相对不拥塞的节点请求数据,从而既能够获得比传统纠删码更小的修复带宽开销,也能够避免向拥塞节点请求数据,最终获得比d=n-1的最小存储再生码更小的修复时延。总的来说,本发明能够提高不稳定网络环境中的数据修复性能。
其中,表示向上取整。
进一步地,确定用于数据编码的生成矩阵G,包括:
对于任意一个校验块Pt,确定所有数据分片中参与生成校验块Pt中各校验分片Pt,0~Pt,α-1的数据分片,从而得到编码位置矩阵L,并确定参与编码的数据分片所对应的编码系数矩阵Vt;根据得到校验块Pt对应的生成矩阵块Gt;
各校验块对应的编码位置矩阵相同;
组合各校验块对应的生成矩阵块,以得到生成矩阵为:
其中,ο表示哈达马积,t表示校验块的编号,0≤t≤m-1。
本发明中,各校验块对应的编码位置矩阵相同,即对于每个校验块,所有数据分片中参与生成校验块中各校验分片的数据分片相同,在d<n-1时,可以向大于d个节点请求数据,因为这些节点传输的数据位置信息相同,修复仅需等待前d个数据返回即可,避免了等待具有高延迟的数据信息。
进一步地,编码位置矩阵L的获取方法包括:
(S1)初始化α行、k×α列的目标矩阵,使得其中的所有元素均为0;目标矩阵中,每一行对应校验块Pt中的一个校验分片,每一列对应所有数据分片中的一个数据分片;
(S5)若j=step,则转入步骤(S4);否则,根据j=j+1更新变量j的值,并设置变量tmp=-1;
(S6)若tmp=run,则转入步骤(S5);否则,根据tmp=tmp+1更新变量tmp的值,并设置变量ex=-1后,计算变量pos=j*(d-k+1)*run+tmp;
(S7)若ex=d-k,则转入步骤(S6);否则,根据ex=ex+1更新变量ex的值,并设置目标矩阵中第pos+ex*dis行、第Si列的元素为非零值,以将第i个数据块中的第pos+ex*dis个数据分片Di,pos+ex*dis加入其中,并重新转入步骤(S7);
(S8)将目标矩阵确定为编码位置矩阵L;
本发明通过上述方法确定的编码位置矩阵L,在保证所有的数据分片都参与编码得到校验块的同时,把数据片段中的部分信息当作冗余信息添加到校验信息部分,因此在修复时仅需读取较少的校验信息,就能获取较多的数据信息,从而能够减少修复带宽。
进一步地,编码系数矩阵Vt的获取方法包括:
通过枚举法搜索使得任意选取k个块所得到的线性方程组线性无关的所有编码系数矩阵,从而得到编码系数矩阵集合;
从编码系数矩阵集合中选取一个编码系数矩阵,使得对单个失效数据块进行修复时,向最不拥塞的d个有效存储节点请求数据所得到的线性方程组线性无关;将所选取的编码系数矩阵确定为编码系数矩阵Vt。
本发明通过上述方法确定编码系数矩阵Vt,保证了在n个块中获取任意k个块所得到的线性方程组是线性无关的(等同于矩阵可逆),由此能够达到最大距离可分(MDS)性质;同时,通过上述方法确定的编码系数矩阵Vt,还保证了选取的单个数据块修复方案后所得的矩阵是可逆的。
进一步地,若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块,包括:
确定位于被请求节点的有效块中参与修复失效数据块的分片位置信息,以确定参与修复失效数据块的数据分片序号seq1和校验分片序号seq2;
由参与修复的数据分片和校验分片按顺序组合为矩阵M1,由参与修复的数据分片和失效数据块中待修复的数据分片按顺序组合为矩阵M2;
根据校验分片序号seq2从生成矩阵G中选取相应的行,按顺序组合得到矩阵Mf;根据待修复数据块的编号确定待修复的数据分片序号seq3,并根据数据分片序号seq1和数据分片序号seq3从矩阵Mf中选取相应的列,按顺序组合得到矩阵Mf′;
根据矩阵Mf′构建矩阵Mt,使得Mt·M2=M1;矩阵Mf′为矩阵Mt中的一个矩阵块;
对矩阵Mt求逆后,得到修复矩阵Mr;利用修复矩阵Mr和矩阵M1修复各个待修复的数据分片,从而完成对失效数据块的修复。
进一步地,确定位于被请求节点的有效块中参与修复失效数据块的分片位置信息,包括:
(T2)若j=step,则转入步骤(T4);否则,根据j=j+1更新变量j的值,并设置变量tmp=-1;
(T3)若tmp=run,则转入步骤(T2);否则,设置变量pos=j*(d-k+1)*run+tmp,并根据tmp=tmp+1更新变量tmp的值后,计算分片位置Ps=Sf+pos并加入到集合R中,以指示有效块中的第Ps个分片参与修复失效数据块,重新转入步骤(T3);
(T4)将集合R中记录的分片位置确定为有效块中参与修复失效数据块的分片位置信息;
其中,f表示失效数据块的编号。
进一步地,从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块,包括:
生成k×α行、k×α列的单位矩阵后,与生成矩阵G组合为(k+m)×α行、k×α列的矩阵M,使得M·MD=MN;MD为所有数据分片按顺序组合而成的矩阵,MN为所有数据分片和校验分片按顺序组合而成的矩阵;
根据被请求节点的编号,确定用于修复失效块的分片序号,并从矩阵M中选取相应的行,按顺序组合得到矩阵Mt,使得Mt·MD=MV;MV为所有用于修复失效块的分片按顺序组合而成的矩阵;
对矩阵Mt求逆后,得到修复矩阵Mr;利用修复矩阵Mr和矩阵MV修复各个失效块中的数据分片,从而完成对失效块的修复。
按照本发明的第二方面,提供了一种系统,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的用于提高数据修复性能的最小存储再生码编码方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的用于提高数据修复性能的最小存储再生码编码方法,针对单个失效数据块进行数据修复时,通过网络连接的有效节点数d可根据网络拥塞情况在[k,n-1]的范围内灵活设定;具体地,在稳定网络环境下,本发明可以构建d=n-1的最小存储再生码,以获得比传统纠删码更小的修复带宽;在不稳定的环境中,本发明可以构建k≤d<n-1的最小存储再生码来适应感知节点的负载状况,选择向相对不拥塞的节点请求数据,从而既能够获得比传统纠删码更小的修复带宽开销,也能够避免向拥塞节点请求数据,最终获得比d=n-1的最小存储再生码更小的修复时延。总的来说,本发明能够提高不稳定网络环境中的数据修复性能。
(2)本发明所提供的用于提高数据修复性能的最小存储再生码编码方法,各校验块对应的编码位置矩阵相同,在d<n-1时,可以向大于d个节点请求数据,因为这些节点传输的数据位置信息相同,修复仅需等待前d个数据返回即可,避免了等待具有高延迟的数据信息。
(3)本发明所提供的用于提高数据修复性能的最小存储再生码编码方法,所构造的编码位置矩阵L,在保证所有的数据分片都参与编码得到校验块的同时,把数据片段中的部分信息当作冗余信息添加到校验信息部分,因此在修复时仅需读取较少的校验信息,就能获取较多的数据信息,从而能够减少修复带宽。
附图说明
图1为本发明实施例提供的用于提高数据修复性能的最小存储再生码编码方法流程图;
图2为本发明实施例中确定编码位置矩阵的方法流程图;
图3为本发明实施例中进行单个数据块修复时,确定参与修复失效数据块的分片位置信息的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为提高不稳定网络环境下的数据修复性能,本发明提供了一种用于提高数据修复性能的最小存储再生码编码方法,如图1所示,包括:
将原始数据等分为k个数据块D0~Dk-1,并将每个数据块等分为α个数据分片,共得到k×α个数据分片;将待编码生成的m个校验块中,每个校验块等分为α个校验分片,共需生成m×α个校验分片;在进行分片的过程中,若数据不足,则用0进行填充;通过这一步骤,可完成对数据的分块以及分片操作;
确定用于数据编码的生成矩阵G后,根据生成矩阵G对k×α个数据分片进行编码,得到m个校验块中的各个校验分片;编码完成后,将k个数据块和m个校验块分别存储到n个不同的存储节点上;通过这一步骤,可完成数据编码操作;
定期检查各存储节点上的块是否失效;通过这一步骤,可完成检查数据块状态的操作;
若存在失效的块,且失效块的总数大于m,则修复失败,修复结束;若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块;在其他情况下,从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块;通过这一步骤,可根据具体的失效情况确定相应的失效块修复方案,从而完成失效块修复划分和失效修复的步骤;
其中,n=k+m,k≤d≤n-1,α的取值与d相关,k≥2。
上述用于提高数据修复性能的最小存储再生码编码方法,针对单个失效数据块进行数据修复时,通过网络连接的有效节点数d可根据网络拥塞情况在[k,n-1]的范围内灵活设定,具体地,在稳定网络环境下,可以构建d=n-1的最小存储再生码,以获得比传统纠删码更小的修复带宽;在不稳定的网络环境中,可以构建k≤d<n-1的最小存储再生码来适应感知节点的负载状况,选择向相对不拥塞的节点请求数据,从而既能够获得比传统纠删码更小的修复带宽开销,也能够避免向拥塞节点请求数据,最终获得比d=n-1的最小存储再生码更小的修复时延。总的来说,上述用于提高数据修复性能的最小存储再生码编码方法,能够提高不稳定网络环境中的数据修复性能。
迟绑定技术(late biding strategy)不需要了解系统中节点的拥塞情况,通过向大于d个节点请求数据并在获得前d个时即开始修复数据,可以有效避免等待其他具有高延迟的节点返回消息。论文(“EC-Store:Bridging the Gap between Storage and Latencyin Distributed Erasure Coded Systems”International Conference on DistributedComputing Systems(ICDCS),2018.)中提到的动态数据访问技术(dynamic data accessstrategy),通过给系统建模并获取相应网络、负载信息从而判断网络中各个节点的相应延迟情况及是否阻塞。在本发明中,可以通过上述技术避免向具有高延迟的节点请求数据,应当理解的是,其他可避免向具有高延迟的节点请求数据的方法也可适用于本发明。
在一个可选的实施方式中,上述用于提高数据修复性能的最小存储再生码编码方法中,确定用于数据编码的生成矩阵G,包括:
对于任意一个校验块Pt,确定所有数据分片中参与生成校验块Pt中各校验分片Pt,0~Pt,α-1的数据分片,从而得到编码位置矩阵L,并确定参与编码的数据分片所对应的编码系数矩阵Vt;根据Gt=VtοL得到校验块Pt对应的生成矩阵块Gt;
各校验块对应的编码位置矩阵相同;
组合各校验块对应的生成矩阵块,以得到生成矩阵为:
其中,о表示哈达马积,t表示校验块的编号,0≤t≤m-1;
通过使得各校验块对应的编码位置矩阵相同,即对于每个校验块,所有数据分片中参与生成校验块中各校验分片的数据分片相同,在d<n-1时,可以向大于d个节点请求数据,因为这些节点传输的数据位置信息相同,修复仅需等待前d个数据返回即可,避免了等待具有高延迟的数据信息;
如图2所示,在确定生成矩阵G时,编码位置矩阵L的获取方法包括:
(S1)初始化α行、k×α列的目标矩阵,使得其中的所有元素均为0;目标矩阵中,每一行对应校验块Pt中的一个校验分片,每一列对应所有数据分片中的一个数据分片;
(S5)若j=step,则转入步骤(S4);否则,根据j=j+1更新变量j的值,并设置变量tmp=-1;
(S6)若tmp=run,则转入步骤(S5);否则,根据tmp=tmp+1更新变量tmp的值,并设置变量ex=-1后,计算变量pos=j*(d-k+1)*run+tmp;
(S7)若ex=d-k,则转入步骤(S6);否则,根据ex=ex+1更新变量ex的值,并设置目标矩阵中第pos+ex*dis行、第Si列的元素为非零值,以将第i个数据块中的第pos+ex*dis个数据分片Di,pos+ex*dis加入其中,并重新转入步骤(S7);
(S8)将目标矩阵确定为编码位置矩阵L;
通过上述方法确定的编码位置矩阵L,在保证所有的数据分片都参与编码得到校验块的同时,把数据片段中的部分信息当作冗余信息添加到校验信息部分,因此在修复时仅需读取较少的校验信息,就能获取较多的数据信息,从而能够减少修复带宽;
在确定编码位置矩阵L后,编码系数矩阵Vt的获取方法包括:
通过枚举法搜索使得任意选取k个块所得到的线性方程组线性无关的所有编码系数矩阵,从而得到编码系数矩阵集合;
从编码系数矩阵集合中选取一个编码系数矩阵,使得对单个失效数据块进行修复时,向最不拥塞的d个有效存储节点请求数据所得到的线性方程组线性无关;将所选取的编码系数矩阵确定为编码系数矩阵Vt;
通过上述方法确定编码系数矩阵Vt,保证了在n个块中获取任意k个块所得到的线性方程组是线性无关的(等同于矩阵可逆),由此能够达到最大距离可分(MDS)性质;同时,通过上述方法确定的编码系数矩阵Vt,还保证了选取的单个数据块修复方案后所得的矩阵是可逆的。
在一个可选的实施方式中,上述用于提高数据修复性能的最小存储再生码编码方法中,若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块,包括:
确定位于被请求节点的有效块中参与修复失效数据块的分片位置信息,以确定参与修复失效数据块的数据分片序号seq1和校验分片序号seq2;
由参与修复的数据分片和校验分片按顺序组合为矩阵M1,由参与修复的数据分片和失效数据块中待修复的数据分片按顺序组合为矩阵M2;
根据校验分片序号seq2从生成矩阵G中选取相应的行,按顺序组合得到矩阵Mf;根据待修复数据块的编号确定待修复的数据分片序号seq3,并根据数据分片序号seq1和数据分片序号seq3从矩阵Mf中选取相应的列,按顺序组合得到矩阵Mf′;
根据矩阵Mf′构建矩阵Mt,使得Mt·M2=M1;矩阵Mf′为矩阵Mt中的一个矩阵块;
对矩阵Mt求逆后,得到修复矩阵Mr;利用修复矩阵Mr和矩阵M1修复各个待修复的数据分片,从而完成对失效数据块的修复;
具体的,如图3所示,确定位于被请求节点的有效块中参与修复失效数据块的分片位置信息,包括:
(T2)若j=step,则转入步骤(T4);否则,根据j=j+1更新变量j的值,并设置变量tmp=-1;
(T3)若tmp=run,则转入步骤(T2);否则,设置变量pos=j*(d-k+1)*run+tmp,并根据tmp=tmp+1更新变量tmp的值后,计算分片位置Ps=Sf+pos并加入到集合R中,以指示有效块中的第Ps个分片参与修复失效数据块,重新转入步骤(T3);
(T4)将集合R中记录的分片位置确定为有效块中参与修复失效数据块的分片位置信息;
其中,f表示失效数据块的编号。
在一个可选的实施方式中,上述用于提高数据修复性能的最小存储再生码编码方法中,从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块,包括:
生成k×α行、k×α列的单位矩阵后,与生成矩阵G组合为(k+m)×α行、k×α列的矩阵M,使得M·MD=MN;MD为所有数据分片按顺序组合而成的矩阵,MN为所有数据分片和校验分片按顺序组合而成的矩阵;
根据被请求节点的编号,确定用于修复失效块的分片序号,并从矩阵M中选取相应的行,按顺序组合得到矩阵Mt,使得Mt·MD=MV;MV为所有用于修复失效块的分片按顺序组合而成的矩阵;
对矩阵Mt求逆后,得到修复矩阵Mr;利用修复矩阵Mr和矩阵MV修复各个失效块中的数据分片,从而完成对失效块的修复。
本发明还提供了一种系统,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的用于提高数据修复性能的最小存储再生码编码方法。
应用实例:
以下结合一个具体实例对上述用于提高数据修复性能的最小存储再生码编码方法作进一步的阐释。
(1)数据分块:
将数据量为30MB的原始数据等分为3个10MB的数据块Di(i=0,1,2),再将3个数据块分别保存在3个数据节点N0,N1,N2上;根据α将每个数据块等分为4个数据分片,并对所有数据分片赋予序号,此处数据块Di中的第j个数据分片的序号为i×4+j;
将待生成三个校验块P0、P1、P2中的每个校验块等分为4个校验分片;
(2)数据编码:
根据图2所示的方法流程,确定编码位置矩阵为:
其中每一行对应校验块中的一个校验分片,每一列对应所有数据分片中的一个数据分片;各校验块对应的编码位置矩阵相同;
根据枚举法随机搜索出系数矩阵V中满足MDS性质的编码系数矩阵,得到各校验块对应的编码系数矩阵,由此可以得到生成矩阵G为:
根据生成矩阵G对数据分片进行编码,可以得到编码后的校验块信息P0、P1、P2为:
将三个校验块分别存储到不同于数据节点N0,N1,N2的三个数据节点上N3,N4,N5;
(3)检查数据块状态:
定期依次检查各数据节点上的块是否出错或丢失,是则转步骤(4);否则不作处理;
(4)根据失效块进行修复划分:
根据状态检查,获取所有失效的数据块、校验块的编号,生成丢失块集合;当失效块个数超过m=3时,在可修复失效范围外,表示数据完全丢失无法恢复,修复失败,修复结束;若仅存在一个失效的数据块,则执行步骤(5.2),以向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块;在其他情况下,即在可修复失效范围内,但存在失效的校验块,或者失效的数据块个数大于1时,执行步骤(5.1),以从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块;
(5)失效修复步骤:
(5.1)常规修复:
例如,通过状态检查步骤后有失效集合{0,1},即存在两个失效的数据块D0和D1,随机选取3个有效存储节点请求数据,在这里,选择选择块{2,3,4}完成数据修复;
根据被请求节点的编号,确定用于修复失效块的分片序号{8,9,10,11,12,13,14,15,16,17,18,19},并从矩阵M中选取相应的行,按顺序组合得到矩阵Mt,使得Mt·MD=MV;MV为所有用于修复失效块的分片按顺序组合而成的矩阵;其中,
对矩阵Mt求逆后,得到修复矩阵Mr:
利用修复矩阵Mr和矩阵MV修复各个失效块中的数据分片,从而完成对失效块的修复;
由于MD=Mr·MV,通过修复矩阵Mr和矩阵MV的乘积即可修复出丢失的数据块,计算方式如下:
(5.2)单个数据块修复:
例如,通过状态检查步骤后有失效集合{2},即仅有一个失效的数据块D2,可以有选择性地在所有节点编号{0,1,3,4,5}中任意选取4个节点参与修复,在这里选取的节点编号为{0,1,3,4};
根据图3所示的方法流程,可以得到每个块中参与修复的分片在块中的位置为{0,2},因此,参与修复失效数据块的数据分片具体为{D0,0D0,2,D1,0,D1,2},相应的数据分片序号seq1={0,2,4,6},参与修复失效数据块的检验分片为{P0,0,P0,2,P1,0,P1,2},相应的校验分片序号seq2={0,2,4,6};
由参与修复的数据分片和校验分片按顺序组合为矩阵M1,由参与修复的数据分片和失效数据块中待修复的数据分片按顺序组合为矩阵M2;
根据校验分片序号seq2从生成矩阵G中选取相应的行,按顺序组合得到矩阵Mf:
根据待修复数据块的编号2确定待修复的数据分片序号seq3={8,9,10,11},并根据数据分片序号seq1和数据分片序号seq3从矩阵Mf中选取相应的列,即从矩阵Mf中选取的第0、2、4、6、8、9、10、11列,然后按顺序组合得到矩阵Mf′:
根据矩阵Mf′构建矩阵Mt,使得Mt·M2=M1;矩阵Mf′为矩阵Mt中的一个矩阵块;其中,
对矩阵Mt求逆后,得到修复矩阵Mr:
利用修复矩阵Mr和矩阵M1修复各个待修复的数据分片,从而完成对失效数据块的修复;
由于M2=Mr·M1,通过修复矩阵Mr和矩阵M1的乘积即可修复出丢失的数据块,计算方式如下:
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种用于提高数据修复性能的最小存储再生码编码方法,其特征在于,包括:
将原始数据等分为k个数据块D0~Dk-1,并将每个数据块等分为α个数据分片,共得到k×α个数据分片;将待编码生成的m个校验块中,每个校验块等分为α个校验分片,共需生成m×α个校验分片;
确定用于数据编码的生成矩阵G后,根据生成矩阵G对k×α个数据分片进行编码,得到m个校验块中的各个校验分片;编码完成后,将k个数据块和m个校验块分别存储到n个不同的存储节点上;
定期检查各存储节点上的块是否失效;
若存在失效的块,且失效块的总数大于m,则修复失败,修复结束;若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块;在其他情况下,从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块;
其中,n=k+m,k≤d≤n-1,α的取值与d相关,k≥2。
4.如权利要求3所述的用于提高数据修复性能的最小存储再生码编码方法,其特征在于,编码位置矩阵L的获取方法包括:
(S1)初始化α行、k×α列的目标矩阵,使得其中的所有元素均为0;所述目标矩阵中,每一行对应校验块Pt中的一个校验分片,每一列对应所有数据分片中的一个数据分片;
(S5)若j=step,则转入步骤(S4);否则,根据j=j+1更新变量j的值,并设置变量tmp=-1;
(S6)若tmp=run,则转入步骤(S5);否则,根据tmp=tmp+1更新变量tmp的值,并设置变量ex=-1后,计算变量pos=j*(d-k+1)*run+tmp;
(S7)若ex=d-k,则转入步骤(S6);否则,根据ex=ex+1更新变量ex的值,并设置目标矩阵中第pos+ex*dis行、第Si列的元素为非零值,以将第i个数据块中的第pos+ex*dis个数据分片Di,pos+ex*dis加入其中,并重新转入步骤(S7);
(S8)将目标矩阵确定为编码位置矩阵L;
其中,0≤i1≤k-1,0≤j1≤α-1,表示向上取整,mod表示取模运算。
5.如权利要求4所述的用于提高数据修复性能的最小存储再生码编码方法,其特征在于,编码系数矩阵Vt的获取方法包括:
通过枚举法搜索使得任意选取k个块所得到的线性方程组线性无关的所有编码系数矩阵,从而得到编码系数矩阵集合;
从编码系数矩阵集合中选取一个编码系数矩阵,使得对单个失效数据块进行修复时,向最不拥塞的d个有效存储节点请求数据所得到的线性方程组线性无关;将所选取的编码系数矩阵确定为编码系数矩阵Vt。
6.如权利要求3所述的用于提高数据修复性能的最小存储再生码编码方法,其特征在于,若仅存在一个失效的数据块,则向最不拥塞的d个有效存储节点请求数据,分别从各被请求节点下载1/(d-k+1)的数据量来修复失效的数据块,包括:
确定位于被请求节点的有效块中参与修复失效数据块的分片位置信息,以确定参与修复失效数据块的数据分片序号seq1和校验分片序号seq2;
由参与修复的数据分片和校验分片按顺序组合为矩阵M1,由参与修复的数据分片和失效数据块中待修复的数据分片按顺序组合为阵M2;
根据校验分片序号seq2从生成矩阵G中选取相应的行,按顺序组合得到矩阵Mf;根据待修复数据块的编号确定待修复的数据分片序号seq3,并根据数据分片序号seq1和数据分片序号seq3从矩阵Mf中选取相应的列,按顺序组合得到矩阵Mf′;
根据矩阵Mf′构建矩阵Mt,使得Mt·M2=M1;矩阵Mf′为矩阵Mt中的一个矩阵块;
对矩阵Mt求逆后,得到修复矩阵Mr;利用修复矩阵Mr和矩阵M1修复各个待修复的数据分片,从而完成对失效数据块的修复。
7.如权利要求6所述的用于提高数据修复性能的最小存储再生码编码方法,其特征在于,确定位于被请求节点的有效块中参与修复失效数据块的分片位置信息,包括:
(T2)若j=step,则转入步骤(T4);否则,根据j=j+1更新变量j的值,并设置变量tmp=-1;
(T3)若tmp=run,则转入步骤(T2);否则,设置变量pos=j*(d-k+1)*run+tmp,并根据tmp=tmp+1更新变量tmp的值后,计算分片位置Ps=Sf+pos并加入到集合R中,以指示有效块中的第Ps个分片参与修复失效数据块,重新转入步骤(T3);
(T4)将集合R中记录的分片位置确定为有效块中参与修复失效数据块的分片位置信息;
其中,f表示失效数据块的编号。
8.如权利要求3所述的用于提高数据修复性能的最小存储再生码编码方法,其特征在于,从m个有效存储节点请求数据,分别从各被请求节点下载完整的块来修复失效块,包括:
生成k×α行、k×α列的单位矩阵后,与生成矩阵G组合为(k+m)×α行、k×α列的矩阵M,使得M·MD=MN;MD为所有数据分片按顺序组合而成的矩阵,MN为所有数据分片和校验分片按顺序组合而成的矩阵;
根据被请求节点的编号,确定用于修复失效块的分片序号,并从矩阵M中选取相应的行,按顺序组合得到矩阵Mt,使得Mt·MD=MV;MV为所有用于修复失效块的分片按顺序组合而成的矩阵;
对矩阵Mt求逆后,得到修复矩阵Mr;利用修复矩阵Mr和矩阵MV修复各个失效块中的数据分片,从而完成对失效块的修复。
9.一种系统,包括计算机可读存储介质和处理器,其特征在于,所述计算机可读存储介质用于存储可执行程序;
所述处理器用于读取所述计算机可读存储介质中存储的可执行程序,执行权利要求1-8任一项所述的用于提高数据修复性能的最小存储再生码编码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880818.XA CN110750382B (zh) | 2019-09-18 | 2019-09-18 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880818.XA CN110750382B (zh) | 2019-09-18 | 2019-09-18 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110750382A true CN110750382A (zh) | 2020-02-04 |
CN110750382B CN110750382B (zh) | 2020-10-30 |
Family
ID=69276641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910880818.XA Active CN110750382B (zh) | 2019-09-18 | 2019-09-18 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110750382B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111447044A (zh) * | 2020-03-10 | 2020-07-24 | 深圳市大数据研究院 | 分布式存储方法和传输译码方法 |
CN111475839A (zh) * | 2020-04-06 | 2020-07-31 | 华中科技大学 | 一种用于不可信环境的冗余数据编码方法、存储介质 |
CN111585582A (zh) * | 2020-05-14 | 2020-08-25 | 成都信息工程大学 | 一种基于阵列运算且码距自由确定的编码方法 |
CN111585581A (zh) * | 2020-05-14 | 2020-08-25 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
CN112713964A (zh) * | 2020-12-22 | 2021-04-27 | 潍柴动力股份有限公司 | 数据校验加速方法、装置、计算机设备及存储介质 |
CN112732203A (zh) * | 2021-03-31 | 2021-04-30 | 中南大学 | 一种再生码构造方法、文件重构方法及节点修复方法 |
CN113315753A (zh) * | 2021-04-25 | 2021-08-27 | 国网浙江省电力有限公司电力科学研究院 | 基于编码技术的区块数据可信恢复方法 |
CN114237967A (zh) * | 2022-02-22 | 2022-03-25 | 阿里云计算有限公司 | 数据重构方法以及装置 |
CN114595092A (zh) * | 2022-04-28 | 2022-06-07 | 阿里云计算有限公司 | 分布式存储系统、数据重构方法、设备及存储介质 |
WO2024037010A1 (zh) * | 2022-08-17 | 2024-02-22 | 华为技术有限公司 | 数据存储方法、装置及存储介质 |
CN117632041A (zh) * | 2024-01-25 | 2024-03-01 | 国家计算机网络与信息安全管理中心天津分中心 | 基于再生码的分布式存储方法、装置和电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103688515A (zh) * | 2013-03-26 | 2014-03-26 | 北京大学深圳研究生院 | 一种最小带宽再生码的编码和存储节点修复方法 |
CN103688514A (zh) * | 2013-02-26 | 2014-03-26 | 北京大学深圳研究生院 | 一种最小存储再生码的编码和存储节点修复方法 |
CN105260259A (zh) * | 2015-09-16 | 2016-01-20 | 长安大学 | 一种基于系统最小存储再生码的局部性修复编码方法 |
US20160026543A1 (en) * | 2014-07-24 | 2016-01-28 | At&T Intellectual Property I, L.P. | Distributed Storage of Data |
CN105721611A (zh) * | 2016-04-15 | 2016-06-29 | 西南交通大学 | 一种由极大距离可分存储码生成最小存储再生码的一般方法 |
CN106776129A (zh) * | 2016-12-01 | 2017-05-31 | 陕西尚品信息科技有限公司 | 一种基于最小存储再生码的多节点数据文件的修复方法 |
CN107395207A (zh) * | 2017-07-12 | 2017-11-24 | 东莞理工学院 | 多容错性的mds 阵列码编码以及修复方法 |
CN108810063A (zh) * | 2017-11-21 | 2018-11-13 | 北京大学深圳研究生院 | 一种多云存储环境下数据的安全分发和修复方法、系统及介质 |
CN108923960A (zh) * | 2018-06-20 | 2018-11-30 | 华中科技大学 | 一种基于代理协助再生码的存储节点修复方法 |
CN109257049A (zh) * | 2018-08-09 | 2019-01-22 | 东莞理工学院 | 一种修复二进制阵列码校验矩阵的构造方法及修复方法 |
CN109257050A (zh) * | 2018-08-09 | 2019-01-22 | 东莞理工学院 | 一种修复二进制码生成矩阵构造方法及修复方法 |
US20190140667A1 (en) * | 2017-11-03 | 2019-05-09 | Board Of Trustees Of Michigan State University | Optimal construction of regenerating code through rate-matching |
-
2019
- 2019-09-18 CN CN201910880818.XA patent/CN110750382B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103688514A (zh) * | 2013-02-26 | 2014-03-26 | 北京大学深圳研究生院 | 一种最小存储再生码的编码和存储节点修复方法 |
CN103688515A (zh) * | 2013-03-26 | 2014-03-26 | 北京大学深圳研究生院 | 一种最小带宽再生码的编码和存储节点修复方法 |
WO2014153716A1 (zh) * | 2013-03-26 | 2014-10-02 | 北京大学深圳研究生院 | 一种最小带宽再生码的编码和存储节点修复方法 |
US20160026543A1 (en) * | 2014-07-24 | 2016-01-28 | At&T Intellectual Property I, L.P. | Distributed Storage of Data |
CN105260259A (zh) * | 2015-09-16 | 2016-01-20 | 长安大学 | 一种基于系统最小存储再生码的局部性修复编码方法 |
CN105721611A (zh) * | 2016-04-15 | 2016-06-29 | 西南交通大学 | 一种由极大距离可分存储码生成最小存储再生码的一般方法 |
CN106776129A (zh) * | 2016-12-01 | 2017-05-31 | 陕西尚品信息科技有限公司 | 一种基于最小存储再生码的多节点数据文件的修复方法 |
CN107395207A (zh) * | 2017-07-12 | 2017-11-24 | 东莞理工学院 | 多容错性的mds 阵列码编码以及修复方法 |
US20190140667A1 (en) * | 2017-11-03 | 2019-05-09 | Board Of Trustees Of Michigan State University | Optimal construction of regenerating code through rate-matching |
CN108810063A (zh) * | 2017-11-21 | 2018-11-13 | 北京大学深圳研究生院 | 一种多云存储环境下数据的安全分发和修复方法、系统及介质 |
CN108923960A (zh) * | 2018-06-20 | 2018-11-30 | 华中科技大学 | 一种基于代理协助再生码的存储节点修复方法 |
CN109257049A (zh) * | 2018-08-09 | 2019-01-22 | 东莞理工学院 | 一种修复二进制阵列码校验矩阵的构造方法及修复方法 |
CN109257050A (zh) * | 2018-08-09 | 2019-01-22 | 东莞理工学院 | 一种修复二进制码生成矩阵构造方法及修复方法 |
Non-Patent Citations (1)
Title |
---|
MICHAEL ABEBE: "EC-Store:Bridging the Gap between Storage and Latency in Distributed Erasure Coded Systems", 《INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS(ICDCS)》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111447044B (zh) * | 2020-03-10 | 2022-12-09 | 深圳市大数据研究院 | 分布式存储方法和传输译码方法 |
CN111447044A (zh) * | 2020-03-10 | 2020-07-24 | 深圳市大数据研究院 | 分布式存储方法和传输译码方法 |
CN111475839A (zh) * | 2020-04-06 | 2020-07-31 | 华中科技大学 | 一种用于不可信环境的冗余数据编码方法、存储介质 |
CN111475839B (zh) * | 2020-04-06 | 2023-04-18 | 华中科技大学 | 一种用于不可信环境的冗余数据编码方法、存储介质 |
CN111585582A (zh) * | 2020-05-14 | 2020-08-25 | 成都信息工程大学 | 一种基于阵列运算且码距自由确定的编码方法 |
CN111585581A (zh) * | 2020-05-14 | 2020-08-25 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
CN111585582B (zh) * | 2020-05-14 | 2023-04-07 | 成都信息工程大学 | 一种基于阵列运算且码距自由确定的编码方法 |
CN111585581B (zh) * | 2020-05-14 | 2023-04-07 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
CN112713964A (zh) * | 2020-12-22 | 2021-04-27 | 潍柴动力股份有限公司 | 数据校验加速方法、装置、计算机设备及存储介质 |
CN112713964B (zh) * | 2020-12-22 | 2022-08-05 | 潍柴动力股份有限公司 | 数据校验加速方法、装置、计算机设备及存储介质 |
CN112732203B (zh) * | 2021-03-31 | 2021-06-22 | 中南大学 | 一种再生码构造方法、文件重构方法及节点修复方法 |
CN112732203A (zh) * | 2021-03-31 | 2021-04-30 | 中南大学 | 一种再生码构造方法、文件重构方法及节点修复方法 |
CN113315753A (zh) * | 2021-04-25 | 2021-08-27 | 国网浙江省电力有限公司电力科学研究院 | 基于编码技术的区块数据可信恢复方法 |
CN114237967A (zh) * | 2022-02-22 | 2022-03-25 | 阿里云计算有限公司 | 数据重构方法以及装置 |
CN114595092A (zh) * | 2022-04-28 | 2022-06-07 | 阿里云计算有限公司 | 分布式存储系统、数据重构方法、设备及存储介质 |
CN114595092B (zh) * | 2022-04-28 | 2022-09-20 | 阿里云计算有限公司 | 分布式存储系统、数据重构方法、设备及存储介质 |
WO2024037010A1 (zh) * | 2022-08-17 | 2024-02-22 | 华为技术有限公司 | 数据存储方法、装置及存储介质 |
CN117632041A (zh) * | 2024-01-25 | 2024-03-01 | 国家计算机网络与信息安全管理中心天津分中心 | 基于再生码的分布式存储方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110750382B (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750382B (zh) | 用于提高数据修复性能的最小存储再生码编码方法及系统 | |
RU2501072C2 (ru) | Распределенное хранение восстанавливаемых данных | |
CN108170555B (zh) | 一种数据恢复方法及设备 | |
CN108540520B (zh) | 基于部分重复码的局部性修复编码及节点故障修复方法 | |
JP5167243B2 (ja) | 拡張性及び耐障害性を有する記憶システムのための記憶領域割当て及び消去符号化技法 | |
CN109643258B (zh) | 使用高速率最小存储再生擦除代码的多节点修复 | |
US8171102B2 (en) | Smart access to a dispersed data storage network | |
CN107729536B (zh) | 一种数据存储方法和装置 | |
CN110427156B (zh) | 一种基于分片的mbr的并行读方法 | |
US7500054B2 (en) | Adaptive grouping in object RAID | |
CN106484559A (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
JP2018508073A (ja) | データ除去、割り当て、及び再構築 | |
US10346066B2 (en) | Efficient erasure coding of large data objects | |
CN113901069B (zh) | 一种分布式数据库的数据存储方法和装置 | |
US9489254B1 (en) | Verification of erasure encoded fragments | |
CN108762978B (zh) | 一种局部部分重复循环码的分组构造方法 | |
CN110419029B (zh) | 在分布式存储网络中部分更新数据内容的方法 | |
CN109478125B (zh) | 操纵分布式一致性协议以识别期望的存储单元集 | |
US9552254B1 (en) | Verification of erasure encoded fragments | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
CN113157715B (zh) | 纠删码数据中心机架协同更新方法 | |
CN115344214A (zh) | 数据读写方法、装置、服务器和计算机可读存储介质 | |
CN104572987A (zh) | 一种通过压缩提高简易再生码存储效率的方法和系统 | |
Yongmei et al. | Large LDPC codes for big data storage | |
CN112463435A (zh) | 一种基于数据块访问频度的局部修复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |