WO2020010505A1 - 分布式存储系统的数据同步修复方法及存储介质 - Google Patents

分布式存储系统的数据同步修复方法及存储介质 Download PDF

Info

Publication number
WO2020010505A1
WO2020010505A1 PCT/CN2018/095085 CN2018095085W WO2020010505A1 WO 2020010505 A1 WO2020010505 A1 WO 2020010505A1 CN 2018095085 W CN2018095085 W CN 2018095085W WO 2020010505 A1 WO2020010505 A1 WO 2020010505A1
Authority
WO
WIPO (PCT)
Prior art keywords
nodes
data
node
matrix
repair
Prior art date
Application number
PCT/CN2018/095085
Other languages
English (en)
French (fr)
Inventor
张婧垚
Original Assignee
深圳花儿数据技术有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 深圳花儿数据技术有限公司 filed Critical 深圳花儿数据技术有限公司
Priority to US17/059,439 priority Critical patent/US11188404B2/en
Priority to CN201880005515.7A priority patent/CN110178122B/zh
Priority to PCT/CN2018/095085 priority patent/WO2020010505A1/zh
Publication of WO2020010505A1 publication Critical patent/WO2020010505A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式存储系统的数据同步修复方法,即一种用于分布式存储系统有节点失效时,以最小修复带宽对多个故障节点进行同步修复的方法。首先选择辅助节点并从中获得辅助数据子块,然后构造与待修复节点所存储的数据块相关的修复矩阵,最终通过将修复矩阵与辅助数据子块相乘重建丢失的数据块;或者通过解码的方式重建丢失的数据块。其中,待修复节点包括全部失效的系统节点,或者全部或部分失效的校验节点。本方法适用于在保证最小修复带宽下对多个失效节点进行同步修复,并且能够根据需求选择待修复节点,以尽可能的减小修复带宽。

Description

分布式存储系统的数据同步修复方法及存储介质 技术领域
本发明涉及分布式存储领域,具体涉及一种对一个或多个失效节点进行同步修复的方法。
背景技术
分布式存储系统因其高可用性、高可扩展性以及对海量数据的高效存储能力使其在存储技术领域得到了广泛应用。但是,不可避免的在分布式存储系统中的存储节点,会由于多种原因出现故障,失去对外提供数据服务的能力,从而成为失效节点。为了保证数据的安全,以及不间断地对外提供服务,传统解决方法是采用副本或纠删码等冗余技术。相对而言,副本方式比较浪费存储空间,纠删码的空间利用率相对较高,但采用纠删码技术修复失效节点需要的网络带宽较大。具体体现在,使用纠删码技术的分布式存储系统,即使只有一个节点失效,也必须要通过网络收集到完整的数据段才能恢复出失效节点上存储的那一小部分数据块。为了解决这个问题,一种名为“再生码”(Regenerating Code)的新型编码技术应运而生。通常的再生码和纠删码一样,也具有最大距离可分(Maximum Distance Separable,MDS)的性质,不同的是,当修复失效节点时,再生码在特定的情况下只需要收集整个数据段的一小部分,因此可以大大节省网络带宽,继而显著地提高整个系统的性能。
再生码的理论框架中,关于修复所需带宽和存储空间效率之间的折中,有两个边界极值点,分别叫做“最小带宽再生”(Minimum Bandwidth Regenerating,MBR)和“最小存储再生”(Minimum Storage Regenerating,MSR),二者也分别代表了两种主要的再生码类别。在修复所需带宽和存储空间效率的折中曲线上,MBR码能达到理论上最小修复带宽的极值点,但存储效率并非最高。而MSR则能达到曲线的另一端,即在最大化存储效率的前提下最小化修复带宽。再生码还可分为精确再生码和功能再生码。当有节点失效时,前者修复出的数据块与失效节点上丢失的数据块完全相同,而后者则可能不同,仅能保持MDS和MBR/MSR的特性。
目前已有的典型的精确修复MSR码包括乘积矩阵(Product Matrix,PM)码和干扰消除(Interference Alignment,IA)码。遗憾的是,原始版本的这 两种编码只解决了对单个失效节点的修复问题。在实际的分布式存储系统中,多个节点同时出现故障是很常见的现象,因此有必要给出多节点同步修复的解决方案。在这方面已有的研究成果包括协作式同时修复策略。这种策略的特点是替换失效节点的多个新节点在恢复数据时不仅从未失效的节点上下载数据,还在彼此之间交换数据,以此来达到同时重建多个数据块的目的。采用这种方式能够降低总体的修复带宽,甚至能达到理论的下限。然而节点间的协同实现复杂度较高,而且还会增加修复所需的时间和开销。
还有的研究者提出了一种能够用于PM码和IA码的多数据块联合修复方法,该方法不需要新节点间的协作,但是需要求解很大的方程,因此实用复杂度也比较高。
发明内容
本申请提供一种使用基于干扰消除的最小存储再生码的分布式存储系统的数据同步修复方法,主要解决的技术问题是,提供一种分布式存储系统的数据修复方法,能够对分布式存储系统中的多个失效节点进行同步修复。在该修复方法中,将存储节点分为系统节点和校验节点,则实际修复的节点即待修复节点包括全部失效的系统节点和全部或部分失效的校验节点。
数据修复的过程包括如下步骤:
步骤1:从正常节点中选择辅助节点,基于待修复节点列表中失效节点的分布情况,辅助节点将编码得到的辅助数据子块和/或自己存储的数据子块发送给再生节点;
步骤2:分别构造与丢失的系统块和校验块相关的子修复矩阵;
步骤3:构造修复矩阵并对丢失的数据块进行重建。
实际修复过程中,待修复节点列表的选择应根据实际需求选择,即,当正常的校验节点较多时,则可以不修复全部丢失的数据块,而根据需要选择失效节点中的一部分节点进行修复。同时,当失效节点过多达到一定数量,应选用解码的方式重建丢失的数据块。
本发明的有益效果是:使用基于干扰消除的最小存储再生码的分布式存储系统的数据同步修复方法,能够在保证最小修复带宽下对一个或多个失效节点进行同步修复,并且能够根据需求选择待修复节点,以尽可能的减小修复带宽以及修复所需的时间和开销。
附图说明
图1为数据同步修复的系统模型;
图2为校验码的子修复矩阵计算过程示意图;
图3为修复矩阵计算过程示意图;
图4为多数据同步修复算法流程图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本发明提供了一种分布式存储系统的数据同步修复方法,将存储节点分为系统节点和校验节点,并分别构造与丢失的数据块相关的子修复矩阵,继而确定修复矩阵并通过将辅助数据子块与修复矩阵相乘最终得到丢失的数据块,完成数据修复,该方法能够对分布式存储系统中一个或多个失效节点进行同步修复。
本发明中提供了两种数据修复模式。一种是中心模式,即存在一个“代理”节点,负责收集通过辅助节点编码得到的辅助数据或辅助节点自己存储的数据,然后构造修复矩阵并重建丢失的数据块,最后将修复好的数据传送到对应的新节点上。另一种是分布式模式,即新节点自己对辅助节点编码得到的辅助数据或辅助节点自己存储的数据进行收集,然后构造修复矩阵并重建丢失的数据块,需要指出的是,新节点只负责对自己所替代的失效节点上丢失的数据进行重建。这两种修复模式各有优缺点和适用场合, 使用基于干扰消除的最小存储再生码的分布式存储系统的数据修复方法适用于这两种修复模式。在任何一种模式下,特别是在分布模式下,再生节点可能不需要恢复出所有丢失的数据块。再生节点指的是中心模式下的代理节点或分布模式下的新节点。理论上已经证明,在有足够多的幸存节点的前提下,需要恢复的数据块的数量越少,所需的修复带宽越小。但我们的研究发现,对于IA码来说,所有的丢失的系统块都必须被同步修复,否则无法生成修复矩阵,进而导致修复失败。为此,本发明还提供一种辅助节点的选择方法,以在保证数据被成功重建的前提下,尽可能的降低修复带宽。
为了让论述清晰和简洁,这里首先给出本发明中要用到的系统模型和符号。一个IA码用C(n,k,d)表示,其中n是存储节点的总数,k是存放原始数据块的“系统节点”的数量,剩余的m=n-k个节点是存放编码数据块的“校验节点”的数量。d为“修复度”,指的是当全部n个节点中只有一个失效时,修复所需要的辅助节点的数目。并且,IA码要求n≥2k以及d≥2k-1。
根据IA码的构造方式,编码时首先将长度为B的数据被等分成k块,然后编码成n个数据块,分别用b 1,b 2,...,b n表示,其数据块编号分别为1,2,...,n。每个数据块b i包含α个数据子块b i=[b i1,b i2,…,b ]。根据MSR码的相关理论,IA码满足下面的关系式:
α=d-k+1    (1)
由于IA码是一种系统码其前k个数据块B=[b 1,b 2,...,b k] T是原始的未编码数据,也称为系统块,后m=n-k个数据块为校验块,用C=[c 1,c 2,...,c m] T=[b k+1,b k+2,...,b n] T表示。因此整段数据事实上被分成kα个系统子块,然后再编成mα个校验子块,最后总共得到nα个子块。IA码的构造公式和相应的符号如下式:
C=GB    (2)
其中,编码矩阵为:
Figure PCTCN2018095085-appb-000001
需要注意的是这里所有的计算都是在有限域GF(q)上进行的。其中,编码子阵表示为:
Figure PCTCN2018095085-appb-000002
p ji是m×m矩阵P的第j行第i列位置上的元素,P为满足所有编码子阵 均可逆的矩阵,例如Cauchy矩阵或者Vardermonde矩阵。令U=[u 1,u 2,...,u m]和V=[v 1,v 2,...,v m]两者皆为m×m可逆矩阵,并使得:
U=κ -1V'P    (5)
其中,V'=(V -1) T是V的对偶基,κ∈GF(q)且满足1-κ 2≠0。(4)式中的
Figure PCTCN2018095085-appb-000003
Figure PCTCN2018095085-appb-000004
分别是截取u i和v j的前α个元素组成的子向量。I是α×α维单位向量,因此(4)中的G ij也是α×α矩阵。
图1给出了基于IA码对失效节点存储数据块进行同步修复的系统模型。在图示的分布式存储系统中,共有n个节点,分别用N={N i|i=1,...,n}表示。注意这里的节点可以是物理上,也可以是逻辑上的,也就是说,多个节点可以位于一个或多个物理机器上,并且不影响本发明的有效性。每个节点N i上存储一个数据块b i,那么N 1,N 2,.....,N k是存放系统块的系统节点,而N k+1,.....,N n则是存放校验块的校验节点。假设有t 1个系统节点和t 2个校验节点失效,其中t 1,t 2≥0,并且失效节点的总数t=t 1+t 2≥1。基于系统节点之间和校验节点之间都是对等的,可以不失一般性地假定失效节点是
Figure PCTCN2018095085-appb-000005
Figure PCTCN2018095085-appb-000006
如图1所示。再生节点从k-t 1个正常的系统节点和m-k 2个正常的校验节点处获得辅助数据,然后将失效节点上丢失的数据块重建出来。这些提供辅助数据子块的正常节点统称为“辅助节点”。
在将辅助数据子块传输给再生节点之前,辅助节点需要先对自己拥有的数据块进行编码,编码的方式是计算α个数据子块与编码向量在GF(q)上的内积。如果系统块b i丢失,则编码向量为
Figure PCTCN2018095085-appb-000007
即V'的第i列的前α个元素组成的向量。反之如果校验块c i丢失,对应的编码向量则为
Figure PCTCN2018095085-appb-000008
如果V为正交矩阵,则有V'=V以及
Figure PCTCN2018095085-appb-000009
进一步地,如果V是单位矩阵,则有:
Figure PCTCN2018095085-appb-000010
其中,e i是一个单位向量,其第i个元素是1,其余的元素皆为0。在这种情况下,如果丢失的是系统块,辅助节点无需编码,只需将第i个数据子块传送给再生节点即可,因此可以省去计算的开销并降低实现的复杂度。由于在实际的存储系统中,系统块在读写操作中用到的比较多,在修复中具有较高的优先级,因此这种V=I的编码具有很大的实用价值。所以在本发明中,我们主要考虑此类IA码。在下面叙述的实施例中如果没有特别说明,均假定V=I。
在本实施例中,再生节点通过修复矩阵来恢复丢失的数据块。修复矩阵的构造过程如下:
不失一般性,我们假定系统块
Figure PCTCN2018095085-appb-000011
和校验块
Figure PCTCN2018095085-appb-000012
丢失,对应的失 效节点的编号为
Figure PCTCN2018095085-appb-000013
如果实际上丢失的数据块并不是前t 1个系统块和前t 2个校验块,只需将数据块的编号和编码矩阵的行和列重新排列,将丢失的系统块和校验块映射到最前面的位置即可。定义实际修复的节点组成待修复节点列表,令r表示待修复节点列表中节点的数量,假设需要修复全部t个失效节点,则r=t,且待修复节点列表包括失效的t 1个系统节点,以及失效的t 2个校验节点,从剩余k-t 1个系统节点和另外α-t 2个正常的校验节点选取辅助节点,其中辅助节点的总数为d-t+1。由于系统节点之间和校验节点之间都是对等的,选择哪些系统节点和校验节点都是可以的。为了叙述简单,这里不失一般性地选择系统节点
Figure PCTCN2018095085-appb-000014
和校验节点
Figure PCTCN2018095085-appb-000015
作为辅助节点。所有正常的系统节点都必须被选作辅助节点,当打算修复的节点数量小于t时,如何选取辅助节点等辅助节点的选择方法会在后面做进一步的介绍。
首先考虑构造与丢失的系统块相关的子修复矩阵。对于一个丢失的系统块b i,每个辅助节点N j对自己的数据块进行编码得到
Figure PCTCN2018095085-appb-000016
由此可以得到辅助数据组成的向量
Figure PCTCN2018095085-appb-000017
然后构造如下α×(tα)矩阵:
Figure PCTCN2018095085-appb-000018
式(7)中最后的t 2α列包含t 2个成上三角排列的
Figure PCTCN2018095085-appb-000019
然后构造如下的α×(d-t+1)矩阵:
Figure PCTCN2018095085-appb-000020
矩阵Γ i的右下角处是一个(α-t 2)×(α-t 2)的单位阵。
以上为所有与丢失系统块相关的子修复矩阵的构造情况,下面考虑构造与丢失的校验块相关的子修复矩阵。
对于一个丢失的校验块c i,每个辅助节点N j对自己的数据块进行编码得到
Figure PCTCN2018095085-appb-000021
由此可以得到辅助数据组成的向量
Figure PCTCN2018095085-appb-000022
然后按照下式计算α×d矩阵Ψ i
Figure PCTCN2018095085-appb-000023
式(9)等号右侧由两部分组成,左边中括号中矩阵的最后α-1列由两个单位矩阵组成:一个是位于左上角的i-1维单位矩阵,另一个是位于右下角的α-i维单位矩阵;右边中括号中的矩阵左上角是一个k×k单位矩阵,其余的元素全部为0。
下面利用Ψ i计算c i对应的子修复矩阵,如图2所示。用ψ ij表示Ψ i的第j列,令J i={j|j=1,...,t 1,k+1,...,k+t 2-1}表示Ψ i中与除了c i以外的丢失块对应的列的编号,并将Ψ i去掉编号为J i的那些列后剩余的部分用
Figure PCTCN2018095085-appb-000024
表示。对每一个j∈J i,计算下式:
Figure PCTCN2018095085-appb-000025
然后令:
Figure PCTCN2018095085-appb-000026
以上为所有与丢失的校验块相关的子修复矩阵。
现在将前面得到的所有子修复矩阵合在一起,组成如下的等式:
Figure PCTCN2018095085-appb-000027
Figure PCTCN2018095085-appb-000028
则如果Ξ可逆,则可得到修复矩阵如下所示:
R=Ξ -1Θ    (13)
然后将修复矩阵R和辅助数据子块相乘,即可以重建出丢失的数据块。
如果实际上丢失的数据块并不是前t 1个系统块和前t 2个校验块,修复矩阵仍然可以通过上述方式来计算,只需将数据块的编号和编码矩阵的行和列重新排列,将丢失的系统块和校验块映射到最前面的位置即可。
从上面的叙述可以看出,使用本发明提出的数据同步修复方法,重建t个丢失的数据块共需要辅助数据子块数量为:
W=t(d-t+1)    (14)
因此本发明提出的方法达到了多数据同时修复所需带宽的理论下限。此外,使用本发明的方法只在t<min{k,α}的情况下能节省带宽。当t≥min{k,α}时,可以采用解码的方式,即先从辅助节点下载整段数据,再解码出原始数据,然后再用编码的方式来重建丢失的数据块。根据IA码要求d>2k-1和α≥k,可以得到min{k,α}=k。因此如果是出于节省带宽的目的,本发明所述方法只适用于t<k的情形。
对于某些失效节点的组合,Ξ可能不可逆,所以无法按照(13)式计算修复矩阵。遇到这种情况,可以向待修复节点列表中增加一个或若干个节点,增加的节点可以是失效节点也可以是正常节点,或者将某些待修复节点换成其他节点,用于替换之前确定的待修复节点的替换节点同样可以是失效节点也可以是正常节点,以使Ξ变为可逆矩阵,或者使用解码的方式来重建丢失数据。
修复矩阵的计算过程如图3所示,具体总结如下:
第1步,对每一个1≤i≤t 1
按照式(7)计算Φ i
按照式(8)计算Γ i
第2步,对每一个1≤i≤t 2
按照(9)计算Ψ i
对每一个j∈J i
按照(10)计算Ω i,j
按照(11)构造矩阵Δ i
Figure PCTCN2018095085-appb-000029
第3步,将上面得到的所有Φ i,Γ i,Δ i
Figure PCTCN2018095085-appb-000030
按照(12)式的方式组合,并构造出Ξ和Θ。
第4步,判断Ξ是否可逆。如果可逆,按照(13)式计算修复矩阵R。
根据上面的叙述,如果要修复全部t个失效节点,仅需要s=d-t+1个辅助节点,其中k-t 1个是系统节点,其余d-t+1-(k-t 1)=α-t 2个是校验节点。根据IA码的性质,满足n≥2k以及d≥2k-1,因此在一个系统中可能有多于 α-t 2个正常的校验节点。根据IA码编码矩阵的构成方式,所有的校验节点都是对等的。所以可以从全部n-k-t 2个正常的校验节点中选择任意α-t 2个作为辅助节点,只要Ξ可逆。
进一步地,在另一个实施例中,如果有足够多的正常校验节点,可以不必修复全部丢失的校验块,而是根据需要选择t 2'<t 2个失效的校验节点进行修复。在一些情形中,比如在分布式的修复模式下,这样做可以减少修复带宽。但是当将同样的做法用于系统节点时,无法生成修复矩阵,也就是说在使用基于IA码的最小存储再生码通过修复矩阵对失效数据进行重建时,所有的失效系统节点必须被同时修复。因此,如果一个再生节点仅打算重建t 1'≤t 1个系统块和t 2'≤t 2个校验块,实际操作时则至少要同时修复r=t 1+t 2'个数据块,其中包含t 1个系统块和t 2'个校验块。当前系统中一共有k-t 1个正常的系统节点和m-t 2个正常的校验节点。考虑到式(14),此时需要从正常校验节点中选择d-(t 1+t 2')+1-(k-t 1)=α-t 2'个节点作为辅助节点。如果没有这么多正常的校验节点,即m-t 2<α-t 2',那么还需要将另外α-t 2'-(m-t 2)个失效的校验节点加入到待修复数据块列表中,因此总共需要同步修复r=t 1+t 2'+α-t 2'-(m-t 2)=t 1+t 2+d+1-n个节点。在上述两种情况下,均需要d-r+1个辅助节点,而且每个辅助节点应提供r个针对丢失的系统块的未编码和/或针对丢失的校验块的编码的辅助数据子块。根据上面的描述,需要的辅助数据子块的总数如下式(15)所示:
Figure PCTCN2018095085-appb-000031
如果满足式(15)中描述的前两种情况,则可以使用上面提出的数据同步修复方法以节省修复带宽,使用的时候应首先选择所有的正常系统节点作为辅助节点,然后再根据(15)式和上面的分析选择合适数量的正常校验节点作为辅助节点。如果失效节点比较少,那么在V=I的情况下,辅助节点可以全部选为系统节点,继而可以不用对数据进行编码而将自己存储的数据直接发送给再生节点,此种情况会大大降低计算的复杂度。当前两种情况都不满足的情况下,需要用解码的方式来恢复数据。需要指出的是应用本发明给出的使用IA码的多数据块同步修复方法,实际重建出的数据块的数量可能与再生节点打算重建的数量不同。
基于前面的叙述,在本申请的另一个实施例中给出完整的使用IA码的 多数据块同步修复方法,如图4所示,具体过程如下。需要说明的是式(15)中的第4种情形是丢失数据无法恢复的情况,为了简洁起见,下面的叙述中对这种情况将不再予以阐述。
步骤001:检测各个参数的大小,对照式(15)判断数据修复适用情况,
如果符合第1种情形:
步骤110:设r=t 1+t 2',选择全部k-t 1个正常的系统节点和任意α-t 2'个正常的校验节点作为辅助节点;
步骤120:根据图3所示步骤计算Ξ;
步骤130:判断Ξ是否可逆。
如果Ξ可逆,则:
步骤131:通知每个辅助节点向再生节点提供r个针对丢失的系统块的未编码和/或针对丢失的校验块的编码辅助数据子块;
步骤132:再生节点等待,直到收到全部的辅助数据子块;
步骤133:按照图3所示步骤计算修复矩阵;
步骤134:将修复矩阵与辅助数据子块相乘,重建丢失的数据块。
如果Ξ不可逆,则执行步骤310,或者执行步骤135或步骤136:
步骤135:向待修复节点列表中增加一个节点,令r=r+1,重新计算Ξ,如果Ξ可逆,执行步骤131,否则执行步骤310,或步骤135,或步骤136。
步骤136:更换待修复节点列表中的一个节点,重新计算Ξ,如果Ξ可逆,执行步骤131,否则执行步骤310,或步骤135,或步骤136。
如果在执行步骤135和步骤136过程中,已经穷尽r<k的所有可能性,则执行步骤310。
如果符合第2种情形:
步骤210:除了t 1个丢失的系统块和t 2'个丢失的校验块,再另选α-t 2'-m+t 2个丢失的校验块放入待修复节点列表中,令r=t 1+t 2+d+1-n;
步骤220:将所有的正常节点选为辅助节点;
然后执行步骤120和步骤130,重建丢失的数据块。
如果符合第3种情形:
步骤310:从正常节点中选择k个节点作为辅助节点,再生节点向辅助节点发送请求,要求所有辅助节点都提供1个未编码的数据块;
步骤320:再生节点等待,直到收到全部的辅助数据块;
步骤330:对收到的辅助数据块进行解码得到原始数据段;
步骤340:对原始数据段进行编码,重建丢失的数据块。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,其包括能够被处理器执行的程序。存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在计算机的存储器中,通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体实施例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

Claims (8)

  1. 一种分布式存储系统的数据同步修复方法,所述系统使用基于干扰消除的最小存储再生码C(n,k,d)对需要存储的数据进行编码,
    其中k表示将数据等分成k块,然后编码成n段数据块,分别用b 1,b 2,...,b n表示,每段数据块包含α个子块,α=d-k+1,d为修复度,前k段数据块B=[b 1,b 2,...,b k] T为系统块,剩下的m=n-k段数据块C=[c 1,c 2,...,c m] T=[b k+1,b k+2,...,b n] T为校验块,则C=GB,G为编码矩阵,且每个编码子阵为
    Figure PCTCN2018095085-appb-100001
    p ji是m×m矩阵P的元素,
    Figure PCTCN2018095085-appb-100002
    Figure PCTCN2018095085-appb-100003
    分别是截取u i和v j的前α个元素组成的子向量,U=[u 1,u 2,...,u m]和V=[v 1,v 2,...,v m]皆为m×m可逆矩阵,
    其特征在于,所述数据同步修复方法包括如下步骤:
    步骤1:从辅助节点获取辅助数据子块:
    用N={N i|i=1,...,n}表示n个存储节点,有t 1个系统节点和t 2个校验节点失效,失效节点总数t=t 1+t 2≥1,用
    Figure PCTCN2018095085-appb-100004
    Figure PCTCN2018095085-appb-100005
    分别表示失效的所述系统节点和所述校验节点,然后从正常节点中选择所述辅助节点,
    定义实际修复的节点组成待修复节点列表,则所述待修复节点列表包括失效的t 1个所述系统节点,以及失效的t 2个所述校验节点中的全部或部分节点,优选的下面以修复全部t=t 1+t 2个失效节点为例对所述数据同步修复方法进行描述,
    对于每个丢失的系统块b i,每个所述辅助节点N j对自己的数据块编码得
    Figure PCTCN2018095085-appb-100006
    由此得所述辅助数据子块组成的向量
    Figure PCTCN2018095085-appb-100007
    对于每个丢失的校验块c i,每个所述辅助节点N j对自己存储的数据块编码得
    Figure PCTCN2018095085-appb-100008
    由此得所述辅助数据子块组成的向量
    Figure PCTCN2018095085-appb-100009
    将所述辅助数据子块发送至再生节点;
    步骤2:构造与丢失的数据块相关的子修复矩阵:
    a)构造与丢失的系统块相关的子修复矩阵:
    构造α×(tα)矩阵:
    Figure PCTCN2018095085-appb-100010
    其中最后的t 2α列包含t 2个成上三角排列的
    Figure PCTCN2018095085-appb-100011
    构造α×(d-t+1)矩阵:
    Figure PCTCN2018095085-appb-100012
    其右下角处是一个(α-t 2)×(α-t 2)的单位阵,
    b)构造与丢失的校验块相关的子修复矩阵:
    构造α×d矩阵Ψ i
    Figure PCTCN2018095085-appb-100013
    等号右侧由两部分组成,左边中括号中矩阵的最后α-1列由两个单位矩阵组成,右边中括号中的矩阵左上角是一个k×k维单位矩阵,其余的元素全部为0,
    利用Ψ i构造与c i对应的子修复矩阵:
    对每一个j∈J i,计算
    Figure PCTCN2018095085-appb-100014
    其中ψ ij表示Ψ i的第j列,J i={j|j=1,...,t 1,k+1,...,k+t 2-1}表示Ψ i中与除了c i以外的丢失块对应的列的编号,
    然后令
    Figure PCTCN2018095085-appb-100015
    将Ψ i去掉编号为J i的列后剩余的部分用
    Figure PCTCN2018095085-appb-100016
    表示;
    步骤3:构造修复矩阵并对丢失数据块进行重建:
    将步骤2中得到的子修复矩阵组合,得:
    Figure PCTCN2018095085-appb-100017
    Figure PCTCN2018095085-appb-100018
    则修复矩阵为:R=Ξ -1Θ,然后将所述修复矩阵与所述辅助数据子块相乘即可重建出丢失的数据块。
  2. 如权利要求1所述的方法,其特征在于,所述待修复节点列表包括失效的t 1个系统节点,以及失效的t 2个校验节点中的部分节点,计划修复的失效节点的数量为t 2',则根据正常校验节点的数量,确定所需辅助节点的数量为d-r+1,其中r=t 1+t 2’或r=t 1+t 2+d+1-n为所述待修复节点列表中节点的数量。
  3. 如权利要求1所述的方法,其特征在于,
    Figure PCTCN2018095085-appb-100019
    Figure PCTCN2018095085-appb-100020
    分别表示失效的所述系统节点和所述校验节点,并不是表示失效的节点是前t 1个所述系统节点和前t 2个所述校验节点的情景,所述方法适用于失效节点位于任意排序位置节点的情景。
  4. 如权利要求1所述的方法,其特征在于,V为单位矩阵。
  5. 如权利要求1所述的方法,其特征在于,所述修复矩阵适用于t<k,对于t≥k的情形,用解码的方式重建丢失的数据:即先下载整段数据,再解码出原始数据,然后再用编码的方式来重建丢失的数据块。
  6. 如权利要求1所述的方法,其特征在于,Ξ为可逆矩阵,或通过向待修复节点列表中增加节点使Ξ变为可逆,或者将某些待修复节点替换成其他节点使Ξ变为可逆;否则用解码的方式重建丢失的数据。
  7. 如权利要求1所述的方法,其特征在于,所述再生节点为中心模式下的代理节点或分布模式下的新节点。
  8. 一种计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行实现如权利要求1至7任意一项所述的方法。
PCT/CN2018/095085 2018-07-10 2018-07-10 分布式存储系统的数据同步修复方法及存储介质 WO2020010505A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/059,439 US11188404B2 (en) 2018-07-10 2018-07-10 Methods of data concurrent recovery for a distributed storage system and storage medium thereof
CN201880005515.7A CN110178122B (zh) 2018-07-10 2018-07-10 分布式存储系统的数据同步修复方法及存储介质
PCT/CN2018/095085 WO2020010505A1 (zh) 2018-07-10 2018-07-10 分布式存储系统的数据同步修复方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/095085 WO2020010505A1 (zh) 2018-07-10 2018-07-10 分布式存储系统的数据同步修复方法及存储介质

Publications (1)

Publication Number Publication Date
WO2020010505A1 true WO2020010505A1 (zh) 2020-01-16

Family

ID=67689272

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2018/095085 WO2020010505A1 (zh) 2018-07-10 2018-07-10 分布式存储系统的数据同步修复方法及存储介质

Country Status (3)

Country Link
US (1) US11188404B2 (zh)
CN (1) CN110178122B (zh)
WO (1) WO2020010505A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986362A (zh) * 2021-10-22 2022-01-28 山东云海国创云计算装备产业创新中心有限公司 一种raid卡及其控制方法、服务器主机

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110168505B (zh) * 2018-07-10 2022-10-21 深圳花儿数据技术有限公司 分布式存储系统的数据修复方法及存储介质
CN110780813B (zh) * 2019-10-09 2023-08-08 嘉应学院 一种基于二元域上子空间码的分布式存储系统
CN110704232B (zh) * 2019-10-10 2023-03-14 广东工业大学 一种分布式系统中失效节点的修复方法、装置和设备
CN112445656B (zh) * 2020-12-14 2024-02-13 北京京航计算通讯研究所 分布式存储系统中数据的修复方法及装置
CN113721848B (zh) * 2021-08-19 2024-02-09 华中科技大学 一种基于纠删码的多节点调度修复方法及系统
CN114442950B (zh) * 2022-01-21 2024-01-23 山东云海国创云计算装备产业创新中心有限公司 一种数据恢复方法、系统、装置及计算机可读存储介质
CN114595092B (zh) * 2022-04-28 2022-09-20 阿里云计算有限公司 分布式存储系统、数据重构方法、设备及存储介质
CN115993941B (zh) * 2023-03-23 2023-06-02 陕西中安数联信息技术有限公司 分布式数据存储纠错方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130073896A1 (en) * 2011-09-19 2013-03-21 Thomson Licensing Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device
CN103729151A (zh) * 2014-01-16 2014-04-16 中国人民解放军国防科学技术大学 一种基于改进型纠删码的失效数据修复方法
CN105260259A (zh) * 2015-09-16 2016-01-20 长安大学 一种基于系统最小存储再生码的局部性修复编码方法
CN106776129A (zh) * 2016-12-01 2017-05-31 陕西尚品信息科技有限公司 一种基于最小存储再生码的多节点数据文件的修复方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101714915B (zh) * 2009-11-02 2013-03-27 清华大学 一种数据重传方法及系统
US8631269B2 (en) * 2010-05-21 2014-01-14 Indian Institute Of Science Methods and system for replacing a failed node in a distributed storage network
US9722637B2 (en) * 2013-03-26 2017-08-01 Peking University Shenzhen Graduate School Construction of MBR (minimum bandwidth regenerating) codes and a method to repair the storage nodes
US10073738B2 (en) * 2015-08-14 2018-09-11 Samsung Electronics Co., Ltd. XF erasure code for distributed storage systems
WO2017041231A1 (zh) * 2015-09-08 2017-03-16 广东超算数据安全技术有限公司 一种精确修复的二进制再生码编解码

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130073896A1 (en) * 2011-09-19 2013-03-21 Thomson Licensing Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device
CN103729151A (zh) * 2014-01-16 2014-04-16 中国人民解放军国防科学技术大学 一种基于改进型纠删码的失效数据修复方法
CN105260259A (zh) * 2015-09-16 2016-01-20 长安大学 一种基于系统最小存储再生码的局部性修复编码方法
CN106776129A (zh) * 2016-12-01 2017-05-31 陕西尚品信息科技有限公司 一种基于最小存储再生码的多节点数据文件的修复方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986362A (zh) * 2021-10-22 2022-01-28 山东云海国创云计算装备产业创新中心有限公司 一种raid卡及其控制方法、服务器主机
CN113986362B (zh) * 2021-10-22 2024-01-23 山东云海国创云计算装备产业创新中心有限公司 一种raid卡及其控制方法、服务器主机

Also Published As

Publication number Publication date
US20210216390A1 (en) 2021-07-15
CN110178122A (zh) 2019-08-27
CN110178122B (zh) 2022-10-21
US11188404B2 (en) 2021-11-30

Similar Documents

Publication Publication Date Title
WO2020010505A1 (zh) 分布式存储系统的数据同步修复方法及存储介质
US9647698B2 (en) Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
US9722637B2 (en) Construction of MBR (minimum bandwidth regenerating) codes and a method to repair the storage nodes
US11500725B2 (en) Methods for data recovery of a distributed storage system and storage medium thereof
CN109491835B (zh) 一种基于动态分组码的数据容错方法
WO2013191658A1 (en) System and methods for distributed data storage
WO2010133080A1 (zh) 基于(d,k)摩尔图的网络存储结构的数据存储方法
CN103106124B (zh) 一种基于纠删码集群存储系统的交叉重构方法
CN108347306B (zh) 分布式存储系统中类局部重构码编码及节点故障修复方法
CN110190926B (zh) 基于网络计算的纠删码更新方法及系统
CN106484559A (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
WO2015180038A1 (zh) 部分复制码的构建方法、装置及其数据修复的方法
WO2016058262A1 (zh) 一种基于二进制域里德所罗门码的数据编解码方法
CN112799875A (zh) 基于高斯消元进行校验恢复的方法、系统、设备及介质
WO2014019549A1 (zh) 编解码处理方法及装置
CN103544270A (zh) 面向数据中心的通用化网络编码容错存储平台及工作方法
CN113258936B (zh) 一种基于循环移位的双重编码的构造方法
WO2014059651A1 (zh) 一种射影自修复码的编码、数据重构及修复方法
CN108647108B (zh) 一种基于循环vfrc的最小带宽再生码的构造方法
CN110781025B (zh) 基于完全图的对称部分重复码构造及故障节点修复方法
WO2018209541A1 (zh) 基于t-设计的部分重复码的编码结构以及构造方法
CN112000278B (zh) 一种热数据存储的自适应局部重构码设计方法及云存储系统
JP2012033169A (ja) バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置
Xu et al. CRL: Efficient Concurrent Regeneration Codes with Local Reconstruction in Geo-Distributed Storage Systems
CN110209670A (zh) 基于网络存储设备集群的数据处理方法及装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18926193

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 13.04.2021)

122 Ep: pct application non-entry in european phase

Ref document number: 18926193

Country of ref document: EP

Kind code of ref document: A1