CN110212923B - 一种基于模拟退火的分布式纠删码存储系统数据修复方法 - Google Patents
一种基于模拟退火的分布式纠删码存储系统数据修复方法 Download PDFInfo
- Publication number
- CN110212923B CN110212923B CN201910379654.2A CN201910379654A CN110212923B CN 110212923 B CN110212923 B CN 110212923B CN 201910379654 A CN201910379654 A CN 201910379654A CN 110212923 B CN110212923 B CN 110212923B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- repair
- solution
- cost
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000002922 simulated annealing Methods 0.000 title claims abstract description 18
- 230000008439 repair process Effects 0.000 claims abstract description 134
- 238000012544 monitoring process Methods 0.000 claims abstract description 25
- 239000011159 matrix material Substances 0.000 claims abstract description 16
- 230000005540 biological transmission Effects 0.000 claims abstract description 13
- 238000011084 recovery Methods 0.000 claims abstract description 13
- 230000009191 jumping Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 4
- 230000002411 adverse Effects 0.000 abstract description 2
- 238000010845 search algorithm Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000009194 climbing Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种基于模拟退火的分布式纠删码存储系统数据修复方法,包括:构建一个分布式存储系统;监控节点判断存储节点发生故障;监控节点选择存储节点作为修复节点来修复数据和保存丢失的数据;修复节点获取网络传输速度;修复节点获取纠删码生成矩阵、失效节点编号、当前节点编号并通过搜索算法获取修复方案;修复节点根据修复方案构建数据读请求并发送到各个存储节点;各个完好的存储节点读取相应的元素数据并返回给修复节点;修复节点执行解码操作将丢失的数据重构出来;修复节点将元数据信息反馈给监控节点并将数据保存在本地。有效地降低CRS纠删码的数据修复的带宽占用,减少数据修复对系统带来的不良影响,加快数据修复速度。
Description
技术领域
本发明属于分布式纠删码存储系统领域,具体涉及一种基于模拟退火的分布式纠删码存储系统数据修复方法。
背景技术
分布式存储系统凭借较好的可扩展性和较低的成本得到了广泛的关注,这种系统由廉价的存储服务器通过网络互联组成,并采取了一些数据冗余技术以保证数据的可靠性。分布式存储系统中传统的数据冗余技术是副本策略,但是副本策略带来了存储开销大的问题,例如对于三副本策略来说,它会带来三倍的存储开销。纠删码策略是一种比较新型的数据冗余技术,它将原始数据分割成k个块,并对这些数据块进行编码操作以得到m个校验块,最后将数据块和校验块放置在不同的节点上。当系统中某个节点发生故障时,它从剩余存活的数据块和校验块中读取k个即可解码出丢失的块。纠删码策略具有存储开销小的优点,在很多分布式存储系统中得到了广泛的应用。
对于基于异或运算的纠删码来说,它将数据块和校验块分割成w个更小的元素,校验块中的每个元素都是由数据块的元素之间通过异或运算得到。这种纠删码的生成矩阵是一个0-1矩阵,编解码运算通过该矩阵进行调度完成,常见的基于异或运算的纠删码如CRS码、Liberation码等。纠删码冗余技术在进行数据修复时需要读取和传输存活的数据块和校验块以进行解码操作,这会带来较大的网络开销。单节点故障在所有的系统故障中占据了99.75%以上的比例,所以现有研究主要针对分布式纠删码存储系统中单节点故障进行数据修复的优化,降低网络带宽占用,加快修复速度。
对纠删码数据修复的数据读取和传输进行优化的工作可以分为两类:一是星型数据修复方法,二是树形数据修复方法。对于星型数据修复方法来说,它主要是通过算法改进数据修复时的解码规则,使其可以使用更少的数据量进行解码操作。Xiang等人针对RDP码提出了一种数据修复优化算法RDOR,Xu等人针对X码提出了MDRR算法,其可以达到理论最少的数据读取总量。Khan等人提出了一种基于枚举策略的修复算法,在所有可行的修复方案中查找所需要数据量最小的方案。Zhu等人提出了多项式级的搜索修复算法,它利用了爬山算法进行矩阵搜索,大大加快了算法执行速度,使得算法可以在多项式时间内查找到修复所需数据总量较小的修复方案。然而,这些优化方法仍然存在各种问题,要么时间复杂度过高,要么无法将修复带宽占用降低到近似最小,而且缺乏集群网络异构特征的考虑。
对于树形数据修复方法来说,它主要是改进传统的纠删码数据修复的数据读取和传输过程,将其设计为树形的数据读取和传输过程,以此来加快数据修复过程。Mitra等人设计了PPR(Partial-Parallel-Repair,局部并行传输)技术,它将整个数据修复任务分解成多个子任务以组织出一棵完整的数据修复树。Zhang等人提出了一种新的修复树技术,通过分解计算的方式构建修复树,大大加快数据修复速度。Li等人提出了带宽感知的树形修复技术,其基本思想是基于节点之间的网络带宽构建修复树。Zeng等人和Zhang等人提出了拓扑感知的树形数据修复技术,其主要目的是尽可能多地在树形网络拓扑的底层节点之间进行数据传输而减少上层核心交换机的数据量。然而,这些优化方法无法有效地降低数据修复时的网络传输数据量。
发明内容
本发明的目的在于提供一种基于模拟退火的分布式纠删码存储系统数据修复方法,以解决上述问题。
为实现上述目的,本发明采用以下技术方案:
一种基于模拟退火的分布式纠删码存储系统数据修复方法,包括以下步骤:
步骤1:构建一个分布式存储系统,它由多个节点组成,每个节点都是一台独立运行的计算机,它们通过网络互联;该分布式存储系统由两类节点组成,一类是存储节点,它负责存储数据,一类是监控节点,它负责监听分布式存储系统中的存储节点的状态,当存储节点发生故障时,监控节点会触发修复操作;待存入存储系统的数据文件F使用CRS纠删码进行编码;
当监控节点在规定的时间内未能接收到某个存储节点发送的心跳信息,则认为该存储节点出现了故障;在对失效的存储节点进行修复时,监控节点将选择一个存储节点Ln用来存储失效的数据,Ln节点将负责整个的数据修复工作;
步骤2:Ln节点获取集群中各个节点之间的网络传输速度bandwidthi,j,其中0≤i≤k+m-1,0≤j≤k+m-1;
步骤3:Ln节点获取当前节点编号ln,失效节点编号fn,以及当前纠删码配置下的纠删码生成矩阵G;如果失效节点为校验节点,则直接读取全部的数据块并执行编码操作以得到相应的校验块;如果失效节点为数据节点,则执行矩阵调度算法,查找修复开销最小的数据修复方案;
步骤4:根据数据修复方案确定数据修复所需要的数据读请求;
步骤5:将修复操作对应的数据读请求发送到具体的存储节点;
步骤6:各个存储节点接受到数据读请求后,根据相应的数据读操作的偏移量,读取本地磁盘数据,并发送回修复节点;
步骤7:修复节点接受到全部的返回数据后,执行解码操作,将丢失的数据重构出来;
步骤8:修复节点完成编码块修复之后,将编码块修复情况发送给监控节点,如果修复成功,将修复节点上编码块相关的元数据信息发送给监控节点;如果修复失败,修复节点对失效编码块进行重新修复。
进一步的,步骤1中,存储节点的存储方法为:待存入存储系统的数据文件F使用CRS纠删码进行编码,CRS纠删码用k,m,w表示;数据文件F被分割为k个数据块,记做D0,D1,…,Dk-1,每个数据块包含w个数据元素,数据块Di(0≤i≤k-1)的w个元素记作di,0,di,1,…,di,w-1;接下来,调用CRS纠删码编码方法,得到k+m个编码块,包含k个原始数据块和m个校验块,校验块记作C0,C1,…,Cm-1,每个校验块包含w个元素,校验块Cj(0≤j≤m-1)的w个元素记作cj,0,cj,1,…,cj,w-1。k+m个编码块组成了一个条带,编码块被分别存储在不同的存储节点上。
进一步的,步骤3中,根据纠删码生成矩阵G、故障节点编号fn、存储集群中各节点之间的网络带宽,执行调度算法,该算法将获取一个K-V集合,每组K-V表示从对应的节点K读取的元素编号集合V。
进一步的,在步骤4中,获取每个数据块和校验块的元数据信息,如块的位置、块的大小等。根据步骤三获取的K-V数值以及上述元数据信息,确定每个节点上块的数据读操作的偏移量,以此来确定数据修复时对应的数据读请求。
进一步的,在步骤3中,纠删码调度算法的具体执行步骤如下:
(1):初始化参数,令K=0.97,T=M=L=k*m2*w2;
(2):根据纠删码生成矩阵G的后m*w行得到m*w个译码方程,每个译码方程包含了一个校验元素与若干个数据元素,表明该校验元素由上述若干数据元素进行异或运算得到,即该校验元素与上述若干数据元素进行异或运算的结果为0;
(3):将所述m*w个译码方程分成w组,第i组中的每个译码方程均覆盖了待修复数据块中的第i个元素,0≤i≤w-1,每组负责修复1个失效的数据元素;
(4):从每个分组中随机地选取1个译码方程,组成包含w个译码方程的修复方案;
(5):修复方案有效则需要同时满足以下2个条件:1)修复方案中的译码方程覆盖了所有的w个丢失的数据元素,2)译码方程关于丢失元素是线性独立的;如果所述修复方案是有效的,则将该修复方案赋值给Solution,Solutionbest=Solution,设置count=0,否则转上一步;
(6):计算Solutionbest的修复代价;
(7):数据修复方案Solution的修复代价与Solutionbest的修复代价相等,cost=costbest;
(8):从Solution包含的w个译码方程中随机地选取1个译码方程ei,获取其所在分组,从该分组中随机地选取一个译码方程ej(ej≠ei),用ej替换掉Solution中的ei;
(9):如果新的修复方案是有效的,则将该修复方案赋值给Solutionnew,否则跳转执行上一步;
(10):计算Solutionnew的修复代价,记做costnew;
(11):根据模拟退火的思想判断是否接受新的修复方案;
(12):设置count=count+1,如果count<M*L并且T>0.001,跳转执行第八步;
(13):根据Solutionbest,计算从每个编码块D0,D1,D2,…,Dk-1,C0,C1,C2,…,Cm-1读取的元素编号,这些编号即表示了从哪些节点读取哪些元素;
进一步的,计算Solutionbest的修复代价的具体步骤如下:
6.1通过遍历的方式统计Solutionbest从每个节点读取的元素数量,记做Ni,0≤i≤k+m-1;
6.2根据Ni*1/bandwidthi,ln计算从每个节点上下载数据所需要的代价;
6.3根据∑Ni*1/bandwidthi,ln计算出Solutionbest所需要的数据修复总代价,记做costbest。
进一步的,根据模拟退火的思想判断是否接受新的修复方案的具体步骤如下:
11.1计算Solution和新解Solutionnew的修复代价差值,记做Δ=cost-costnew;
11.2如果Δ>0,则接受新解,即Solution=Solutionnew,cost=costnew,并判断是否costbest>costnew,如果成立,则Solutionbest=Solutionnew,costbest=costnew;
11.3如果Δ≤0,则产生(0,1)之间的一个随机数,将该随机数赋值给random_probability。如果,则接受新解Solution,即Solution=Solutionnew,cost=costnew。
与现有技术相比,本发明有以下技术效果:
本发明综合考虑了纠删码数据修复时的网络带宽占用问题和分布式存储系统中的网络异构特性。该发明对传统的CRS纠删码的解码过程进行改进,使得CRS码可以使用较少的数据量进行解码,并保证从网络传输速度快的节点上读取更多的数据,从网络传输速度慢的节点上读取更少的数据,这可以降低纠删码数据修复时的网络带宽占用,加快数据修复速度。
本发明基于模拟退火设计了纠删码解码调度算法,该算法可以以一定概率收敛于全局最优解,这保证了该算法可以得到修复代价最小的修复方案,而且该算法的时间复杂度是多项式级,这保证了该算法的执行时间较短,计算不会成为整个数据修复过程的瓶颈。
附图说明
图1为本发明提供的分布式存储系统中纠删码数据修复过程示意图;
图2为本发明提供的CRS纠删码的解码调度算法示意图。
具体实施方式
以下结合附图对本发明进一步说明:
一种基于模拟退火的分布式纠删码存储系统数据修复方法主要针对分布式存储系统中纠删码数据修复时的数据读取和传输过程,对该过程进行改进,使其可以读取更少的数据、传输更少的数据并使用较少的数据完成解码操作,降低数据修复的网络开销,并利用系统的网络带宽异构特性来加快数据修复的速度。
附图一为分布式存储系统中纠删码数据修复过程示意图,该分布式存储系统包含两种节点:监控节点负责监听各个存储节点的心跳信息,并以此判断存储节点是否发生故障;存储节点负责存储实际的文件数据,发送心跳信息给监控节点以表明自己可以提供正常的存储服务并发送块的元数据信息,这些元数据信息包括块的位置、块的大小等。
即将写入到分布式存储系统中的文件被分割成k份,记做D0,D1,…,Dk-1,每个数据块又被分割成w个小的数据元素,第i(0≤i≤k-1)个数据块中的数据元素记做di,0,di,1,…,di,w-1。使用CRS码对这些数据块执行编码操作,得到m个校验块,记做C0,C1,…,Cm-1,每个校验块又被分割成w个小的校验元素,第i(0≤i≤m-1)个数据块中的数据元素记做ci,0,ci,1,…,ci,w-1。
当监控节点在规定的时间内没有接收到某个节点的心跳信息时,监控节点判断该节点发生故障,并选择出一个新的存储节点用于存储丢失的数据,这个新的存储节点被称为修复节点,它将负责数据修复操作。
修复节点执行数据修复时的具体步骤如下:
步骤一:修复节点获取故障节点的编号、当前节点的编号以及当前纠删码配置下的纠删码生成矩阵。
步骤二:判断故障节点是数据节点还是校验节点。如果故障节点是校验节点,则读取全部的数据块并执行编码操作,将丢失的校验数据重新编码出来。如果故障节点是数据节点,则通过纠删码调度算法进行数据修复操作。具体步骤如下所示:
2.1根据纠删码生成矩阵G、故障节点编号fn、存储集群中各节点之间的网络带宽,执行调度算法,该算法将获取一个K-V集合,每组K-V表示从对应的节点(K)读取的元素编号集合(V)。
2.2根据上述算法获取的K-V集合,确定修复操作对应的数据读请求。具体步骤如下:
2.2.1获取每个数据块和校验块的元数据信息,如块的位置、块的大小等。
2.2.2根据每组K-V数值(从每个节点读取的元素编号集合)以及上述元数据信息,确定每个节点上块的数据读操作的偏移量,以此来确定数据修复对应的读请求。
2.3将修复操作对应的数据读请求发送到具体的存储节点。
2.4各个存储节点接受到数据读请求后,根据相应的数据读操作的偏移量,读取本地磁盘数据,并发送回修复节点。
2.5修复节点接受到全部的返回数据后,执行解码操作,将丢失的数据重构出来。
2.6修复节点完成编码块修复之后,将编码块修复情况发送给监控节点,如果修复成功,将修复节点上编码块相关的元数据信息发送给监控节点;如果修复失败,修复节点对失效编码块进行重新修复。
附图二为基于异或运算的纠删码的解码调度算法示意图。解码调度算法主要负责计算出从每个存储节点读取的元素编号集合,以用于数据修复的数据读请求的构建。其具体步骤如下:
步骤一:修复节点获取集群中各个节点之间的网络传输速度bandwidthi,j(0≤i≤k+m-1,0≤j≤k+m-1)。
步骤二:初始化参数,令K=0.97,T=M=L=k*m2*w2。
步骤三:根据纠删码生成矩阵G的后m*w行得到m*w个译码方程,每个译码方程包含了一个校验元素与若干个数据元素,表明该校验元素由上述若干数据元素进行异或运算得到,即该校验元素与上述若干数据元素进行异或运算的结果为0。
步骤四:将所述m*w个译码方程分成w组,第i组中的每个译码方程均覆盖了待修复数据块中的第i个元素(0≤i≤w-1),每组负责修复1个失效的元素。具体步骤如下:
4.1遍历所有的m*w个译码方程,检查每个译码方程中w个位置(fn*w~fn*w+w-1)的0/1数值。
4.2判断各个译码方程应该加入哪个修复组中,如果某个译码方程中fn*w+x(0≤x≤w-1)的位置等于1,则将其加入到修复组x中,表示该译码方程可以修复第x个丢失的数据元素。
步骤五:从每个分组中随机地选取1个译码方程,组成包含w个译码方程的修复方案。
步骤六:修复方案有效则需要同时满足以下2个条件:1)修复方案中的译码方程覆盖了所有的w个丢失的数据元素,2)译码方程关于丢失元素是线性独立的。如果所述修复方案是有效的,则将该修复方案赋值给Solution,Solutionbest=Solution,设置count=0,否则转步骤五。
步骤七:计算Solutionbest的修复代价。具体步骤如下:
7.1通过遍历的方式统计Solutionbest从每个节点读取的元素数量,记做Ni(0≤i≤k+m-1)。
7.2根据Ni*1/bandwidthi,ln计算从每个节点上下载数据所需要的代价。
7.3根据∑Ni*1/bandwidthi,ln计算出Solutionbest所需要的数据修复总代价,记做costbest。
步骤八:数据修复方案Solution的修复代价与Solutionbest的修复代价相等,cost=costbest。
步骤九:从Solution包含的w个译码方程中随机地选取1个译码方程ei,获取其所在分组,从该分组中随机地选取一个译码方程ej(ej≠ei),用ej替换掉Solution中的ei。
步骤十:如果新的修复方案是有效的,则将该修复方案赋值给Solutionnew,否则跳转执行步骤九。
步骤十一:计算Solutionnew的修复代价,记做costnew。具体步骤如步骤七所示。
步骤十二:根据模拟退火的思想判断是否接受新的修复方案。具体步骤如下:
12.1计算Solution和新解Solutionnew的修复代价差值,记做Δ=cost-costnew。
12.2如果Δ>0,则接受新解,即Solution=Solutionnew,cost=costnew,并判断是否costbest>costnew,如果成立,则Solutionbest=Solutionnew,costbest=costnew。
12.3如果Δ≤0,则产生(0,1)之间的一个随机数,将该随机数赋值给random_probability。如果eΔT>random_probability,则接受新解Solution,即Solution=Solutionnew,cost=costnew。
步骤十三:设置count=count+1,如果count<M*L并且T>0.001,跳转执行步骤九。
步骤十四:根据Solutionbest,计算从每个编码块D0,D1,D2,…,Dk-1,C0,C1,C2,…,Cm-1读取的元素编号,这些编号即表示了从哪些节点读取哪些元素。
以上所述为本发明的技术方案,本发明基于分布式存储系统中网络带宽的异构特性,结合基于异或运算的纠删码的解码理论,通过模拟退火算法,使用搜索的方法查找单数据节点失效时修复代价最小的修复方案,以此来降低修复带宽占用,加快数据修复速度。该方法可行性高,对于CRS纠删码的数据节点失效有着较好的优化效果,可以有效加快数据修复的速度,降低数据修复给系统带来的不良影响。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (4)
1.一种基于模拟退火的分布式纠删码存储系统数据修复方法,其特征在于,包括以下步骤:
步骤1:构建一个分布式存储系统,它由多个节点组成,每个节点都是一台独立运行的计算机,它们通过网络互联;该分布式存储系统由两类节点组成,一类是存储节点,它负责存储数据,一类是监控节点,它负责监听分布式存储系统中的存储节点的状态,当存储节点发生故障时,监控节点会触发修复操作;待存入存储系统的数据文件F使用CRS纠删码进行编码;
当监控节点在规定的时间内未能接收到某个存储节点发送的心跳信息,则认为该存储节点出现了故障;在对失效的存储节点进行修复时,监控节点将选择一个存储节点Ln用来存储失效的数据,Ln节点将负责整个的数据修复工作;
步骤2:Ln节点获取集群中各个节点之间的网络传输速度bandwidthi,j,其中0≤i≤k+m-1,0≤j≤k+m-1;
步骤3:Ln节点获取当前节点编号ln,失效节点编号fn,以及当前纠删码配置下的纠删码生成矩阵G;如果失效节点为校验节点,则直接读取全部的数据块并执行编码操作以得到相应的校验块;如果失效节点为数据节点,则执行矩阵调度算法,查找修复开销最小的数据修复方案;
步骤4:根据数据修复方案确定数据修复所需要的数据读请求;
步骤5:将修复操作对应的数据读请求发送到具体的存储节点;
步骤6:各个存储节点接受到数据读请求后,根据相应的数据读操作的偏移量,读取本地磁盘数据,并发送回修复节点;
步骤7:修复节点接受到全部的返回数据后,执行解码操作,将丢失的数据重构出来;
步骤8:修复节点完成编码块修复之后,将编码块修复情况发送给监控节点,如果修复成功,将修复节点上编码块相关的元数据信息发送给监控节点;如果修复失败,修复节点对失效编码块进行重新修复;
在步骤3中,纠删码调度算法的具体执行步骤如下:
(1):初始化参数,令K=0.97,T=M=L=k*m2*w2;
(2):根据纠删码生成矩阵G的后m*w行得到m*w个译码方程,每个译码方程包含了一个校验元素与若干个数据元素,表明该校验元素由上述若干数据元素进行异或运算得到,即该校验元素与上述若干数据元素进行异或运算的结果为0;
(3):将所述m*w个译码方程分成w组,第i组中的每个译码方程均覆盖了待修复数据块中的第i个元素,0≤i≤w-1,每组负责修复1个失效的数据元素;
(4):从每个分组中随机地选取1个译码方程,组成包含w个译码方程的修复方案;
(5):修复方案有效则需要同时满足以下2个条件:1)修复方案中的译码方程覆盖了所有的w个丢失的数据元素,2)译码方程关于丢失元素是线性独立的;如果所述修复方案是有效的,则将该修复方案赋值给Solution,Solutionbest=Solution,设置count=0,否则转上一步;
(6):计算Solutionbest的修复代价;
(7):数据修复方案Solution的修复代价与Solutionbest的修复代价相等,cost=costbest;
(8):从Solution包含的w个译码方程中随机地选取1个译码方程ei,获取其所在分组,从该分组中随机地选取一个译码方程ej(ej≠ei),用ej替换掉Solution中的ei;
(9):如果新的修复方案是有效的,则将该修复方案赋值给Solutionnew,否则跳转执行上一步;
(10):计算Solutionnew的修复代价,记做costnew;
(11):根据模拟退火的思想判断是否接受新的修复方案;
(12):设置count=count+1,如果count<M*L并且T>0.001,跳转执行第八步;
(13):根据Solutionbest,计算从每个编码块D0,D1,D2,…,Dk-1,C0,C1,C2,…,Cm-1读取的元素编号,这些编号即表示了从哪些节点读取哪些元素;
计算Solutionbest的修复代价的具体步骤如下:
6.1通过遍历的方式统计Solutionbest从每个节点读取的元素数量,记做Ni,0≤i≤k+m-1;
6.2根据Ni*1/bandwidthi,ln计算从每个节点上下载数据所需要的代价;
6.3根据∑Ni*1/bandwidthi,ln计算出Solutionbest所需要的数据修复总代价,记做costbest;
根据模拟退火的思想判断是否接受新的修复方案的具体步骤如下:
11.1计算Solution和新解Solutionnew的修复代价差值,记做Δ=cost-costnew;
11.2如果Δ>0,则接受新解,即Solution=Solutionnew,cost=costnew,并判断是否costbest>costnew,如果成立,则Solutionbest=Solutionnew,costbest=costnew;
11.3如果Δ≤0,则产生(0,1)之间的一个随机数,将该随机数赋值给random_probability;如果,则接受新解Solution,即Solution=Solutionnew,cost=costnew。
2.根据权利要求1所述的一种基于模拟退火的分布式纠删码存储系统数据修复方法,其特征在于,步骤1中,存储节点的存储方法为:待存入存储系统的数据文件F使用CRS纠删码进行编码,CRS纠删码用k,m,w表示;数据文件F被分割为k个数据块,记做D0,D1,…,Dk-1,每个数据块包含w个数据元素,数据块Di(0≤i≤k-1)的w个元素记作di,0,di,1,…,di,w-1;接下来,调用CRS纠删码编码方法,得到k+m个编码块,包含k个原始数据块和m个校验块,校验块记作C0,C1,…,Cm-1,每个校验块包含w个元素,校验块Cj(0≤j≤m-1)的w个元素记作cj,0,cj,1,…,cj,w-1;k+m个编码块组成了一个条带,编码块被分别存储在不同的存储节点上。
3.根据权利要求1所述的一种基于模拟退火的分布式纠删码存储系统数据修复方法,其特征在于,步骤3中,根据纠删码生成矩阵G、故障节点编号fn、存储集群中各节点之间的网络带宽,执行调度算法,该算法将获取一个K-V集合,每组K-V表示从对应的节点K读取的元素编号集合V。
4.根据权利要求3所述的一种基于模拟退火的分布式纠删码存储系统数据修复方法,其特征在于,在步骤4中,获取每个数据块和校验块的元数据信息,如块的位置、块的大小;根据步骤三获取的K-V数值以及上述元数据信息,确定每个节点上块的数据读操作的偏移量,以此来确定数据修复时对应的数据读请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379654.2A CN110212923B (zh) | 2019-05-08 | 2019-05-08 | 一种基于模拟退火的分布式纠删码存储系统数据修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379654.2A CN110212923B (zh) | 2019-05-08 | 2019-05-08 | 一种基于模拟退火的分布式纠删码存储系统数据修复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110212923A CN110212923A (zh) | 2019-09-06 |
CN110212923B true CN110212923B (zh) | 2020-11-17 |
Family
ID=67786929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379654.2A Expired - Fee Related CN110212923B (zh) | 2019-05-08 | 2019-05-08 | 一种基于模拟退火的分布式纠删码存储系统数据修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110212923B (zh) |
Families Citing this family (11)
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 |
CN110895497B (zh) * | 2019-12-09 | 2022-06-07 | 成都信息工程大学 | 一种分布式存储中降低纠删码修复的方法及装置 |
CN111131457B (zh) * | 2019-12-25 | 2021-11-30 | 上海交通大学 | 一种异构分布式存储的容量和带宽折中方法及系统 |
CN111541512B (zh) * | 2020-03-13 | 2023-06-20 | 中国科学院深圳先进技术研究院 | 数据的处理方法、终端设备、可读存储介质 |
CN111522656A (zh) * | 2020-04-14 | 2020-08-11 | 北京航空航天大学 | 一种边缘计算数据调度与分布方法 |
CN111625400B (zh) * | 2020-05-26 | 2024-01-16 | 平安科技(深圳)有限公司 | 一种数据冗余处理方法、装置及存储介质 |
CN111858126B (zh) * | 2020-07-29 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种基于k+m纠删集群的数据处理方法及装置 |
CN112035059A (zh) * | 2020-08-04 | 2020-12-04 | 烽火通信科技股份有限公司 | 分布式存储系统单点失效修复方法、电子设备与存储介质 |
CN113315753A (zh) * | 2021-04-25 | 2021-08-27 | 国网浙江省电力有限公司电力科学研究院 | 基于编码技术的区块数据可信恢复方法 |
CN113504874B (zh) * | 2021-06-24 | 2023-08-29 | 中国科学院计算技术研究所 | 基于负载感知的自适应粒度纠删码编解码加速方法及系统 |
CN114237985B (zh) * | 2021-12-22 | 2022-09-23 | 中国人民解放军国防科技大学 | 修复纠删码存储系统中失效存储块的方法及相关设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607304A (zh) * | 2013-11-21 | 2014-02-26 | 中国人民解放军国防科学技术大学 | 一种基于纠删码的失效数据线形修复方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430272B2 (en) * | 2016-01-25 | 2019-10-01 | California Institute Of Technology | Secure raid schemes for distributed storage |
US10372334B2 (en) * | 2016-02-11 | 2019-08-06 | International Business Machines Corporation | Reclaiming free space in a storage system |
-
2019
- 2019-05-08 CN CN201910379654.2A patent/CN110212923B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607304A (zh) * | 2013-11-21 | 2014-02-26 | 中国人民解放军国防科学技术大学 | 一种基于纠删码的失效数据线形修复方法 |
Non-Patent Citations (1)
Title |
---|
纠删码存储系统单磁盘错误重构优化方法综述;傅颖勋 等;《计算机研究与发展》;20180115;第55卷(第1期);1-13 * |
Also Published As
Publication number | Publication date |
---|---|
CN110212923A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110212923B (zh) | 一种基于模拟退火的分布式纠删码存储系统数据修复方法 | |
CN108540520B (zh) | 基于部分重复码的局部性修复编码及节点故障修复方法 | |
US9647698B2 (en) | Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes | |
KR101451338B1 (ko) | 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치 | |
CN106776112B (zh) | 一种基于Pyramid码的局部性修复编码方法 | |
CN109491835B (zh) | 一种基于动态分组码的数据容错方法 | |
CN110750382A (zh) | 用于提高数据修复性能的最小存储再生码编码方法及系统 | |
CN111697976B (zh) | 一种基于分布式存储的rs纠删快速解码方法及系统 | |
KR20060096156A (ko) | 서브심볼 기반 코드를 이용한 데이터 삭제를 방지하기 위한방법 | |
CN103106124B (zh) | 一种基于纠删码集群存储系统的交叉重构方法 | |
CN103607304A (zh) | 一种基于纠删码的失效数据线形修复方法 | |
CN112835738B (zh) | 一种条带数据存储结构的构建方法 | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
CN110168505A (zh) | 分布式存储系统的数据修复方法及存储介质 | |
CN109194444A (zh) | 一种基于网络拓扑的平衡二叉树修复方法 | |
CN108762978B (zh) | 一种局部部分重复循环码的分组构造方法 | |
CN107689983A (zh) | 基于低修复带宽的云存储系统及方法 | |
CN114116297B (zh) | 一种数据编码方法、装置、设备及介质 | |
WO2024146186A1 (zh) | 一种数据存储方法、装置、计算机设备及非易失性可读存储介质 | |
Gupta et al. | Rack-aware cooperative regenerating codes | |
CN110895497A (zh) | 一种分布式存储中降低纠删码修复的方法及装置 | |
CN112286449B (zh) | 一种rs纠删处理设备及分布式存储系统 | |
CN109067852A (zh) | 一种基于纠删码的跨中心协同修复方法 | |
CN113258936A (zh) | 一种基于循环移位的双重编码的构造方法 | |
CN110781024B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201117 |