CN113258938B - 一种单节点故障快速修复纠删码的构造方法 - Google Patents

一种单节点故障快速修复纠删码的构造方法 Download PDF

Info

Publication number
CN113258938B
CN113258938B CN202110617552.7A CN202110617552A CN113258938B CN 113258938 B CN113258938 B CN 113258938B CN 202110617552 A CN202110617552 A CN 202110617552A CN 113258938 B CN113258938 B CN 113258938B
Authority
CN
China
Prior art keywords
block
transverse
check
blocks
stripe
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
CN202110617552.7A
Other languages
English (en)
Other versions
CN113258938A (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.)
Chengdu University of Information Technology
Original Assignee
Chengdu University of Information Technology
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 Chengdu University of Information Technology filed Critical Chengdu University of Information Technology
Priority to CN202110617552.7A priority Critical patent/CN113258938B/zh
Publication of CN113258938A publication Critical patent/CN113258938A/zh
Application granted granted Critical
Publication of CN113258938B publication Critical patent/CN113258938B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明公开了一种单节点故障快速修复纠删码的构造方法,包括:分别在横向方向和垂直(纵向)方向进行编码,首先进行横向方向上进行编码,生成横向局部校验和全局校验,保证编码的容错能力;在垂直方向上进行异或编码得到校验,使编码具有单节点快速修复能力。当分组内出现单个失效块时,通过垂直方向的异或校验进行修复,可减少修复带宽;当分组内出现多个块失效时,通过横向校验恢复,保持较高的容错能力。

Description

一种单节点故障快速修复纠删码的构造方法
技术领域
本发明涉及编码技术领域,特别涉及一种单节点故障快速修复纠删码的构造方法。
背景技术
随着信息技术在各个行业和领域的不断发展,数据量呈现出指数级增长的趋势,如何安全存放海量数据成为亟待解决的问题。存储数据量的持续增长导致分布式存储系统的规模越来越大,由于分布式存储系统具有地域的分散性,以及网特性,因此也面临着许多软硬件故障,病毒攻击,以及自然灾害等考验。这些因素都有可能导致多个数据节点失效,以致数据丢失。因此,如何安全的存放数据,让数据具有高可靠性和高可用性,成为了现阶段的分布式安全存储的一个重要课题。
纠删码技术是一种近年来日益引起业界重视的存储系统可靠性增强方法。与多副本技术相比,纠删码技术最大的优势在于保证容错能力的前提下可以大幅降低存储开销和更新代价,同时提高存储效率。因此,纠删码逐步成为了分布式存储系统可靠性增强的重要方法和研究热点。对数据中心产生的各种节点失效数据丢失的问题做出统计分析,其中单节点失效占比高达99.75%,因此如何快速修复单节点故障,降低修复带宽成为研究的重点。
现有技术方案主要分为两类:基于阵列纠删码的单节点修复和基于局部分组码的单节点修复。当前以降低读取数据总量为优化目标的纠删码,具有较高的容错能力和较低的数据读取总量,有的还具有MDS属性,但单节点故障修复的数据读取量和数据传输量仍然较高。
在优化单节点修复开销方面,存在着以下问题:
1)成多倍于原始数据的校验数据,存储开销大,空间利用率低;
2)修复单节点时需要读取所有节点数据,修复成本高;
3)基于构造的单节点错误重构仅对编码的标准形态有效,因此普适性较差;
4)阵列码容错能力有限,阵列尺寸有严格限制;
5)基于分组码的单节点修复,修复成本仍然较高。
发明内容
为解决上述技术问题,本发明提供了一种单节点故障快速修复纠删码的构造方法。
根据本发明实施例提供的一种单节点故障快速修复纠删码的构造方法,包括:
在分布式存储系统中单节点纠删码发生故障时,判断发生故障的单节点纠删码是分组内的任一原始数据块、任一横向局部校验块或分组外的任一横向全局校验块;
当判断发生故障的单节点纠删码是分组内的任一原始数据块或任一横向局部校验块时,确定出错原始数据块或横向局部校验块所在的条带集,并利用所述条带集中丢失块所在的校验链中的其他原始数据块、横向局部校验块和纵向局部校验块,对所述出错原始数据块或横向局部校验块的数据进行快速修复;
当判断发生故障的单节点纠删码是分组外的任一横向全局校验块时,确定出错横向全局校验块所对应的多个分组,并利用每个分组内的横向局部校验块,对所述出错横向全局校验块的数据进行快速修复。
优选地,所述利用所述条带集中丢失块所在的校验链中的其他原始数据块、横向局部校验块和纵向局部校验块,对所述出错原始数据块或横向局部校验块的数据进行快速修复包括:
从所述条带集中读取所述出错原始数据块或横向局部校验块所在校验链中未丢失的其他原始数据块、横向局部校验块和纵向局部校验块;
将所述其他原始数据块、横向局部校验块和纵向局部校验块进行异或解码处理,得到所述出错原始数据块或横向局部校验块的数据。
优选地,所述利用每个分组内的横向局部校验块,对所述出错横向全局校验块的数据进行快速修复包括:
从所述每个分组内读取与所述出错横向全局校验块相对应的横向局部校验块;
将所述每个分组内读取的横向局部校验块进行异或解码处理,得到所述出错横向全局校验块的数据。
优选地,在分布式存储系统中单节点纠删码发生故障之前,还包括:
将分布式存储系统中的x原始数据节点进行分组和条带划分处理,得到包含y个第一条带的分组;
通过对所述分组内的每个包含原始数据块的第一条带进行横向编码处理,得到每个第一条带的横向局部校验块和横向全局校验块,并将所述横向局部校验块和所述横向全局校验块添加到对应的第一条带内,得到包含原始数据块、横向局部校验块和横向全局校验块的第二条带;
根据用户设定的条带集大小,将所有包含原始数据块、横向局部校验块和横向全局校验块的第二条带进行条带集划分处理,得到包含多个第二条带的条带集;
通过分别对所述条带集中的每个第二条带进行数据块旋转移位处理,得到第三条带,并生成包含所述第三条带的条带集;
通过对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块,并根据所述多个纵向校验块构建一个新的纵向局部校验条带,并将所述纵向局部校验条带存放到所述条带集中。
优选地,所述通过对所述分组内的每个包含原始数据块的第一条带进行横向编码处理,得到所述每个第一条带的横向局部校验块和横向全局校验块包括:
通过对所述分组内的每个包含原始数据块的第一条带进行组内横向编码处理,得到所述每个第一条带的横向局部校验块;
通过对所述每个第一条带的横向局部校验块进行横向异或编码处理,得到所述每个第一条带的横向全局校验块。
优选地,所述通过对所述分组内的每个包含原始数据块的第一条带进行组内横向编码处理,得到所述每个第一条带的横向局部校验块包括:
通过对所述分组内每个第一条带的k个原始数据块按纠错码的参数设置RS(Reed-Solomon,纠错码)(k,r)进行编码,生成r个横向局部校验块;
其中,所述k是指原始数据块个数;所述r是指校验块个数;所述k和r均为正整数,且r<k。
优选地,当横向全局校验个数与每个分组内横向局部校验个数r相同时,所述通过对所述每个第一条带的横向局部校验块进行横向异或编码处理,得到所述每个第一条带的横向全局校验块包括:
将所有分组的第一条带的第一个横向局部校验块进行横向异或编码处理,得到所述每个第一条带的第一个横向全局校验块;
将所有分组的第一条带的第二个横向局部校验块进行横向异或编码处理,得到所述每个第一条带的第二个横向全局校验块;
依次遍历所有分组的第一条带的横向局部校验块,进行横向异或处理,得到所属分组第一条带的所有横向全局校验块;
依次遍历所有分组的每个条带的横向局部校验块,进行横向异或处理,得到所有每个条带的横向全局校验块。
优选地,所述通过分别对所述条带集中的每个第二条带进行数据块旋转移位处理,得到第三条带,并生成包含所述第三条带的条带集包括:
按照数据块旋转移位公式对所述每个条带集中的每个第二条带进行数据块旋转移位处理,使所述每个条带集内的原始数据块和横向局部校验块均匀分布在每个纠删码节点内;
其中,所述数据块旋转移位公式包括:
Figure 625235DEST_PATH_IMAGE001
其中,所述
Figure 107032DEST_PATH_IMAGE002
是指数据块旋转移位后的横向坐标和纵向坐标;所述m是指数 据块的原始横向坐标;所述n是指数据块的原始纵向坐标;所述
Figure 786275DEST_PATH_IMAGE003
是指数据块的纵 向坐标由原始的横纵坐标之和
Figure 732235DEST_PATH_IMAGE004
对组长
Figure 409204DEST_PATH_IMAGE005
取模。
优选地,所述通过对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块包括:
按照纵向异或编码公式对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块;
其中,所述纵向异或编码公式包括:
Figure 942078DEST_PATH_IMAGE006
其中,
Figure 159433DEST_PATH_IMAGE007
是指分组内局部校验块,所述S是每个分组内局部校验块的横坐标;所 述j是每个分组内局部校验块的纵坐标;所述m是原始数据块的横坐标,所述
Figure 100844DEST_PATH_IMAGE008
是组长,
Figure 807769DEST_PATH_IMAGE009
是原始数据块的纵坐标。
根据本发明实施例提供的方案,优化分组码编码的方式,分别在横向方向和垂直(纵向)方向进行编码,首先进行横向方向上进行编码,生成横向局部校验和全局校验,保证编码的容错能力;在垂直方向上进行异或编码得到校验,使编码具有单节点快速修复能力。当分组内出现单个失效块时,通过垂直方向的异或校验进行修复,可减少修复带宽;当分组内出现多个块失效时,通过横向校验恢复,保持较高的容错能力。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于理解本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例提供的一种单节点故障快速修复纠删码的构造方法的流程图;
图2是本发明实施例提供的进行节点分组的示意图;
图3是本发明实施例提供的进行条带划分的示意图;
图4是本发明实施例提供的分组内编码得到横向局部校验的示意图;
图5是本发明实施例提供的分组内编码得到横向全局校验的示意图;
图6是本发明实施例提供的分组内划分条带集的示意图;
图7是本发明实施例提供的分组内的每个条带集内进行循环移位的示意图;
图8是本发明实施例提供的分组内的每个条带集进行纵向编码的示意图;
图9是本发明实施例提供的分组内(6,2)CLRC(Cross Locally RepairableCodes,交叉局部可修码)单节点恢复的数据读取情况的示意图,其中图(a)是CLRC码第一个分组的一个条带集,图(b)是CLRC一个条带集内恢复单节点的数据读取量;
图10是本发明实施例提供的分组内(6,2)LRC 单节点恢复的数据读取情况的示意图,其中图(a)是LRC码第一个分组的一个条带集,图(b)是LRC一个条带集内恢复单节点的数据读取量;
图11是本发明实施例提供的(12,2,2)CLRC组外全局校验节点恢复的数据读取情况的示意图;
图12是本发明实施例提供的分组内(9,3)LRC与分组内(9,3)CLRC单节点恢复的数据读取情况对比的示意图,其中图(a)是LRC码一个条带集恢复单节点的数据读取情况,图(b)是CLRC码一个条带集恢复单节点的数据读取情况。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的一种单节点故障快速修复纠删码的构造方法的流程图,如图1所示,包括:
步骤S101:在分布式存储系统中单节点纠删码发生故障时,判断发生故障的单节点纠删码是分组内的任一原始数据块、任一横向局部校验块或分组外的任一横向全局校验块;
步骤S102:当判断发生故障的单节点纠删码是分组内的任一原始数据块或任一横向局部校验块时,确定出错原始数据块或横向局部校验块所在的条带集,并利用所述条带集中丢失块所在的校验链中的其他原始数据块、横向局部校验块和纵向局部校验块,对所述出错原始数据块或横向局部校验块的数据进行快速修复;
步骤S103:当判断发生故障的单节点纠删码是分组外的任一横向全局校验块时,确定出错横向全局校验块所对应的多个分组,并利用每个分组内的横向局部校验块,对所述出错横向全局校验块的数据进行快速修复。
其中,所述利用所述条带集中丢失块所在的校验链中的其他原始数据块、横向局部校验块和纵向局部校验块,对所述出错原始数据块或横向局部校验块的数据进行快速修复包括:从所述条带集中读取所述出错原始数据块或横向局部校验块所在校验链中未丢失的其他原始数据块、横向局部校验块和纵向局部校验块;将所述其他原始数据块、横向局部校验块和纵向局部校验块进行异或解码处理,得到所述出错原始数据块或横向局部校验块的数据。
其中,所述利用每个分组内的横向局部校验块,对所述出错横向全局校验块的数据进行快速修复包括:从所述每个分组内读取与所述出错横向全局校验块相对应的横向局部校验块;将所述每个分组内读取的横向局部校验块进行异或解码处理,得到所述出错横向全局校验块的数据。
本发明实施例在分布式存储系统中单节点纠删码发生故障之前,还包括:将分布式存储系统中的x原始数据节点进行分组和条带划分处理,得到包含y个第一条带的分组;通过对所述分组内的每个包含原始数据块的第一条带进行横向编码处理,得到每个第一条带的横向局部校验块和横向全局校验块,并将所述横向局部校验块和所述横向全局校验块添加到对应的第一条带内,得到包含原始数据块、横向局部校验块和横向全局校验块的第二条带;根据用户设定的条带集大小,将所有包含原始数据块、横向局部校验块和横向全局校验块的第二条带进行条带集划分处理,得到包含多个第二条带的条带集;通过分别对所述条带集中的每个第二条带进行数据块旋转移位处理,得到第三条带,并生成包含所述第三条带的条带集;通过对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块,并根据所述多个纵向校验块构建一个新的纵向局部校验条带,并将所述纵向局部校验条带存放到所述条带集中。
其中,所述通过对所述分组内的每个包含原始数据块的第一条带进行横向编码处理,得到所述每个第一条带的横向局部校验块和横向全局校验块包括:通过对所述分组内的每个包含原始数据块的第一条带进行组内横向编码处理,得到所述每个第一条带的横向局部校验块;通过对所述每个第一条带的横向局部校验块进行横向异或编码处理,得到所述每个第一条带的横向全局校验块。
其中,所述通过对所述分组内的每个包含原始数据块的第一条带进行组内横向编码处理,得到所述每个第一条带的横向局部校验块包括:通过对所述分组内每个第一条带的k个原始数据块按纠错码的参数设置RS(k,r)进行编码,生成r个横向局部校验块;其中,所述k是指原始数据块个数;所述r是指校验块个数;所述k和r均为正整数,且r<k。
其中,当横向全局校验个数与每个分组内横向局部校验个数r相同时,所述通过对所述每个第一条带的横向局部校验块进行横向异或编码处理,得到所述每个第一条带的横向全局校验块包括:将所有分组的第一条带的第一个横向局部校验块进行横向异或编码处理,得到所述每个第一条带的第一个横向全局校验块;将所有分组的第一条带的第二个横向局部校验块进行横向异或编码处理,得到所述每个第一条带的第二个横向全局校验块;依次遍历所有分组的第一条带的横向局部校验块,进行横向异或处理,得到所属分组第一条带的所有横向全局校验块;依次遍历所有分组的每个条带的横向局部校验块,进行横向异或处理,得到所有每个条带的横向全局校验块。
具体地说,所述通过分别对所述条带集中的每个第二条带进行数据块旋转移位处理,得到第三条带,并生成包含所述第三条带的条带集包括:按照数据块旋转移位公式对所述每个条带集中的每个第二条带进行数据块旋转移位处理,使所述每个条带集内的原始数据块和横向局部校验块均匀分布在每个纠删码节点内;
其中,所述数据块旋转移位公式包括:
Figure 998579DEST_PATH_IMAGE010
其中,所述
Figure 19625DEST_PATH_IMAGE011
是指数据块旋转移位后的横向坐标和纵向坐标;所述m是指数 据块的原始横向坐标;所述n是指数据块的原始纵向坐标;所述
Figure 549963DEST_PATH_IMAGE012
是指数据块的纵 向坐标由原始的横纵坐标之和
Figure 929254DEST_PATH_IMAGE013
对组长
Figure 810623DEST_PATH_IMAGE014
取模。
具体地说,所述通过对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块包括:按照纵向异或编码公式对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块;
其中,所述纵向异或编码公式包括:
Figure 432097DEST_PATH_IMAGE015
其中,
Figure 82521DEST_PATH_IMAGE016
是指分组内局部校验块,所述S是每个分组内局部校验块的横坐标;所 述j是每个分组内局部校验块的纵坐标;所述m是原始数据块的横坐标,所述
Figure 865669DEST_PATH_IMAGE008
是组长,
Figure 234334DEST_PATH_IMAGE017
是原始数据块的纵坐标。
下面结合附图2-12对本发明的技术方案进行详细的说明
实施例一
本发明实施例包括编码过程和解码过程。
编码过程:
第一步,进行节点分组;
将x个节点,分为y组,每组k个原始数据节点,每个横向条带内含有y个分组,每组含有k个原始数据块。也就是说,如图2所示,将12个节点,分为2组,每组含有6个原始数据节点。
第二步,进行条带划分;
每个节点内含有若干个数据块(数据块包括原始数据块和校验块),每个节点中第一个数据块组成条带S0,每个节点中第2个数据块组成条带S1,每个节点中第z个数据块组成条带Sz-1,每个横向条带内含有y个分组,每组含有k个原始数据块。也就是说,如图3所示,每个节点内含有若干个数据块,每个节点中第一个数据块组成条带S0,每个节点中第2个数据块组成条带S1,每个横向条带内含有2个分组,每组含有6个原始数据块。
第三步,进行横向编码,得到横向局部校验;
每个横向分组进行组内编码,选择RS码进行编码,编码方程:C=UG(公式一)(U是原始数据向量1*k;G是生成矩阵,规模是k*n;C是生成的码字1*n),分组内每个条带中的每个分组按RS(k,r)进行编码,k个原始数据块通过编码产生r个横向局部校验块,(R的取值根据用户自己的容错需求进行设定,但是一般情况下,为了提升码率,r<k)。也就是说,如图4所示,分组内每个条带中的每个分组按RS(6,2)进行编码,6个原始数据块通过编码产生2个横向局部校验块。
第四步,进行横向编码,得到横向全局校验;
依次将第一个分组的第一个横向局部校验块与第二个分组的第一个横向局部校验块进行异或运算,得到第一个横向全局校验块P0;将第一个分组的第二个横向局部校验块与第二个分组的第二个横向局部校验块进行异或运算,得到第二个横向全局校验块P1,依次计算的到所有的横向全局校验块。也就是说,如图5所示,依次将第一个分组的第一个横向局部校验块Q0与第二个分组的第一个横向局部校验块Q2进行异或运算,得到第一个横向全局校验块P0;将第一个分组的第二个横向局部校验块Q1与第二个分组的第二个横向局部校验块Q3进行异或运算,得到第二个横向全局校验块P1
第五步,划分条带集;
一个分组内若干个条带组成一个条带集(根据总的节点个数,自己设定条带集大小s,但是保证s<gl,若条带集s<<gl,则解码优势更加明显)且每个条带集大小相同,一个分组内提到及中的每个条带包含k个原始数据块和r个局部校验块,组长gl=k+r。也就是说,如图6所示,一个分组内4个条带组成一个条带集且每个条带集大小相同,一个分组内提到及中的每个条带包含6个原始数据块和2个局部校验块,组长gl=8。
其中,图6中t的取值:取决于几个因素:一个节点的总数据量X;每个节点有多少个数据块t;每个数据块大小size;t=X/size。
第六步:每个条带集内进行循环移位;
数据块和校验块的原始位置:(m,n),最终位置按照公式二计算得到:
Figure 393919DEST_PATH_IMAGE018
公式二
每个条带所有块移位存放;数据块和校验块均匀分布在每个节点,如图7所示,按照公式进行移位,横坐标不变,纵坐标由公式二计算得到。
第七步,每个条带集内进行纵向编码。
每个条带集内根据公式三计算得到纵向校验块,8个纵向校验跨构成条带集中第5个条带,并分别存放在不同的节点中,如图8所示;
Figure 164429DEST_PATH_IMAGE019
公式三
d(m,n)是数据块,m是数据块的横坐标,C(s,j)是校验块,s是校验块的横坐标,<n-m-j>mod(gl)是数据块纵坐标,每个校验块是根据公式三进行计算,一个校验块有哪些数据块计算得到,选择横坐标由m从0到s,以及根据n,m,j关系计算得出纵坐标,确定数据块的位置。
解码过程:
情况一:分组内单节点出错
分组中每个条带集按照公式三通过纵向异或校验进行恢复;假设分组单内节点D0出错,第一个条带集中5个原始数据块失效,分别取出各个失效块所在校验链的其他数据块和校验块,进行异或操作,可以恢复失效块的数据。
恢复数据块(0,0),按照公式三计算出取出所在校验链的其他数据块:(1,1)、(2,2)、(3,3)和(4,4),再将4个数据块的内容进行异或,可以恢复失效块数据:
(0,0) = (1,1) ^ (2,2) ^ (3,3) ^ (4,4)
(1,0) = (2,1) ^ (3,2) ^ (4,3) ^ (0,7)
(2,0) = (3,1) ^ (4,2) ^ (0,6) ^ (1,7)
(3,0) = (4,1) ^ (0,5) ^ (1,6) ^ (2,7)
(4,0) = (0,4) ^ (1,5) ^ (2,6) ^ (3,7)
如附图9(a)和附图9(b)、附图10(a)和附图10(b)所示,黑白方格块为失效数据块,黑色块为修复时需要读取的数据块,斜杠块为不需要读取的数据块。一个条带集剩余28个数据块,LRC读取24个数据块,约85.7%的数据进行单节点恢复;而CLRC码的一个条带集剩余35个数据块,CLRC码读取20个数据块块进行单节点恢复,读取51.1%的数据进行恢复;大幅减少单节点恢复的数据读取量和传输量。
情况二:组外全局校验节点出错
如图11所示,全局校验节点故障,分别从每个分组中读取对应位置的局部校验(局部校验根据编码方程:C=UG得到,存放在每个分组的固定位置),进行异或计算,恢复全局校验数据。当全局校验节点P0故障,分别从第一个分组中读取对应位置的局部校验块(S0,Q0),第二个分组对应位置的局部校验块(S0,Q2),进行异或计算,得到(S0,P0) = (S0,Q0) ^ (S0,Q2),恢复全局校验节点的第一个校验块;依次计算,分别恢复:
(S0,P0) = (S0,Q0) ^ (S0,Q2)
(S1,P0) = (S1,Q1) ^ (S1,Q3)
(S2,P0) = (S2,D0) ^ (S2,D6)
(S3,P0) = (S3,D1) ^ (S3,D7)
(S4,P0) = (S4,D2) ^ (S4,D8)
实例二:
第一步,进行节点分组;
将18个节点,分为2组,每组9个原始数据节点。
第二步,进行条带划分;
每个节点内含有若干个数据块,每个节点中第一个数据块组成条带S0,每个节点中第2个数据块组成条带S1,每个横向条带内含有2个分组,每组含有9个原始数据块。
第三步,进行横向编码,得到横向局部校验;
每个横向分组进行组内编码,选择RS码进行编码,编码方程:C=UG (公式一),分组内每个条带中的每个分组按RS(9,3)进行编码,9个原始数据块通过编码产生3个横向局部校验块。
第四步,进行横向编码,得到横向全局校验;
依次将第一个分组的第一个横向局部校验块Q0与第二个分组的第一个横向局部校验块Q3进行异或运算,得到第一个横向全局校验块P0;将第一个分组的第二个横向局部校验块Q1与第二个分组的第二个横向局部校验块Q4进行异或运算,得到第二个横向全局校验块P1;将第一个分组的第二个横向局部校验块Q2与第二个分组的第二个横向局部校验块Q5进行异或运算,得到第二个横向全局校验块P2
第五步,划分条带集;
一个分组内4个条带组成一个条带集且每个条带集大小相同,一个分组内提到及中的每个条带包含9个原始数据块和3个局部校验块,组长gl=12。
第六步:每个条带集内进行循环移位;
原始位置:(m,n),最终位置按照公式二计算:
Figure 873804DEST_PATH_IMAGE020
公式二
每个条带所有块移位存放;数据块和校验块均匀分布在每个节点。
第七步,每个条带集内进行纵向编码。
每个条带集内根据公式三计算得到纵向校验块,8个纵向校验跨构成条带集中第5个条带,并分别存放在不同的节点中。
Figure 729765DEST_PATH_IMAGE021
公式三
解码过程:
分组中每个条带集按照公式三通过纵向异或校验进行恢复;假设分组单内节点D0出错,第一个条带集中5个原始数据块失效,分别取出各个失效块所在校验链的其他数据块和校验块,进行异或操作,可以恢复失效块的数据。
恢复数据块(0,0),按照公式计算出取出所在校验链的其他数据块:(1,1)、(2,2)、(3,3)和(4,4),再将4个数据块的内容进行异或,可以恢复失效块数据:
(0,0) = (1,1) ^ (2,2) ^ (3,3) ^ (4,4)
(1,0) = (2,1) ^ (3,2) ^ (4,3) ^ (0,11)
(2,0) = (3,1) ^ (4,2) ^ (0,10) ^ (1,11)
(3,0) = (4,1) ^ (0,9) ^ (1,10) ^ (2,11)
(4,0) = (0,8) ^ (1,9) ^ (2,10) ^ (3,11)
如图12所示,在附图(a)和附图(b)中,黑白方格块为失效数据块,黑色块为修复时需要读取的数据块,斜杠块为不需要读取的数据块。一个条带集剩余44个数据块,LRC读取32个数据块,约72.7%的数据进行单节点恢复;而CLRC码的一个条带集剩余55个数据块,CLRC码读取20个数据块块进行单节点恢复,读取36.4%的数据进行恢复;大幅减少单节点恢复的数据读取量和传输量。条带集大小固定,CLRC码单节点修复的数据读取量固定,随着分组节点数增多,读取的数据量占剩余数据的比例大幅降低。
根据本发明实施例提供的方案,在构造分组码的时,首先,在横向方向以一个条带为单位进行组内划分,每个分组内在横向方向上分别在组内进行编码和整条带内进行编码;然后,在每个分组内划分条带集,多个条带组成一个条带集,每个条带集内的条带进行旋转移位,并按照一定的代数关系在垂直方向上进行异或编码,并将得到校验分别存储在每个节点中。在每个条带在横向方向上分别编码生成局部校验和全局校验后,在每个分组内部,将每个条带集内的条带按照一定的代数关系进行旋转和移位,使得数据块和校验块在每个节点上均分分布,平衡了每个节点的数据访问热度,从而实现负载均衡。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

Claims (8)

1.一种单节点故障快速修复纠删码的构造方法,其特征在于,包括:
在分布式存储系统中单节点纠删码发生故障时,判断发生故障的单节点纠删码是分组内的任一原始数据块、任一横向局部校验块或分组外的任一横向全局校验块;
当判断发生故障的单节点纠删码是分组内的任一原始数据块或任一横向局部校验块时,确定出错原始数据块或横向局部校验块所在的条带集,并利用所述条带集中丢失块所在的校验链中的其他原始数据块、横向局部校验块和纵向局部校验块,对所述出错原始数据块或横向局部校验块的数据进行快速修复;
当判断发生故障的单节点纠删码是分组外的任一横向全局校验块时,确定出错横向全局校验块所对应的多个分组,并利用每个分组内的横向局部校验块,对所述出错横向全局校验块的数据进行快速修复;
其中,在分布式存储系统中单节点纠删码发生故障之前,还包括:
将分布式存储系统中的x原始数据节点进行分组和条带划分处理,得到包含y个第一条带的分组;
通过对所述分组内的每个包含原始数据块的第一条带进行横向编码处理,得到每个第一条带的横向局部校验块和横向全局校验块,并将所述横向局部校验块和所述横向全局校验块添加到对应的第一条带内,得到包含原始数据块、横向局部校验块和横向全局校验块的第二条带;
根据用户设定的条带集大小,将所有包含原始数据块、横向局部校验块和横向全局校验块的第二条带进行条带集划分处理,得到包含多个第二条带的条带集;
通过分别对所述条带集中的每个第二条带进行数据块旋转移位处理,得到第三条带,并生成包含所述第三条带的条带集;
通过对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块,并根据所述多个纵向校验块构建一个新的纵向局部校验条带,并将所述纵向局部校验条带存放到所述条带集中。
2.根据权利要求1所述的方法,其特征在于,所述利用所述条带集中丢失块所在的校验链中的其他原始数据块、横向局部校验块和纵向局部校验块,对所述出错原始数据块或横向局部校验块的数据进行快速修复包括:
从所述条带集中读取所述出错原始数据块或横向局部校验块所在校验链中未丢失的其他原始数据块、横向局部校验块和纵向局部校验块;
将所述其他原始数据块、横向局部校验块和纵向局部校验块进行异或解码处理,得到所述出错原始数据块或横向局部校验块的数据。
3.根据权利要求1所述的方法,其特征在于,所述利用每个分组内的横向局部校验块,对所述出错横向全局校验块的数据进行快速修复包括:
从所述每个分组内读取与所述出错横向全局校验块相对应的横向局部校验块;
将所述每个分组内读取的横向局部校验块进行异或解码处理,得到所述出错横向全局校验块的数据。
4.根据权利要求1所述的方法,其特征在于,所述通过对所述分组内的每个包含原始数据块的第一条带进行横向编码处理,得到所述每个第一条带的横向局部校验块和横向全局校验块包括:
通过对所述分组内的每个包含原始数据块的第一条带进行组内横向编码处理,得到所述每个第一条带的横向局部校验块;
通过对所述每个第一条带的横向局部校验块进行横向异或编码处理,得到所述每个第一条带的横向全局校验块。
5.根据权利要求4所述的方法,其特征在于,所述通过对所述分组内的每个包含原始数据块的第一条带进行组内横向编码处理,得到所述每个第一条带的横向局部校验块包括:
通过对所述分组内每个第一条带的k个原始数据块按纠错码的参数设置RS(k,r)进行编码,生成r个横向局部校验块;
其中,所述k是指原始数据块个数;所述r是指校验块个数;所述k和r均为正整数,且r<k。
6.根据权利要求5所述的方法,其特征在于,当横向全局校验个数与每个分组内横向局部校验个数r相同时,所述通过对所述每个第一条带的横向局部校验块进行横向异或编码处理,得到所述每个第一条带的横向全局校验块包括:
将所有分组的第一条带的第一个横向局部校验块进行横向异或编码处理,得到所述每个第一条带的第一个横向全局校验块;
将所有分组的第一条带的第二个横向局部校验块进行横向异或编码处理,得到所述每个第一条带的第二个横向全局校验块;
依次遍历所有分组的第一条带的横向局部校验块,进行横向异或处理,得到所属分组第一条带的所有横向全局校验块;
依次遍历所有分组的每个条带的横向局部校验块,进行横向异或处理,得到所有每个条带的横向全局校验块。
7.根据权利要求1所述的方法,其特征在于,所述通过分别对所述条带集中的每个第二条带进行数据块旋转移位处理,得到第三条带,并生成包含所述第三条带的条带集包括:
按照数据块旋转移位公式对所述每个条带集中的每个第二条带进行数据块旋转移位处理,使所述每个条带集内的原始数据块和横向局部校验块均匀分布在每个纠删码节点内;
其中,所述数据块旋转移位公式包括:
Figure DEST_PATH_IMAGE002
其中,所述
Figure DEST_PATH_IMAGE004
是指数据块旋转移位后的横向坐标和纵向坐标;所述m是指数据块的原始横向坐标;所述n是指数据块的原始纵向坐标;所述
Figure DEST_PATH_IMAGE006
是指数据块的纵向坐标由原始的横纵坐标之和
Figure DEST_PATH_IMAGE008
对组长
Figure DEST_PATH_IMAGE010
取模。
8.根据权利要求1所述的方法,其特征在于,所述通过对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块包括:
按照纵向异或编码公式对所述分组中每个包含所述第三条带的条带集进行纵向异或编码处理,得到多个纵向校验块;
其中,所述纵向异或编码公式包括:
Figure DEST_PATH_IMAGE012
其中,
Figure DEST_PATH_IMAGE014
是指分组内局部校验块,所述S是每个分组内局部校验块的横坐标;所述j是每个分组内局部校验块的纵坐标;所述m是原始数据块的横坐标,所述
Figure DEST_PATH_IMAGE016
是组长,
Figure DEST_PATH_IMAGE018
是原始数据块的纵坐标。
CN202110617552.7A 2021-06-03 2021-06-03 一种单节点故障快速修复纠删码的构造方法 Active CN113258938B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110617552.7A CN113258938B (zh) 2021-06-03 2021-06-03 一种单节点故障快速修复纠删码的构造方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110617552.7A CN113258938B (zh) 2021-06-03 2021-06-03 一种单节点故障快速修复纠删码的构造方法

Publications (2)

Publication Number Publication Date
CN113258938A CN113258938A (zh) 2021-08-13
CN113258938B true CN113258938B (zh) 2021-10-08

Family

ID=77186318

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110617552.7A Active CN113258938B (zh) 2021-06-03 2021-06-03 一种单节点故障快速修复纠删码的构造方法

Country Status (1)

Country Link
CN (1) CN113258938B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114153651B (zh) * 2022-02-09 2022-04-29 苏州浪潮智能科技有限公司 一种数据编码方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107656832A (zh) * 2017-09-18 2018-02-02 华中科技大学 一种低数据重建开销的纠删码方法
CN107844272A (zh) * 2017-10-31 2018-03-27 成都信息工程大学 一种提高纠错能力的交叉分组编译码方法
CN111078460A (zh) * 2019-11-18 2020-04-28 北京中电兴发科技有限公司 一种快速纠删码计算方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569307B2 (en) * 2014-02-13 2017-02-14 Quantum Corporation Mitigating the impact of a single point of failure in an object store
CN104461781B (zh) * 2014-12-01 2017-10-31 华中科技大学 一种基于纠删码的数据块重建方法
US10230398B2 (en) * 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
CN106484559B (zh) * 2016-10-17 2018-12-18 成都信息工程大学 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
CN106776112B (zh) * 2017-02-09 2019-08-02 长安大学 一种基于Pyramid码的局部性修复编码方法
CN107547657A (zh) * 2017-09-27 2018-01-05 柏科数据技术(深圳)股份有限公司 一种基于云存储系统中单点数据编号的方法、装置以及存储介质
US10715184B2 (en) * 2017-12-11 2020-07-14 Rubrik, Inc. Techniques for fast IO and low memory consumption while using erasure codes
US10733066B2 (en) * 2018-03-09 2020-08-04 Hewlett Packard Enterprise Development Lp Persistent reservation commands in a distributed storage system
US10594340B2 (en) * 2018-06-15 2020-03-17 EMC IP Holding Company LLC Disaster recovery with consolidated erasure coding in geographically distributed setups
CN109947587B (zh) * 2019-02-20 2022-09-27 长安大学 非均匀故障保护的分组修复码构造方法及故障修复方法
CN110046160B (zh) * 2019-03-15 2021-07-20 中国科学院计算技术研究所 一种基于条带的一致性哈希存储系统构建方法
CN110895497B (zh) * 2019-12-09 2022-06-07 成都信息工程大学 一种分布式存储中降低纠删码修复的方法及装置
CN111614720B (zh) * 2020-04-13 2022-02-18 厦门大学 针对集群存储系统单点失效修复的跨集群流量优化方法
CN112306740A (zh) * 2020-11-03 2021-02-02 深圳市瑞驰信息技术有限公司 基于Glusterfs在ARM提升纠删码修复性能的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107656832A (zh) * 2017-09-18 2018-02-02 华中科技大学 一种低数据重建开销的纠删码方法
CN107844272A (zh) * 2017-10-31 2018-03-27 成都信息工程大学 一种提高纠错能力的交叉分组编译码方法
CN111078460A (zh) * 2019-11-18 2020-04-28 北京中电兴发科技有限公司 一种快速纠删码计算方法

Also Published As

Publication number Publication date
CN113258938A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN103688515B (zh) 一种最小带宽再生码的编码和存储节点修复方法
US9647698B2 (en) Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
CN110532126B (zh) 纠删码存储系统数据快速恢复方法、装置及存储介质
CN114153651B (zh) 一种数据编码方法、装置、设备及介质
CN111078460B (zh) 一种快速纠删码计算方法
US20210271552A1 (en) Methods for data recovery of a distributed storage system and storage medium thereof
CN114281270B (zh) 一种数据存储方法、系统、设备以及介质
CN113258936B (zh) 一种基于循环移位的双重编码的构造方法
CN106788891A (zh) 一种适用于分布式存储的最优局部修复码构造方法
US9548761B2 (en) Coding and decoding of error correcting codes
CN114816278B (zh) 一种存储服务器的数据迁移方法、系统、设备及存储介质
CN115454712B (zh) 一种校验码恢复方法、系统、电子设备及存储介质
CN113258938B (zh) 一种单节点故障快速修复纠删码的构造方法
CN108762978B (zh) 一种局部部分重复循环码的分组构造方法
CN111459710B (zh) 感知热度与风险的纠删码内存恢复方法、设备及内存系统
CN110895497A (zh) 一种分布式存储中降低纠删码修复的方法及装置
CN109947587B (zh) 非均匀故障保护的分组修复码构造方法及故障修复方法
WO2017041232A1 (zh) 一种二进制循环码的编解码框架
CN115543693B (zh) 数据恢复方法及相关设备
CN109257049B (zh) 一种修复二进制阵列码校验矩阵的构造方法及修复方法
CN108628697B (zh) 一种基于二进制的节点修复方法及系统
CN115993941A (zh) 分布式数据存储纠错方法及系统
CN106911793B (zh) I/o优化的分布式存储数据修复方法
CN108199720A (zh) 一种减小存储开销和提高修复效率的节点修复方法及系统
CN114691414A (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