CN114625571A - 一种用于数据恢复的三冗余mds阵列码编译方法 - Google Patents

一种用于数据恢复的三冗余mds阵列码编译方法 Download PDF

Info

Publication number
CN114625571A
CN114625571A CN202210249270.0A CN202210249270A CN114625571A CN 114625571 A CN114625571 A CN 114625571A CN 202210249270 A CN202210249270 A CN 202210249270A CN 114625571 A CN114625571 A CN 114625571A
Authority
CN
China
Prior art keywords
data
data packet
packets
matrix
lost
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.)
Pending
Application number
CN202210249270.0A
Other languages
English (en)
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.)
University of Science and Technology Beijing USTB
Original Assignee
University of Science and Technology Beijing USTB
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 University of Science and Technology Beijing USTB filed Critical University of Science and Technology Beijing USTB
Priority to CN202210249270.0A priority Critical patent/CN114625571A/zh
Publication of CN114625571A publication Critical patent/CN114625571A/zh
Pending legal-status Critical Current

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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/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]

Abstract

本发明公开了一种用于数据恢复的三冗余MDS阵列码编译方法,涉及数据还原技术领域,在简编码译码过程复杂度降低的基础上实现可以对3个丢失数据的修复,包括以下步骤:获取k个原始数据包;获取每个原始数据包mj所对应的二元编码系数矩阵Aj;生成3个编码数据包,分别表示为p、q和r;当原始数据包出现数据丢失,用剩余数据的原始数据包和编码数据包进行数据译码恢复。本发明具有计算简单、异或操作数目逼近最优的情况下可以容许三个数据包丢失的优点。

Description

一种用于数据恢复的三冗余MDS阵列码编译方法
技术领域
本发明涉及数据还原技术领域,更具体的是涉及基于三冗余MDS阵列码的数据恢复方法技术领域。
背景技术
随着互联网和物联网技术的飞快发展,商业界和学术界等产生的数据量正与日俱增。在学术界中,生物学、天文学、地球科学等领域所产生的数据总量早已达到PB级别。在商业界,网页搜素、云存储与云计算等需要处理和存储的数据总量异常庞大。随着存储系统的规模在逐渐扩大,复杂性也不断增加,其可靠性很难得到保证。
为防止存储系统中的各类硬件故障造成数据丢失,用于生产环境的存储管理软件都使用了某种数据冗余技术来对数据进行保护。数据冗余技术通常包括多路镜像和纠删码技术两种。多路镜像将数据复制多份,并将多个副本分布在存储系统的不同节点上,仅存放数据副本的所有存储节点同时故障才会导致数据丢失,牺牲存储效率以保障数据的可靠性。例如,谷歌公司的GFS及其开源版本HDFS对每一份数据均存有三份副本,即系统中的任意两个节点同时故障不会造成数据丢失。
现有的一些可以实现3个数据恢复的编码方法在编码过程操作复杂,部分解决过程简单的只能容忍2个数据的丢失。
发明内容
本发明的目的在于:在简编码译码过程复杂度降低的基础上实现可以对3 个丢失数据的修复。为了解决上述技术问题,本发明提供一种用于数据恢复的三冗余MDS阵列码编译方法。
本发明为了实现上述目的具体采用以下技术方案:
一种用于数据恢复的三冗余MDS阵列码编译方法,包括以下步骤:
步骤S1:获取k个原始数据包,将k个原始数据包标记为mj,其中1≤j≤k,每个数据包由一个M*L矩阵表示,其中L满足以下条件:L+1为质数;
步骤S2:获取每个原始数据包mj所对应的二元编码系数矩阵Aj,Aj为(L+1) *(L+1)矩阵;
步骤S3:按照以下方式生成编码数据包p、q和r:
Figure BDA0003545136930000021
Figure BDA0003545136930000022
Figure BDA0003545136930000023
其中,G由L*L单位矩阵IL和L*1全零列向量并置,即G=[IL0L*1];
步骤S4:当原始数据包出现数据丢失,用剩余数据的原始数据包和编码数据包进行数据译码恢复。
优选地,获取所述二元编码系数矩阵Aj的方法为:
将所述j转换为二进制向量(bj,w,bj,w-1,...,bj,1,bj,0);
Aj=bj,wCL+1 w+1+bj,w-1CL+1 w+…+bj,1CL+1 2+bj,0CL+1+bj′IL+1
其中,bj′=mod(bj,w+bj,w-1+…+bj,1+bj,0,2),CL+1为循环位移矩阵
Figure BDA0003545136930000024
优选地,在所述步骤S3中,所述生成3个编码数据包的方法包括以下步骤:
步骤S301:总共设置
Figure BDA0003545136930000025
层数据,i为数据层数, ni为第i层数据的数据总数,
Figure BDA0003545136930000026
1≤j≤k,
Figure BDA0003545136930000027
初始化第0层数据t0,1,…,t0,j,t0,j+1,其中t0,j+1=mj,t0,1为M*L全零矩阵;
步骤S302:从i=1开始分别按照以下操作计算直到
Figure BDA0003545136930000028
依次将 ti-1,2a-1与ti-1,2a进行逐位异或得到第i层数据ti,a,即ti,a=ti-1,2a-1+ti-1,2a,其中a为整数且逐级从1取到ni-1,若ni-1为偶数,
Figure BDA0003545136930000029
若ni-1为奇数,
Figure BDA00035451369300000210
步骤S303:获取p的方法为:
Figure BDA00035451369300000211
步骤S304:获取矩阵
Figure BDA0003545136930000031
其中,
Figure BDA0003545136930000032
在 si的右侧添加一列全0向量得到si′,即si′=siG;
步骤S305:获取q和r的方法为:
将si′按列向右循环i+1位,再将所得M*(L+1)矩阵的最后一列删除得到矩阵xi,即xi=si′CL+1 i+1GT;获取
Figure BDA0003545136930000033
获取q=x+s;
将si′按列向右循环mod(2(i+1),L+1)位,再将所得M*(L+1)矩阵的最后一列删除得到矩阵yi,即yi=si′CL+1 2(i+1)GT;获取
Figure BDA0003545136930000034
获取r=y+s。
优选地,在所述步骤S305中,所述获取q和r的方法为:
初始化x′和y′,二者均为M*(L+1)的全零矩阵,初始化
Figure BDA0003545136930000035
将x′与si′进行逐位异或,再将所得M*(L+1)矩阵按列向右循环1位,将所得重新赋值予x′,即x′=(x′+si′)CL+1,i=i-1,迭代直到i=0得到最终的x′;删除 x′的最后一列得到x,即x=x′GT;获取q=x+s;
将y′与si′进行逐位异或,再将所得M*(L+1)矩阵按列向右循环2位,将所得重新赋值予y′,即y′=(y′+si′)CL+1 2,i=i-1,迭代直到i=0得到最终的y′;删除y′的最后一列得到y,即y=y′GT;获取r=y+s。
优选地,所述步骤S4中,当丢失一个原始数据包且没有编码数据包丢失时,所述数据译码恢复的方法为:
丢失的原始数据包记为mj1,将剩余的原始数据包进行逐位异或得到M*L 矩阵p′;
将p′与编码数据包p进行逐位异或,译码恢复得到原始数据包mj1,即 mj1=p+p′。
优选地,当丢失一个原始数据包且有编码数据包丢失时,所述数据译码恢复的方法为:
丢失的原始数据包记为mj1,初始化k个全零数据包mj′,1≤j≤k,为mj′赋值,mj′=mj,j≠j1;将mj′视为原始数据包,按照所述生成编码数据包p、q和r 的方法生成三个编码数据包且分别标记为p′、q′和r′;
若用编码数据包p进行数据还原:mj1=p+p′;
若用编码数据包q进行数据还原:
mj1=(q'+q)HTD1H;
其中,
Figure BDA0003545136930000041
Figure BDA0003545136930000042
mL+1为2的模(L+1) 乘法阶;
若用编码数据包r进化数据还原:
mj1=(r'+r)HTD1H;
其中,
Figure BDA0003545136930000043
Figure BDA0003545136930000044
mL+1为2的模(L+1)乘法阶;H=[IL*L 1L*1]T
译码恢复得到所述原始数据包后,还原丢失的编码数据包。
优选地,当丢失两个原始数据包时,所述数据译码恢复的方法为:
丢失的两个原始数据包记为mj1和mj2;初始化k个全零数据包mj′, 1≤j≤k,为mj′赋值,mj′=mj,j≠j1且j≠j2;将mj′视为原始数据包,按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为p′、q′和 r′;p″=p′+p,q″=q′+q,r″=r′+r;
若编码数据包p丢失,用高斯消元法求解
Figure BDA0003545136930000045
得到[mj1,mj2];
若编码数据包q丢失,用高斯消元法求解
Figure BDA0003545136930000046
得到[mj1,mj2];
若编码数据包r丢失,用高斯消元法求解
Figure BDA0003545136930000047
得到[mj1,mj2];
译码恢复得到所述原始数据包后,还原丢失的编码数据包。
优选地,当丢失三个原始数据包时,所述数据译码恢复的方法为:
丢失的三个所述原始数据包记为mj1、mj2和mj3;初始化k个全零数据包mj′, 1≤j≤k,为mj′赋值,mj′=mj,j≠j1且j≠j2且j≠j3;将mj′视为原始数据包且按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为 p′、q′和r′;
Figure BDA0003545136930000051
mj1=p″+mj2+mj3
其中,p″=p′+p,q″=q′+q,r″=r′+r;
Figure BDA0003545136930000052
Figure BDA0003545136930000053
Figure BDA0003545136930000054
Figure BDA0003545136930000055
mL+1为2的模(L+1)乘法阶;H=[IL*L 1L*1]T
本发明的有益效果如下:
本发明的技术方案可以实现3个丢失数据包的恢复,且相比其他可以恢复3个数据包的编码译码方法复杂度明显降低;数据恢复覆盖的情况全面,在总共丢失3个数据包的情况下可以对原始数据包和编码数据包进行快速且精准的恢复;由于方法复杂度降低,因此易于实现,可用性强,适用范围更广。
附图说明
图1是本发明的流程示意图;
图2是实施例1中获取p的数据结构示意图;
图3是实施例1中获取q、r的数据结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1到3所示,本实施例提供一种用于数据恢复的三冗余MDS阵列码编译方法,特别说明的是,本方法涉及的数据均为矢量数据,该方法包括以下步骤:
步骤S1:获取k个原始数据包,将k个原始数据包标记为mj,其中1≤j≤k,每个数据包由一个M*L矩阵表示,其中L满足以下条件:L+1为质数;例如L 选取为16,16+1的结果17是质数,即符合要求。
步骤S2:获取每个原始数据包mj所对应的二元编码系数矩阵Aj,Aj为(L+1) *(L+1)矩阵;本实施例的所述步骤S2中,所述二元编码系数矩阵Aj的获取方法为:
步骤S201:将所述j转换为二进制向量(bj,w,bj,w-1,...,bj,1,bj,0),转换法为:j=bj,w*2w+bj,w-1*2w-1+…+bj,1*2+bj,0
步骤S202:由二进制向量确定所述二元编码系数矩阵Aj
Aj=bj,wCL+1 w+1+bj,w-1CL+1 w+…+bj,1CL+1 2+bj,0CL+1+bj′IL+1
bj′=mod(bj,w+bj,w-1+…+bj,1+bj,0,2);
其中,CL+1为循环位移矩阵
Figure BDA0003545136930000061
此外,bj′通过一个mod函数确定,也就是说当从bj,0到bj,w存在奇数个1时bj′为1,否则为0。
步骤S3:按照以下方式生成3个编码数据包,分别表示为p、q和r:
Figure BDA0003545136930000062
Figure BDA0003545136930000063
Figure BDA0003545136930000071
其中,G由L*L单位矩阵IL和L*1全零列向量并置,即G=[IL0L*1];
步骤S4:当原始数据包出现数据丢失,用剩余数据的原始数据包和编码数据包进行数据译码恢复。
另一个本实施例常用的矩阵H=[IL*L 1L*1]T
传统的操作来说,生成3个编码数据包P时,是按照j为1-k的顺序依次进行逐位异或,也就是先m1+m2,取得的结果再加上 m3,以此类推直到加到mk,该方法计算繁琐,对于后续的q、r计算也没有帮助,全部需要进行大体量的运算。
为了简化计算步骤,在本实施例中,所述步骤S3中,所述生成3个编码数据包的方法包括以下步骤:
步骤S301:总共设置
Figure BDA0003545136930000072
层数据,i为数据层数, ni为第i层数据的数据总数,
Figure BDA0003545136930000073
1≤j≤k,
Figure BDA0003545136930000074
初始化第0层数据t0,1,…,t0,j,t0,j+1,其中t0,j+1=mj,t0,1为M*L全零矩阵;
步骤S302:从i=1开始分别按照以下操作计算直到
Figure BDA0003545136930000075
依次将 ti-1,2a-1与ti-1,2a进行逐位异或得到第i层数据ti,a,即ti,a=ti-1,2a-1+ti-1,2a,其中a为整数且逐级从1取到ni-1,若ni-1为偶数,
Figure BDA0003545136930000076
若ni-1为奇数,
Figure BDA0003545136930000077
步骤S303:获取p的方法为:
Figure BDA0003545136930000078
关于本实施例的具体的一个示例参阅图2-3,该示例中共31个原始数据包,即K=31,
Figure BDA0003545136930000079
为通用运算符号,代表向下取整,
Figure BDA00035451369300000710
则相反代表向上取整。所以i 的最大值为
Figure BDA00035451369300000711
即为4,首先进行初始化后,第0层的数据总数 n0即为32,t0,1,t0,2,...,t0,32分别为0,m1,...,m31;然后从i=1开始计算, n1=16,首先的第一层的数据,例如从a=1开始得到t1,1=t0,1+t0,2,然后计算 a=2的情况得出t1,2=t0,3+t0,4,以此类推直到a=16-1,即得到t1,15=t0,29+t0,30;判断可知ni-1也就是n0为偶数,所以t1,16=t0,31+t0,32;如此往复直到得到第4层数据后得出t4,1和t4,2,以计算出p=t4,1+t4,2
步骤S304:获取矩阵
Figure BDA0003545136930000081
其中,
Figure BDA0003545136930000082
在 si的右侧添加一列全0向量得到si′,即si′=siG;
步骤S305:获取q和r的方法为:
将si′按列向右循环i+1位,再将所得M*(L+1)矩阵的最后一列删除得到矩阵xi,即xi=si′CL+1 i+1GT;获取
Figure BDA0003545136930000083
获取q=x+s;
将si′按列向右循环mod(2(i+1),L+1)位,再将所得M*(L+1)矩阵的最后一列删除得到矩阵yi,即yi=si′CL+1 2(i+1)GT;获取
Figure BDA0003545136930000084
获取r=y+s。
在前面计算p的基础上,图3中每个圈出的节点集合所包含的原始数据包的包间异或结果ti,j已在生成编码数据包p时得到,可直接取用,也就是说通过该方法计算p的时候产生的中间数据可以被用来计算q和r,减少了异或操作,进而降低了复杂程度。
具体地,si中,i取值为0-4,依次按步骤计算得到si′后即可代入计算得到 x以得到q。在计算r的时候,先将si′按列向右循环mod(2(i+1),17)位,再将最后一列删除,得到一8×16二元矩阵,即为yi,以此得到r。
优选地,作为另一种可行方案,在所述步骤S305中,所述获取q和r的方法为:
初始化x′和y′,二者均为M*(L+1)的全零矩阵,初始化
Figure BDA0003545136930000085
本实施例即初始化i为4;
将x′与si′进行逐位异或,再将所得M*(L+1)矩阵按列向右循环1位,本实施例的L为16,将所得重新赋值予x′,即x′=(x′+si′)CL+1,i=i-1,迭代直到i=0 得到最终的x′;删除x′的最后一列得到x,即x=x′GT;q=x+s;综合来说即从i=4 开始迭代,每完成一次计算i的值减1开始下一轮计算,直到i=0迭代完毕,下面关于r的计算同理。
将y′与si′进行逐位异或,再将所得M*(L+1)矩阵按列向右循环2位,将所得重新赋值予y′,即y′=(y′+si′)CL+1 2,i=i-1,与上面一样迭代直到i=0得到最终的y′;删除y′的最后一列得到y,即y=y′GT;r=y+s。
现有技术中,纠删码的基本原理是,首先将原始数据划分成k等份,然后通过一定的编码规则计算出r等份的冗余信息,最后将数据和冗余分别存放在存储系统中的k+r个节点上。最大距离可分纠删码保证了当存储系统中有不多于r个节点发生失效时,读取任意k个幸存节点上的数据冗余,并通过特定的译码运算即可恢复出k等份的原始数据。里德-所罗门码是存储系统中广泛应用的MDS纠删码,但其编译码需要在二元扩展域代数结构上进行。阵列码是一类编译码过程仅需在二元域上进行异或,即XOR操作实现的纠删码,一些常用阵列码在可以保证MDS特性的同时,编译码所需实现复杂度会显著低于RS码。
行对角校验码是一类经典的2冗余MDS阵列码,即r=2,其编码过程所需异或操作数目可以渐进逼近理论最优,但其最多只能容忍2个数据节点丢失;现有的一些多冗余MDS阵列码在参数选择上限制较多,且编码过程所需异或操作数目无法渐进逼近理论最优。本实施例的目的便是消除以上现有技术的缺陷,使得可以容忍3个数据节点丢失的同时保证其复杂度保持较低,也就是编码过程所需异或操作数目渐进逼近理论最优。
实施例2
本实施例基于实施例1的技术方案,实施例1具体方法步骤不再赘述。如实施例1所叙述,本技术方案可以容忍3个数据包丢失。本实施例中的原始数据包为8*16矩阵。
作为本实施例的优选方案,所述步骤S4中,当丢失一个原始数据包且没有编码数据包丢失时,所述数据译码恢复的方法为:
丢失的原始数据包记为mj1,将剩余的原始数据包进行逐位异或得到M*L 矩阵p′;此处与正常计算p的方法相同,不过使用的是缺失一个数据的原始数据包;
将p′与编码数据包p进行逐位异或,译码恢复得到原始数据包mj1,即mj1=p+p′。
另外地,当丢失一个原始数据包且有编码数据包丢失时,所述数据译码恢复的方法为:
丢失的原始数据包记为mj1,初始化k个全零数据包mj′,即08*16,本实施例的k为31,1≤j≤k,为mj′赋值,mj′=mj,j≠j1;将mj′视为原始数据包,按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为p′、 q′和r′;也就是说将丢失数据包的原始数据包mj正常代入计算p、q和r,其中丢失的数据包对应的位置为全零矩阵。
若用编码数据包p进行还原,丢失的原始数据包mj1=p+p′;
若用编码数据包q进行还原,丢失的原始数据包mj1=(q′+q)HTD1H, 其中,
Figure BDA0003545136930000101
Figure BDA0003545136930000102
mL+1为2的模(L+1)乘法阶;通常,本实施例的D1=Aj1 254;若D1是由{C17,C17 2,…,C17 16,C17 17} 中多于8个矩阵相加构成,则重设D1=117*17+Aj1 254,1(L+1)*(L+1)为通用表达法,表示全1矩阵。C17如前文所述为循环位移矩阵
Figure BDA0003545136930000103
若用编码数据包r进化还原,丢失的原始数据包mj1=(r′+r)HTD1H, 其中,
Figure BDA0003545136930000104
Figure BDA0003545136930000105
mL+1为2的模 (L+1)乘法阶;同理地,通常,本实施例的D1=Aj1 2*254;若D1是由{C17,C17 2,…, C17 16,C17 17}中多于8个矩阵相加构成,则重设D1=117*17+Aj1 2*254, 1(L+1)*(L+1)为通用表达法,表示全1矩阵。C17如前文所述为循环位移矩阵
Figure BDA0003545136930000106
由以上可知,当一个原始数据包丢失时,通过任意一个编码数据包即可进行数据还原,也就是说最多可以允许丢失两个编码数据包,加上已经丢失的一个原始数据包,本方案可以容忍丢失三个数据包。
译码恢复得到所述原始数据包后,还原丢失的编码数据包。具体可根据恢复的原始数据包对编码数据包进行重新计算,或在计算时候通过p′、q′和r′以及恢复的数据mj1按以下方式还原编码数据包,该方式计算量更小,直接在已经得出的p′、q′和r′补足还原的数据部分:
p=p′+mj1
q=q′+mj1GAj1GT
r=r′+mj1GAj1 2GT
另一种情形下,也就是当丢失两个原始数据包时,所述数据译码恢复的方法为:
丢失的两个原始数据包记为mj1和mj2;初始化k个全零数据包mj′, 1≤j≤k,为mj′赋值,mj′=mj,j≠j1且j≠j2;将mj′视为原始数据包,按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为p′、q′和 r′;p″=p′+p,q″=q′+q,r″=r′+r;
若编码数据包p丢失,[mj1,mj2]满足以下条件:
Figure BDA0003545136930000111
可以通过高斯消元法求解进行还原,例如按以下步骤执行:
步骤a.1:计算r″′=q″(HTAj1GT)+r″,由循环移位网络编码性质可证明
r″′=mj2GAj2(Aj1+Aj2)GT
步骤a.2:设
Figure BDA0003545136930000112
若D11是由{C17,C17 2,…,C17 16,C17 17} 中多于8个矩阵相加构成,则重设D11=117*17+D11,计算mj2=r″′HTD11H;
步骤a.3:计算q″′=q″+mj2GAj2GT
步骤a.4:设
Figure BDA0003545136930000113
若D12是由{C17,C17 2,…,C17 16,C17 17}中多于 8个矩阵相加构成,则重设D12=117*17+D12,计算mj1=q″′HTD12H;
若编码数据包q丢失,用高斯消元法求解
Figure BDA0003545136930000114
得到[mj1,mj2];可参考以下步骤:
步骤b.1:计算r″′=p″(GAj1 2GT)+r″,由循环移位网络编码性质可证明
r″′=mj2G(Aj1 2+Aj2 2)GT=mj2G(Aj1+Aj2)2GT
步骤b.2:设
Figure BDA0003545136930000121
若D21是由{C17,C17 2,…,C17 16,C17 17} 中多于8个矩阵相加构成,则重设D21=117*17+D21,计算mj2=r″′HTD21H;
步骤b.3:计算mj1=p″+mj2
若编码数据包r丢失,用高斯消元法求解
Figure BDA0003545136930000122
得到[mj1,mj2];求解方法可以参考以下步骤:
步骤c.1:计算q″′=p″(GAj1GT)+q″,由循环移位网络编码性质可证明
q″′=mj2G(Aj1+Aj2)GT
步骤c.2:设
Figure BDA0003545136930000123
若D31是由{C17,C17 2,…,C17 16,C17 17} 中多于8个矩阵相加构成,则重设D31=117*17+D21,计算mj2=q″′HTD31H;
步骤c.3:计算计算mj1=p″+mj2
由以上可知,丢失两个原始数据包的时候,可以仅通过任意两个编码数据包进行数据还原,也就是说运行在此基础上丢失1个编码数据包,所以本方案在此情况下容许丢失的数据包量总数依然为3个。
译码恢复得到所述原始数据包后,还原丢失的编码数据包。具体可根据恢复的原始数据包对编码数据包进行重新计算,或在计算时候通过p′、q′和r′以及恢复的数据mj1和mj2按以下方式还原编码数据包,该方式计算量更小,直接在已经得出的p′、q′和r′补足还原的数据部分:
p=p′+mj1+mj2
q=q′+mj1GAj1GT+mj2GAj2GT
r=r′+mj1GAj1 2GT+mj2GAj2 2GT
另一方面,当丢失三个原始数据包时,所述数据译码恢复的方法为:
丢失的三个原始数据包记为mj1、mj2和mj3;初始化k个全零数据包mj′,1≤j≤k,为mj′赋值,mj′=mj,j≠j1且j≠j2且j≠j3;将mj′视为原始数据包,按照所述生成3个编码数据包的方法生成的p、q和r分别标记为p′、q′和 r′;p″=p′+p,q″=q′+q,r=r′+r;
Figure BDA0003545136930000131
Figure BDA0003545136930000132
具体而言,通常
Figure BDA0003545136930000133
如果D2是由{C17,C17 2,…,C17 16,C17 17}中多于8个矩阵相加构成,则重设D2=[(Aj1+ Aj2)(Aj2+Aj3)]2mL+1-2+1L+1*(L+1);
Figure BDA0003545136930000134
Figure BDA0003545136930000135
具体而言,通常
Figure BDA0003545136930000136
如果D3是由{C17,C17 2,…,C17 16,C17 17}中多于8个矩阵相加构成,则重设D3=[(Aj1+ Aj2)(Aj2+Aj3)]2mL+1-2+1L+1*(L+1);其中mL+1为2的模(L+1)乘法阶;
Figure BDA0003545136930000137
计算得到mj1=p″+mj2+mj3,以此完成数据恢复。

Claims (8)

1.一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,包括以下步骤:
步骤S1:获取k个原始数据包,将k个原始数据包分别标记为mj,1≤j≤k,每个数据包由一个M*L矩阵表示,其中L满足以下条件:L+1为质数;
步骤S2:获取每个所述原始数据包mj所对应的二元编码系数矩阵Aj,Aj为(L+1)*(L+1)矩阵;
步骤S3:按照以下方式生成编码数据包p、q和r:
Figure FDA0003545136920000011
Figure FDA0003545136920000012
Figure FDA0003545136920000013
其中,G由L*L单位矩阵IL和L*1全零列向量并置,即G=[IL0L*1];
步骤S4:当原始数据包出现数据丢失,用剩余数据的原始数据包和编码数据包进行数据译码恢复。
2.根据权利要求1所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,获取所述二元编码系数矩阵Aj的方法为:
将所述j转换为二进制向量(bj,w,bj,w-1,...,bj,1,bj,0);
Aj=bj,wCL+1 w+1+bj,w-1CL+1 w+…+bj,1CL+1 2+bj,0CL+1+bj′IL+1
其中,bj′=mod(bj,w+bj,w-1+…+bj,1+bj,0,2),CL+1为循环位移矩阵
Figure FDA0003545136920000014
3.根据权利要求1所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,在所述步骤S3中,所述生成3个编码数据包的方法包括以下步骤:
步骤S301:总共设置
Figure FDA0003545136920000015
层数据,i为数据层数,ni为第i层数据的数据总数,
Figure FDA0003545136920000016
1≤j≤k,
Figure FDA0003545136920000017
初始化第0层数据t0,1,…,t0,j,t0,j+1,其中t0,j+1=mj,t0,1为M*L全零矩阵;
步骤S302:从i=1开始分别按照以下操作计算直到
Figure FDA0003545136920000021
依次将ti-1,2a-1与ti-1,2a进行逐位异或得到第i层数据ti,a,即ti,a=ti-1,2a-1+ti-1,2a,其中a为整数且逐级从1取到ni-1;若ni-1为偶数,
Figure FDA0003545136920000022
若ni-1为奇数,
Figure FDA0003545136920000023
步骤S303:获取p的方法为:
Figure FDA0003545136920000024
步骤S304:获取矩阵
Figure FDA0003545136920000025
其中,
Figure FDA0003545136920000026
在si的右侧添加一列全0向量得到si′,即si′=siG;
步骤S305:获取q和r的方法为:
将si′按列向右循环i+1位,再将所得M*(L+1)矩阵的最后一列删除得到矩阵xi,即xi=si′CL+1 i+1GT;获取
Figure FDA0003545136920000027
获取q=x+s;
将si′按列向右循环mod(2(i+1),L+1)位,再将所得M*(L+1)矩阵的最后一列删除得到矩阵yi,即yi=si′CL+1 2(i+1)GT;获取
Figure FDA0003545136920000028
获取r=y+s;
CL+1为循环位移矩阵
Figure FDA0003545136920000029
4.根据权利要求3所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,在所述步骤S305中,所述获取q和r的方法为:
初始化x′和y′,x′和y′均为M*(L+1)全零矩阵,初始化
Figure FDA00035451369200000210
将x′与si′进行逐位异或,再将所得M*(L+1)矩阵按列向右循环1位,将所得重新赋值予x′,即x′=(x′+si′)CL+1,i=i-1,迭代直到i=0得到最终的x′;删除x′的最后一列得到x,即x=x′GT;获取q=x+s;
将y′与si′进行逐位异或,再将所得M*(L+1)矩阵按列向右循环2位,将所得重新赋值予y′,即y′=(y′+si′)CL+1 2,i=i-1,迭代直到i=0得到最终的y′;删除y′的最后一列得到y,即y=y′GT;获取r=y+s。
5.根据权利要求1所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,所述步骤S4中,当丢失一个所述原始数据包且没有所述编码数据包丢失时,所述数据译码恢复的方法为:
丢失的所述原始数据包记为mj1,将剩余的所述原始数据包进行逐位异或得到M*L矩阵p′;
将p′与编码数据包p进行逐位异或,译码恢复得到原始数据包mj1,即mj1=p+p′。
6.根据权利要求1所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,所述步骤S4中,当丢失一个所述原始数据包且有所述编码数据包丢失时,所述数据译码恢复的方法为:
丢失的所述原始数据包记为mj1,初始化k个全零数据包mj′,1≤j≤k,为mj′赋值,mj′=mj,j≠j1;将mj′视为原始数据包,按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为p′、q′和r′;
若用编码数据包p进行数据还原:mj1=p+p′;
若用编码数据包q进行数据还原:
mj1=(q′+q)HTD1H;
其中,
Figure FDA0003545136920000031
Figure FDA0003545136920000032
mL+1为2的模(L+1)乘法阶;H=[IL*L 1L*1]T
若用编码数据包r进化数据还原:
mj1=(r′+r)HTD1H;
其中,
Figure FDA0003545136920000033
Figure FDA0003545136920000034
mL+1为2的模(L+1)乘法阶;
译码恢复得到所述原始数据包后,还原丢失的所述编码数据包。
7.根据权利要求1所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,所述步骤S4中,当丢失两个所述原始数据包时,所述数据译码恢复的方法为:
丢失的两个所述原始数据包记为mj1和mj2;初始化k个全零数据包mj′,1≤j≤k,为mj′赋值,mj′=mj,j≠j1且j≠j2;将mj′视为原始数据包,按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为p′、q′和r′;p″=p′+p,q″=q′+q,r″=r′+r;
若编码数据包p丢失,用高斯消元法求解
Figure FDA0003545136920000041
得到[mj1,mj2];
若编码数据包q丢失,用高斯消元法求解
Figure FDA0003545136920000042
得到[mj1,mj2];
若编码数据包r丢失,用高斯消元法求解
Figure FDA0003545136920000043
得到[mj1,mj2];
译码恢复得到所述原始数据包后,还原丢失的所述编码数据包。
8.根据权利要求1所述的一种用于数据恢复的三冗余MDS阵列码编译方法,其特征在于,所述步骤S4中,当丢失三个所述原始数据包时,所述数据译码恢复的方法为:
丢失的三个所述原始数据包记为mj1、mj2和mj3;初始化k个全零数据包mj′,1≤j≤k,为mj′赋值,mj′=mj,j≠j1且j≠j2且j≠j3;将mj′视为原始数据包且按照所述生成编码数据包p、q和r的方法生成三个编码数据包且分别标记为p′、q′和r′;
Figure FDA0003545136920000044
mj1=p″+mj2+mj3
其中,p″=p′+p,q″=q′+q,r″=r′+r;
Figure FDA0003545136920000045
Figure FDA0003545136920000046
Figure FDA0003545136920000047
Figure FDA0003545136920000048
mL+1为2的模(L+1)乘法阶;H=[IL*L 1L*1]T
CN202210249270.0A 2022-03-14 2022-03-14 一种用于数据恢复的三冗余mds阵列码编译方法 Pending CN114625571A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210249270.0A CN114625571A (zh) 2022-03-14 2022-03-14 一种用于数据恢复的三冗余mds阵列码编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210249270.0A CN114625571A (zh) 2022-03-14 2022-03-14 一种用于数据恢复的三冗余mds阵列码编译方法

Publications (1)

Publication Number Publication Date
CN114625571A true CN114625571A (zh) 2022-06-14

Family

ID=81901837

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210249270.0A Pending CN114625571A (zh) 2022-03-14 2022-03-14 一种用于数据恢复的三冗余mds阵列码编译方法

Country Status (1)

Country Link
CN (1) CN114625571A (zh)

Similar Documents

Publication Publication Date Title
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
CN101243664B (zh) 应用于对各类码进行编码和解码的原地变换
US7472334B1 (en) Efficient method for the reconstruction of digital information
Assmus, Jr et al. Coding and combinatorics
US8928503B2 (en) Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices
CN111078460B (zh) 一种快速纠删码计算方法
CN107852176A (zh) Ldpc码编码器和译码器
WO2008003094A2 (en) Efficient representation of symbol-based transformations with application to encoding and decoding of forward error correction codes
US20120023362A1 (en) System and method for exact regeneration of a failed node in a distributed storage system
JP6487931B2 (ja) データブロックを再構築する方法及び装置
CN112000512B (zh) 一种数据修复方法及相关装置
CN101272150B (zh) 一种低密度生成矩阵码的译码方法及装置
US20120317466A1 (en) Method and apparatus for data check processing
KR101621752B1 (ko) 부분접속 복구 가능한 반복분할 부호를 이용한 분산 저장 장치 및 그 방법
WO2017185681A1 (zh) 一种gel码字结构编码和译码的方法、装置及相关设备
WO2017041232A1 (zh) 一种二进制循环码的编解码框架
CN104782101A (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
Chen et al. A new Zigzag MDS code with optimal encoding and efficient decoding
CN107665152B (zh) 一类纠删码的译码方法
CN114625571A (zh) 一种用于数据恢复的三冗余mds阵列码编译方法
CN100593911C (zh) 一种对通信系统中接收到的层数据进行解码的方法和系统
US20210055993A1 (en) Methods and Apparatuses for Robust Data Partition And Recovery
CN109144767B (zh) 数据存储系统及其操作方法
CN110780813A (zh) 一种基于二元域上子空间码的分布式存储系统
CN112534724A (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