CN110532126A - 纠删码存储系统数据快速恢复方法、装置及存储介质 - Google Patents
纠删码存储系统数据快速恢复方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110532126A CN110532126A CN201910684556.XA CN201910684556A CN110532126A CN 110532126 A CN110532126 A CN 110532126A CN 201910684556 A CN201910684556 A CN 201910684556A CN 110532126 A CN110532126 A CN 110532126A
- Authority
- CN
- China
- Prior art keywords
- symbol
- node
- data
- read
- correcting
- 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.)
- Granted
Links
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/1004—Adding 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明属于计算机存储领域,公开了一种纠删码存储系统数据快速恢复方法、装置及存储介质,当管理节点检测到若干数据节点失效时,管理节点根据校验节点和数据节点的码元编号得到水平校验集和反对角校验集,根据失效数据节点的码元编号,通过水平校验集和反对角校验集得到能够恢复失效数据节点的码元数据的校验集合,根据校验集合确定每个正常节点的待读取码元编号集合,根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据,根据读取的码元数据和校验集合通过异或运算得到失效数据节点的失效码元数据。与现有恢复算法相比,能够减少约25%的码元读取量,极大地减少了从硬盘读取与从网络上传输的数据量,提升了修复效率。
Description
技术领域
本发明属于计算机存储领域,涉及一种纠删码存储系统数据快速恢复方法、装置及存储介质。
背景技术
构建分布式存储系统最基本的一个需求是保证信息的可靠性与可用性,在系统出现故障时,为了实现高可靠与高可用性,早期的分布式存储系统主要采用副本技术,例如GFS、Dynamo等系统,由于副本技术需要较高的额外存储空间,近年来,分布式存储系统逐渐转向使用纠删码技术,例如微软的WAS(Windows Azure Storage)使用了LRC码,著名的开源系统Ceph支持RS码、再生码以及各种异或类纠删码。
目前的分布式存储系统大部分都建立在廉价商用服务器之上,软件更新、系统重启、网络故障、硬件失效等事件频繁发生,导致数据会暂时性或永久性不可用。虽然纠删码能容忍多个节点同时失效,但是单节点失效所占的比例高达99.75%,所以针对单节点失效的数据恢复进行优化有非常重要的意义。
Liberation Codes是一种低密度的RAID-6码,编解码时只进行异或运算,能容忍任意2个节点失效,在所有的水平RAID-6码中,Liberation Codes有接近最优的编解码性能以及最优的更新性能,是目前分布式存储系统的一个较好的纠删码选择方案。目前部署了Liberation Codes(k,p)的分布式存储系统中,其中k为数据块数目,一个数据块包含p个码元,在这里k=p,p为大于2的素数,在任意一个节点失效时,默认只使用水平校验集进行恢复,需要从存活节点读取的码元总数为p2,为了恢复p个失效码元,需要从存活节点读取以及从网络传输p倍的数据量,占用较多的I/O与网络带宽资源,严重影响了系统的正常访问性能。
发明内容
本发明的目的在于克服上述现有技术的缺点,提供一种纠删码存储系统数据快速恢复方法、装置及存储介质。
为达到上述目的,本发明采用以下技术方案予以实现:
一种纠删码存储系统数据快速恢复方法,所述纠删码存储系统中的节点包括管理节点以及若干的校验节点和数据节点,若干的校验节点和数据节点的码元编号均存储在管理节点内部;
所述方法包括以下步骤:
S1:当管理节点检测到若干数据节点失效时,管理节点根据校验节点和数据节点的码元编号得到水平校验集和反对角校验集;
S2:根据失效数据节点的码元编号,通过水平校验集和反对角校验集得到能够恢复失效数据节点的码元数据的校验集合;
S3:根据校验集合确定每个正常节点的待读取码元编号集合,根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据;
S4:根据读取的码元数据和校验集合通过异或运算得到失效数据节点的失效码元数据;
S5:将失效数据节点的码元数据合并得到失效数据节点数据,将失效数据节点数据存储在正常的数据节点内,并采用该数据节点的码元编号更新失效数据节点在管理节点内部对应的码元编号。
本发明进一步的改进在于:
所述纠删码存储系统为通过以下步骤得到的纠删码存储系统:
T1:将待存储数据对象采用Liberation Codes(k,p)纠删码,其中p为大于2的素数,k=p;通过纠删码编码算法进行编码,得到水平校验块、反对角校验块和p个数据块;将水平校验块和反对角校验块分别存储在不同的校验节点,将p个数据块分别存储在不同的数据节点;水平校验块、反对角校验块和数据块均包括p个码元;
T2:将水平校验块、反对角校验块和数据块内部码元的码元编号均存储在管理节点,码元编号包括码元所在节点的节点编号和码元在所在节点的编号。
所述T1中通过纠删码编码算法进行编码,得到水平校验块、反对角校验块和p个数据块的具体方法为:
T1-1:将待存储数据对象分为p个数据块,记作D0,D1,…,Dp-1,分别存储在数据节点0~数据节点p-1;
T1-2:通过式(1)得到水平校验块的码元di,p:
将p个水平校验码元di,p合并得到水平校验块C0,将水平校验块C0存储在校验节点p;
T1-3:通过式(2)得到反对角校验块的码元di,p+1:
其中,<x>p表示对x进行模p运算,取值范围为[0,p-1];将p个反对角校验码元di,p+1合并得到反对角校验块C1,将反对角校验块C1存储在校验节点p+1;
di,j表示为第j个节点中的码元编号为i的码元,0≤i≤p-1,0≤j≤p+1。
所述S1的具体方法为:
S1-1:通过式(3)得到第0≤i≤p-1个水平校验集Hi:
Hi={di,j|0≤j≤p} (3)
S1-2:通过式(4)得到第0≤t≤p-1个反对角校验集At:
所述S2的具体方法为:
S2-1:当失效数据节点的节点编号f为偶数时,通过式(5)得到校验集合E:
其中,
S2-2:当失效数据节点的节点编号f为偶数时,通过式(6)得到校验集合E:
其中,
所述S3的具体方法为:
S3-1:选取一个正常节点,当该正常节点内的码元编号为校验集合E中的元素时记录该码元编号,遍历该正常节点包括的每个码元编号,得到该节点的待读取码元编号集合;
S3-2:重复S3-1至遍历所有正常节点,得到每个正常节点的待读取码元编号集合;
S3-3:根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据。
所述S4的具体方法为:
S4-1:f为偶数时:当码元在失效节点的编号0≤i≤(p-1)/2时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算得到失效码元d(p-1)/2+f/2-i,f码元数据,其中ei为校验集合E中的第i个元素;当码元在失效节点的编号(p+1)/2≤i≤p-1时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算得到失效码元码元数据;
S4-2:f为奇数时:当码元在失效节点的编号0≤i≤(p-1)/2时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算,得到失效码元df/2+i-1/2,f码元数据;当码元在失效节点的编号(p+1)/2<i≤p-1时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算,得到失效码元码元数据;当码元在失效节点的编号i=(p+1)/2时,读取ei包含的所有正常码元编号对应的码元数据以及失效码元码元数据,进行异或运算,得到失效码元码元数据。
本发又一方面,一种纠删码存储系统数据快速恢复装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述纠删码存储系统数据快速恢复方法的步骤。
本发又一方面,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述纠删码存储系统数据快速恢复方法的步骤。
与现有技术相比,本发明具有以下有益效果:
本发明根据校验节点和数据节点的码元编号得到水平校验集和反对角校验集,通过使用水平校验集与反对角校验集得到能够恢复失效数据节点的码元数据的校验集合,根据校验集合确定每个正常节点的待读取码元编号集合,再从对应节点中读取码元数据来恢复失效数据。由于码元数据在利用水平校验集或对角校验集恢复不同失效码元的时候会重复使用,但是只需要从相关节点读取一次,因而水平校验集和反对角校验集的结合使用,使得在修复失效数据时,从正常节点读取的总码元数目与在网络上传输的总码元数目大大减少,与现有技术相比,读取和传输的码元数目减少约25%,能够快速地恢复出失效节点上的数据,极大地减少了对I/O与网络带宽资源的占用,降低了对系统正常访问性能的影响,有较高的修复性能。
附图说明
图1为本发明的方法流程示意图;
图2为本发明的水平校验的布局图;
图3为本发明的对角校验的布局图;
图4为现有恢复技术的码元读取示意图;
图5为本发明的本发明码元读取示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先需要说明的是,在本发明中涉及的术语为:
水平校验集:一个水平校验集包含了一个水平校验码元以及生成该水平校验码元的p个数据码元,属于同一个水平校验集的码元进行异或运算的结果为零矢量,如果其中任意一个码元失效,可以通过其他码元进行异或运算得到,一个水平校验码元对应一个水平校验集,共有p个水平校验集。
反对角校验码元:反对角校验码元为位于第p+1个节点上的校验码元,第0个反对角校验码元由位于同一个反对角方向的节点0≤j≤p上的数据码元dj,j进行异或运算得到,第i>0个反对角校验码元由位于同一个反对角方向的节点0≤j≤p上的数据码元以及一个额外的位于节点<p-2i>p上的数据码元进行异或运算得到,其中<x>p表示对x进行模p运算。
反对角校验集:一个反对角校验集包含一个反对角校验码元以及生成该反对角校验码元的p个或p+1个数据码元,第0个反对角校验集包含p个数据码元,其余反对角校验集包含p+1个数据码元,属于同一个反对角校验集的码元进行异或运算的结果为零矢量,如果其中任意一个码元失效,可以通过其他码元进行异或运算得到,一个反对角校验码元对应一个水平校验集,共有p个反对角校验集。
下面结合附图对本发明做进一步详细描述:
参见图1,本发明一种纠删码存储系统数据快速恢复方法,纠删码存储系统中的节点包括管理节点以及若干的校验节点和数据节点,若干的校验节点和数据节点的码元编号均存储在管理节点内部;管理节点负责执行编码和恢复操作,负责监测各节点的健康状态;
所述方法包括以下步骤:
S1:当管理节点检测到若干数据节点失效时,管理节点根据校验节点和数据节点的码元编号得到水平校验集和反对角校验集;水平(反对角)校验集中的元素进行异或运算的结果为0,如果水平(反对角)校验集中的任何一个码元失效,可以通过其他码元进行异或运算得到。具体方法为:
S1-1:通过式(3)得到第0≤i≤p-1个水平校验集Hi:
Hi={di,j|0≤j≤p} (3)
S1-2:通过式(4)得到第0≤t≤p-1个反对角校验集At:
其中,<x>p表示对x进行模p运算,取值范围为[0,p-1];
S2:根据失效数据节点的码元编号,通过水平校验集和反对角校验集得到能够恢复失效数据节点的码元数据的校验集合;具体方法为:
S2-1:当失效数据节点的节点编号f为偶数时,通过下式得到校验集合E:
化简得:
其中,即
S2-2:当失效数据节点的节点编号f为偶数时,通过下式得到校验集合E:
化简得:
其中,
S3:根据校验集合确定每个正常节点的待读取码元编号集合,根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据;具体方法为:
S3-1:选取一个正常节点,依次读取校验集合E中的每个元素ei(0≤i≤p-1),如果di,j∈ei,j≠f,并且将i包含到集合Si中,得到该节点的待读取码元编号集合Si;
S3-2:重复S3-1至遍历所有正常节点,得到每个正常节点的待读取码元编号集合;
S3-3:根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据:向节点j(0≤j≤p+1,j≠f)发送读取码元的请求,S为读取的码元编号集合;节点j接收到管理节点的读请求后,处理S中的每个码元编号,如果i∈S,则从本地硬盘存储的编码块的起始位置偏移量为iM/p2字节处开始读取M/p2字节的数据即可得到码元数据di,j,按照上述方式处理完Si包含的所有码元编号之后,将与编号对应的所有码元数据SD发送给管理节点,SD为与S对应的所有码元数据,所有的p+1个正常节点总共读取并发送(3p2+1)/4个码元数据。
S4:根据读取的码元数据和校验集合通过异或运算得到失效数据节点的失效码元数据;具体方法为:
S4-1:f为偶数时:当码元在失效节点的编号0≤i≤(p-1)/2时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算得到失效码元d(p-1)/2+f/2-i,f码元数据,其中ei为校验集合E中的第i个元素;当码元在失效节点的编号(p+1)/2≤i≤p-时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算得到失效码元码元数据;
S4-2:f为奇数时:当码元在失效节点的编号0≤i≤(p-1)/2时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算,得到失效码元df/2+i-1/2,f码元数据;当码元在失效节点的编号(p+1)/2<i≤p-1时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算,得到失效码元码元数据;当码元在失效节点的编号i=(p+1)/2时,读取ei包含的所有正常码元编号对应的码元数据以及失效码元码元数据,进行异或运算,得到失效码元码元数据。
S5:将恢复的所有码元数据d0,f,d1,f,…,dp-1,f合并在一起即可得到失效数据节点数据Df,将失效数据节点数据存储在正常的数据节点Ln内,并采用该数据节点Ln的码元编号更新失效数据节点在管理节点内部对应的码元编号,并且Ln未存放任何与待存储数据对象O相关的数据块。
其中,纠删码存储系统为通过以下步骤得到的纠删码存储系统:
T1:将待存储数据对象采用Liberation Codes(k,p)纠删码,其中p为大于2的素数,k=p;通过纠删码编码算法进行编码,得到水平校验块、反对角校验块和p个数据块;将水平校验块和反对角校验块分别存储在不同的校验节点,将p数据块分别存储在不同的数据节点;水平校验块、反对角校验块和数据块均包括p个码元;其中,通过纠删码编码算法进行编码,得到水平校验块、反对角校验块和p个数据块的具体方法为:
T1-1:将待存储数据对象分为p个数据块,记作D0,D1,…,Dp-1,分别存储在数据节点0~数据节点p-1;将每个数据块分为p个码元,假设待存储数据O大小为M字节,那么每个码元大小为M/p2字节;
T1-2:通过式(1)得到水平校验块的码元di,p:
将p个水平校验码元di,p合并得到水平校验块C0,将水平校验块C0存储在校验节点p;
T1-3:通过式(2)得到反对角校验块的码元di,p+1:
其中,<x>p表示对x进行模p运算,取值范围为[0,p-1];将p个反对角校验码元di,p+1合并得到反对角校验块C1,将反对角校验块C1存储在校验节点p+1;p个数据块D0,D1,…,Dp-1与2个校验块C0,C1组成了一个条带;
di,j表示为第j个节点中的码元编号为i的码元,0≤i≤p-1,0≤j≤p+1。
将p个数据块D0,D1,…,Dp-1分别发送给数据节点0~数据节点p-1,将2个校验块C0,C1分别发送给校验节点p与校验节点p+1。
T2:将水平校验块、反对角校验块和数据块内部码元的码元编号均存储在管理节点,码元编号包括码元所在节点的节点编号和码元在所在节点的编号。
参见图2和3,Liberation Codes(k=5,p=5)的水平校验和对角校验的布局图,图2节点0~节点4为数据节点,节点5与节点6为校验节点,每个节点中存储了1个编码块(包括数据块和校验块),1个编码块包含p=5个码元,图2中水平校验码元由同一行的数据码元进行异或运算得到,图3中第一个反对角校验码元由处于同一反对角线的码元进行异或运算得到,其余反对角校验码元由处于同一反对角线的码元以及一个额外码元进行异或运算得到。
参见图4,Liberation Codes的现有恢复技术码元读取的示意图,图中节点0失效,用“×”表示码元失效,现有技术是通过水平校验集恢复所有的失效码元,恢复一个数据码元需要读取一个水平校验码元以及与该水平校验码元相关的其余正常的数据码元,用“Ο”表示需要读取的码元,可以看出读取的总码元数量为p2=25个。
实施例1
参见图5,已知k=p=5,数据节点编号为0,1,2,3,4,校验节点编号为5,6,节点0发生失效。失效数据恢复的具体步骤如下:
1)根据式(3)与式(4),计算校验集H0~H4,A0~A4如下:
H0={d0,0,d0,1,d0,2,d0,3,d0,4,d0,5},H1={d1,0,d1,1,d1,2,d1,3,d1,4,d1,5},
H2={d2,0,d2,1,d2,2,d2,3,d2,4,d2,5},H3={d3,0,d3,1,d3,2,d3,3,d3,4,d3,5},
H4={d4,0,d4,1,d4,2,d4,3,d4,4,d4,5},A0={d0,0,d1,1,d2,2,d3,3,d4,4,d0,6},
A1={d1,0,d2,1,d3,2,d3,3,d4,3,d0,4,d1,6},A2={d2,0,d2,1,d3,1,d4,2,d0,3,d1,4,d2,6},
A3={d3,0,d4,1,d0,2,d1,3,d1,4,d2,4,d3,6},A4={d4,0,d0,1,d0,2,d1,2,d2,3,d3,4,d4,6};
2)f=0为偶数,计算能够恢复所有失效码元使用的校验集E={H2H1H0A3A4};
3)计算从每个正常节点需要读取的码元编号。S1={2,1,0,4},S2={2,1,0},S3={2,1,0},S4={2,1,0,3},S5={2,1,0},S6={3,4};
4)从第1个节点读取码元d2,1,d1,1,d0,1,d4,1,从第2个节点读取码元d2,2,d1,2,d0,2,从第3个节点读取码元d2,3,d1,3,d0,3,第4个节点读取码元d2,4,d1,4,d0,4,d3,4,从第5个节点读取码元d2,5,d1,5,d0,5,从第6个节点读取码元d3,6,d4,6,总共读取(3p2+1)/4=19个码元数据;
5)读取e0=H2包含的所有正常码元d2,1,d2,2,d2,3,d2,4,d2,5,进行异或运算,得到d2,0;
读取e1=H1包含的所有正常码元d1,1,d1,2,d1,3,d1,4,d1,5,进行异或运算,得到d1,0;
读取e2=H0包含的所有正常码元d0,1,d0,2,d0,3,d0,4,d0,5,进行异或运算,得到d0,0;
读取e3=A3包含的所有正常码元d4,1,d0,2,d1,3,d1,4,d2,4,d3,6,进行异或运算,得到d3,0;
读取e4=A4包含的所有正常码元d0,1,d0,2,d1,2,d2,3,d3,4,d4,6,进行异或运算,得到d4,0;
6)将码元d0,0,d1,0,d2,0,d3,0,d4,0合并在一起得到D0。
图3中用“Ο”表示利用水平校验集恢复失效码元需要读取的码元,用“□”表示利用反对角校验集恢复失效码元需要读取的码元,可以看出有些数据码元在利用水平校验集或对角校验集恢复不同失效码元的时候会重复使用,这些码元使用“Ο”与“□”同时表示,但是只需要从相关节点下载一次,与现有技术相比,能够减少码元读取量和传输量,读取的总码元数量为(3p2+1)/4=19个,与现有技术的25个读取量相比,能够减少约25%的读取量。
实施例2
已知k=p=5,数据节点编号为0,1,2,3,4,校验节点编号为5,6,节点1发生失效。失效数据恢复的具体步骤如下:
1)根据式(3)与式(4),计算校验集H0~H4,A0~A4如下
H0={d0,0,d0,1,d0,2,d0,3,d0,4,d0,5},H1={d1,0,d1,1,d1,2,d1,3,d1,4,d1,5},
H2={d2,0,d2,1,d2,2,d2,3,d2,4,d2,5},H3={d3,0,d3,1,d3,2,d3,3,d3,4,d3,5},
H4={d4,0,d4,1,d4,2,d4,3,d4,4,d4,5},A0={d0,0,d1,1,d2,2,d3,3,d4,4,d0,6},
A1={d1,0,d2,1,d3,2,d3,3,d4,3,d0,4,d1,6},A2={d2,0,d2,1,d3,1,d4,2,d0,3,d1,4,d2,6},
A3={d3,0,d4,1,d0,2,d1,3,d1,4,d2,4,d3,6},A4={d4,0,d0,1,d0,2,d1,2,d2,3,d3,4,d4,6};
2)f=1为奇数,计算能够恢复所有失效码元使用的校验集E={H0H1H2A2A3};
3)计算从每个正常节点需要读取的码元编号。S0={0,1,2,3},S2={0,1,2,4},S3={0,1,2},S4={0,1,2},S5={0,1,2},S6={2,3};
4)从第0个节点读取码元d0,0,d1,0,d2,0,d3,0,从第2个节点读取码元d0,2,d1,2,d2,2,d4,2,从第3个节点读取码元d0,3,d1,3,d2,3,第4个节点读取码元d0,4,d1,4,d2,4,从第5个节点读取码元d0,5,d1,5,d2,5,从第6个节点读取码元d2,6,d3,6;共读取(3×52+1)/4=19个正常码元;
5)读取e0=H0包含的所有正常码元d0,0,d0,2,d0,3,d0,4,d0,5,进行异或运算,得到d0,1;
读取e1=H1包含的所有正常码元d1,0,d1,2,d1,3,d1,4,d1,5,进行异或运算,得到d1,1;
读取e2=H2包含的所有正常码元d2,0,d2,2,d2,3,d2,4,d2,5,进行异或运算,得到d2,1;
读取e4=A3包含的所有正常码元d3,0,d0,2,d1,3,d1,4,d2,4,d3,6,进行异或运算,得到d4,1;
读取e3=A2包含的所有正常码元d2,0,d4,2,d0,3,d1,4,d2,6,以及已经恢复的码元d2,1进行异或运算,得到d3,1;
6)将码元d0,1,d1,1,d2,1,d3,1,d4,1合并在一起得到D1,将D1存储在Ln上。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述纠删码存储系统数据快速恢复方法的步骤。其中,所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
在示例性实施例中,还提供了一种纠删码存储系统数据快速恢复装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述纠删码存储系统数据快速恢复方法的步骤。处理器可能是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
本发明根据校验节点和数据节点的码元编号得到水平校验集和反对角校验集,通过使用水平校验集与反对角校验集得到能够恢复失效数据节点的码元数据的校验集合,根据校验集合确定每个正常节点的待读取码元编号集合,再从对应节点中读取码元数据来恢复失效数据。由于码元数据在利用水平校验集或对角校验集恢复不同失效码元的时候会重复使用,但是只需要从相关节点读取一次,因而水平校验集和反对角校验集的结合使用,使得在修复失效数据时,从正常节点读取的总码元数目与在网络上传输的总码元数目大大减少,与现有技术相比,读取和传输的码元数目减少约25%,能够快速地恢复出失效节点上的数据,极大地减少了对I/O与网络带宽资源的占用,降低了对系统正常访问性能的影响,有较高的修复性能。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (9)
1.一种纠删码存储系统数据快速恢复方法,其特征在于,所述纠删码存储系统中的节点包括管理节点以及若干的校验节点和数据节点,若干的校验节点和数据节点的码元编号均存储在管理节点内部;
所述方法包括以下步骤:
S1:当管理节点检测到若干数据节点失效时,管理节点根据校验节点和数据节点的码元编号得到水平校验集和反对角校验集;
S2:根据失效数据节点的码元编号,通过水平校验集和反对角校验集得到能够恢复失效数据节点的码元数据的校验集合;
S3:根据校验集合确定每个正常节点的待读取码元编号集合,根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据;
S4:根据读取的码元数据和校验集合通过异或运算得到失效数据节点的失效码元数据;
S5:将失效数据节点的码元数据合并得到失效数据节点数据,将失效数据节点数据存储在正常的数据节点内,并采用该数据节点的码元编号更新失效数据节点在管理节点内部对应的码元编号。
2.根据权利要求1所述的纠删码存储系统数据快速恢复方法,其特征在于,所述纠删码存储系统为通过以下步骤得到的纠删码存储系统:
T1:将待存储数据对象采用Liberation Codes(k,p)纠删码,其中p为大于2的素数,k=p;通过纠删码编码算法进行编码,得到水平校验块、反对角校验块和p个数据块;将水平校验块和反对角校验块分别存储在不同的校验节点,将p个数据块分别存储在不同的数据节点;水平校验块、反对角校验块和数据块均包括p个码元;
T2:将水平校验块、反对角校验块和数据块内部码元的码元编号均存储在管理节点,码元编号包括码元所在节点的节点编号和码元在所在节点的编号。
3.根据权利要求2所述的纠删码存储系统数据快速恢复方法,其特征在于,所述T1中通过纠删码编码算法进行编码,得到水平校验块、反对角校验块和p个数据块的具体方法为:
T1-1:将待存储数据对象分为p个数据块,记作D0,D1,…,Dp-1,分别存储在数据节点0~数据节点p-1;
T1-2:通过式(1)得到水平校验块的码元di,p:
将p个水平校验码元di,p合并得到水平校验块C0,将水平校验块C0存储在校验节点p;
T1-3:通过式(2)得到反对角校验块的码元di,p+1:
其中,<x>p表示对x进行模p运算,取值范围为[0,p-1];将p个反对角校验码元di,p+1合并得到反对角校验块C1,将反对角校验块C1存储在校验节点p+1;
di,j表示为第j个节点中的码元编号为i的码元,0≤i≤p-1,0≤j≤p+1。
4.根据权利要求3所述的纠删码存储系统数据快速恢复方法,其特征在于,所述S1的具体方法为:
S1-1:通过式(3)得到第0≤i≤p-1个水平校验集Hi:
Hi={di,j|0≤j≤p} (3)
S1-2:通过式(4)得到第0≤t≤p-1个反对角校验集At:
5.根据权利要求4所述的纠删码存储系统数据快速恢复方法,其特征在于,所述S2的具体方法为:
S2-1:当失效数据节点的节点编号f为偶数时,通过式(5)得到校验集合E:
其中,
S2-2:当失效数据节点的节点编号f为偶数时,通过式(6)得到校验集合E:
其中,
6.根据权利要求5所述的纠删码存储系统数据快速恢复方法,其特征在于,所述S3的具体方法为:
S3-1:选取一个正常节点,当该正常节点内的码元编号为校验集合E中的元素时记录该码元编号,遍历该正常节点包括的每个码元编号,得到该节点的待读取码元编号集合;
S3-2:重复S3-1至遍历所有正常节点,得到每个正常节点的待读取码元编号集合;
S3-3:根据每个正常节点的待读取码元编号集合从对应节点中读取码元数据。
7.根据权利要求6所述的纠删码存储系统数据快速恢复方法,其特征在于,所述S4的具体方法为:
S4-1:f为偶数时:当码元在失效节点的编号0≤i≤(p-1)/2时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算得到失效码元d(p-1)/2+f/2-i,f码元数据,其中ei为校验集合E中的第i个元素;当码元在失效节点的编号(p+1)/2≤i≤p-1时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算得到失效码元码元数据;
S4-2:f为奇数时:当码元在失效节点的编号0≤i≤(p-1)/2时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算,得到失效码元df/2+i-1/2,f码元数据;当码元在失效节点的编号(p+1)/2<i≤p-1时,读取ei包含的所有正常码元编号对应的码元数据,进行异或运算,得到失效码元码元数据;当码元在失效节点的编号i=(p+1)/2时,读取ei包含的所有正常码元编号对应的码元数据以及失效码元码元数据,进行异或运算,得到失效码元码元数据。
8.一种纠删码存储系统数据快速恢复装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910684556.XA CN110532126B (zh) | 2019-07-26 | 2019-07-26 | 纠删码存储系统数据快速恢复方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910684556.XA CN110532126B (zh) | 2019-07-26 | 2019-07-26 | 纠删码存储系统数据快速恢复方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532126A true CN110532126A (zh) | 2019-12-03 |
CN110532126B CN110532126B (zh) | 2020-10-27 |
Family
ID=68660552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910684556.XA Active CN110532126B (zh) | 2019-07-26 | 2019-07-26 | 纠删码存储系统数据快速恢复方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532126B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110895497A (zh) * | 2019-12-09 | 2020-03-20 | 成都信息工程大学 | 一种分布式存储中降低纠删码修复的方法及装置 |
CN111245719A (zh) * | 2020-01-02 | 2020-06-05 | 湖南大学 | 基于蚁群优化的纠删编码存储系统数据更新方法 |
CN111475109A (zh) * | 2020-03-20 | 2020-07-31 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN111541512A (zh) * | 2020-03-13 | 2020-08-14 | 中国科学院深圳先进技术研究院 | 数据的处理方法、终端设备、可读存储介质 |
CN114064347A (zh) * | 2022-01-18 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及计算机可读存储介质 |
CN115454711A (zh) * | 2022-11-11 | 2022-12-09 | 苏州浪潮智能科技有限公司 | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 |
CN116312725A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
CN116312726A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
WO2024007303A1 (en) * | 2022-07-08 | 2024-01-11 | Huawei Technologies Co., Ltd. | Wireless Communications Using Batch-Based Cross-Code Block Network Coding |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1855794A (zh) * | 2005-04-21 | 2006-11-01 | 华为技术有限公司 | 一种基于纠删码的数据传输保护方法 |
US20070074095A1 (en) * | 2005-09-29 | 2007-03-29 | Paul Langner | Method and apparatus for N‘packet level mesh protection |
CN101488104A (zh) * | 2009-02-26 | 2009-07-22 | 北京世纪互联宽带数据中心有限公司 | 一种实现高效安全存储的系统和方法 |
CN102521067A (zh) * | 2011-12-01 | 2012-06-27 | 华中科技大学 | 优化部分条带写性能的raid-6编码和重构方法 |
-
2019
- 2019-07-26 CN CN201910684556.XA patent/CN110532126B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1855794A (zh) * | 2005-04-21 | 2006-11-01 | 华为技术有限公司 | 一种基于纠删码的数据传输保护方法 |
US20070074095A1 (en) * | 2005-09-29 | 2007-03-29 | Paul Langner | Method and apparatus for N‘packet level mesh protection |
CN101488104A (zh) * | 2009-02-26 | 2009-07-22 | 北京世纪互联宽带数据中心有限公司 | 一种实现高效安全存储的系统和方法 |
CN102521067A (zh) * | 2011-12-01 | 2012-06-27 | 华中科技大学 | 优化部分条带写性能的raid-6编码和重构方法 |
Non-Patent Citations (1)
Title |
---|
傅颖勋: "纠删码存储系统单磁盘错误重构优化方法综述", 《计算机研究与发展》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110895497B (zh) * | 2019-12-09 | 2022-06-07 | 成都信息工程大学 | 一种分布式存储中降低纠删码修复的方法及装置 |
CN110895497A (zh) * | 2019-12-09 | 2020-03-20 | 成都信息工程大学 | 一种分布式存储中降低纠删码修复的方法及装置 |
CN111245719A (zh) * | 2020-01-02 | 2020-06-05 | 湖南大学 | 基于蚁群优化的纠删编码存储系统数据更新方法 |
CN111541512A (zh) * | 2020-03-13 | 2020-08-14 | 中国科学院深圳先进技术研究院 | 数据的处理方法、终端设备、可读存储介质 |
CN111475109B (zh) * | 2020-03-20 | 2022-10-28 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN111475109A (zh) * | 2020-03-20 | 2020-07-31 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN114064347A (zh) * | 2022-01-18 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及计算机可读存储介质 |
WO2024007303A1 (en) * | 2022-07-08 | 2024-01-11 | Huawei Technologies Co., Ltd. | Wireless Communications Using Batch-Based Cross-Code Block Network Coding |
CN115454711A (zh) * | 2022-11-11 | 2022-12-09 | 苏州浪潮智能科技有限公司 | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 |
CN116312725A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
CN116312726A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
CN116312726B (zh) * | 2023-05-16 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
CN116312725B (zh) * | 2023-05-16 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110532126B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532126A (zh) | 纠删码存储系统数据快速恢复方法、装置及存储介质 | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
US10936417B2 (en) | Multi-stage slice recovery in a dispersed storage network | |
US10951236B2 (en) | Hierarchical data integrity verification of erasure coded data in a distributed computing system | |
US8683294B1 (en) | Efficient encoding of homed data | |
Qi et al. | BFT-Store: Storage partition for permissioned blockchain via erasure coding | |
US10169148B2 (en) | Apportioning storage units amongst storage sites in a dispersed storage network | |
CN104052576B (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
US20140337394A1 (en) | Dispersed storage with partial data object storage and methods for use therewith | |
CN105393225A (zh) | 跨多个区的纠删编码 | |
CN106201764B (zh) | 一种数据存储方法和装置、一种数据恢复方法和装置 | |
US20150127974A1 (en) | Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices | |
US11250141B2 (en) | Securely storing data in an elastically scalable dispersed storage network | |
JP5151987B2 (ja) | 分散情報生成装置および復元装置 | |
CN106537352A (zh) | 分布式存储数据恢复 | |
CN109358980A (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
CN113258936B (zh) | 一种基于循环移位的双重编码的构造方法 | |
CN107153661A (zh) | 一种基于hdfs系统的数据的存储、读取方法及其装置 | |
WO2013185271A1 (zh) | 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置 | |
WO2020029418A1 (zh) | 一种修复二进制码生成矩阵构造方法及修复方法 | |
US10331519B2 (en) | Application of secret sharing schemes at multiple levels of a dispersed storage network | |
CN108614749A (zh) | 一种数据处理方法及装置 | |
CN113258938B (zh) | 一种单节点故障快速修复纠删码的构造方法 | |
CN112363697B (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 |