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

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

Info

Publication number
CN110168505B
CN110168505B CN201880005531.6A CN201880005531A CN110168505B CN 110168505 B CN110168505 B CN 110168505B CN 201880005531 A CN201880005531 A CN 201880005531A CN 110168505 B CN110168505 B CN 110168505B
Authority
CN
China
Prior art keywords
data
nodes
auxiliary
node
blocks
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.)
Active
Application number
CN201880005531.6A
Other languages
English (en)
Other versions
CN110168505A (zh
Inventor
张婧垚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Huaer Data Technology Co Ltd
Original Assignee
Shenzhen Huaer Data Technology Co Ltd
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 Shenzhen Huaer Data Technology Co Ltd filed Critical Shenzhen Huaer Data Technology Co Ltd
Publication of CN110168505A publication Critical patent/CN110168505A/zh
Application granted granted Critical
Publication of CN110168505B publication Critical patent/CN110168505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/0793Remedial or corrective actions
    • 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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式存储系统的数据修复方法,即一种用于分布式存储系统有节点失效时,以最小可行带宽同时恢复多个故障节点的方法。通过选择辅助节点并用选中的辅助节点计算得到辅助数据子块,然后计算修复矩阵(106)并最终通过修复矩阵与辅助数据子块相乘重建丢失的数据块(107),或者通过解码的方法重建丢失的数据块的方法。本方法适用于任何数量的失效节点和任意编码参数情况下的数据修复,修复方法达到最小修复带宽的理论下限,灵活性高且易于实现。

Description

分布式存储系统的数据修复方法及存储介质
技术领域
本发明涉及分布式存储领域,具体涉及用于乘积矩阵最小存储再生码的数据修复方法。
背景技术
近年来随着互联网,大数据和云计算等新兴技术的飞速发展,对海量数据存储的需求也激增,使得分布式数据存储系统日益成为存储技术的主流。相比于单节点存储系统,分布式存储系统具有更高的可靠性、可用性和可扩展性。在分布式存储系统中,可能会有一个或若干个节点发生故障。在这种情况下,可以通过副本或纠删码等冗余技术来保证整个系统的服务不被中断。相比于简单的复制数据,纠删码的空间利用率相对较高,因此在业界被广泛使用。例如微软的Azure和OceanStore等分布式存储系统均采用了纠删码。而纠删码中的最大距离可分码(Maximum Distance Separable,MDS)由于能够最大化空间利用率,尤其为业界所重视。
当有节点发生故障时,分布式存储系统应当及时恢复出丢失的数据,以保持系统的冗余度,并避免长时间的“降阶读取”,即通过读取多个非原始的数据片段然后通过某种方法计算出所需的数据。这一过程通常通过替换或修复失效的节点,并在新节点上执行数据恢复操作来完成。由于一开始这些新节点对丢失的数据内容一无所知,它们需要从其他的未发生故障的节点处获得“辅助数据”(Helper Data),而这些提供辅助数据的节点被称为“辅助节点”(Assistant Node)。在一个比较繁忙的存储系统中,包括传输辅助数据在内的数据修复所需的带宽,简称“修复带宽”,其对整个系统的性能有至关重要的影响。因此,使修复带宽最小化是分布式存储系统设计优化的必要考量。基于网络编码思想的再生码恰好能够达到这一目标。其中,最小存储再生码(Minimum Storage Regenerating Code,MSR)作为一类在最小化修复带宽的同时,还能最大化空间利用率的再生码,具有十分重要的价值。
采用乘积矩阵(Product Matrix,PM)的MSR码构造简单巧妙,是一种重要的最小存储再生码。遗憾的是,原始的PM MSR码仅给出了单节点失效情况下的修复方法。而在实际工程中,经常会有多个节点同时失效的情况出现。针对这种情况,一种解决办法是像处理单节点失效那样,一个节点接一个节点地修复,这个方法虽然简单直接,但是会浪费带宽。另一种思路是,对多个失效节点进行联合修复,从而使整体所需的带宽最小化。该思路的另一个好处是,不必在节点失效时马上进行修复,可以等失效节点的数量达到某一个阈值,或者降阶读取持续了某一特定时间后再启动修复,这样可以进一步降低修复的开销。
一些现有的研究对这个问题进行了多方面的考虑,提出了一种采用“虚拟符号”的方法,能够同时修复多个失效节点,还证明了同时修复所需的最小带宽的下限。但是这种方法通常需要对复杂的方程组进行求解,运算开销巨大且难以实施。还有的研究人员提出了由代理协助的最小存储再生码,使用这种码进行修复时,辅助节点传输辅助数据之前无需对数据进行编码。但是这种码只能处理有1或2个失效节点的情形。针对任意失效节点数目和任意编码参数的联合修复方案仍未被提出。
另一类多数据块同时修复方法采用了节点间协作的策略。这类方法首先让新节点从正常节点下载辅助数据,然后在新节点之间交换数据。通过巧妙地设计编码的结构,可以减小修复带宽,甚至达到理论的下限。尽管这类方法从理论上可以使修复带宽最小化,实际应用却面临很大难度。这种“先下载-再交换”的方式增加了修复所需的时间和各种开销,需要复杂的协议来控制且容易出错。
从工程实现的角度讲,数据修复方法可分为两类:集中式和分布式。前者通常会指定一个代理节点,由代理节点负责收集辅助数据,重建丢失的数据并最终将修复好的数据传送到新的节点上。后者则相反,没有代理节点协助,由新节点自身负责收集和重建数据。也可以将二者结合起来,例如前面提到的节点间协作策略,但这样做复杂度较高。绝大多数已有的研究成果都采用了集中式修复,且只考虑了采集辅助数据所需的带宽。但实际上将重建的数据上传到新节点上也需要消耗带宽。这一点在已有的方法中并未考虑。有一些研究探讨了网络拓扑结构对修复带宽和修复策略的影响,但只在一些简单的拓扑结构,如直线级联,星形和网格结构上,获得了准确的数学表达式。
此外,现有的数据修复策略在重建数据的时候都使用了尽可能多的辅助节点,以达到降低修复带宽的目的。理论上也证明了,当系统中除失效节点外所有的正常节点,或称“幸存节点”都作为辅助节点参与数据重建时,所需的带宽最小。但在实际系统中,使用更多的辅助节点意味着更大的延迟和开销,因此在综合考虑多方面性能的情况下,使用的辅助节点数目并非越多越好。
发明内容
本申请提供一种用于乘积矩阵的最小存储再生码的分布式存储系统的数据修复方法,要解决的技术问题是,提供一种分布式存储系统的数据修复方法,能够对分布式存储系统中的多个失效节点进行同时修复。
一种分布式存储系统的数据修复方法,用于分布式存储系统有节点失效时的数据修复过程,分布式存储系统采用分布式存储系统的编码方法。本申请中提供了两种使用乘积矩阵的最小存储再生码(PM MSR)的数据修复方法,分别为集中式和分布式。在集中式数据修复模式下,根据失效节点数量选取辅助节点,辅助数据子块的收集、修复矩阵运算和重建丢失数据块过程由中心代理节点完成;在分布式模式下,根据失效节点数量选取辅助节点,每个新节点重建其所替换的失效节点上存储的数据块,辅助数据子块收集、修复矩阵运算和重建丢失数据块过程由新节点完成。
数据修复过程包括如下步骤:
步骤1:从正常节点中选取辅助节点,用辅助节点计算得到辅助数据子块,并将辅助数据子块发送给重建数据的节点,所选取的辅助节点的数量与待修复的失效节点的数量有关;
步骤2:根据PM MSR码和丢失的数据信息,计算修复矩阵;
步骤3:通过将修复矩阵与辅助数据子块相乘得到丢失的数据块,完成数据块重建。
在实际操作过程中,为了得到修复矩阵,需要向丢失列表中增加未包含丢失数据块的节点信息,或用未包含丢失数据块的节点信息替换原丢失列表中的节点信息。例如在分布式模式下,一个新节点不仅可以重建自己所替换的失效节点上存储的数据块,还可能同时重建其他新节点所需的数据块。这种情况下,该新节点可以选择将额外重建的数据块发送给需要的其他新节点,以免这些新节点自己去重建这些数据块。这样可以进一步降低修复带宽和计算开销,
本发明的有益效果是:通过使用乘积矩阵的最小存储再生码提供的分布式存储系统的数据修复方法,能够同时重建一个或多个数据块,克服了最小修复带宽理论下限难以实现的困难,同时不需要在新节点之间交换数据,能够在任意数量的失效节点和任意编码参数的情况下对数据进行修复。
附图说明
图1为数据块修复计算过程的流程图;
图2为集中式修复模式下数据修复的系统模型图;
图3为分布式修复模式下数据修复的系统模型图;
图4为修复矩阵的左侧子矩阵的计算过程图;
图5为修复矩阵的右侧子矩阵的计算过程图;
图6为集中式修复模式下数据修复算法流程图;
图7为分布式修复模式下数据修复算法流程图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
在本发明实施例中,提出了一种用于乘积矩阵最小存储再生码(PM MSR)的分布式存储系统的数据修复方法。基本思路是构造出能够适用于任何数量的失效节点和任意编码参数的修复矩阵,将辅助数据与修复矩阵作简单相乘从而得到丢失的数据块。
本发明实施例中提供了两种用于PM MSR码的数据修复方法,包括集中式和分布式。如图2和图3分别描述了集中式和分布式修复模式下,数据块联合修复的系统模型。在一个分布式存储系统中,设存储节点的总数为n,编号分别为N1,N2,.....,Nn,失效节点的个数为t。如图2和图3所示,不失一般性地假定前t个节点N1,N2,.....,Nt失效。在集中式修复模式下,有一个中心代理负责收集辅助数据和重建丢失的数据,然后将重建好的数据发送到t个新节点上。而在分布式的修复模式下,由t个新节点自己独立地完成收集辅助数据和重建丢失数据的过程,且每个新节点只需要重建自己所替代的失效节点上丢失的数据。
为了叙述方便,这里先给出本发明中所用到的符号及其定义。首先,一个使用乘积矩阵的最小存储再生码(PM MSR)用C(n,k,d)表示,其中n是节点的总数,k是“系统节点”的数量,那么m=n-k即为“校验节点”的数量。其中,系统节点是指存放未编码数据块的节点,校验节点是指存放编码数据块的节点。d为“修复度”,指当只有一个失效节点时,修复数据所需要的辅助节点的数目。
设待存储的数据总量为B。根据PM MSR码的要求,编码时首先将长度为B的数据等分为k段,然后编成n个数据块,分别用b1,b2,...,bn表示,其数据块编号分别为1,2,...,n。每个数据块bi包含α个子块si1,si2,...,s。根据MSR码的相关理论,有如下两个等式:
α=d-k+1 (1)
B=kα=k(d-k+1) (2)
PM MSR码要求d≥2k-2,因此有n≥d+1≥2k-1,以及α≥k-1。
针对这种一般情形,数据总量B将被基于扩展的PM MSR码C(n',k',d')编码成n'个数据块,其中n'=n+δ,k'=k+δ并且d'=d+δ。δ表示扩展增加的虚拟节点的数量,其选择应使得d'=2k'-2,因此有:
δ=d-(2k-2) (3)
以及
d'=2(k+δ)-2=2(d-k+1)=2α (4)
PM MSR码通过如下的公式来构建:
C=ΨM (5)
其中M是如下式所示的d'×α维的消息矩阵:
Figure BDA0002109852030000051
其中S1和S2均为α×α维对称矩阵,其上三角部分的(α+1)α/2个元素分别由不同的数据子块充当。Ψ=[Φ ΛΦ]则为n'×d'维编码矩阵,Φ的第i行用φi表示。Λ是如下所示的n'×n'对角阵:
Figure BDA0002109852030000052
C是编码后得到的n'×α维矩阵,其每个元素都是编码后得到的数据子块,C的第i行为:
Figure BDA0002109852030000061
其中
Figure BDA0002109852030000062
是Ψ的第i行。M的编码方式使得C成为系统码,也就是说,C的前δ行都是0,第δ+1到第δ+k行恰好为原始数据,而剩下的m=n'-k'行则为编码后的校验数据。这样的好处是,在没有系统节点失效的情况下,无需解码即可读到原始数据。需要指出的是,本实施例提到的所有矩阵和数据都用有限域GF(q)上的元素表示。
当有节点失效时,在修复数据之前,首先为系统添加δ个虚拟节点。这些虚拟节点上的数据全部为0。用{Ni|1≤i≤n'}表示由虚拟节点和真实节点共同组成的集合,其中N1~Nδ为虚拟节点,而Nδ+1~Nn'是真实节点。因此可以认为{ci|1≤i≤n'}分别存储在n'个节点上。需要指出的是,本实施例中所说的“节点”既可以是物理上的,也可以是逻辑上的,也就是说,多个逻辑节点可以位于一个或多个物理机器上,不影响本发明的有效性。其次,本发明中所提到的虚拟节点并非真实存在,其是为了理论推理而臆想出来的,是发明者的思维过程,也为了便于本领域技术人员理解。
设一共有t≥1个失效节点。所有丢失数据块的编号所组成的集合X={xi|i=1,...,t,δ<xi≤n'}被定义为丢失列表。用
Figure BDA0002109852030000063
表示丢失的数据块。不失一般性地,这里假定xi在X中按从小到大的顺序排列。当前包括虚拟节点在内,一共有n'-t个正常节点,从中选择d'-t+1个节点作为辅助节点来帮助修复数据。辅助节点的集合用
Figure BDA0002109852030000064
来表示。辅助节点和失效节点的并集成为“相关节点”,用如下集合表示:
Ne={Nj|Nj∈Na or j∈X} (9)
由上面的叙述可以看出集合Ne中有d'+1个元素。
在修复数据时,每个辅助节点Nj∈Na首先计算自己存储的数据块cj(将其视为由子块[cj1,cj2,...,c]组成的向量)与
Figure BDA0002109852030000065
的内积,得到t个编码后的子块:
Figure BDA0002109852030000066
然后将这些编码后的子块作为辅助数据发送给重建数据的节点。这样重建数据的节点将获得一共t(d'-t+1)个辅助子块。需要指出的是,上述提到的从正常节点中选择d'-t+1个节点作为辅助节点,前提条件是假设t个失效节点被同时修复,实际应用中也可根据实际情况选择待修改的节点,这种情况下选择的辅助节点个数将会发生变化,具体情况将在下述集中式和分布式修复模式下介绍。
本发明中,数据重建节点通过“修复矩阵”来恢复丢失的数据块。修复矩阵通过如下方式得到。
首先,对每一个xi,xj∈X,j≠i,按照下式(11)计算α×α矩阵
Figure BDA0002109852030000071
其中
Figure BDA0002109852030000072
公式(12)中的
Figure BDA0002109852030000073
Figure BDA0002109852030000074
的前α个元素组成的向量,即
Figure BDA0002109852030000075
的前半部分,而
Figure BDA0002109852030000076
Figure BDA0002109852030000077
的后α个元素组成的向量,即
Figure BDA0002109852030000078
的后半部分。这里
Figure BDA0002109852030000079
指矩阵
Figure BDA00021098520300000710
中与辅助数据子块
Figure BDA00021098520300000711
对应的列。
Figure BDA00021098520300000712
是下式(13)所示矩阵的逆矩阵:
Figure BDA00021098520300000713
也就是说,(13)中的
Figure BDA00021098520300000714
是矩阵Ψ中与除了
Figure BDA00021098520300000715
以外的相关节点所对应的行组成的子阵,或者说
Figure BDA00021098520300000716
是矩阵Ψ去掉与节点
Figure BDA00021098520300000717
相关的行后的剩余部分。而
Figure BDA00021098520300000718
是矩阵
Figure BDA00021098520300000719
中与辅助数据子块
Figure BDA00021098520300000720
对应的列的序号。上面各矩阵的计算过程如图4左侧子矩阵的计算过程所示。
下一步,首先用Xi=X|xi表示丢失列表X去掉xi后剩余编号的有序集合,用
Figure BDA00021098520300000721
表示矩阵
Figure BDA00021098520300000722
中与数据块
Figure BDA00021098520300000723
对应的那些列的序号按顺序排列的有序集合。对每一个i=1~t,按下式(14)分别计算
Figure BDA00021098520300000724
其中
Figure BDA00021098520300000725
的计算方式与公式(12)相同,具体过程如图5右侧子矩阵的计算过程所示。
结合上面的计算,可以得到
Figure BDA00021098520300000726
其中,
Figure BDA00021098520300000727
是每个辅助节点通过计算自己存储的数据块与
Figure BDA00021098520300000728
的内积得到的辅助编码子块组成的向量。
对于每个xi,向量
Figure BDA00021098520300000729
的长度都是d'-t+1。但事实上
Figure BDA00021098520300000730
的前δ个元素全都是0(虚拟节点提供的),那么相应地,每个Θi的前δ列也都是无用的列。因此,可以对(15)式右边的矩阵做一些剪裁,用
Figure BDA0002109852030000081
来代替
Figure BDA0002109852030000082
其中Θ'i是Θi去掉前δ列后剩余的部分,
Figure BDA0002109852030000083
Figure BDA0002109852030000084
去掉前δ个元素后剩余的部分。
Figure BDA0002109852030000085
如果ΞX矩阵可逆,则可以通过如下式(18)算得修复矩阵:
Figure BDA0002109852030000086
算出修复矩阵后,用RX左乘辅助数据子块组成的向量
Figure BDA0002109852030000087
就可以得到丢失的数据块。
公式(18)给出的修复矩阵适用于任意t<min{k,α}。对于t≥min{k,α}的情形,可以用解码的方式来重建丢失的数据,也就是说,从正常节点中任选k个节点作为辅助节点,从所有辅助节点上下载共k×α个数据子块,然后对这些数据子块作解码操作,得到原始数据,然后将得到的原始数据编码成丢失的数据块。但对于t>m的情形,丢失的数据将无法恢复,因为由m=n-k可知此时正常节点的数目n-t<k。
另外,如果矩阵ΞX不可逆,则无法通过公式(18)计算出修复矩阵。对于这个问题,有几种方法可以解决,包括但不限于:1)向X中增加一个或若干个节点,使ΞX变为可逆;2)将X中的某个或某些节点替换成其他节点,使ΞX变为可逆;3)用解码的方式实现数据重建。由于这种情况出现的概率很小,无论采用何种解决办法,对整体性能的影响都是微乎其微的。采用第1)和/或2)种方法时,实际修复的数据块不仅包括真正丢失的数据块,还包括新增加或新替换的节点上的数据块。
修复矩阵的计算过程如图1所示步骤102至步骤106,其中每一步的具体操作如下:
第1步:对每一个xi∈X,按照公式(9)和(13)计算
Figure BDA0002109852030000088
第2步:对每个xi,xj∈X,j≠i,按照图4和公式(11)计算Ωi,j
第3步:基于第2步得到的结果,按照公式(17)构造矩阵ΞX
第4步:对每个xi∈X,按照图5和公式(14)计算Θ'i,并将得到的Θ'i,i=1,...,t按照公式(18)排成广义对角阵;
第5步:如果ΞX可逆,按照公式(18)用
Figure BDA0002109852030000091
左乘第4步得到的广义对角阵,得到修复矩阵RX
如图1所示,第2,3步执行时可以在第4步之前,也可以在第4步之后。
下面将针对集中式和分布式两种数据修复模式,分别对分布式存储多数据块联合修复方法进行具体描述。
对于采用集中式的修复模式,用于PM MSR再生码的多数据块联合修复算法如图6所示。其中每一步的具体操作如下所述。由于是集中式的修复,除了提供辅助数据以外,其他的操作都在中心代理节点上进行。数据重建后,中心代理节点还需将重建后的数据发送到对应的新节点上。当t>m时,丢失的数据将无法恢复,为了简洁起见,t>m的情形这里不再描述。如图6,步骤600,判断t≥min{k,α}是否成立。
(1)如果t≥min{k,α}:
步骤611:从正常节点中任选k个节点作为辅助节点,中心代理节点向辅助节点发起请求,要求辅助节点将自己存储的数据块发送至中心代理节点;
步骤612:中心代理节点等待,直至收到所有的k×α个辅助数据子块;
步骤613:中心代理节点对收到的数据子块作解码,得到原始数据;
步骤614:中心代理节点用编码的方式重建丢失的数据块,并将重建好的数据库发送至t个新节点上。
(2)如果t<min{k,α}:
步骤621:按照图1步骤102至104计算ΞX
步骤622:如果ΞX不可逆,任选下面a)到c)的3种操作之一,否则执行下一步;
a)返回至步骤611,用解码的方式实现数据重建;
b)向X中增加一个节点,重新计算ΞX,如果可逆,到步骤623,否则执行a),b)或c);
c)将X中的一个节点替换为X之外的某个节点,重新计算ΞX,如果可逆,到步骤623,否则执行a),b)或c);
设X中元素的个数为z,如果在执行b)和/或c)的过程中,已经穷尽所有z<min{k,α}的可能组合,须执行a);
步骤623:如图1步骤101从正常节点中选择d-t+1个节点作为辅助节点,中心代理节点向辅助节点发起请求,要求每个辅助节点按照公式(10)计算并提供t个辅助数据子块;
步骤624:中心代理节点等待,直到收到所有的t(d-t+1)个辅助数据子块;
步骤625步:按照图1步骤106计算修复矩阵RX
步骤626:按照公式(16)对收到的辅助数据子块进行重新排列,使之与公式(18)中的广义对角阵相对应;
步骤627:如图1步骤107所示用修复矩阵RX左乘步骤626中重排得到的辅助数据子块组成的向量,重建丢失的数据块,并将重建好的数据发送至t个新节点上。
对于分布式的修复模式,每个新节点只需要重建其所替换的失效节点上存储的数据块。如果t≤n-d,则一个新节点可以选择d个正常节点作为辅助节点,从每个辅助节点处获得1个编码后的辅助数据子块,进而重构出其丢失的数据块,这样的修复带宽总共为td个子块。如果t>n-d,那么对于一个新节点来说,只重建自己丢失的1个数据块就行不通了,因为辅助节点的个数不够,这时每个新节点至少需要同时重建t-(n-d)+1个数据块,需要的辅助节点的数目为n-t。
在分布式的修复模式下,用于PM MSR再生码的多数据块联合修复算法如图7所示。其中每一步的具体操作如下所述。除了提供辅助数据以外,其他的操作都在新节点上进行。
如图7,步骤700,检测t的大小。
(1)如果t≥n-d-1+min{k,α}:
步骤711:从正常节点中任选k个节点作为辅助节点,新节点向辅助节点发起请求,要求辅助节点将自己存储的数据块发至新节点;
步骤712:新节点等待,直至收到所有的k×α个数据子块;
步骤713:对收到的辅助数据子块作解码,得到原始数据;
步骤714:用编码的方式重建丢失的数据块,返回。
(2)如果t≤n-d:
步骤721:从正常节点中任选d个节点作为辅助节点,新节点向辅助节点发起请求,要求辅助节点按照公式(10)各自计算并提供1个辅助数据子块;
步骤722:新节点等待,直到收到全部d个辅助数据子块;
步骤723:按照图1步骤106所示计算修复矩阵
Figure BDA0002109852030000101
其中xi是本新节点的编号;
步骤724:按照公式(16)对收到的辅助数据子块进行重新排列,使之与公式(18)中的广义对角阵相对应;
步骤725:用修复矩阵
Figure BDA0002109852030000111
左乘步骤724中重排得到的辅助数据子块组成的向量,重建丢失的数据块,返回。
(3)其他情况
步骤731:任选另外u=t-n+d个丢失的数据块
Figure BDA0002109852030000112
令X={xi,y1,...,yu},其中xi是本新节点的编号;
步骤732:按照图1所示步骤计算ΞX
步骤733:如果ΞX不可逆,任选下面a)到c)的3种操作之一,否则执行下一步;
a):返回至第1.1步,用解码的方式实现数据重建;
b):向X中增加一个节点,重新计算ΞX,如果可逆,到步骤734,否则执行a),b)或c);
c):将X中的一个节点替换为X之外的某个节点,重新计算ΞX,如果可逆,到步骤734,否则执行a),b)或c);
设X中元素的个数为z,如果在执行b)和/或c)的过程中,已经穷尽所有z<min{k,α}的可能组合,须执行a);
步骤734:将n-t个正常节点全部选为辅助节点,新节点向辅助节点发起请求,要求每个辅助节点按照公式(10)计算并提供u+1个辅助数据子块;
步骤735:新节点等待,直到收到所有的(n-t)(u+1)个辅助数据子块;
步骤736:按照图1步骤106计算修复矩阵RX
步骤737:按照公式(16)对收到的辅助数据子块进行重新排列,使之与公式(18)中的广义对角阵相对应;
步骤738:用修复矩阵RX左乘步骤737中重排得到的辅助数据子块组成的向量,重建丢失的数据块,返回。
需要说明的是,如果应用上述算法,当t>n-d时,一个新节点不仅重建了自己所替换的失效节点上存储的数据块,还可能同时重建了其他新节点所需的数据块。这时该新节点可以选择将额外重建的数据块发送给需要的其他新节点,以免这些新节点自己去重建这些数据块。这样可以进一步降低修复带宽和计算开销,但是需要节点间的协调配合,而且可能增加修复时间,已经属于协作式修复的范畴。实际应用中应根据系统性能需要进行权衡选择。
以上应用了具体实施例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

Claims (7)

1.一种分布式存储系统的数据修复方法,所述系统的存储节点的总数为n,所述系统基于使用乘积矩阵的最小存储再生码C(n',k',d')对需要存储的数据进行编码,
其中n'=n+δ,k'=k+δ,d'=d+δ,δ表示虚拟节点的数量,k表示将数据等分为k段,每段包含α个数据子块,d'为修复度,编码获得的C为n'×α维矩阵,其每个元素是编码后得到的数据子块,C的前δ行是0,第δ+1到第δ+k行为原始数据,剩下的m=n'-k'行为编码后的校验数据,这使得编码获得的n'个数据块中只有n=n'-δ个需要被存储;
其特征在于,所述数据修复方法包括如下步骤:
步骤1:从正常节点中选取辅助节点,用所述辅助节点计算得到辅助数据子块,并将所述辅助数据子块发送给重建数据的节点:
用{Ni|1≤i≤n'}表示由虚拟节点和真实节点共同组成的集合,其中N1~Nδ为虚拟节点,而Nδ+1~Nn'是真实节点,所述正常节点共有n'-t个,其中t为失效节点数量,且t≥1,定义X={xi|i=1,...,t,δ<xi≤n'}为丢失列表,用
Figure FDA0002109852020000011
表示丢失的数据块,从所述正常节点中选择d'-t+1个节点作为所述辅助节点,所述辅助节点的集合表示为
Figure FDA0002109852020000012
所述辅助节点和所述失效节点并集为“相关节点”,表示为:Ne={Nj|Nj∈Na or j∈X},
所述辅助节点Nj∈Na首先计算存储的数据块cj
Figure FDA0002109852020000013
的内积,得到t个所述辅助数据子块:
Figure FDA0002109852020000014
然后将所述辅助数据子块作为辅助数据发送给重建数据的节点,
步骤2:对修复矩阵RX进行计算:
(1)对每一个xi,xj∈X,j≠i,通过下式计算矩阵:
Figure FDA0002109852020000015
其中
Figure FDA0002109852020000016
Figure FDA0002109852020000017
Figure FDA0002109852020000018
的前α个元素组成的向量,而
Figure FDA0002109852020000019
Figure FDA00021098520200000110
的后α个元素组成的向量,这里
Figure FDA00021098520200000111
指的是矩阵
Figure FDA00021098520200000112
中与所述辅助数据子块
Figure FDA00021098520200000113
对应的列,
Figure FDA00021098520200000114
Figure FDA00021098520200000115
的逆矩阵,
(2)用Xi=X|xi表示所述丢失列表X去掉xi后剩余编号的有序集合,用
Figure FDA00021098520200000116
表示矩阵
Figure FDA00021098520200000117
中与数据块
Figure FDA00021098520200000118
对应的列的序号按顺序排列的有序集,对每一个i=1~t:
Figure FDA00021098520200000119
其中,
Figure FDA00021098520200000120
的计算方式与
Figure FDA00021098520200000121
相同,m=n-k,
根据上述过程有:
Figure FDA0002109852020000021
其中,
Figure FDA0002109852020000022
(3)对于每个xi,向量
Figure FDA0002109852020000023
的长度都是d'-t+1,事实上
Figure FDA0002109852020000024
的前δ个元素全都是0,相应地,每个Θi的前δ列也都是无用的列,因此用
Figure FDA0002109852020000025
来代替
Figure FDA0002109852020000026
其中Θ'i是Θi去掉前δ列后剩余的部分,
Figure FDA0002109852020000027
Figure FDA0002109852020000028
去掉前δ个元素后剩余的部分:
Figure FDA0002109852020000029
则修复矩阵为:
Figure FDA00021098520200000210
步骤3:对丢失的数据块进行重建:
用修复矩阵RX左乘辅助数据子块组成的向量
Figure FDA00021098520200000211
得到丢失的数据块。
2.如权利要求1所述的方法,其特征在于,所述修复矩阵适用于t<min{k,α},对于t≥min{k,α}的情形,用解码的方式重建丢失的数据:
从正常节点中任选k个节点作为辅助节点,从所述辅助节点下载共k×α个数据子块,然后对所述数据子块作解码操作,得到原始数据。
3.如权利要求1所述的方法,其特征在于,ΞX为可逆矩阵,或通过向所述丢失列表中增加节点使ΞX变为可逆,或者将所述丢失列表中的某个或某些节点替换成其他节点使ΞX变为可逆;否则用解码的方式重建丢失的数据。
4.如权利要求1所述的方法,其特征在于,数据修复方法包括集中式数据修复,在集中式模式下,根据待修复的所述失效节点数量选取所述辅助节点数量,所述辅助数据子块的收集、所述修复矩阵运算和所述重建丢失数据块过程由中心代理节点完成。
5.如权利要求1所述的方法,其特征在于,数据修复方法包括分布式数据修复,在分布式模式下,根据待修复的所述失效节点数量选取所述辅助节点数量,每个新节点重建其所替换的所述失效节点上存储的数据块,所述辅助数据子块收集、所述修复矩阵运算和所述重建丢失数据块过程由所述新节点完成。
6.如权利要求5所述的方法,其特征在于,所述新节点重建的数据块还包括其他新节点所需的数据块。
7.一种计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行实现如权利要求1至6任意一项所述的方法。
CN201880005531.6A 2018-07-10 2018-07-10 分布式存储系统的数据修复方法及存储介质 Active CN110168505B (zh)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN110168505A CN110168505A (zh) 2019-08-23
CN110168505B true CN110168505B (zh) 2022-10-21

Family

ID=67644889

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880005531.6A Active CN110168505B (zh) 2018-07-10 2018-07-10 分布式存储系统的数据修复方法及存储介质

Country Status (3)

Country Link
US (1) US11500725B2 (zh)
CN (1) CN110168505B (zh)
WO (1) WO2020010504A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513898B2 (en) * 2019-06-19 2022-11-29 Regents Of The University Of Minnesota Exact repair regenerating codes for distributed storage systems
CN110704232B (zh) * 2019-10-10 2023-03-14 广东工业大学 一种分布式系统中失效节点的修复方法、装置和设备
CN112181707B (zh) * 2020-08-21 2022-05-17 山东云海国创云计算装备产业创新中心有限公司 分布式存储数据恢复调度方法、系统、设备及存储介质
CN112445656B (zh) * 2020-12-14 2024-02-13 北京京航计算通讯研究所 分布式存储系统中数据的修复方法及装置
CN113225395A (zh) * 2021-04-30 2021-08-06 桂林电子科技大学 一种多数据中心环境下的数据分布策略及数据修复算法
US11886295B2 (en) * 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
CN114595092B (zh) * 2022-04-28 2022-09-20 阿里云计算有限公司 分布式存储系统、数据重构方法、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631761A (zh) * 2012-08-29 2014-03-12 睿励科学仪器(上海)有限公司 并行处理架构进行矩阵运算并用于严格波耦合分析的方法
CN103688514A (zh) * 2013-02-26 2014-03-26 北京大学深圳研究生院 一种最小存储再生码的编码和存储节点修复方法
CN105260259A (zh) * 2015-09-16 2016-01-20 长安大学 一种基于系统最小存储再生码的局部性修复编码方法
CN106776129A (zh) * 2016-12-01 2017-05-31 陕西尚品信息科技有限公司 一种基于最小存储再生码的多节点数据文件的修复方法
CN106790408A (zh) * 2016-11-29 2017-05-31 中国空间技术研究院 一种用于分布式存储系统节点修复的编码方法
CN106911793A (zh) * 2017-03-17 2017-06-30 上海交通大学 I/o优化的分布式存储数据修复方法
CN108199720A (zh) * 2017-12-15 2018-06-22 深圳大学 一种减小存储开销和提高修复效率的节点修复方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10146618B2 (en) * 2016-01-04 2018-12-04 Western Digital Technologies, Inc. Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
CN110178122B (zh) * 2018-07-10 2022-10-21 深圳花儿数据技术有限公司 分布式存储系统的数据同步修复方法及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631761A (zh) * 2012-08-29 2014-03-12 睿励科学仪器(上海)有限公司 并行处理架构进行矩阵运算并用于严格波耦合分析的方法
CN103688514A (zh) * 2013-02-26 2014-03-26 北京大学深圳研究生院 一种最小存储再生码的编码和存储节点修复方法
CN105260259A (zh) * 2015-09-16 2016-01-20 长安大学 一种基于系统最小存储再生码的局部性修复编码方法
CN106790408A (zh) * 2016-11-29 2017-05-31 中国空间技术研究院 一种用于分布式存储系统节点修复的编码方法
CN106776129A (zh) * 2016-12-01 2017-05-31 陕西尚品信息科技有限公司 一种基于最小存储再生码的多节点数据文件的修复方法
CN106911793A (zh) * 2017-03-17 2017-06-30 上海交通大学 I/o优化的分布式存储数据修复方法
CN108199720A (zh) * 2017-12-15 2018-06-22 深圳大学 一种减小存储开销和提高修复效率的节点修复方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
New exact-repair codes for distributed storage systems using matrix determinant;Mehran Elyasi等;《 2016 IEEE International Symposium on Information Theory》;20161231;全文 *

Also Published As

Publication number Publication date
US20210271552A1 (en) 2021-09-02
US11500725B2 (en) 2022-11-15
CN110168505A (zh) 2019-08-23
WO2020010504A1 (zh) 2020-01-16

Similar Documents

Publication Publication Date Title
CN110168505B (zh) 分布式存储系统的数据修复方法及存储介质
CN110178122B (zh) 分布式存储系统的数据同步修复方法及存储介质
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
US9647698B2 (en) Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
US7073115B2 (en) Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US20210271557A1 (en) Data encoding, decoding and recovering method for a distributed storage system
US9961142B2 (en) Data storage method, device and distributed network storage system
CN107656832A (zh) 一种低数据重建开销的纠删码方法
US8775860B2 (en) System and method for exact regeneration of a failed node in a distributed storage system
CN114281270B (zh) 一种数据存储方法、系统、设备以及介质
CN105335150A (zh) 纠删码数据的快速编解码方法和系统
WO2012008921A9 (en) Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices
CN112000512B (zh) 一种数据修复方法及相关装置
CN112799875B (zh) 基于高斯消元进行校验恢复的方法、系统、设备及介质
CN108347306B (zh) 分布式存储系统中类局部重构码编码及节点故障修复方法
CN108762978B (zh) 一种局部部分重复循环码的分组构造方法
CN109358980B (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
CN107306140B (zh) 一种gel码字结构编码和译码的方法、装置及相关设备
US10187084B2 (en) Method of encoding data and data storage system
WO2014012246A1 (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
CN109343998B (zh) 一种基于纠删码的全分布修复方法
CN110781024A (zh) 对称部分重复码的矩阵构造方法及故障节点修复方法
CN110781025B (zh) 基于完全图的对称部分重复码构造及故障节点修复方法
CN115113816A (zh) 一种纠删码数据处理系统、方法、计算机设备及介质
CN106302573B (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