分布式存储系统的数据修复方法及存储介质技术方案

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

Data Repair Method and Storage Media of Distributed Storage System

【技术实现步骤摘要】
【国外来华专利技术】分布式存储系统的数据修复方法及存储介质
本专利技术涉及分布式存储领域,具体涉及用于乘积矩阵最小存储再生码的数据修复方法。
技术介绍
近年来随着互联网,大数据和云计算等新兴技术的飞速发展,对海量数据存储的需求也激增,使得分布式数据存储系统日益成为存储技术的主流。相比于单节点存储系统,分布式存储系统具有更高的可靠性、可用性和可扩展性。在分布式存储系统中,可能会有一个或若干个节点发生故障。在这种情况下,可以通过副本或纠删码等冗余技术来保证整个系统的服务不被中断。相比于简单的复制数据,纠删码的空间利用率相对较高,因此在业界被广泛使用。例如微软的Azure和OceanStore等分布式存储系统均采用了纠删码。而纠删码中的最大距离可分码(MaximumDistanceSeparable,MDS)由于能够最大化空间利用率,尤其为业界所重视。当有节点发生故障时,分布式存储系统应当及时恢复出丢失的数据,以保持系统的冗余度,并避免长时间的“降阶读取”,即通过读取多个非原始的数据片段然后通过某种方法计算出所需的数据。这一过程通常通过替换或修复失效的节点,并在新节点上执行数据恢复操作来完成。由于一开始这些新节点对丢失的数据内容一无所知,它们需要从其他的未发生故障的节点处获得“辅助数据”(HelperData),而这些提供辅助数据的节点被称为“辅助节点”(AssistantNode)。在一个比较繁忙的存储系统中,包括传输辅助数据在内的数据修复所需的带宽,简称“修复带宽”,其对整个系统的性能有至关重要的影响。因此,使修复带宽最小化是分布式存储系统设计优化的必要考量。基于网络编码思想的再生码恰好能够达到这一目标。其中,最小存储再生码(MinimumStorageRegeneratingCode,MSR)作为一类在最小化修复带宽的同时,还能最大化空间利用率的再生码,具有十分重要的价值。采用乘积矩阵(ProductMatrix,PM)的MSR码构造简单巧妙,是一种重要的最小存储再生码。遗憾的是,原始的PMMSR码仅给出了单节点失效情况下的修复方法。而在实际工程中,经常会有多个节点同时失效的情况出现。针对这种情况,一种解决办法是像处理单节点失效那样,一个节点接一个节点地修复,这个方法虽然简单直接,但是会浪费带宽。另一种思路是,对多个失效节点进行联合修复,从而使整体所需的带宽最小化。该思路的另一个好处是,不必在节点失效时马上进行修复,可以等失效节点的数量达到某一个阈值,或者降阶读取持续了某一特定时间后再启动修复,这样可以进一步降低修复的开销。一些现有的研究对这个问题进行了多方面的考虑,提出了一种采用“虚拟符号”的方法,能够同时修复多个失效节点,还证明了同时修复所需的最小带宽的下限。但是这种方法通常需要对复杂的方程组进行求解,运算开销巨大且难以实施。还有的研究人员提出了由代理协助的最小存储再生码,使用这种码进行修复时,辅助节点传输辅助数据之前无需对数据进行编码。但是这种码只能处理有1或2个失效节点的情形。针对任意失效节点数目和任意编码参数的联合修复方案仍未被提出。另一类多数据块同时修复方法采用了节点间协作的策略。这类方法首先让新节点从正常节点下载辅助数据,然后在新节点之间交换数据。通过巧妙地设计编码的结构,可以减小修复带宽,甚至达到理论的下限。尽管这类方法从理论上可以使修复带宽最小化,实际应用却面临很大难度。这种“先下载-再交换”的方式增加了修复所需的时间和各种开销,需要复杂的协议来控制且容易出错。从工程实现的角度讲,数据修复方法可分为两类:集中式和分布式。前者通常会指定一个代理节点,由代理节点负责收集辅助数据,重建丢失的数据并最终将修复好的数据传送到新的节点上。后者则相反,没有代理节点协助,由新节点自身负责收集和重建数据。也可以将二者结合起来,例如前面提到的节点间协作策略,但这样做复杂度较高。绝大多数已有的研究成果都采用了集中式修复,且只考虑了采集辅助数据所需的带宽。但实际上将重建的数据上传到新节点上也需要消耗带宽。这一点在已有的方法中并未考虑。有一些研究探讨了网络拓扑结构对修复带宽和修复策略的影响,但只在一些简单的拓扑结构,如直线级联,星形和网格结构上,获得了准确的数学表达式。此外,现有的数据修复策略在重建数据的时候都使用了尽可能多的辅助节点,以达到降低修复带宽的目的。理论上也证明了,当系统中除失效节点外所有的正常节点,或称“幸存节点”都作为辅助节点参与数据重建时,所需的带宽最小。但在实际系统中,使用更多的辅助节点意味着更大的延迟和开销,因此在综合考虑多方面性能的情况下,使用的辅助节点数目并非越多越好。
技术实现思路
本申请提供一种用于乘积矩阵的最小存储再生码的分布式存储系统的数据修复方法,要解决的技术问题是,提供一种分布式存储系统的数据修复方法,能够对分布式存储系统中的多个失效节点进行同时修复。一种分布式存储系统的数据修复方法,用于分布式存储系统有节点失效时的数据修复过程,分布式存储系统采用分布式存储系统的编码方法。本申请中提供了两种使用乘积矩阵的最小存储再生码(PMMSR)的数据修复方法,分别为集中式和分布式。在集中式数据修复模式下,根据失效节点数量选取辅助节点,辅助数据子块的收集、修复矩阵运算和重建丢失数据块过程由中心代理节点完成;在分布式模式下,根据失效节点数量选取辅助节点,每个新节点重建其所替换的失效节点上存储的数据块,辅助数据子块收集、修复矩阵运算和重建丢失数据块过程由新节点完成。数据修复过程包括如下步骤:步骤1:从正常节点中选取辅助节点,用辅助节点计算得到辅助数据子块,并将辅助数据子块发送给重建数据的节点,所选取的辅助节点的数量与待修复的失效节点的数量有关;步骤2:根据PMMSR码和丢失的数据信息,计算修复矩阵;步骤3:通过将修复矩阵与辅助数据子块相乘得到丢失的数据块,完成数据块重建。在实际操作过程中,为了得到修复矩阵,需要向丢失列表中增加未包含丢失数据块的节点信息,或用未包含丢失数据块的节点信息替换原丢失列表中的节点信息。例如在分布式模式下,一个新节点不仅可以重建自己所替换的失效节点上存储的数据块,还可能同时重建其他新节点所需的数据块。这种情况下,该新节点可以选择将额外重建的数据块发送给需要的其他新节点,以免这些新节点自己去重建这些数据块。这样可以进一步降低修复带宽和计算开销,本专利技术的有益效果是:通过使用乘积矩阵的最小存储再生码提供的分布式存储系统的数据修复方法,能够同时重建一个或多个数据块,克服了最小修复带宽理论下限难以实现的困难,同时不需要在新节点之间交换数据,能够在任意数量的失效节点和任意编码参数的情况下对数据进行修复。附图说明图1为数据块修复计算过程的流程图;图2为集中式修复模式下数据修复的系统模型图;图3为分布式修复模式下数据修复的系统模型图;图4为修复矩阵的左侧子矩阵的计算过程图;图5为修复矩阵的右侧子矩阵的计算过程图;图6为集中式修复模式下数据修复算法流程图;图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'}为丢失列表,用

【技术特征摘要】
【国外来华专利技术】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'}为丢失列表,用表示丢失的数据块,从所述正常节点中选择d'-t+1个节点作为所述辅助节点,所述辅助节点的集合表示为所述辅助节点和所述失效节点并集为“相关节点”,表示为:Ne={Nj|Nj∈Naorj∈X},所述辅助节点Nj∈Na首先计算存储的数据块cj与的内积,得到t个所述辅助数据子块:然后将所述辅助数据子块作为辅助数据发送给重建数据的节点,步骤2:对修复矩阵RX进行计算:(1)对每一个xi,xj∈X,j≠i,通过下式计算矩阵:其中是的前α个元素组成的向量,而是的后α个元素组成的向量,这里指的是矩阵中与所述辅助数据子块对应的列,是的逆矩阵,(2)用Xi=X|xi表示所述丢失列表X去掉xi后剩余编号的有序集合,用表示矩阵中与数据块对应的列的序号按顺序排列的有序集,...

【专利技术属性】
技术研发人员:张婧垚
申请(专利权)人:深圳花儿数据技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1