CN104156283A - 数据恢复方法、装置及存储系统 - Google Patents

数据恢复方法、装置及存储系统 Download PDF

Info

Publication number
CN104156283A
CN104156283A CN201410427438.8A CN201410427438A CN104156283A CN 104156283 A CN104156283 A CN 104156283A CN 201410427438 A CN201410427438 A CN 201410427438A CN 104156283 A CN104156283 A CN 104156283A
Authority
CN
China
Prior art keywords
data
node
xor
verification
checking
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
Application number
CN201410427438.8A
Other languages
English (en)
Other versions
CN104156283B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410427438.8A priority Critical patent/CN104156283B/zh
Publication of CN104156283A publication Critical patent/CN104156283A/zh
Application granted granted Critical
Publication of CN104156283B publication Critical patent/CN104156283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明实施例提供一种数据恢复方法、装置及存储系统。本发明数据恢复方法,用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,所述方法包括:计算并存储四组校验数据,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据;当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据,不需要存储三份副本,从而节省了存储空间。

Description

数据恢复方法、装置及存储系统
技术领域
本发明实施例涉及计算机技术,尤其涉及一种数据恢复方法、装置及存储系统。
背景技术
随着信息技术的发展,在科学计算、商业计算等众多应用领域中产生了规模巨大的数据,云计算技术得到了广泛运用。云计算中,数据可以被分布式存储在远程的云存储系统上,但云存储存在数据可靠性的问题,因此,云存储中的数据容错技术非常重要。
现有的容错技术一般都是增加数据冗余,以保证在部分数据失效以后也能通过访问冗余数据满足需求。目前,常用的容错技术主要采用基于复制(replication)的容错技术,其中,基于复制的容错技术需要将同一份数据复制多份,存放在不同的存储节点上,以便当有存储节点出错时,只要有任意一个存储节点存在,用户即可获取到所述数据,可选地,一般将同一份数据复制三份,也即需要占用的存储空间为原始数据占用存储空间的三倍。
因此,现有基于复制的容错技术的存储空间浪费严重。
发明内容
本发实施例提供一种数据恢复方法、装置及存储系统,用以节省存储空间。
第一方面,本发明实施例提供一种数据恢复方法,用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,其中,p为大于4的素数,N为大于等于1且小于等于p的整数,所述方法包括:
计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据,各个校验数据的值等于通过如下四个步骤计算出来的各个最终校验数据的值:
(1)对所述存储阵列补一个虚拟条带,位于虚拟条带中的各个数据块都为0;
(2)计算p-1个中间校验因子,每个中间校验因子的值为一定斜率的直线经过的分别位于不同条带以及不同数据存储节点的N个数据块的异或和,其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化;
(3)计算调节因子,所述调节因子的值为所述存储阵列中经上一个步骤后剩下未被用于计算异或和的数据块的异或和;
(4)分别计算每个中间校验因子与所述调节因子进行异或和,得到p-1个最终校验数据;
当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据,包括:
根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点;
根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,当丢失的所述四个存储节点为四个数据存储节点,且所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个所述组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第一异或和,并将所述第一异或和与所述校验数据异或生成所述校验数据的第一校验因子;
将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第二异或和,并将所述第二异或和与所述校验数据异或生成所述校验数据的第二校验因子;
将所述第二校验因子及所述调节因子信息采用异或消元运算恢复所述第一节点的数据;
其中,所述根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息,包括:
将所述未发生数据丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和,或者
当所述未发生数据丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,将所述斜率为零的直线所对应的校验数据分别与所述未发生数据丢失的校验数据存储节点中剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述两个校验数据的第二调节因子。
结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将所述未发生数据丢失的三个校验存储节点中对应直线的斜率不连续的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第三异或和,并将所述第三异或和与所述校验数据异或生成所述校验数据的第三校验因子;
将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
结合第一方面的第一种可能的实现方式,在第一方面的第五种可能的实现方式中,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点,且所述第一节点为所述丢失的校验数据存储节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第四异或和,并将所述第四异或和与所述校验数据异或生成所述校验数据的第四校验因子;
将所述第四校验因子采用异或消元运算恢复所述第一节点的数据。
结合第一方面的第一种可能的实现方式,在第一方面的第六种可能的实现方式中,当丢失的所述四个存储节点为两个数据存储节点和两个校验存储节点,且所述第一节点为所述丢失的两个数据存储节点中的一个节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将所述未发生数据丢失的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第五异或和,并将所述第五异或和与所述校验数据异或生成所述校验数据的第五校验因子;
将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
结合第一方面的第一种可能的实现方式,在第一方面的第七种可能的实现方式中,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点,且所述第一节点为所述丢失的数据存储节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第六异或和,并将所述第六异或和与所述校验数据异或生成所述校验数据的第六校验因子;
根据所述第六校验因子以及所述数据存储节点的数据生成所述校验数据的第三调节因子;
根据所述第六校验因子及所述第三调节因子采用异或消元运算恢复所述第一节点的数据;
其中,根据所述第六校验因子以及所述数据存储节点的数据生成的所述校验数据的第三调节因子的值等于通过如下步骤计算出来的值:
采用公式生成P0的第三调节因子;
其中,由公式<g-x·a>p=p-1确定g的值;x为所述未丢失的校验存储节点对应直线的斜率;为所述未丢失校验存储节点的第g个条带单元数据。
结合第一方面的第一种可能的实现方式,在第一方面的第八种可能的实现方式中,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零,且所述第一节点为所述丢失的数据存储节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复所述第一节点的数据。
第二方面,本发明实施例提供一种数据恢复装置,用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,其中,p为大于4的素数,N为大于等于1且小于等于p的整数,所述装置,包括:
计算模块,用于计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据,各个校验数据的值等于通过如下四个步骤计算出来的各个最终校验数据的值:
(1)对所述存储阵列补一个虚拟条带,位于虚拟条带中的各个数据块都为0;
(2)计算p-1个中间校验因子,每个中间校验因子的值为一定斜率的直线经过的分别位于不同条带以及不同数据存储节点的N个数据块的异或和,其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化;
(3)计算调节因子,所述调节因子的值为所述存储阵列中经上一个步骤后剩下未被用于计算异或和的数据块的异或和;
(4)分别计算每个中间校验因子与所述调节因子进行异或和,得到p-1个最终校验数据;
恢复模块,用于当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述恢复模块包括:
第一恢复单元,用于根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点;
降级恢复单元,用于根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,当丢失的所述四个存储节点为四个数据存储节点,且所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点时,所述第一恢复单元,包括:
第一调节因子异或和生成子单元,用于将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个所述组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和;
第一校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第一异或和,并将所述第一异或和与所述校验数据异或生成所述校验数据的第一校验因子;
第一恢复子单元,用于将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述第一恢复单元,包括:
调节因子信息生成子单元,用于根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息;
第二校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第二异或和,并将所述第二异或和与所述校验数据异或生成所述校验数据的第二校验因子;
第二恢复子单元,用于将所述第二校验因子及所述调节因子信息采用异或消元运算恢复所述第一节点的数据;
其中,所述调节因子信息生成子单元具体用于:
将所述未发生数据丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和,或者
当所述未发生数据丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,将所述斜率为零的直线所对应的校验数据分别与所述未发生数据丢失的校验数据存储节点中剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述两个校验数据的第二调节因子。
结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述第一恢复单元,包括:
第三调节因子异或和生成子单元,用于将所述未发生数据丢失的三个校验存储节点中对应直线的斜率不连续的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
第三校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第三异或和,并将所述第三异或和与所述校验数据异或生成所述校验数据的第三校验因子;
第三恢复子单元,用于将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
结合第二方面的第一种可能的实现方式,在第二方面的第五种可能的实现方式中,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点,且所述第一节点为所述丢失的校验数据存储节点时,所述第一恢复单元,包括:
第四校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第四异或和,并将所述第四异或和与所述校验数据异或生成所述校验数据的第四校验因子;
第四恢复子单元,用于将所述第四校验因子采用异或消元运算恢复所述第一节点的数据。
结合第二方面的第一种可能的实现方式,在第二方面的第六种可能的实现方式中,当丢失的所述四个存储节点为两个数据存储节点和两个校验存储节点,且所述第一节点为所述丢失的两个数据存储节点中的一个节点时,所述第一恢复单元,包括:
第五调节因子异或和生成子单元,用于将所述未发生数据丢失的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
第五校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第五异或和,并将所述第五异或和与所述校验数据异或生成所述校验数据的第五校验因子;
第五恢复子单元,用于将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
结合第二方面的第一种可能的实现方式,在第二方面的第七种可能的实现方式中,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点,且所述第一节点为所述丢失的数据存储节点时,所述第一恢复单元,包括:
第六校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第六异或和,并将所述第六异或和与所述校验数据异或生成所述校验数据的第六校验因子;
第三调节因子生成子单元,用于根据所述第六校验因子以及所述数据存储节点的数据生成所述校验数据的第三调节因子;
第六恢复子单元,用于根据所述第六校验因子及所述第三调节因子采用异或消元运算恢复所述第一节点的数据;
其中,所述第三调节因子生成子单元具体用于:
采用公式生成P0的第三调节因子;
其中,由公式<g-x·a>p=p-1确定g的值;x为所述未丢失的校验存储节点对应直线的斜率;为所述未丢失校验存储节点的第g个条带单元数据。
结合第二方面的第一种可能的实现方式,在第二方面的第八种可能的实现方式中,当丢失的四个存储节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零,且所述第一节点为所述丢失的数据存储节点时,所述第一恢复单元具体用于:将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复所述第一节点的数据。
第三方面,本发明实施例提供一种数据处理的存储系统,包括:N个数据存储节点、四个校验存储节点以及如上述第二方面中任一实现方式所述的数据恢复装置,其中,N+4个存储节点都被划分成p-1个条带,p为大于4的素数,N为大于等于1且小于等于p的整数。
本发明中,通过计算并存储四组校验数据,当N+4个存储节点中的任意四个存储节点的数据丢失时,可以根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据,不需要存储三份副本,从而节省了存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为本发明数据恢复方法实施例一的流程示意图;
图1B为本发明数据恢复方法实施例一中存储节点的示意图;
图2a~图2d为本发明数据恢复方法中生成校验数据的示意图;
图3为本发明数据恢复方法实施例二的流程示意图;
图4为本发明数据恢复方法实施例三的流程示意图;
图5为本发明数据恢复方法的示意图一;
图6为本发明数据恢复方法实施例四的流程示意图;
图7为本发明数据恢复方法的示意图二;
图8为本发明数据恢复方法实施例五的流程示意图;
图9为本发明数据恢复方法的示意图三;
图10为本发明数据恢复方法实施例六的流程示意图;
图11为本发明数据恢复方法实施例七的流程示意图;
图12为本发明数据恢复方法的示意图四;
图13为本发明数据恢复方法实施例八的流程示意图;
图14为本发明数据恢复方法实施例九的流程示意图;
图15A-15D为本发明数据恢复方法实施例十一中存储节点的示意图;
图16为本发明数据恢复方法的示意图五;
图17为本发明数据恢复方法的示意图六;
图18为本发明数据恢复装置实施例一的结构示意图;
图19为本发明数据恢复装置实施例二的结构示意图;
图20为本发明数据恢复设备实施例一的结构示意图;
图21为本发明数据处理的存储系统实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1A为本发明数据恢复方法实施例一的流程示意图,所述数据恢复方法用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,形成(N+4)*(p-1)个数据块,其中,p为大于4的素数,N为大于等于1且小于等于p的整数。本实施例的执行主体为配置在服务器、网关、RAID阵列、网络附属存储(Network-attached storage,简称NAS)、分布式存储系统、云存储或终端设备中的数据恢复装置,该装置可以通过软件和/或硬件实现。如图1A所示,本实施例的方法可以包括:
步骤101、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
本发明实施例中,所述N+4个存储节点在逻辑上都被分成p-1个条带,逻辑上形成(N+4)*(p-1)个数据块,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据,可选地,各个校验数据的值等于通过如下四个步骤计算出来的各个最终校验数据的值:
(1)对所述存储阵列补一个虚拟条带,位于虚拟条带中的各个数据块都为0;
(2)计算p-1个中间校验因子,每个中间校验因子的值为一定斜率的直线经过的分别位于不同条带以及不同数据存储节点的N个数据块的异或和,其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化;
(3)计算调节因子,所述调节因子的值为所述存储阵列中经上一个步骤后剩下未被用于计算异或和的数据块的异或和;
(4)分别计算每个中间校验因子与所述调节因子进行异或和,得到p-1个最终校验数据。
图1B为本发明数据恢复方法实施例一中存储节点的示意图,如图1B所示,本发明实施例中,1)所述每个数据存储节点分为p个等大小的条带单元(编号为0~p-1,其中,编号为p-1的条带为虚拟补零,在实际数据存储节点上不存在,增加此虚拟行目的是更好描述编码及译码算法),因此,所述p个数据存储节点在逻辑上形成p*(p-1)数据块矩阵D,其中,Du,t,表示第t个数据存储节点的第u个数据块的数据(或者表示第t个数据存储节点的第u个条带单元数据);所述每个校验存储节点分为p个等大小的条带单元(编号为0~p-1,其中,编号为p-1的条带为虚拟补零的条带,在实际校验存储节点上不存在,其中实际中可以并不参与真正的运算;此外,也可以认为虚拟条带中的数据块里“存储”的数据都为0,并参与运算,但由于数据为0,其参与后续介绍的各种运算后并不影响最终的值,因此,在这种情况下也可以认为实际上并没有参加运算)。2)分别通过使用斜率值不相同的直线经过的分别位于不同条带以及不同数据存储节点的p个数据块的异或和,得到每组校验数据的p-1个中间校验因子(其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同),可选地,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化。3)通过将所述存储节点中经上一个步骤后剩下未被用于计算异或和的数据块的异或和得到相应斜率的直线所对应的校验数据的调节因子。4)分别计算每组校验数据的p-1个中间校验因子与所述校验数据的调节因子进行异或和,得到所述每组校验数据的p-1个最终校验数据。
可选地,所述四个斜率值分别为x,y,z,w,且-(p-1)≤x,y,z,t≤p-1(表示x,y,z,w都小于等于p-1,且大于等于-(p-1)),x,y,z,w为整数,按等差数列依次变化,例如,y比x大1,z比y大1,w比z大1,其中,p为大于4的素数。
可选地,可以通过如下公式计算分别对应斜率为x,y,z,w的直线的校验数据P0,P1,P2,P3的第u个条带单元的校验数据:
R s = &CirclePlus; t = 1 p - 1 D < - 1 - xt > P , t ; P u 0 = R s &CirclePlus; ( &CirclePlus; t = 0 < u - xt > p &NotEqual; p - 1 p - 1 D < u - xt > P , t ) ,
P s = &CirclePlus; t = 1 p - 1 D < - 1 - yt > P , t ; P u 1 = P s &CirclePlus; ( &CirclePlus; t = 0 < u - yt > p &NotEqual; p - 1 p - 1 D < u - yt > P , t ) ,
Q s = &CirclePlus; t = 1 p - 1 D < - 1 - zt > P , t ; P u 2 = Q s &CirclePlus; ( &CirclePlus; t = 0 < u - zt > p &NotEqual; p - 1 p - 1 D < u - zt > P , t ) ,
S s = &CirclePlus; t = 1 p - 1 D < - 1 - wt > P , t ; P u 3 = S s &CirclePlus; ( &CirclePlus; t = 0 < u - wt > p &NotEqual; p - 1 p - 1 D < u - wt > P , t )
其中,Rs为斜率x的直线所对应的校验数据的调节因子,Ps为斜率y的直线所对应的校验数据的调节因子,Qs为斜率z的直线所对应的校验数据的调节因子,Ss为斜率w的直线所对应的校验数据的调节因子,调节因子是临时变量,用于计算其他值时使用;为存储校验数据P0的校验存储节点的第u个条带单元的校验数据,为存储校验数据P1的校验存储节点的第u个条带单元的校验数据,为存储校验数据P2的校验存储节点的第u个条带单元的校验数据,为存储校验数据P3的校验存储节点的第u个条带单元的校验数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;0≤u≤p-2;其中,表示所有的(t取0~p-1,且<u-xt>P≠p-1)的数据进行异或。
图2a~图2d为本发明数据恢复方法中生成校验数据的示意图,如图2a~图2d所示,本发明实施例中以p为5,斜率x,y,z,w分别为-1,0,1,2为例对本发明数据恢复方法中生成校验数据的方式进行详细说明,其中,每个存储节点都分为p个等大小的条带单元(编号为0~p-1,其中,编号为p-1的条带为虚拟补零)。如图2a所示,对应斜率为-1的校验数据P0的第i个条带的校验数据(除补零条带外)的生成方法:1)以第i行第1列为起点沿着斜率为-1的直线所经过的不同数据存储节点的不同条带的p个数据块作异或和得到所述校验数据P0的第i个中间校验因子,其中,i为[0,3]内的整数;2)以第4行第1列为起点沿着斜率为-1的直线所经过的不同数据存储节点的不同条带的p个数据块作异或和得到所述校验数据P0的调节因子;3)将所述校验数据P0的第i个中间校验因子与所述校验数据P0的调节因子进行异或和,得到校验数据P0的第i个条带的校验数据。如图2b~图2d所示,对应斜率为0的校验数据P1、对应斜率为1的校验数据P2以及对应斜率为2的校验数据P3的第i个条带的校验数据(除补零条带外)的生成方法与上述对应斜率为-1的校验数据P0的第i个条带的校验数据(除补零条带外)的生成方法类似,本发明实施例此处不再赘述。
需要说明的是,在上面各图中,整个数据矩阵会有重复,例如,图2a中重复了两次,这并不表示新增加了一些物理节点以划分出一个新的数据矩阵,而是为了方便表示某个斜率的直线经过了哪些数据块。上下两个矩阵中,只要横竖坐标相同的,都视为同一个数据块。这种表示通过重叠矩阵的方式来示意某个斜率的直线经过的数据块为公知的技术,例如,《计算机学报》第30卷第10期的“一种基于3容错阵列码的RAID数据布局”这篇论文中也使用了相同的方法来表示某个斜率的直线经过的数据块。
步骤102、当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据。
在存储系统中,纠删码技术主要是通过利用纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的,其基本思想是将k0块原始的数据元素通过一定的编码计算,得到m0块冗余元素,对于这k0+m0块元素,当其中任意的m0块元素出错(包括数据和冗余出错)时,均可通过对于的重构算法恢复出原来的k0数据。
本发明实施例中,当在云存储或NAS中任意四个存储节点的数据丢失或损坏时,根据所述纠删码方法的基本思想可知,终端需要预先额外计算四个校验数据,以便于终端可以根据未丢失或未损坏的校验存储节点的校验数据和未丢失的数据存储节点的数据依次恢复所述发生数据丢失或损坏的四个存储节点的数据。可选地,所述终端可以根据所述发生数据丢失或损坏的四个存储节点的类别选择合适的恢复策略依次恢复所述丢失或损坏的四个存储节点的数据,比如,先恢复哪个存储节点,再恢复哪个存储节点等。可选地,恢复过程中将已经恢复的存储节点当作好的节点降级依次恢复丢失的剩余节点的数据。
本发明实施例中通过计算并存储四组校验数据,当N+4个存储节点中的任意四个存储节点的数据丢失时,可以根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据,不需要存储三份副本,从而节省了存储空间。
实施例二
图3为本发明数据恢复方法实施例二的流程示意图,本发明实施例在图1A实施例的基础上,所述步骤102,包括:
步骤1021、根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点;
步骤1022、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,当在云存储或NAS中任意四个存储节点的数据丢失或损坏时,所述终端可以根据未发生数据丢失的校验存储节点的校验数据以及未发生数据丢失的数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点,可选地,所述存储节点可以为数据块、磁盘等,但本发明实施例并不以此为限。
本发明实施例的步骤1021中,终端根据未发生数据丢失的校验存储节点的校验数据以及未发生数据丢失的数据存储节点的数据基于异或运算恢复第一节点的数据的主要分为以下四大类情况。
可选地,1)当丢失的四个存储节点为四个数据存储节点时,所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点。
2.1)当丢失的四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化时,所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点;2.2)当丢失的四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化时,所述第一节点为所述丢失的三个数据数据存储节点中节点盘号处于中间的节点;2.3)当丢失的四个存储节点为三个数据存储节点和一个校验存储节点时,所述第一节点为所述丢失的校验数据存储节点。
3)当丢失的四个存储节点为两个数据存储节点和两个校验存储节点时,所述第一节点为所述丢失的两个数据存储节点中的一个节点。
4.1)当丢失的四个存储节点为一个数据存储节点和三个校验存储节点时,所述第一节点为所述丢失的数据存储节点;4.2)当丢失的四个存储节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零时,所述第一节点为所述丢失的数据存储节点。
可选地,当丢失的四个存储节点为四个校验存储节点时,终端直接根据未发生数据丢失的数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述丢失的四个校验数据存储节点中的一个节点。
可选地,云存储或NAS中的存储节点损坏的情况还可以为其它情况,但当损坏的存储节点数小于等于四时亦可以采用本发明实施例中上述方式恢复数据,本发明此处不再赘述。
本发明实施例的步骤1022中,根据上述方法恢复了所述丢失的四个存储节点中的一个节点(相当于丢失三个存储节点的情况),进一步地,根据未丢失的校验数据、根据未丢失的数据和所述已经恢复的第一节点的数据(当作为未丢失数据),基于异或运算降级(相当于丢失三个存储节点的情况)依次恢复丢失的剩余节点的数据,其中,降级指由i节点恢复方法降为i-1节点恢复方法,也即将已恢复的节点数据当作为未丢失数据进一步地依次恢复丢失的剩余节点的数据,对于本领域技术人员应该熟知降级的含义,本发明实施例此处不再赘述。
本发明实施例中通过计算并存储四组校验数据,当N+4个存储节点中的任意四个存储节点的数据丢失时,可以根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据先恢复所述丢失的四个存储节点中的一个节点的数据,并根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和已恢复节点的数据,降级依次恢复丢失的剩余节点的数据,不需要存储三份副本,从而节省了存储空间。
实施例三
图4为本发明数据恢复方法实施例三的流程示意图,如图4所示,本实施例的方法可以包括:
步骤401、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤402、将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和。
本发明实施例中,丢失的四个存储节点为四个数据存储节点时,将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个所述组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和,如将组合A(组合A中包含A1校验数据和A2校验数据)中A1校验数据的第i个条带的数据与A2校验数据的第i个条带的数据进行异或得到一中间异或和,其中,i为0~p-1的整数,并将所述中间异或和进行异或生成对应所述组合A的校验数据的调节因子异或和。
本发明实施例中,丢失的四个存储节点为四个数据存储节点,记所述丢失的四个数据存储节点的盘号为a,b,c,d,0≤a,b,c,d≤p-1;四个校验存储节点对应直线的斜率为x,y,z,w,且所述四个斜率对应直线的校验数据分别为P0,P1,P2,P3,其中w=z+1,z=y+1,y=x+1。
可选地,若将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合(如:P0和P1组合,以及P2和P3组合),对应地,采用公式生成P0和P1组合的调节因子异或和;采用公式生成P2和P3组合的调节因子异或和;
其中,Ps 0为P0的调节因子,Ps 1为P1的调节因子,Ps 2为P2的调节因子,Ps 3为P3的调节因子;(P0)e为存储P0的校验存储节点的第e个条带单元的校验数据,(P1)e为存储P1的校验存储节点的第e个条带单元的校验数据,(P2)e为存储P2的校验存储节点的第e个条带单元的校验数据,(P3)e为存储P3的校验存储节点的第e个条带单元的校验数据,0≤e≤p-2;表示异或和的累加,即从e=0开始,一直到p-2,在前次异或和的基础上,再进行异或和。
可选地,若分成的所述两个组合分别为P0和P3组合,以及P1和P2组合,对应地,可以利用类似地公式计算P0和P3组合的调节因子异或和以及P1和P2组合的调节因子异或和;若分成的所述两个组合分别为P0和P2组合,以及P1和P3组合,对应地,可以利用类似地公式计算P0和P2组合的调节因子异或和以及P1和P3组合的调节因子异或和,本实施例此处不再赘述。可选地,若步骤402中计算得到调节因子异或和为:P0和P3组合的调节因子异或和以及P1和P2组合的调节因子异或和,则步骤404中所述调节因子异或和即为P0和P3组合的调节因子异或和以及P1和P2组合的调节因子异或和,但本发明实施例中并不以此为限,也可以为其它的组合。可选地,若某一个校验的调节因子为0时,按照上述公式计算所述校验与其它校验的调节因子异或和时,计算结果即为该其它校验的调节因子
步骤403、将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第一异或和,并将所述第一异或和与所述校验数据异或生成所述校验数据的第一校验因子。
本发明实施例中,将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的p-1条直线所经过的分别位于所述未发生数据丢失的数据存储节点的不同条带以及不同所述数据存储节点的数据块异或得到p-1个第一异或和,并将所述p-1个第一异或和与所述校验数据异或生成所述校验数据的第一校验因子,具体地,所述p-1个第一异或和分别与所述校验数据的p-1个条带数据异或生成所述校验数据的第一校验因子。
本发明实施例中,所述第一校验因子包含p-1个条带单元数据,记(P0)'u为对应斜率x的直线的第一校验因子的第u个条带单元数据,(P1)'u为对应斜率y的直线的第一校验因子的第u个条带单元数据,(P2)'u为对应斜率z的直线的第一校验因子的第u个条带单元数据,(P3)'u为对应斜率w的直线的第一校验因子的第u个条带单元数据。其中,(P0)'u的生成方法:1)以第u行第1列为起点沿着斜率为-1的直线所经过的所述未发生数据丢失的数据存储节点的不同条带的数据块作异或和,得到所述第一校验因子的第u个第一异或和;2)将所述第一异或和与所述校验数据P0的第u个条带单元的校验数据(P0)u进行异或和,生成所述(P0)'u。对应地,(P1)'u、(P2)'u以及(P3)'u的生成方法与上述(P0)'u的生成方法类似,本发明实施例此处不再赘述。
可选地,所述校验数据的第一校验因子的值等于通过如下步骤计算出来的值:
采用公式生成对应斜率x的直线的第一校验因子;
采用公式生成对应斜率y的直线的第一校验因子;
采用公式生成对应斜率z的直线的第一校验因子;
采用公式生成对应斜率w的直线的第一校验因子;
其中,x,y,z,w为所述四个校验存储节点对应的四个斜率;P0,P1,P2,P3分别为与斜率分别为所述四个斜率值的四条直线所对应的校验数据;(P0)u为存储校验数据P0的校验存储节点的第u个条带单元的校验数据,(P1)u为存储检验数据P1的校验存储节点的第u个条带单元的校验数据,(P2)u为存储校验数据P2的校验存储节点的第u个条带单元的校验数据,(P3)u为存储校验数据P3的校验存储节点的第u个条带单元的校验数据;(P0)'u为对应斜率x的直线的第一校验因子的第u个条带单元数据,(P1)'u为对应斜率y的直线的第一校验因子的第u个条带单元数据,(P2)'u为对应斜率z的直线的第一校验因子的第u个条带单元数据,(P3)'u为对应斜率w的直线的第一校验因子的第u个条带单元数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;a,b,c,d为所述丢失的四个数据存储节点的盘号,0≤a<b<c<d≤p-1;i=b-a,j=c-b;0≤u≤p-1;其中,表示所有的(t取0~p-1且t≠a,b,c,d,且<u-xt>P≠p-1)的数据进行异或。
步骤404、将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据,其中,所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点。
本发明实施例中,将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据,其中,异或消元运算为本领域技术人员公知的技术,这里并不进行详细描述,简单地说,异或消元运算中规定当W个数据异或时,若所述W个数据中数据i的个数为偶数时,则可以将所述W个数据中的所述数据i消掉;若所述W个数据中数据j的个数为奇数时,则可以保留所述W个数据中的一个数据j进行异或运算而将其它的数据j消掉。类似地,所述异或消元运算中通过将两个方程作异或,以消去所述两个方程式中相同的未知数,使方程只含有一个未知数而得以求解。
可选地,图5为本发明数据恢复方法的示意图一,结合图5所示,将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复的所述第一节点的数据的值等于通过如下三个步骤计算出来的值:
(一)建立包含所述第一节点数据的公式一,以将丢失的节点数据转化到丢失的中间列中一列数据的p-1个条带单元上,其中,公式一为:
D u , b &CirclePlus; D < u + i > p , b &CirclePlus; D < u + j > p , b &CirclePlus; D < u + i + j > p , b &CirclePlus; D < u + k + j > p , b &CirclePlus; D < u + k + j + i > p , b &CirclePlus; D < u + k + 2 j > p , b &CirclePlus; D < u + k + 2 j + i > p , b = ( P 0 ) < u + xb + i > p &prime; &CirclePlus; ( P 1 ) < u + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + k + yb > p &prime; &CirclePlus; ( P 2 ) < u + j + zb > p &prime; &CirclePlus; ( P 2 ) < u + j + k + zb > p &prime; &CirclePlus; ( P 2 ) < u + i + 2 j + k + zb > p &prime; &CirclePlus; ( P 3 ) < u + 2 j + k + wb ) > p &prime; &CirclePlus; P s 0 &CirclePlus; P s 1 &CirclePlus; P s 2 &CirclePlus; P s 3 ;
其中,将所述公式一中等号右边的表达式记为Au,Ps 0为P0的调节因子,Ps 1为P1的调节因子,Ps 2为P2的调节因子,Ps 3为P3的调节因子;0≤u≤p-1;i=b-a,j=c-b,k=d-c。
可选地,上述公式中的斜率x,y,z,w可以是图5所示直线的斜率(-1、0、1及2),其中,图5所示的正方形的长度相同,空心小圆圈代表丢失的数据,图5中所示直线上两点的纵坐标差与所述两点的横坐标差的商即为所述直线的斜率。
(二)对所述公式一进行两次消元处理后得到第一方程组,其中,所述第一方程组的每个方程中包含所述第一节点的两个条带单元数据;
可选地,对所述公式一进行两次消元处理后得到的第一方程组等于通过如下两个步骤计算出来的方程组:(1)对所述第一节点数据的公式一中等号左右两边的表达式同时采用步长off1进行f1次异或求和得到包含所述第一节点数据的公式二:
D u , b &CirclePlus; D < u + j > p , b &CirclePlus; D < u + 2 dis 1 > p , b &CirclePlus; D < u + 2 dis 1 + j > p , b = &Sigma; v = 0 f 1 - 1 A < u + v &times; off 1 > p ;
其中,f1根据公式 < ( j + k ) l 1 - i > p = 0 < ( j + k ) - r 1 i > p = 0 f 1 = min { l 1 , r 1 } 确定,当确定f1后,若f1=l1,则dis1=i,off1=j+k,否则,若f1=r1,则dis1=j+k,off1=i;其中,1≤l1≤p,1≤r1≤p;i=b-a,j=c-b,k=d-c;将所述公式二中等号右边的表达式记为Uu
(2)对所述第一节点数据的公式二中等号左右两边的表达式同时采用步长off2进行f2次异或求和得到包含所述第一节点数据的第一方程组:
D u , b &CirclePlus; D < u + 2 dis 2 > p , b = &Sigma; v = 0 f 2 - 1 U < u + v &times; off 2 > p ;
其中,f2根据公式 < jl 2 - 2 dis 1 > p = 0 < j - r 2 &times; 2 dis 1 > p f 2 = min { l 2 , r 2 } = 0 确定,当确定f2后,若f2=l2,则dis2=2dis1,off2=j,否则,若f2=r2,则dis2=j,off2=2dis;其中,1≤l2≤p,1≤r2≤p,i=b-a,j=c-b,0≤u≤p-1。
(三)将所述第一节点的第p-1个条带单元数据代入所述第一方程组中包含所述第p-1个条带单元数据的方程式,并根据求解结果依次求解所述第一方程组的其它方程式,恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零。
本发明实施例中,将Dp-1,b=0代入上述第一方程组中包含Dp-1,b的方程式,即可得出的值;再将代入上述第一方程组中包含的另一个方程式,即可得到的值;按照同样的方式依次求解所述第一方程组的其它方程式,即可恢复所述第一节点的所有条带单元的数据。
可选地,若先恢复盘号为a的数据存储节点的方式同本发明实施例上述方法一样,此处不再赘述。
步骤405、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,将已恢复的第一节点的数据当作好的数据,按照本实施例中前述的方法更新所述四个斜率中任意三个连续斜率对应直线的第一校验因子以及相应的调节因子异或和,具体细节详见本发明实施例中步骤402及403所述,此处不再赘述。
进一步地,根据丢失三个数据存储节点的恢复方式先恢复中间列数据,然后恢复后两列丢失节点的数据,具体细节请参见本发明实施例四、五或六中所述,此处不再赘述。
实施例四
图6为本发明数据恢复方法实施例四的流程示意图,如图6所示,本实施例的方法可以包括:
步骤601、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤602、根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息
本发明实施例中,丢失的四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化时,记所述丢失的三个数据存储节点的盘号为a,b,c,丢失的校验存储节点的盘号为d,0≤a,b,c≤p-1;未丢失的三个校验存储节点对应直线的斜率为x,y,z,且所述三个斜率对应直线的校验数据分别为P0,P1,P2,其中z=y+1,y=x+1。
可选地,当所述未发生数据丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,将所述斜率为零的直线所对应的校验数据分别与所述未发生数据丢失的校验数据存储节点中剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述两个校验数据的第二调节因子;或者,
将所述未发生数据丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和,即采用生成P0和P2组合的调节因子异或和,其中,Ps 0为P0的调节因子,Ps 2为P2的调节因子;Pu 0为存储P0的校验存储节点的第u个条带单元校验数据,Pu 2为存储P2的校验存储节点的第u个条带单元校验数据;a,b,c为所述丢失的三个数据存储节点,d为所述丢失的一个校验数据存储节点,所述未丢失校验数据为P0,P1,P2,所述未丢失校验数据对应的斜率为x,y,z,0≤a,b,c≤p-1。
步骤603、将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第二异或和,并将所述第二异或和与所述校验数据异或生成所述校验数据的第二校验因子。
本发明实施中,将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的p-1条直线所经过的分别位于所述未发生数据丢失的数据存储节点的不同条带以及不同所述数据存储节点的数据块异或得到p-1个第二异或和,并将所述p-1个第二异或和与所述校验数据异或生成所述校验数据的第二校验因子,具体地,所述p-1个第二异或和分别与所述校验数据的p-1个条带数据异或生成所述校验数据的第二校验因子,其中,所述第二校验因子包含p-1个条带单元数据,也即计算出第二校验因子的每个条带单元数据也就是得到所述第二校验数据。
可选地,所述校验数据的第二校验因子的值等于通过如下步骤计算出来的值:
采用公式生成对应斜率x的直线的第二校验因子;
采用公式生成对应斜率为y的直线的第二校验因子;
采用公式生成对应斜率z的直线的第二校验因子;
其中,a,b,c为所述丢失的三个数据存储节点的盘号,d为所述丢失的一个校验数据存储节点的盘号,0≤a,b,c≤p-1;所述未丢失校验数据对应直线的斜率为x,y,z,-(p-1)≤x,y,z≤p-1;所述未丢失校验数据为P0,P1,P2为存储P0的校验存储节点的第u个条带单元的校验数据,为存储P1的校验存储节点的第u个条带单元的校验数据,为存储P2的校验存储节点的第u个条带单元的校验数据;(Pu 0)'为对应斜率x的直线的第二校验因子的第u个条带单元数据,(Pu 1)'为对应斜率y的直线的第二校验因子的第u个条带单元数据,(Pu 2)'为对应斜率z的直线的第二校验因子的第u个条带单元数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;i=b-a,j=c-b,k=d-c;0≤u≤p-1。
步骤604、将所述第二校验因子及所述调节因子信息采用异或消元运算恢复所述第一节点的数据,其中,所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点。
可选地,图7为本发明数据恢复方法的示意图二,结合图7所示,将所述第二校验因子及所述调节因子信息采用异或消元运算恢复的所述第一节点的数据的值等于通过如下三个步骤计算出来的值:
(一)建立包含所述第一节点数据的公式三,以将丢失的节点数据转化到丢失的中间列中一列数据的p-1个条带单元上,其中,公式三为:
D u , b &CirclePlus; D < u + i > p , b &CirclePlus; D < u + j > p , b &CirclePlus; D < u + i + j > p , b = ( P < u + i + xb > p 0 ) &prime; &CirclePlus; ( P < u + yb > p 1 ) &prime; &CirclePlus; ( P < u + i + j + yb > p 1 ) &prime; &CirclePlus; ( P < u + j + zb > p 2 ) &prime; &CirclePlus; P s q 1 ;
其中,将所述公式三中等号右边的表达式记为Bu为所述根据未丢失的校验数据生成的调节因子;0≤u≤p-1;i=b-a,j=c-b。
可选地,上述公式中的斜率x,y,z可以是图7所示直线的斜率(-1、0及1),其中,图7所示的正方形格子的长度相同,空心小圆圈代表丢失的数据,图7中所示直线上两点的纵坐标差与所述两点的横坐标差的商即为所述直线的斜率。
其中,当所述未丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,所述为将所述述斜率为零的直线所对应的校验数据分别与所述未丢失的校验数据存储节点的剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述校验数据的第二调节因子;或者,
所述为将所述未丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和。
(二)对所述公式三进行消元处理后得到第二方程组,其中,所述第二方程组的每个方程中包含所述第一节点的两个条带单元数据;
可选地,对所述公式三进行消元处理后得到的第二方程组等于通过如下步骤计算出来的方程组:
对所述第一节点数据的公式三中等号左右两边的表达式同时采用步长off3进行f3次异或求和得到包含所述第一节点数据的第二方程组:
D u , b &CirclePlus; D < u + 2 dis 3 > P , b = &Sigma; v = 0 f 3 - 1 B < u + v &times; off 3 > ;
其中,f3根据公式 < j - m 1 &times; i > p = 0 < i - n 1 &times; j > p = 0 f 3 = min { m 1 , n 1 } 确定,当确定f3后,若f3=m1,则dis3=j,off3=i,否则,若f3=n1,则dis3=i,off3=j;其中,1≤m1≤p,1≤n1≤p;i=b-a,j=c-b,k=d-c,0≤u≤p-1。
(三)将所述第一节点的第p-1个条带单元数据代入所述第二方程组中包含所述第p-1个条带单元数据的方程式,并根据求解结果依次求解所述第二方程组的其它方程式,恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零。
本发明实施例中,将Dp-1,b=0代入上述第二方程组中包含Dp-1,b的方程式,即可得出的值;再将代入上述第二方程组中包含的另一个方程式,即可得到的值;按照同样的方式依次求解所述第二方程组的其它方程式,即可恢复所述第一节点的所有条带单元的数据。
步骤605、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
终端将已恢复的第一节点的数据当作好的数据,根据丢失两个数据存储节点的恢复方式恢复剩余两列丢失节点的数据,具体细节请参见本发明实施例七中所述,此处不再赘述。进一步地,按照丢失的校验节点数据的生成方式恢复所述丢失的校验节点数据。
实施例五
图8为本发明数据恢复方法实施例五的流程示意图,如图8所示,本实施例的方法可以包括:
步骤801、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤802、将所述未发生数据丢失的三个校验存储节点中对应直线的斜率不连续的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和。
本发明实施例中,丢失的四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化,记所述丢失的三个数据存储节点的盘号为a,b,c,丢失的校验存储节点的盘号为d,0≤a,b,c≤p-1;若未丢失的三个校验存储节点对应直线的斜率为x,y,w,且所述三个斜率对应直线的校验数据分别为P0,P1,P3,其中w=y+2,y=x+1。
可选地,采用生成P1和P3组合的调节因子异或和(即计算未丢失校验存储节点中对应直线的斜率不连续且间隔为一的两个校验的调节因子异或和),其中,Ps 1为P1的调节因子,Ps 3为P3的调节因子;Pu 1为存储P1的校验存储节点的第u个条带单元校验数据,Pu 3为存储P3的校验存储节点的第u个条带单元校验数据。
可选地,若未丢失的三个校验存储节点对应的斜率为x,z,w,且所述三个斜率对应直线的校验数据分别为P0,P2,P3,其中z=x+2,w=z+1时,对应地采用生成P0和P2组合的调节因子异或和(即计算未丢失校验存储节点中对应直线的斜率不连续且间隔为一的两个校验的调节因子异或和),其中,Ps 0为P0的调节因子,Ps 2为P2的调节因子;Pu 0为存储P0的校验存储节点的第u个条带单元校验数据,Pu 2为存储P2的校验存储节点的第u个条带单元校验数据。
步骤803、将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第三异或和,并将所述第三异或和与所述校验数据异或生成所述校验数据的第三校验因子。
本发明实施例中,将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的p-1条直线所经过的分别位于所述未发生数据丢失的数据存储节点的不同条带以及不同所述数据存储节点的数据块异或得到p-1个第三异或和,并将所述p-1个第三异或和与所述校验数据异或生成所述校验数据的第三校验因子,具体地,所述p-1个第三异或和分别与所述校验数据的p-1个条带数据异或生成所述校验数据的第三校验因子,其中,所述第三校验因子包含p-1个条带单元数据,也即计算出第三校验因子的每个条带单元数据也就是得到所述第三校验数据。
可选地,所述校验数据的第三校验因子的值等于通过如下步骤计算出来的值:
采用公式生成对应斜率x的直线的第三校验因子;
采用公式生成对应斜率为y的直线的第三校验因子;
采用公式生成对应斜率w的直线的第三校验因子;
其中,a,b,c为所述丢失的三个数据存储节点的盘号,d为所述丢失的一个校验数据存储节点的盘号,0≤a,b,c≤p-1;所述未丢失校验数据对应直线的斜率为x,y,w,-(p-1)≤x,y,w≤p-1;所述未丢失校验数据为P0,P1,P3为存储P0的校验存储节点的第u个条带单元的校验数据,为存储P1的校验存储节点的第u个条带单元的校验数据,为存储P3的校验存储节点的第u个条带单元的校验数据;(Pu 0)'为对应斜率x的直线的第三校验因子的第u个条带单元数据,(Pu 1)'为对应斜率y的直线的第三校验因子的第u个条带单元数据,(Pu 3)'为对应斜率w的直线的第三校验因子的第u个条带单元数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;0≤u≤p-1。
可选地,若未丢失的三个校验存储节点对应直线的斜率为x,z,w,且所述三个斜率对应直线的校验数据分别为P0,P2,P3,其中z=x+2,w=z+1时,对应地采用类似的公式计算(Pu 0)'、(Pu 2)'及(Pu 3)',本发明此处不再赘述。
步骤804、将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据,其中,所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点。
可选地,图9为本发明数据恢复方法的示意图三,结合图9所示,将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复的所述第一节点的数据的值等于通过如下三个步骤计算出来的值:
(一)建立包含所述第一节点数据的公式四,以将丢失的节点数据转化到丢失的中间列中一列数据的p-1个条带单元上,其中,公式四为:
D u , b &CirclePlus; D < u + i > p , b &CirclePlus; D < u + i + j > p , b &CirclePlus; D < u + 2 j > p , b &CirclePlus; D < u + 2 i + j > p , b &CirclePlus; D < u + 2 i + 2 j > p , b = ( P < u + i + xb > p 0 ) &prime; &CirclePlus; ( P < u + 2 i + j + xb > p 0 ) &prime; &CirclePlus; ( P < u + yb > p 0 ) &prime; &CirclePlus; ( P < u + yb + i + j > p 1 ) &prime; &CirclePlus; ( P < u + yb + 2 i + 2 j > p 1 ) &prime; &CirclePlus; ( P < u + 2 j + wb > p 3 ) &prime; &CirclePlus; P s q 2 ;
其中,将所述公式四中等号右边的表达式记为Eu为所述调节因子异或和;0≤u≤p-1;i=b-a,j=c-b。
可选地,上述公式中的斜率x,y,w可以是图9所示直线的斜率(-1、1及2),其中,图9所示的正方形格子的长度相同,空心小圆圈代表丢失的数据,图9中所示直线上两点的纵坐标差与所述两点的横坐标差的商即为所述直线的斜率。
其中,所述为步骤802中计算得到的调节因子异或和。
(二)对所述公式四进行消元处理后得到第三方程组,其中,所述第三方程组的每个方程中包含所述第一节点的两个条带单元数据。
可选地,对所述公式四进行消元处理后得到的第三方程组等于通过如下两个步骤计算出来的方程组:
(1)若所述丢失的三个数据存储节点的中间盘号减去小盘号的差等于大盘号减去中间盘号的差(即i=j),所述第一节点数据的公式四变形为公式五:
D u , b &CirclePlus; D < u + i > p , b &CirclePlus; D < u + 3 i > p , b &CirclePlus; D < u + 4 i > p , b = E u ;
对所述第一节点数据的公式五中等号左右两边的表达式同时采用步长off4进行f4次异或求和得到包含所述第一节点数据的第三方程组:
D u , b &CirclePlus; D < u + 2 dis 4 > P , b = &Sigma; v = 0 f 4 - 1 E < u + v &times; off 4 > ;
其中,f4根据公式 < i - m 2 &times; 3 i > p = 0 < 3 i - n 2 &times; i > p = 0 f 4 = min { m 2 , n 2 } 确定,当确定f4后,若f4=m2,则dis4=i,off4=3i,否则,若f4=n2,则dis4=3i,off4=i;其中,1≤m2≤p,1≤n2≤p;i=b-a,j=c-b;
(2)否则,根据所述第一节点数据的公式四建立所述第一节点数据的公式六:
D < u + 3 j > p , b &CirclePlus; D < u + 2 i + 3 j > p , b &CirclePlus; D < u + 2 i > p , b &CirclePlus; D u , b = E < u + j > p + E m - 1 < u + 2 i + 2 j > p ;
其中,将所述公式六中等号右边的表达式记为Fu
对所述第一节点数据的公式六中等号左右两边的表达式同时采用步长off5进行f5次异或求和得到包含所述第一节点数据的第三方程组:
D u , b &CirclePlus; D < u + 2 dis 5 > P , b = &Sigma; v = 0 f 5 - 1 F < u + v &times; off 5 > p ;
其中,f5根据公式 < 2 i - m 3 &times; 3 j > p = 0 < 3 j - n 3 &times; 2 i > p = 0 f 5 = min { m 3 , n 3 } 确定,当确定f5后,若f5=m3,则dis5=2i,off5=3j,否则,若f5=n3,则dis5=3j,off5=2i;其中,1≤m3≤p,1≤n3≤p;i=b-a,j=c-b。
可选地,所述根据所述第一节点数据的公式四建立所述第一节点数据的公式六,包括:
循环所述第一节点数据的公式四m-1次得如下公式:
E u m = E u m - 1 &CirclePlus; E < u + i > p m - 1 &CirclePlus; E < u + i + j > p m - 1 &CirclePlus; E < u + 2 j > p m - 1 &CirclePlus; E < u + 2 i + j > p m - 1 &CirclePlus; E < u + 2 i + 2 j > p m - 1 = D u , b &CirclePlus; D < u + 2 m i > p , b &CirclePlus; D < u + 2 m ( i + j ) > p , b &CirclePlus; D < u + 2 m * 2 j > p , b &CirclePlus; D < u + 2 m ( 2 i + j ) > p , b &CirclePlus; D < u + 2 m ( 2 i + 2 j ) > p , b ;
其中,根据公式2m=-1(modp)确定m,且0≤m≤p-1;
令u=u+2i+j,则上述公式变形为如下公式:
E u + E < u + 2 i + j > p m = D < u + 2 j > p , b &CirclePlus; D < u + 2 i + 2 j > p , b &CirclePlus; D < u + 2 i - j > p , b &CirclePlus; D < u - j > p , b ;
则得到所述第一节点数据的公式六为:
D < u + 3 j > p , b &CirclePlus; D < u + 2 i + 3 j > p , b &CirclePlus; D < u + 2 i > p , b &CirclePlus; D u , b = E < u + j > p + E m - 1 < u + 2 i + 2 j > p ;
(三)将所述第一节点的第p-1个条带单元数据代入所述第三方程组中包含所述第p-1个条带单元数据的方程式,并根据求解结果依次求解所述第三方程组的其它方程式,恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零。
其中,p为素数,若存在m(0≤m≤p-1),使2m=-1(modp)成立,则p≠7,23,31,47,73,89(2≤p<100),以下为证明过程:
p为素数,若2是p的原根,则必存在m,使得2m=-1(modp)成立,由原根定义易知当p≠7,17,23,31,41,43,47,73,89时,2为p的原根,又通过计算可知,24=-1(mod17),210=-1(mod41),27=-1(mod43)其余均不成立。
步骤805、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,终端将已恢复的第一节点的数据当作好的数据,根据丢失两个数据存储节点的恢复方式恢复剩余两列丢失节点的数据,具体细节请参见本发明实施例七中所述,此处不再赘述。进一步地,按照丢失的校验节点数据的生成方式恢复所述丢失的校验节点数据。
可选地,若所述未丢失校验数据对应直线的斜率为x,z,w,-(p-1)≤x,z,w≤p-1;所述未丢失校验数据为P0,P2,P3时,步骤804中将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据时,终端根据与图7相对称的图所示类似的方式建立包含所述第一节点数据的公式,以将丢失的节点数据转化到丢失的中间列中一列数据的p-1个条带单元上,具体实现方式与本实施例上述所述方式类似,此处不再赘述。
实施例六
图10为本发明数据恢复方法实施例六的流程示意图,如图10所示,本实施例的方法可以包括:
步骤1001、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤1002、将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第四异或和,并将所述第四异或和与所述校验数据异或生成所述校验数据的第四校验因子。
本发明实施例中,丢失的四个存储节点为三个数据存储节点和一个校验存储节点时,记所述丢失的三个数据存储节点的盘号为a,b,c,丢失的校验存储节点的盘号为d,0≤a,b,c≤p-1,。
本发明实施中,将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的p-1条直线所经过的分别位于所述未发生数据丢失的数据存储节点的不同条带以及不同所述数据存储节点的数据块异或得到p-1个第四异或和,并将所述p-1个第四异或和与所述校验数据异或生成所述校验数据的第四校验因子,具体地,所述p-1个第四异或和分别与所述校验数据的p-1个条带数据异或生成所述校验数据的第四校验因子,其中,所述第四校验因子包含p-1个条带单元数据,也即计算出第四校验因子的每个条带单元数据也就是得到所述第四校验数据。
可选地,所述校验数据的第四校验因子的值等于通过如下步骤计算出来的值:
采用公式生成对应斜率x的直线的第四校验因子;
采用公式生成对应斜率y的直线的第四校验因子;
采用公式生成对应斜率z的直线的第四校验因子;
采用公式生成对应斜率w的直线的第四校验因子;
其中,x,y,z,w为所述四个校验存储节点对应直线的四个斜率;(P0)'u为对应斜率x的直线的第四校验因子的第u个条带单元数据,(P1)'u为对应斜率y的直线的第四校验因子的第u个条带单元数据,(P2)'u为对应斜率z的直线的第四校验因子的第u个条带单元数据,(P3)'u为对应斜率w的直线的第四校验因子的第u个条带单元数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;a,b,c为所述丢失的三个数据存储节点的盘号,0≤a<b<c≤p-1;i=b-a,j=c-b;0≤u≤p-1。
步骤1003、将所述第四校验因子采用异或消元运算恢复所述第一节点的数据,其中,所述第一节点为所述丢失的校验数据存储节点。
可选地,若丢失的校验存储节点的校验数据为P0,所述将所述第四校验因子采用异或消元运算恢复的所述第一节点的数据的值等于通过如下步骤计算出来的值:
根据公式七恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零;公式七为:
( P 0 ) &prime; &prime; < u + xb + i > p = ( P 1 ) < u + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + k + yb > p &prime; &CirclePlus; ( P 2 ) < u + j + zb > p &prime; &CirclePlus; ( P 2 ) < u + j + k + zb > p &prime; &CirclePlus; ( P 2 ) < u + i + 2 j + k + zb > p &prime; &CirclePlus; ( P 3 ) < u + 2 j + k + wb > p &prime; &CirclePlus; P s 1 &CirclePlus; P s 2 &CirclePlus; P s 3 ;
其中,将所述公式七中等号右边的表达式记为x为所述丢失的校验存储节点对应直线的斜率;y,z,w为所述未丢失的三个校验存储节点对应直线的三个斜率;(P0)″u为生成(P0)u的所述丢失数据的异或和,且(P1)'u为对应斜率y的直线第四校验因子的第u个条带单元数据,(P2)'u为对应斜率z的直线第四校验因子的第u个条带单元数据,(P3)'u为对应斜率w的直线第四校验因子的第u个条带单元数据;<>p为对p进行取模运算;Ps 1为P1的调节因子,Ps 2为P2的调节因子,Ps 3为P3的调节因子;i=b-a,j=c-b,k=d-c;a,b,c为所述丢失的三个数据存储节点的盘号,d为所述丢失的一个校验数据存储节点的盘号,0≤a,b,c≤p-1;0≤u≤p-1。
可选地,结合图5(将图5中斜率为-1的一条直线去掉,且0、1或3号盘中任一盘号的数据未丢失时)建立所述公式七。
可选地,所述根据公式七恢复的所述第一节点的所有条带单元的数据的值等于通过如下步骤计算出来的值:
(1)根据所述公式七得到包含所述第一节点数据的如下公式:
( P 0 ) < u + xb + i > p = ( P 0 ) < u + xb + i > p &prime; &prime; ( P 0 ) < u + xb + i > p &CirclePlus; &CirclePlus; ( P 0 ) s &prime; &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u - xt > p &NotEqual; p - 1 p - 1 D < u - xt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < - 1 - xt > p &NotEqual; p - 1 p - 1 D < - 1 - xt > P , t ) = C u &CirclePlus; C f 6 &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u - xt > p &NotEqual; p - 1 p - 1 D < u - xt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < - 1 - xt > p &NotEqual; p - 1 p - 1 D < - 1 - xt > P , t ) ;
其中,根据<f6+xb+i>p=p-1确定f6
其中,x为所述丢失的一个校验存储节点对应直线的斜率,a,b,c为所述丢失的三个数据存储节点的盘号,0≤a<b<c≤p-1;(P0)u为所述丢失的校验存储节点的第u个条带单元的校验数据;(P0)"u为生成(P0)u的所述丢失数据的异或和,且(P0)"s为生成(P0)s的所述丢失数据的异或和,且(P0)"s=(P0)"p-1;Du,t为盘号为t的数据存储节点的第u个条带单元数据;0≤u≤p-1。
(2)根据所述公式恢复所述第一节点的所有条带单元的数据。
可选地,若丢失的校验存储节点的校验数据为P3,所述将所述第四校验因子采用异或消元运算恢复的所述第一节点的数据的值等于通过如下步骤计算出来的值:
根据公式十恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零;公式十为:
( P 3 ) < u + 2 j + k + wb ) > p &prime; &prime; = ( P 0 ) < u + xb + i > p &prime; &CirclePlus; ( P 1 ) < u + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + k + yb > p &prime; &CirclePlus; ( P 2 ) < u + j + zb > p &prime; &CirclePlus; ( P 2 ) < u + j + k + zb > p &prime; &CirclePlus; ( P 2 ) < u + i + 2 j + k + zb > p &prime; &CirclePlus; P s 0 &CirclePlus; P s 1 &CirclePlus; P s 2 ;
其中,将所述公式十中等号右边的表达式记为w为所述丢失的校验存储节点对应直线的斜率;x,y,z为所述未丢失的三个校验存储节点分别对应直线的三个斜率;(P3)″u为生成(P3)u的所述丢失数据的异或和,且(P0)'u为对应斜率x的直线的第四校验因子的第u个条带单元数据,(P1)'u为对应斜率y的直线的第四校验因子的第u个条带单元数据,(P2)'u为对应斜率z的直线的第四校验因子的第u个条带单元数据;<>p为对p进行取模运算;Ps 0为P0的调节因子,Ps 1为P1的调节因子,Ps 2为P2的调节因子;i=b-a,j=c-b,k=d-c;a,b,c为所述丢失的三个数据存储节点的盘号,d为所述丢失的一个校验数据存储节点的盘号,0≤a,b,c≤p-1;0≤u≤p-1。
可选地,结合图5(将图5中斜率为2的一条直线去掉,且0、1或3号盘中任一盘号的数据未丢失时)建立所述公式十。
可选地,所述根据公式十恢复的所述第一节点的所有条带单元的数据的值等于通过如下步骤计算出来的值:
(1)根据所述公式十得到包含所述第一节点数据的如下公式:
( P 3 ) < u + 2 j + k + wb ) > p = ( P 3 ) < u + 2 j + k + wb ) > p &prime; &prime; &CirclePlus; ( P 3 ) s &prime; &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u - wt > p &NotEqual; p - 1 p - 1 D < u - wt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < - 1 - wt > p &NotEqual; p - 1 p - 1 D < - 1 - wt > P , t ) = C u &prime; &CirclePlus; C f 7 &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u - wt > p &NotEqual; p - 1 p - 1 D < u - wt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < - 1 - wt > p &NotEqual; p - 1 p - 1 D < - 1 - wt > P , t ) ;
其中,由<f7+2j+k+wb>p=p-1确定f7
其中,w为所述丢失的一个校验存储节点对应直线的斜率,a,b,c为所述丢失的三个数据存储节点的盘号,0≤a<b<c≤p-1;(P3)u为所述丢失的校验存储节点的第u个条带单元的校验数据;(P3)"u为生成(P3)u的所述丢失数据的异或和,且(P3)"s为生成(P3)s的所述丢失数据的异或和,且(P3)"s=(P3)"p-1;Du,t为盘号为t的数据存储节点的第u个条带单元数据;0≤u≤p-1。
(2)根据所述公式恢复所述第一节点的所有条带单元的数据。
可选地,若丢失的校验存储节点的校验数据为P1,所述将所述第四校验因子采用异或消元运算恢复的所述第一节点的数据的值等于通过如下步骤计算出来的值:
根据公式八恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零;公式八为:
( P 1 ) < u + yb > p &prime;&prime; &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &prime; &CirclePlus; ( P 1 ) < u + i + j + k + yb > p &prime; &prime; = ( P 0 ) < u + xb + i > p &prime; &CirclePlus; ( P 2 ) < u + j + zb > p &prime; &CirclePlus; ( P 2 ) < u + j + k + zb > p &prime; &CirclePlus; ( P 2 ) < u + i + 2 j + k + zb > p &prime; &CirclePlus; ( P 3 ) < u + 2 j + k + wb ) > p &prime; &CirclePlus; P s 0 &CirclePlus; P s 2 &CirclePlus; P s 3 ;
其中,将所述公式八中等号右边的表达式记为y为所述丢失的校验存储节点对应直线的斜率;x,z,w为所述未丢失的三个校验存储节点分别对应直线的三个斜率;(P1)″u为生成(P1)u的所述丢失数据的异或和,且(P0)'u为对应斜率x的直线的第四校验因子的第u个条带单元数据,(P2)'u为对应斜率z的直线的第四校验因子的第u个条带单元数据,(P3)'u为对应斜率w的直线的第四校验因子的第u个条带单元数据;<>p为对p进行取模运算;Ps 0为P0的调节因子,Ps 2为P2的调节因子,Ps 3为P3的调节因子;i=b-a,j=c-b,k=d-c;a,b,c为所述丢失的三个数据存储节点的盘号,d为所述丢失的一个校验数据存储节点的盘号,0≤a,b,c≤p-1;0≤u≤p-1。
可选地,结合图5(将图5中斜率为0的三条直线去掉,且0、1或3号盘中任一盘号的数据未丢失时)建立所述公式八。
可选地,所述根据公式八恢复的所述第一节点的所有条带单元的数据的值等于通过如下步骤计算出来的值:
(1)根据所述公式八得到包含所述第一节点数据的公式十一:
( P 1 ) < u + k + yb > p &CirclePlus; ( P 1 ) < u + i + j + yb > p = G u 0 &CirclePlus; G < u + i + j + k > p - 1 m 4 - 1 &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + k + yb - yt > p &NotEqual; p - 1 p - 1 D < u + k + yb - yt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + i + j + yb - yt > p &NotEqual; p - 1 p - 1 D < u + i + j + yb - yt > P , t ) ;
由于(P1)p-1=0,得公式十二: ( P 1 ) < f 8 + k + yb > p &CirclePlus; ( P 1 ) p - 1 = ( P 1 ) < f 8 + k + yb > p ; 其中,根据<f8+i+j+yb>p=p-1确定f8
根据所述公式十一及公式十二得到公式十三:
( P 1 ) < f 8 + 2 k - i - j + yb > p = ( P 1 ) < f 8 + 2 k - i - j + yb > p &CirclePlus; ( P 1 ) < f 8 + k + yb > p &CirclePlus; ( P 1 ) < f 8 + k + yb > p ;
(2)根据所述公式十一、公式十二及公式十三依次恢复所述第一节点的第<f8+k+yb>p个条带单元数据及第<f8+2k-i-j+yb>p个条带单元数据;
根据所述恢复的第一节点的条带单元数据对所述第一节点数据的公式十一采用步长为k-i-j循环运算,直至恢复所述第一节点的所有条带单元数据;
其中,y为所述丢失的一个校验存储节点对应直线的斜率,a,b,c为所述丢失的三个数据存储节点的盘号,0≤a<b<c≤p-1;(P1)u为所述丢失的校验存储节点的第u个条带单元的校验数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;0≤u≤p-1。
本发明实施例中,根据所述公式十一、公式十二及公式十三依次恢复的所述第一节点的第<f8+k+yb>p个条带单元数据及第<f8+2k-i-j+yb>p个条带单元数据的值等于通过如下步骤计算出来的值:
a)结合公式十一以及公式十二,令公式十一中<u+i+j+yb>p=p-1,则<u+k+yb>p=<f8+k+yb>p,通过公式十一即可得到的值;b)令公式十一中<u+i+j+yb>p=<f8+k+yb>p,此时u=f8+k-i-j,则<u+k+yb>p=<f8+2k-i-j+yb>p,通过公式十一即可得到公式十三中的值;c)结合公式十三,根据步骤a)得到的以及步骤b)得到的即可得到的值。
可选地,所述根据所述公式八得到包含所述第一节点数据的公式十一,包括:
循环所述公式八l-1次得到如下公式:
G u l = G u l - 1 &CirclePlus; G < u + i + j > p l - 1 &CirclePlus; G < u + i + j + k > p l - 1 ;
根据所述公式及所述公式八得到如下公式:
( P 1 ) < u + k + yb > p &prime; &prime; &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &prime; = G u 0 &CirclePlus; G < u + i + j + k > p - 1 m 4 , 其中,根据 2 m 4 = - 1 mod p 确定m4
则所述第一节点数据的公式十一为:
( P 1 ) < u + k + yb > p &CirclePlus; ( P 1 ) < u + i + j + yb > p = ( P 1 ) < u + k + yb > p &prime; &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + k + yb - yt > p &NotEqual; p - 1 p - 1 D < u + k + yb - yt > P , t ) &CirclePlus; ( P 1 ) s &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + i + j + yb - yt > p &NotEqual; p - 1 p - 1 D < u + i + j + yb - yt > P , t ) &CirclePlus; ( P 1 ) s = G u 0 &CirclePlus; G < u + i + j + k > p - 1 m 4 &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + k + yb - yt > p &NotEqual; p - 1 p - 1 D < u + k + yb - yt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + i + j + yb - yt > p &NotEqual; p - 1 p - 1 D < u + i + j + yb - yt > P , t ) .
可选地,若丢失的校验存储节点的校验数据为P2,所述将所述第四校验因子采用异或消元运算恢复的所述第一节点的数据的值等于通过如下步骤计算出来的值:
根据公式九恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零;公式九为:
( P 2 ) < u + j + zb > p &prime; &prime; &CirclePlus; ( P 2 ) < u + j + k + zb > p &prime; &prime; &CirclePlus; ( P 2 ) < u + i + 2 j + k + zb > p &prime; &prime; = ( P 0 ) < u + xb + i > p &prime; &CirclePlus; ( P 1 ) < u + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + yb > p &prime; &CirclePlus; ( P 1 ) < u + i + j + k + yb > p &prime; &CirclePlus; ( P 3 ) < u + 2 j + k + wb > p &prime; &CirclePlus; P s 0 &CirclePlus; P s 1 &CirclePlus; P s 3 ;
其中,将所述公式九中等号右边的表达式记为z为所述丢失的校验存储节点对应直线的斜率;x,y,w为所述未丢失的三个校验存储节点分别对应直线的三个斜率;(P2)″u为生成(P2)u的所述丢失数据的异或和,且(P0)'u为对应斜率x的直线的第四校验因子的第u个条带单元数据,(P1)'u为对应斜率y的直线的第四校验因子的第u个条带单元数据,(P3)'u为对应斜率w的直线的第四校验因子的第u个条带单元数据;<>p为对p进行取模运算;Ps 0为P0的调节因子,Ps 1为P1的调节因子,Ps 3为P3的调节因子;i=b-a,j=c-b,k=d-c;a,b,c为所述丢失的三个数据存储节点的盘号,d为所述丢失的一个校验数据存储节点的盘号,0≤a,b,c≤p-1;0≤u≤p-1。
可选地,结合图5(将图5中斜率为1的三条直线去掉,且0、1或3号盘中任一盘号的数据未丢失时)建立所述公式九。
可选地,所述根据公式九恢复的所述第一节点的所有条带单元的数据的值等于通过如下步骤计算出来的值:
(1)根据所述公式九得到包含所述第一节点数据的公式十四:
( P 2 ) < u + k + j + zb > p &CirclePlus; ( P 2 ) < u + i + 2 j + zb > p = L u 0 &CirclePlus; L < u + i + j + k > p - 1 m 5 &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + k + j + zb - zt > p &NotEqual; p - 1 p - 1 D < u + k + j + zb - zt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + i + 2 j + zb - zt > p &NotEqual; p - 1 p - 1 D < u + i + 2 j + zb - zt > P , t ) ;
由于(P2)p-1=0,得公式十五: ( P 2 ) < f 9 + k + j + zb > p &CirclePlus; ( P 2 ) p - 1 = ( P 2 ) < f 9 + k + j + zb > p ; 其中,根据<f9+i+2j+zb>p=p-1确定f9
根据所述公式十四及公式十五得到公式十六:
( P 2 ) < f 9 + 2 k - i + zb > p = ( P 2 ) < f 9 + 2 k - i + zb > p &CirclePlus; ( P 2 ) < f 9 + k + j + zb > p &CirclePlus; ( P 2 ) < f 9 + k + j + zb > p ;
(2)根据所述公式十四、公式十五及公式十六依次恢复所述第一节点的第<f9+k+j+zb>p个条带单元数据及第<f9+2k-i+zb>p个条带单元数据;
根据所述恢复的第一节点的条带单元数据对所述第一节点数据的公式十四采用步长为k-i-j循环运算,直至恢复所述第一节点的所有条带单元数据
其中,z为所述丢失的一个校验存储节点对应直线的斜率;(P2)u为所述丢失的校验存储节点的第u个条带单元的校验数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;a,b,c为所述丢失的三个数据存储节点的盘号,0≤a<b<c≤p-1;i=b-a,j=c-b,k=d-c;d为所述丢失的一个校验数据存储节点的盘号;0≤u≤p-1。
本发明实施例中,根据所述公式十四、公式十五及公式十六依次恢复所述第一节点的第<f9+k+j+zb>p个条带单元数据及第<f9+2k-i+zb>p个条带单元数据的值等于通过如下步骤计算出来的值:
a)结合公式十四以及公式十五,令公式十四中<u+i+2j+zb>p=p-1,则<u+k+j+zb>p=<f9+k+j+zb>p,通过公式十四即可得到的值;b)令公式十四中<u+i+2j+zb>p=<f9+k+j+zb>p,此时u=f9+k-i-j,则<u+k+j+zb>p=<f9+2k-i+zb>p,通过公式十四即可得到公式十六中的值;c)结合公式十六,根据步骤a)得到的以及步骤b)得到的即可得到的值。
可选地,所述根据所述公式九得到包含所述第一节点数据的公式十四,包括:
循环所述公式九l-1次得到如下公式:
L u l = L u l - 1 &CirclePlus; L < u + k > p l - 1 &CirclePlus; L < u + i + j + k > p l - 1 ;
根据所述公式及所述公式九得到如下公式:
( P 2 ) < u + k + j + yb > p &prime; &prime; &CirclePlus; ( P 2 ) < u + i + 2 j + yb > p &prime; &prime; = L u 0 &CirclePlus; L < u + i + j + k > p m 5 ; 其中,根据 2 m 5 = - 1 mod p 确定m5
则所述第一节点数据的公式十四为:
( P 2 ) < u + k + j + zb > p &CirclePlus; ( P 2 ) < u + i + 2 j + zb > p = ( P 2 ) < u + k + j + yb > p &prime; &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + k + j + zb - zt > p &NotEqual; p - 1 p - 1 D < u + k + j + zb - zt > P , t ) &CirclePlus; ( P 2 ) s &CirclePlus; ( P 2 ) < u + i + 2 j + yb > p &prime; &prime; &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + i + 2 j + zb - zt > p &NotEqual; p - 1 p - 1 D < u + i + 2 j + zb - zt > P , t ) &CirclePlus; ( P 2 ) s = L u 0 &CirclePlus; L < u + i + j + k > p - 1 m 5 &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + k + j + zb - zt > p &NotEqual; p - 1 p - 1 D < u + k + j + zb - zt > P , t ) &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a , b , c < u + i + 2 j + zb - zt > p &NotEqual; p - 1 p - 1 D < u + i + 2 j + zb - zt > P , t ) .
步骤1004、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,将已恢复的第一节点的数据当作好的数据,根据丢失三个数据存储节点的恢复方式恢复丢失的数据存储节点的数据,具体细节请参见本发明实施例七中所述,此处不再赘述。
实施例七
图11为本发明数据恢复方法实施例七的流程示意图,如图11所示,本实施例的方法可以包括:
步骤1101、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤1102、将所述未未发生数据丢失的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和。
本发明实施例中,丢失的四个节点为两个数据存储节点和两个校验存储节点,记所述丢失的两个数据存储节点的盘号为a,b,丢失的校验存储节点的盘号为c,d,0≤a,b≤p-1;可选地,若未丢失的两个校验存储节点对应直线的斜率为x,y,且所述两个斜率对应直线的校验数据分别为P0,P1,其中y=x+1。
可选地,采用生成P0和P1组合的调节因子异或和;
其中,Pu 0为所述未丢失的一个校验存储节点中第u个条带单元的校验数据,和Pu 1为所述未丢失的另一个校验存储节点中第u个条带单元的校验数据,Ps 1为P1的调节因子,Ps 0为P0的调节因子。
可选地,若未丢失的两个校验存储节点对应直线的斜率为y,z,且所述两个斜率对应直线的校验数据分别为P1,P2时,采用类似的公式公式计算P1和P2组合的调节因子异或和,本实施例此处不再赘述。
步骤1103、将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第五异或和,并将所述第五异或和与所述校验数据异或生成所述校验数据的第五校验因子。
本发明实施例中,将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的p-1条直线所经过的分别位于所述未发生数据丢失的数据存储节点的不同条带以及不同所述数据存储节点的数据块异或得到p-1个第五异或和,并将所述p-1个第五异或和与所述校验数据异或生成所述校验数据的第五校验因子,具体地,所述p-1个第五异或和分别与所述校验数据的p-1个条带数据异或生成所述校验数据的第五校验因子,其中,所述第五校验因子包含p-1个条带单元数据,也即计算出第五校验因子的每个条带单元数据也就是得到所述第五校验数据。可选地,(P0)'的生成方法:P0异或沿斜率为x的直线所经过的未丢失的数据存储节点中条带单元数据的异或值,(P1)'的生成方法:P1异或沿斜率为y的直线所经过的未丢失的数据存储节点中条带单元数据的异或值。
可选地,所述校验数据的第五校验因子的值等于通过如下步骤计算出来的值:
采用公式生成对应斜率为x的直线的第五校验因子;
采用公式生成对应斜率为y的直线的第五校验因子;
其中,a,b为所述丢失的两个数据存储节点的盘号,c,d为所述丢失的两个校验数据存储节点的盘号,0≤a,b≤p-1;所述未丢失校验数据对应直线的斜率为x,y,x<y;所述未丢失校验数据为P0,P1;P0为所述斜率x的直线对应的校验数据,P1为所述斜率y的直线对应的校验数据;为存储P0的校验存储节点的第u个条带单元数据,为存储P1的校验存储节点的第u个条带单元数据;为对应斜率x的直线的第五校验因子的第u个条带单元数据,为对应斜率y的直线的第五校验因子的第u个条带单元数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;0≤u≤p-1。
可选地,若未丢失的两个校验存储节点对应直线的斜率为y,z,且所述两个斜率对应直线的校验数据分别为P1,P2时,采用类似的公式公式计算
步骤1104、将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据,其中,所述第一节点为所述丢失的两个数据存储节点中的一个节点。
可选地,图12为本发明数据恢复方法的示意图四,结合图12所示,所述将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复的所述第一节点的数据的值等于通过如下两个步骤计算出来的值:
(1)建立包含所述第一节点数据的第四方程组,以将丢失的节点数据转化到丢失的中间列中一列数据的p-1个条带单元上,其中,第四方程组为:
D u , a &CirclePlus; D < u + ( y - x ) &times; i > p , a = ( P < u + x &times; a > p 0 ) &prime; &CirclePlus; ( P < u + ( y - x ) &times; i + y &times; a > p 1 ) &prime; &CirclePlus; P s q 3 ;
其中,为步骤1102中计算得到的所述调节因子异或和;Du,a为盘号为a的数据存储节点的第u个条带单元数据;0≤u≤p-1,i=b-a。
可选地,上述公式中的斜率x,y可以如图12所示直线的斜率(-1及2),其中,图12所示的正方形格子的长度相同,空心小圆圈代表丢失的数据,图12中所示直线上两点的纵坐标差与所述两点的横坐标差的商即为所述直线的斜率。
(2)将所述第一节点的第p-1个条带单元数据代入所述第四方程组中包含所述第p-1个条带单元数据的方程式,并根据求解结果依次求解所述第四方程组的其它方程式,恢复所述第一节点的所有条带单元的数据,其中,所述第一节点的第p-1个条带单元数据为零。
可选地,也可通过如下公式先恢复盘号为b的数据存储节点的数据:
D u , b &CirclePlus; D < u + ( y - x ) &times; i > p , b = ( P < u + x &times; a > p 0 ) &prime; &CirclePlus; ( P < u + ( y - x ) &times; i + y &times; a > p 1 ) &prime; &CirclePlus; P s q 3 ;
步骤1105、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,终端将已恢复的第一节点的数据当作好的数据,根据丢失一个数据存储节点的恢复方式恢复剩余丢失节点的数据,具体细节请参见本发明实施例八或九中所述,此处不再赘述。进一步地,按照丢失的校验节点数据的生成方式恢复所述丢失的校验节点数据。
实施例八
图13为本发明数据恢复方法实施例八的流程示意图,如图13所示,本实施例的方法可以包括:
步骤1301、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤1302、将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第六异或和,并将所述第六异或和与所述校验数据异或生成所述校验数据的第六校验因子。
本发明实施例中,丢失的四个节点为一个数据存储节点和三个校验存储节点,记所述丢失的数据存储节点的盘号为a,丢失的校验存储节点的盘号为b,c,d,0≤a≤p-1;未丢失的校验存储节点对应直线的斜率为x,且所述斜率对应直线的校验数据分别为P0
本发明实施例中,将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的p-1条直线所经过的分别位于所述未发生数据丢失的数据存储节点的不同条带以及不同所述数据存储节点的数据块异或得到p-1个第六异或和,并将所述p-1个第六异或和与所述校验数据异或生成所述校验数据的第六校验因子,具体地,所述p-1个第六异或和分别与所述校验数据的p-1个条带数据异或生成所述校验数据的第六校验因子,其中,所述第六校验因子包含p-1个条带单元数据,也即计算出第六校验因子的每个条带单元数据也就是得到所述第六校验数据。
可选地,所述校验数据的第六校验因子的值等于通过如下步骤计算出来的值:
采用公式生成对应斜率为x的直线的第六校验因子;
其中,a为所述丢失的数据存储节点的盘号,0≤a≤p-1;x为所述未丢失的校验存储节点对应直线的斜率;P0为所述斜率x的直线所对应的校验数据;为存储P0的校验存储节点的第u个条带单元数据;为对应斜率x的直线的第六校验因子的第u个条带单元数据。
可选地,若未丢失的校验存储节点对应直线的斜率为y或z时,采用类似的公式计算y或z的校验因子,本发明实施例对此并不作限制。
步骤1303、根据所述第六校验因子以及所述数据存储节点的数据生成所述校验数据的第三调节因子。
可选地,根据所述第六校验因子以及所述数据存储节点的数据生成的所述校验数据的第三调节因子的值等于通过如下步骤计算出来的值:
采用公式生成P0的第三调节因子;
其中,由公式<g-x·a>p=p-1确定g的值;x为所述未丢失的校验存储节点对应直线的斜率;为所述未丢失校验存储节点的第g个条带单元数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算。
可选地,若未丢失的校验存储节点对应直线的斜率为y或z时,采用类似的公式生成所述未丢失的校验数据的调节因子,本发明实施例对此并不作限制。
步骤1304、根据所述第六校验因子及所述第三调节因子采用异或消元恢复所述第一节点的数据,其中,所述第一节点为所述丢失的数据存储节点。
可选地,根据所述第六校验因子及所述第三调节因子采用异或消元运算恢复的所述第一节点的数据的值等于通过如下步骤计算出来的值:
建立包含所述第一节点数据的公式十七:
Du,a=(P0)s⊕(Pu 0)';
其中,(P0)s为P0的调节因子;为斜率为x的直线的第六校验因子;x为所述未丢失的校验存储节点对应直线的斜率。
步骤1305、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,终端将已恢复的第一节点的数据当作好的数据,按照丢失的校验节点数据的生成方式恢复所述丢失的校验节点数据。
实施例九
图14为本发明数据恢复方法实施例九的流程示意图,如图14所示,本实施例的方法可以包括:
步骤1401、计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据。
步骤1402、将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复所述第一节点的数据,其中,所述第一节点为所述丢失的数据存储节点。
当丢失的四个节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零时。
可选地,将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复的所述第一节点的数据的值等于通过如下步骤计算出来的值:
建立包含所述第一节点数据的公式十八:
D u , a = P u 0 &CirclePlus; ( &CirclePlus; t = 0 t &NotEqual; a p - 1 D < u - x &CenterDot; t > P , t ) ;
其中,a为所述丢失的数据存储节点的盘号,0≤a≤p-1;所述未丢失校验数据对应直线的斜率为x,-(p-1)≤x≤p-1;所述未丢失校验数据为P0为存储P0的校验存储节点的第u个条带单元数据;0≤u≤p-1。
步骤1403、根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
本发明实施例中,终端将已恢复的第一节点的数据当作好的数据,按照丢失的校验节点数据的生成方式恢复所述丢失的校验节点数据。
实施例十
可选地,当丢失的四个存储节点为四个校验存储节点时,本发明数据恢复方法实施例十的方法可以包括:
根据校验节点数据的生成方式恢复所述丢失的校验数据,具体公式如下:
R s = &CirclePlus; t = 1 p - 1 D < - 1 - xt > P , t ; P u 0 = R s &CirclePlus; ( &CirclePlus; t = 0 < u - xt > p &NotEqual; p - 1 p - 1 D < u - xt > P , t ) , P s = &CirclePlus; t = 1 p - 1 D < - 1 - yt > P , t ; P u 1 = P s &CirclePlus; ( &CirclePlus; t = 0 < u - yt > p &NotEqual; p - 1 p - 1 D < u - yt > P , t ) , Q s = &CirclePlus; t = 1 p - 1 D < - 1 - zt > P , t ; P u 2 = Q s &CirclePlus; ( &CirclePlus; t = 0 < u - zt > p &NotEqual; p - 1 p - 1 D < u - zt > P , t ) , S s = &CirclePlus; t = 1 p - 1 D < - 1 - wt > P , t ; P u 3 = S s &CirclePlus; ( &CirclePlus; t = 0 < u - wt > p &NotEqual; p - 1 p - 1 D < u - wt > P , t ) ,
其中,Rs为斜率x的直线所对应的校验数据的调节因子,Ps为斜率y的直线所对应的校验数据的调节因子,Qs为斜率z的直线所对应的校验数据的调节因子,Ss为为斜率w的直线所对应的校验数据的调节因子;为存储P0的校验存储节点的第u个条带单元的校验数据,为存储P1的校验存储节点的第u个条带单元的校验数据,为存储P2的校验存储节点的第u个条带单元的校验数据,为存储P3的校验存储节点的第u个条带单元的校验数据;Du,t为盘号为t的数据存储节点的第u个条带单元数据;<>p为对p进行取模运算;0≤u≤p-2。
综上所述,本发明实施例中,通过计算并存储四组校验数据,当N+4个存储节点中的任意四个存储节点的数据丢失时,可以根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据先恢复所述丢失的四个存储节点中的一个节点的数据,并根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和已恢复节点的数据,降级依次恢复丢失的剩余节点的数据,不需要存储三份副本,从而节省了存储空间;进一步地,由于恢复丢失存储节点的过程是基于异或运算的,在利用计算机实现时,可以通过一些专用指令提速,如SSE指令或AVX指令,从而提升了恢复数据的速率。
可选地,丢失一个存储节点的情况包括:1)若丢失一个数据存储节点时,可以采用本发明上述数据恢复方法实施例八或实施例九中恢复数据存储节点的方式恢复所述丢失的数据存储节点;2)若丢失一个校验存储节点时,可以采用本发明上述数据恢复方法实施例十中恢复校验存储节点的方式恢复所述丢失的校验存储节点(也即按照校验数据的生成方式恢复该丢失的校验存储节点)。
可选地,丢失两个存储节点的情况包括:1)若丢失一个数据存储节点与一个校验存储节点时,可以先采用本发明上述数据恢复方法实施例八或实施例九中恢复数据存储节点的方式恢复所述丢失的数据存储节点,然后再按照校验数据的生成方式恢复该丢失的校验存储节点;2)若丢失两个数据存储节点时,可以采用本发明上述数据恢复方法实施例七中恢复数据存储节点的方式恢复所述丢失的数据存储节点;3)若丢失两个校验存储节点时,可以采用本发明上述数据恢复方法实施例十中恢复校验存储节点的方式恢复所述丢失的校验存储节点(也即按照校验数据的生成方式恢复该丢失的校验存储节点)。
可选地,丢失三个存储节点的情况包括:1)若丢失一个数据存储节点与两个校验存储节点时,可以先采用本发明上述数据恢复方法实施例八或实施例九中恢复数据存储节点的方式恢复所述丢失的数据存储节点,然后再按照校验数据的生成方式恢复该丢失的校验存储节点;2)若丢失两个数据存储节点与一个校验存储节点时,可以先采用本发明上述数据恢复方法实施例七中恢复数据存储节点的方式恢复所述丢失的数据存储节点,然后再按照校验数据的生成方式恢复该丢失的校验存储节点;3)若丢失三个数据存储节点时,可以采用本发明上述数据恢复方法实施例四或实施例五中恢复数据存储节点的方式恢复所述丢失的数据存储节点;4)若丢失三个校验存储节点时,可以采用本发明上述数据恢复方法实施例十中恢复校验存储节点的方式恢复所述丢失的校验存储节点(也即按照校验数据的生成方式恢复该丢失的校验存储节点)。
综上所述,本发明实施例中,当N+4个存储节点中的任意小于等于四个存储节点的数据丢失时,可以根据剩下的所有存储节点恢复发生数据丢失的存储节点的数据,不需要存储三份副本,从而节省了存储空间;进一步地,由于恢复丢失存储节点的过程是基于异或运算的,从而提升了恢复数据的速率。
实施例十一
本发明数据恢复方法实施例十一中以斜率为-1、0、1、2的直线分别对5个数据存储节点的数据异或操作生成对应于所述四个斜率的四个校验存储节点数据为例。图15A-15D为本发明数据恢复方法实施例十一中存储节点的示意图,如图15A-15D所示,D0、D1、D2、D3及D4分别为所述5个原始数据存储节点的数据;P1为对应于斜率为-1的直线的校验存储节点数据;P2为对应于斜率为0的直线的校验存储节点数据、P3为对应于斜率为1的直线的校验存储节点数据、P4为对应于斜率为2的直线的校验存储节点数据;其中,D0包括Du,0,0≤u≤4;D1包括Du,1,0≤u≤4;D2包括Du,2,0≤u≤4;D3包括Du,3,0≤u≤4;D4包括Du,4,0≤u≤4;P1包括Pu,1,0≤u≤4;P2包括Pu,2,0≤u≤4;P3包括Pu,3,0≤u≤4;P4包括Pu,4,0≤u≤4。其中,D4,0、D4,1、D4,2、D4,3、D4,4为零。
如图15A所示,P1数据的第u个条带的校验数据(u不等于4)的生成方式为:1)以第u行第1列为起点沿着斜率为-1的直线所经过的不同数据存储节点的不同条带的5个数据块异或操作得到所述P1的第u个中间校验因子;2)以第4行第1列为起点沿着斜率为-1的直线所经过的不同数据存储节点的不同条带的p个数据块作异或和得到所述P1的调节因子;3)讲所述P1的第u个中间校验因子与所述P1的调节因子进行异或和,形成所述P1数据的第u个条带的校验数据(对应于图15A中所示图形形状相同的数据存储节点的数据异或操作形成所述P1中对应条带单元的校验数据)。如图15B~图15D所示,P2数据、P3数据以及P4数据的第u个条带的校验数据的生成方式与上述P1的第u个条带的校验数据的生成方式类似,本发明实施例此处不再赘述。具体可以采用如下公式计算得到:
(P1)s=D0,1⊕D1,2⊕D2,3⊕D3,4,
P0,1=D0,0⊕D1,1⊕D2,2⊕D3,3⊕(P1)s,P1,1=D1,0⊕D2,1⊕D3,2⊕D0,4⊕(P1)s,
P2,1=D2,0⊕D3,1⊕D0,3⊕D1,4⊕(P1)s,P3,1=D3,0⊕D0,2⊕D1,3⊕D2,4⊕(P1)s,
P0,2=D0,0⊕D0,1⊕D0,2⊕D0,3⊕D0,4,P1,2=D1,0⊕D1,1⊕D1,2⊕D1,3⊕D1,4,
P2,2=D2,0⊕D2,1⊕D2,2⊕D2,3⊕D0,4,P3,2=D3,0⊕D3,1⊕D3,2⊕D3,3⊕D3,4,
(P3)s=D3,1⊕D2,2⊕D1,3⊕D0,4,
P0,3=D0,0⊕D3,2⊕D2,3⊕D1,4⊕(P3)s,P1,3=D1,0⊕D0,1⊕D3,3⊕D2,4⊕(P3)s,
P2,3=D2,0⊕D1,1⊕D0,2⊕D3,4⊕(P3)s,P3,3=D3,0⊕D2,1⊕D1,2⊕D0,3⊕(P3)s,
(P4)s=D2,1⊕D0,2⊕D3,3⊕D1,4,
P0,4=D0,0⊕D3,1⊕D1,2⊕D2,4⊕(P4)s,P1,4=D1,0⊕D2,2⊕D0,3⊕D3,4⊕(P4)s,
P2,4=D2,0⊕D0,1⊕D3,2⊕D1,3⊕(P4)s,P3,4=D3,0⊕D1,1⊕D2,3⊕D0,4⊕(P4)s,
其中,(P1)s为斜率-1的直线所对应的校验数据的调节因子,(P3)s为斜率1的直线所对应的校验数据的调节因子,(P4)s为斜率2的直线所对应的校验数据的调节因子,可选地,(P2)s为斜率0的直线所对应的校验数据的调节因子,且(P2)s=0。
可选地,若丢失四个数据存储节点的数据(D0、D1、D3、D4),则恢复所述丢失数据的步骤如下:
1、生成调节因子异或和
由于(P2)s=0,因此,(P2)s与其它调节因子的异或和即为所述其它调节因子本身,如 ( P 1 ) s &CirclePlus; ( P 2 ) s = ( P 1 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 1 ) .
( P 1 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 1 ) , ( P 3 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 3 ) , ( P 4 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 4 ) .
2、生成第一校验因子
具体可以采用如下公式生成第一校验因子的各条带单元P′u,1,P′u,2,P′u,3,P′u,4,其中,0≤u≤4:
P′0,2=D0,2⊕P0,2,P′1,2=D1,2⊕P1,2,P′2,2=D2,2⊕P2,2,P′3,2=D3,2⊕P3,2,
P′0,1=(P1)s⊕P0,1⊕D2,2,P′1,1=(P1)s⊕P1,1⊕D3,2,
P′2,1=(P1)s⊕P2,1,P′3,1=(P1)s⊕P3,1⊕D0,2,P′4,1=(P1)s⊕D1,2,
P′0,3=(P3)s⊕P0,3⊕D3,2,P′1,3=(P3)s⊕P1,3,
P′2,3=(P3)s⊕P2,3⊕D0,2,P′3,3=(P3)s⊕P3,3⊕D1,2,P′4,3=(P3)s⊕D2,2,
P′0,4=(P4)s⊕P0,4⊕D1,2,P′1,4=(P4)s⊕P1,4⊕D2,2,
P′2,4=(P4)s⊕P2,4⊕D3,2,P′3,4=(P4)s⊕P3,4,P′4,4=(P4)s⊕D0,2,
3、恢复中间某列数据
根据图5所示方式建立包含D1的如下公式:
D3,1⊕D0,1=P′1,1⊕P′0,2⊕P′1,2⊕P′4,2⊕P′3,3⊕P′4,3⊕P′0,3⊕P′3,4
D4,1⊕D1,1=P′2,1⊕P′1,2⊕P′2,2⊕P′0,2⊕P′4,3⊕P′0,3⊕P′1,3⊕P′4,4
D0,1⊕D2,1=P′3,1⊕P′2,2⊕P′3,2⊕P′1,2⊕P′0,3⊕P′1,3⊕P′2,3⊕P′0,4
D1,1⊕D3,1=P′4,1⊕P′3,2⊕P′4,2⊕P′2,2⊕P′1,3⊕P′2,3⊕P′3,3⊕P′1,4
首先将D4,1的值代入上述第二个式子即可求出D1,1的值,其次将D1,1的值代入上述第四个式子即可求出D3,1的值,依次类推分别求解出D0,1的值及D2,1的值。
4、降级恢复丢失的剩余节点的数据
将已恢复的D1数据当做好的数据,按照第2步方式生成新的第一校验因子,进一步地根据丢失三个数据存储节点的恢复方式先恢复中间列数据,然后恢复后两列丢失节点的数据,具体细节请参见本发明实施例十二或十三中所述,此处不再赘述。
实施例十二
本发明数据恢复方法实施例十二中以斜率为-1、0、1、2的直线分别对5个数据存储节点的数据异或操作生成对应于所述四个斜率的四个校验存储节点数据为例。
可选地,若丢失三个数据存储节点的数据(D0、D3、D4)和一个校验存储节点数据(P4),其中,未丢失的三个校验存储节点的斜率为连续的,则恢复所述丢失数据的步骤如下:
1、生成第二调节因子
由于(P2)s=0,因此,(P2)s与其它调节因子的异或和即为所述其它调节因子本身,如 ( P 1 ) s &CirclePlus; ( P 2 ) s = ( P 1 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 1 ) .
( P 1 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 1 ) , ( P 3 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 3 ) ;
2、生成第二校验因子
具体可以采用如下公式生成第二校验因子:
P′0,2=D0,1⊕D0,2⊕P0,2,P′1,2=D1,1⊕D1,2⊕P1,2,
P′2,2=D2,1⊕D2,2⊕P2,2,P′3,2=D3,1⊕D3,2⊕P3,2,
P′0,1=P0,1⊕D1,1⊕D2,2,P′1,1=P1,1⊕D2,1⊕D3,2,
P′2,1=P2,1⊕D3,1,P′3,1=P3,1⊕D0,2,P′4,1=D0,1⊕D1,2,
P′0,3=P0,3⊕D3,2,P′1,3=P1,3⊕D0,1,
P′2,3=P2,3⊕D1,1⊕D0,2,P′3,3=P3,3⊕D2,1⊕D1,2,P′4,3=(P3)s⊕D3,1⊕D2,2,
3、恢复中间某列数据
根据图7所示方式建立包含D3的如下公式:
D3.3⊕D4,3=P′1,1⊕P′2,1⊕P′1,2⊕P′2,2⊕P′0,2⊕P′1,2⊕P′0,3⊕P′1,3⊕(P3)s⊕(P1)s
D4.3⊕D0,3=P′2,1⊕P′3,1⊕P′2,2⊕P′3,2⊕P′1,2⊕P′2,2⊕P′1,3⊕P′2,3⊕(P3)s⊕(P1)s
D0.3⊕D1,3=P′3,1⊕P′4,1⊕P′3,2⊕P′4,2⊕P′2,2⊕P′3,2⊕P′2,3⊕P′3,3⊕(P3)s⊕(P1)s
D1.3⊕D2,3=P′4,1⊕P′0,1⊕P′4,2⊕P′0,2⊕P′3,2⊕P′4,2⊕P′3,3⊕P′4,3⊕(P3)s⊕(P1)s
首先将D4,3的值代入上述第一个式子即可求出D3,3的值,将D4,3的值代入上述第二个式子即可求出D0,3的值,其次将D0,3的值代入上述第三个式子即可求出D1,3的值,然后将D1,3的值代入上述第四个式子即可求出D2,3的值。
4、降级恢复丢失的剩余节点的数据
将已恢复的D3数据当做好的数据,按照第2步方式生成新的第二校验因子,进一步地根据丢失两个数据存储节点的恢复方式恢复剩余节点的数据,具体细节请参见本发明实施例十四中所述,此处不再赘述。
实施例十三
本发明数据恢复方法实施例十三中以斜率为-1、0、1、2的直线分别对5个数据存储节点的数据异或操作生成对应于所述四个斜率的四个校验存储节点数据为例。
可选地,若丢失三个数据存储节点的数据(D1、D3、D4)和一个校验存储节点数据(P2),其中,未丢失的三个校验存储节点的斜率为非连续的,可选地,可以采用两种方式恢复所述丢失数据,第一种可实现方式的步骤如下:
1、生成调节因子异或和
( P 1 ) s &CirclePlus; ( P 3 ) s = &CirclePlus; u = 0 3 ( P u , 1 &CirclePlus; P u , 3 ) ;
2、生成第三校验因子
具体可以采用如下公式生成第三校验因子:
P′0,1=P0,1⊕D0,0⊕D2,2,P′1,1=P1,1⊕D1,0⊕D3,2,
P′2,1=P2,1⊕D2,0,P′3,1=P3,1⊕D3,0⊕D0,2,P′4,1=D1,2,
P′0,3=P0,3⊕D0,0⊕D3,2,P′1,3=P0,3⊕D1,0,
P′2,3=P0,3⊕D2,0⊕D0,2,P′3,3=P0,3⊕D3,0⊕D1,2,P′4,3=D2,2
P′0,4=P0,4⊕D0,0⊕D1,2,P′1,4=P1,4⊕D1,0⊕D2,2,
P′2,4=P2,4⊕D2,0⊕D3,2,P′3,4=P3,4⊕D3,0,P′4,4=D0,2,
3、恢复中间某列数据
根据图9所示方式建立包含D3的如下公式:
D1.3⊕D4,3=P′2,1⊕P′4,3⊕P′2,3⊕P′0,3⊕P′3,4⊕P′1,4⊕(P1)s⊕(P3)s
D2.3⊕D0,3=P′3,1⊕P′0,1⊕P′3,1⊕P′1,3⊕P′4,4⊕P′2,4⊕(P1)s⊕(P3)s
                                                                     ;
D3.3⊕D1,3=P′4,1⊕P′1,1⊕P′4,1⊕P′2,3⊕P′0,4⊕P′3,4⊕(P1)s⊕(P3)s
D4.3⊕D2,3=P′0,1⊕P′2,1⊕P′0,1⊕P′3,3⊕P′1,4⊕P′4,4⊕(P1)s⊕(P3)s
首先将D4,3的值代入上述第一个式子即可求出D1,3的值,将D1,3的值代入上述第三个式子即可求出D3,3的值,其次将D4,3的值代入上述第四个式子即可求出D2,3的值,然后将D2,3的值代入上述第二个式子即可求出D0,3的值。
4、降级恢复丢失的剩余节点的数据
将已恢复的D3数据当做好的数据,按照第2步方式生成新的第三校验因子,进一步地根据丢失两个数据存储节点的恢复方式恢复剩余节点的数据,具体细节请参见本发明实施例十四中所述,此处不再赘述。
可选地,第二种可实现方式的步骤如下:
1、生成第四校验因子
具体可以采用如下公式生成第四校验因子:
P′0,2=D0,0⊕D0,2,P′1,2=D1,0⊕D1,2,
P′2,2=D2,0⊕D2,2,P′3,2=D3,0⊕D3,2,P′4,2=0
P′0,1=P0,1⊕D0,0⊕D2,2,P′1,1=P1,1⊕D1,0⊕D3,2,
P′2,1=P2,1⊕D2,0,P′3,1=P3,1⊕D3,0⊕D0,2,P′4,1=D1,2,
P′0,3=P0,3⊕D0,0⊕D3,2,P′1,3=P1,3⊕D1,0,
P′2,3=P1,3⊕D2,0⊕D0,2,P′3,3=P1,3⊕D3,0⊕D1,2,P′4,3=D2,2
P′0,4=P0,4⊕D0,0⊕D1,2,P′1,4=P1,4⊕D1,0⊕D2,2,
P′2,4=P2,4⊕D2,0⊕D3,2,P′3,4=P3,4⊕D3,0,P′4,3=D0,2
2、恢复丢失的校验数据
图16为本发明数据恢复方法的示意图五,图16中直线斜率包括-1、1及2,根据图16所示方式建立包含P2的如下公式:
C0=P″0,2⊕P″2,2⊕P″3,2⊕(P1)s⊕(P3)s⊕(P4)s=P′4,1⊕P′0,3⊕P′4,3⊕P′1,3⊕P′2,4
C1=P″1,2⊕P″3,2⊕P″4,2⊕(P1)s⊕(P3)s⊕(P4)s=P′0,1⊕P′4,3⊕P′0,3⊕P′2,3⊕P′3,4
C2=P″2,2⊕P″4,2⊕P″0,2⊕(P1)s⊕(P3)s⊕(P4)s=P′1,1⊕P′0,3⊕P′1,3⊕P′3,3⊕P′4,4
C3=P″3,2⊕P″0,2⊕P″1,2⊕(P1)s⊕(P3)s⊕(P4)s=P′2,1⊕P′1,3⊕P′2,3⊕P′4,3⊕P′0,4
C4=P″4,2⊕P″1,2⊕P″2,2⊕(P1)s⊕(P3)s⊕(P4)s=P′3,1⊕P′2,3⊕P′3,3⊕P′0,3⊕P′1,4
P″0,2=D0.1⊕D0.3⊕D0,4,P″1,2=D1.1⊕D1.3⊕D1,4,
P″2,2=D2.1⊕D2.3⊕D2,4,P″3,2=D3.1⊕D3.3⊕D3,4,P″4,2=0
根据22=-1mod5,确定m=2;
Q0=C0⊕C2⊕C3=P″0,2⊕P″4,2⊕P″1,2⊕(P4)s⊕(P1)s⊕(P3)s
Q1=C1⊕C3⊕C4=P″1,2⊕P″0,2⊕P″2,2⊕(P4)s⊕(P1)s⊕(P3)s
Q2=C2⊕C4⊕C0=P″2,2⊕P″1,2⊕P″3,2⊕(P1)s⊕(P3)s⊕(P4)s
Q3=C3⊕C0⊕C1=P″3,2⊕P″2,2⊕P″4,2⊕(P1)s⊕(P3)s⊕(P4)s
Q4=C4⊕C1⊕C2=P″4,2⊕P″3,2⊕P″0,2⊕(P1)s⊕(P3)s⊕(P4)s
H0=Q0⊕Q2⊕Q3=P″0,2⊕P″3,2⊕P″2,2⊕(P4)s⊕(P1)s⊕(P3)s
H1=Q1⊕Q3⊕Q4=P″1,2⊕P″4,2⊕P″3,2⊕(P4)s⊕(P1)s⊕(P3)s
H2=Q2⊕Q4⊕Q0=P″2,2⊕P″0,2⊕P″4,2⊕(P1)s⊕(P3)s⊕(P4)s
H3=Q3⊕Q0⊕Q1=P″3,2⊕P″1,2⊕P″0,2⊕(P1)s⊕(P3)s⊕(P4)s
H4=Q4⊕Q1⊕Q2=P″4,2⊕P″2,2⊕P″1,2⊕(P1)s⊕(P3)s⊕(P4)s
H3⊕C0=P″2,2⊕P″1,2,
H4⊕C1=P″3,2⊕P″2,2,
进一步地,H0⊕C2=P″4,2⊕P″3,2,
H1⊕C3=P″0,2⊕P″4,2,
H2⊕C4=P″1,2⊕P″0,2,
首先将P″4,2的值代入上述第四个式子即可求出P″0,2的值,将P″0,2的值代入上述第五个式子即可求出P″1,2的值,其次将P″1,2的值代入上述第一个式子即可求出P″2,2的值,将P″2,2的值代入上述第二个式子即可求出P″3,2的值。
3、降级恢复丢失的剩余节点的数据
将已恢复的P2数据当做好的数据,进一步地根据丢失三个数据存储节点的恢复方式恢复剩余节点的数据,具体细节请参见本发明实施例十二或本发明实施例的第一种可实现方式中所述,此处不再赘述。
实施例十四
本发明数据恢复方法实施例十四中以斜率为-1、0、1、2的直线分别对5个数据存储节点的数据异或操作生成对应于所述四个斜率的四个校验存储节点数据为例。
可选地,若丢失两个数据存储节点的数据(D0、D3)和两个校验存储节点数据(P1、P4),则恢复所述丢失数据的步骤如下:
1、生成调节因子异或和
( P 3 ) s = &CirclePlus; u = 0 3 ( P u , 2 &CirclePlus; P u , 3 ) ,
2、生成第五校验因子
具体可以采用如下公式生成第五校验因子:
P′0,2=D0,1⊕D0,2⊕D0,4⊕P0,2,P′1,2=D1,1⊕D1,2⊕D1,4⊕P1,2,
P′2,2=D2,1⊕D2,2⊕D2,4⊕P2,2,P′3,2=D3,1⊕D3,2⊕D3,4⊕P3,2,
P′0,3=P0,3⊕D3,2⊕D1,4,P′1,3=P1,3⊕D0,1⊕D2,4,
P′2,3=P2,3⊕D1,1⊕D0,2⊕D3,4,P′3,3=P3,3⊕D2,1⊕D1,2,
P′4,3=D3,1⊕D2,2⊕D0,4,
3、恢复丢失的某列数据
图17为本发明数据恢复方法的示意图六,图17中直线斜率包括0及1,根据图17所示方式建立包含D0的如下公式:
D1.0⊕D4,0=(P3)s⊕P′1,2⊕P′4,3
D2.0⊕D0,0=(P3)s⊕P′2,2⊕P′0,3
                                ;
D3.0⊕D1,0=(P3)s⊕P′3,2⊕P′1,3
D4.0⊕D2,0=(P3)s⊕P′4,2⊕P′2,3
首先将D4,0的值代入上述第一个式子即可求出D1,0的值,将D4,0的值代入上述第四个式子即可求出D2,0的值,其次将D1,0的值代入上述第三个式子即可求出D3,0的值,然后将D2,0的值代入上述第二个式子即可求出D0,0的值。
4、降级恢复丢失的剩余节点的数据
将已恢复的D0数据当做好的数据,按照第2步方式生成新的第五校验因子,进一步地根据丢失一个数据存储节点的恢复方式恢复剩余节点的数据,具体细节请参见本发明实施例十五中所述,此处不再赘述。
实施例十五
本发明数据恢复方法实施例十五中以斜率为-1、0、1、2的直线分别对5个数据存储节点的数据异或操作生成对应于所述四个斜率的四个校验存储节点数据为例。
可选地,若丢失一个数据存储节点的数据(D1)和三个校验存储节点数据(P1、P2、P4),其中,存储所述D1数据的盘号为a,则恢复所述丢失数据的步骤如下:
1、生成第六校验因子
P &prime; u , 3 = P u , 3 &CirclePlus; ( &CirclePlus; t = 0 , t &NotEqual; a < u - t > 5 &NotEqual; 4 4 D < u - t > P , t ) ;
2、生成第三调节因子
(P3)s=P0,3⊕D0,0⊕D3,2⊕D2,3⊕D1,4
3、恢复丢失的某列数据
建立包含D1的如下公式:
D0,1=(P3)s⊕P1,3⊕D1,0⊕D3,3⊕D2,4,
D1,1=(P3)s⊕P2,3⊕D2,0⊕D0,2⊕D3,4,
D2,1=(P3)s⊕P3,3⊕D3,0⊕D1,2⊕D0,3,
D3,1=(P3)s⊕D1,0⊕D2,2⊕D1,3⊕D0,4
4、降级恢复丢失的剩余节点的数据
将已恢复的D1数据当做好的数据,按照丢失的校验节点数据的生成方式恢复所述丢失的校验节点数据,具体细节请参见本发明实施例十一中所述,此处不再赘述。
实施例十六
本发明数据恢复方法实施例十六中以斜率为-1、0、1、2的直线分别对5个数据存储节点的数据异或操作生成对应于所述四个斜率的四个校验存储节点数据为例。
可选地,若丢失四个校验存储节点数据(P1、P2、P3、P4),则直接按照校验节点数据的生成方式即可恢复所述丢失的校验节点数据,具体公式如下:
R s = &CirclePlus; t = 1 4 D < - 1 + t > 5 , t , P u , 1 = R s &CirclePlus; ( &CirclePlus; t = 0 < u + t > 5 &NotEqual; 4 4 D < u + t > 5 , t ) , P u , 2 = ( &CirclePlus; t = 0 < u > 5 &NotEqual; 4 4 D < u > 5 , t ) , Q s = &CirclePlus; t = 1 4 D < - 1 - t > 5 , t , P u , 3 = Q s &CirclePlus; ( &CirclePlus; t = 0 < u - t > 5 &NotEqual; 4 4 D < u - t > 5 , t ) , S s = &CirclePlus; t = 1 4 D < - 1 - 2 t > 5 , t , P u , 4 = S s &CirclePlus; ( &CirclePlus; t = 0 < u - 2 t > 5 &NotEqual; 4 4 D < u - 2 t > 5 , t ) .
综上所述,在具体的运用中,用户终端可以采用本发明数据恢复方法的技术方案将原始数据切分为多份,同时生成4份校验数据,并将所述原始数据保留在本地,而将所述校验数据存储在不同的云存储系统上;虚拟机(Virtual machine,简称VM)拥有虚拟随机存取存储器(Virtual random accessmemory,简称vRAM)在每个虚拟网络附属存储(Virtual network-attachedstorage,简称vNAS)上;VM将所有的存储区域网络(Storage area network,简称SAN)硬盘映射到本地,作为本地的硬盘使用,其中,虚拟机的NAS网关不需要任何直接连接的硬盘,通过互联网协议(Internet protocol,简称IP)的头包,将相应的输入/输出(Input/Output,简称IO)请求直接发送到相应的vNAS存储框;vNAS存储框直接将数据以NAS包形式传送给用户。因此,本发明实施例中,通过将原始数据存在本地并将校验数据存在远程云存储上,起到对用户数据加密的效果,以使用户数据的安全性得到进一步的保障。
可选地,该数据处理的存储系统还可以为N+m存储集群系统,所述系统可以包括:终端、网络连接式存储(Network-attached storage,简称NAS)网关以及至少1个存储节点,其中,终端可以为手机、个人计算机(Personalcomputer,简称PC)、瘦客户机(Thin client,简称TC)等。
终端可以采用本发明数据恢复方法的技术方案将原始数据等大小划分为N个数据块,将N个数据块生成m个校验数据块后,通过通信设备和NAS网关将N个数据块分别存储在至少1个存储节点内、或将m个校验块分别存储在至少1个存储节点内、或将N个数据块中部分数据块和m个校验块中部分数据块分别存储在至少1个存储节点内、或将N个数据块和m个校验块分别存储在至少1个存储节点内,在数据存储完成后,存储节点向终端回复确认消息,告知终端传输的数据存储的具体位置。可选地,所述存储节点可以为虚拟网络连接式存储系统或虚拟网络连接式存储框。
当终端需要读取原始数据时,终端发出请求消息,请求消息包括存储节点的位置信息,终端将请求消息发送至NAS网关处,NAS网关根据所述请求消息中的位置信息直接将所述请求消息向对应的存储节点发送,存储节点根据所述请求消息将存储在自身的N个数据块返回至终端,当数据有损坏或丢失时,终端会读取校验数据,并根据未丢失的节点数据(原始数据)及未丢失的校验数据恢复原始数据。
可以理解的是,上述仅以举例的形式说明数据处理的系统的工作过程,在实际应用中,并不限制于此,如海量存储、统一存储、云存储等都可应用。可选地,本发明数据恢复方法的技术方案中的所有运算为在GF(2)域进行的运算。
实施例十七
图18为本发明数据恢复装置实施例一的结构示意图,所述装置用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,其中,p为大于4的素数,N为大于等于1且小于等于p的整数。如图18所示,本实施例提供的数据恢复装置180包括:计算模块1801及恢复模块1802。
其中,计算模块1801用于计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据,各个校验数据的值等于通过如下四个步骤计算出来的各个最终校验数据的值:
(1)对所述存储阵列补一个虚拟条带,位于虚拟条带中的各个数据块都为0;
(2)计算p-1个中间校验因子,每个中间校验因子的值为一定斜率的直线经过的分别位于不同条带以及不同数据存储节点的N个数据块的异或和,其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化;
(3)计算调节因子,所述调节因子的值为所述存储阵列中经上一个步骤后剩下未被用于计算异或和的数据块的异或和;
(4)分别计算每个中间校验因子与所述调节因子进行异或和,得到p-1个最终校验数据;
恢复模块1802用于当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据。
本实施例的数据恢复装置,可以用于本发明数据恢复方法实施例一的技术方案,其实现原理和技术效果类似,此处不再赘述。
实施例十八
图19为本发明数据恢复装置实施例二的结构示意图,本实施例在图18实施例的基础上,所述恢复模块1802包括:
第一恢复单元18021,用于根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点;
降级恢复单元18022,用于根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
进一步地,当丢失的所述四个存储节点为四个数据存储节点,且所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点时,所述第一恢复单元,包括:
第一调节因子异或和生成子单元,用于将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个所述组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和;
第一校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第一异或和,并将所述第一异或和与所述校验数据异或生成所述校验数据的第一校验因子;
第一恢复子单元,用于将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
可选地,所述第一调节因子异或和生成子单元、所述第一校验因子生成子单元及所述第一恢复子单元的具体作用可详见本发明上述数据恢复方法实施例三。
进一步地,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述第一恢复单元,包括:
调节因子信息生成子单元,用于根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息;
第二校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第二异或和,并将所述第二异或和与所述校验数据异或生成所述校验数据的第二校验因子;
第二恢复子单元,用于将所述第二校验因子及所述调节因子信息采用异或消元运算恢复所述第一节点的数据;
可选地,所述调节因子信息生成子单元具体用于:
将所述未发生数据丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和,或者
当所述未发生数据丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,将所述斜率为零的直线所对应的校验数据分别与所述未发生数据丢失的校验数据存储节点中剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述两个校验数据的第二调节因子。
可选地,所述调节因子信息生成子单元、所述第二校验因子生成子单元及第二恢复子单元的具体作用可详见本发明上述数据恢复方法实施例四。
进一步地,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述第一恢复单元,包括:
第三调节因子异或和生成子单元,用于将所述未发生数据丢失的三个校验存储节点中对应直线的斜率不连续的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
第三校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第三异或和,并将所述第三异或和与所述校验数据异或生成所述校验数据的第三校验因子;
第三恢复子单元,用于将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
可选地,所述第三调节因子异或和生成子单元、所述第三校验因子生成子单元及所述第三恢复子单元的具体作用可详见本发明上述数据恢复方法实施例五。
进一步地,当丢失的四个存储节点为三个数据存储节点和一个校验存储节点,且所述第一节点为所述丢失的校验数据存储节点时,所述第一恢复单元,包括:
第四校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第四异或和,并将所述第四异或和与所述校验数据异或生成所述校验数据的第四校验因子;
第四恢复子单元,用于将所述第四校验因子采用异或消元运算恢复所述第一节点的数据。
可选地,所述第四校验因子生成子单元及所述第四恢复子单元的具体作用可详见本发明上述数据恢复方法实施例六。
进一步地,当丢失的所述四个存储节点为两个数据存储节点和两个校验存储节点,且所述第一节点为所述丢失的两个数据存储节点中的一个节点时,所述第一恢复单元,包括:
第五调节因子异或和生成子单元,用于将所述未发生数据丢失的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
第五校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第五异或和,并将所述第五异或和与所述校验数据异或生成所述校验数据的第五校验因子;
第五恢复子单元,用于将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
可选地,所述第五调节因子异或和生成子单元、所述第五校验因子生成子单元及第五恢复子单元的具体作用可详见本发明上述数据恢复方法实施例七。
进一步地,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点,且所述第一节点为所述丢失的数据存储节点时,所述第一恢复单元,包括:
第六校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第六异或和,并将所述第六异或和与所述校验数据异或生成所述校验数据的第六校验因子;
第三调节因子生成子单元,用于根据所述第六校验因子以及所述数据存储节点的数据生成所述校验数据的第三调节因子;
第六恢复子单元,用于根据所述第六校验因子及所述第三调节因子采用异或消元运算恢复所述第一节点的数据;
可选地,所述第三调节因子生成子单元具体用于:
采用公式生成P0的第三调节因子;
其中,由公式<g-x·a>p=p-1确定g的值;x为所述未丢失的校验存储节点对应直线的斜率;为所述未丢失校验存储节点的第g个条带单元数据。
可选地,所述第六校验因子生成子单元、所述第三调节因子生成子单元及所述第六恢复子单元的具体作用可详见本发明上述数据恢复方法实施例八。
进一步地,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零,且所述第一节点为所述丢失的数据存储节点时,所述第一恢复单元具体用于:将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复所述第一节点的数据。
可选地,所述第一恢复单元的具体作用可详见本发明上述数据恢复方法实施例九。
本实施例的数据恢复装置,可以用于本发明上述数据恢复方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
实施例十九
图20为本发明数据恢复设备实施例一的结构示意图。所述数据恢复设备包括但不限于具备计算能力的主机服务器、个人计算机PC、可携带的便捷式计算机或终端。如图20所示,本实施提供的数据恢复设备200包括处理器2001和存储器2002。其中,存储器2002用于存储数据以及执行指令,当所述数据恢复设备200运行时,处理器2001与存储器2002之间通信,处理器2001调用存储器2002中的执行指令,用于执行上述数据恢复方法实施例中的操作。
本实施例的数据恢复设备,可以用于执行本发明任意实施例所提供的数据恢复方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
实施例二十
图21为本发明数据处理的存储系统实施例一的结构示意图,如图21所示,所述存储系统210包括:N个数据存储节点、四个校验存储节点以及数据恢复装置180,其中,N+4个存储节点都被划分成p-1个条带,p为大于4的素数,N为大于等于1且小于等于p的整数。其中,数据恢复装置180可以采用本发明上述数据恢复装置实施例的结构,其对应地,可以执行本发明上述数据恢复方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (19)

1.一种数据恢复方法,其特征在于,用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,其中,p为大于4的素数,N为大于等于1且小于等于p的整数,所述方法包括:
计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据,各个校验数据的值等于通过如下四个步骤计算出来的各个最终校验数据的值:
(1)对所述存储阵列补一个虚拟条带,位于所述虚拟条带中的各个数据块都为0;
(2)计算p-1个中间校验因子,每个中间校验因子的值为一定斜率的直线经过的分别位于不同条带以及不同数据存储节点的N个数据块的异或和,其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化;
(3)计算调节因子,所述调节因子的值为所述存储阵列中经上一个步骤后剩下未被用于计算异或和的数据块的异或和;
(4)分别计算每个中间校验因子与所述调节因子进行异或和,得到p-1个最终校验数据;
当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据,包括:
根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点;
根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
3.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为四个数据存储节点,且所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个所述组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第一异或和,并将所述第一异或和与所述校验数据异或生成所述校验数据的第一校验因子;
将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
4.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第二异或和,并将所述第二异或和与所述校验数据异或生成所述校验数据的第二校验因子;
将所述第二校验因子及所述调节因子信息采用异或消元运算恢复所述第一节点的数据;
其中,所述根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息,包括:
将所述未发生数据丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和,或者
当所述未发生数据丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,将所述斜率为零的直线所对应的校验数据分别与所述未发生数据丢失的校验数据存储节点中剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述两个校验数据的第二调节因子。
5.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将所述未发生数据丢失的三个校验存储节点中对应直线的斜率不连续的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第三异或和,并将所述第三异或和与所述校验数据异或生成所述校验数据的第三校验因子;
将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
6.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点,且所述第一节点为所述丢失的校验数据存储节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第四异或和,并将所述第四异或和与所述校验数据异或生成所述校验数据的第四校验因子;
将所述第四校验因子采用异或消元运算恢复所述第一节点的数据。
7.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为两个数据存储节点和两个校验存储节点,且所述第一节点为所述丢失的两个数据存储节点中的一个节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将所述未发生数据丢失的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第五异或和,并将所述第五异或和与所述校验数据异或生成所述校验数据的第五校验因子;
将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
8.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点,且所述第一节点为所述丢失的数据存储节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第六异或和,并将所述第六异或和与所述校验数据异或生成所述校验数据的第六校验因子;
根据所述第六校验因子以及所述数据存储节点的数据生成所述校验数据的第三调节因子;
根据所述第六校验因子及所述第三调节因子采用异或消元运算恢复所述第一节点的数据;
其中,根据所述第六校验因子以及所述数据存储节点的数据生成的所述校验数据的第三调节因子的值等于通过如下步骤计算出来的值:
采用公式生成P0的第三调节因子;
其中,由公式<g-x·a>p=p-1确定g的值;x为所述未丢失的校验存储节点对应直线的斜率;为所述未丢失校验存储节点的第g个条带单元数据。
9.根据权利要求2所述的方法,其特征在于,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零,且所述第一节点为所述丢失的数据存储节点时,所述根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,包括:
将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复所述第一节点的数据。
10.一种数据恢复装置,其特征在于,用于对存储阵列进行数据恢复,所述存储阵列包括N个数据存储节点以及四个校验存储节点,N+4个存储节点都被划分成p-1个条带,其中,p为大于4的素数,N为大于等于1且小于等于p的整数,所述装置,包括:
计算模块,用于计算四组校验数据,并将所述四组校验数据分别存储于所述四个校验存储节点,其中,每一组校验数据包括分别位于一个校验存储节点中的p-1个条带的p-1个校验数据,各个校验数据的值等于通过如下四个步骤计算出来的各个最终校验数据的值:
(1)对所述存储阵列补一个虚拟条带,位于所述虚拟条带中的各个数据块都为0;
(2)计算p-1个中间校验因子,每个中间校验因子的值为一定斜率的直线经过的分别位于不同条带以及不同数据存储节点的N个数据块的异或和,其中,计算每一组校验数据中的各个校验数据时使用的直线的斜率值均不相同,各个斜率值均为大于等于-(p-1),且小于等于p-1的整数,且四个斜率值按等差数列依次变化;
(3)计算调节因子,所述调节因子的值为所述存储阵列中经上一个步骤后剩下未被用于计算异或和的数据块的异或和;
(4)分别计算每个中间校验因子与所述调节因子进行异或和,得到p-1个最终校验数据;
恢复模块,用于当所述N+4个存储节点中的任意四个存储节点的数据丢失时,根据剩下的所有存储节点恢复发生数据丢失的四个存储节点的数据。
11.根据权利要求10所述的装置,其特征在于,所述恢复模块包括:
第一恢复单元,用于根据未发生数据丢失的校验存储节点的校验数据以及数据存储节点的数据恢复第一节点的数据,其中,所述第一节点为所述存储阵列中丢失的四个存储节点中的一个节点;
降级恢复单元,用于根据未发生数据丢失的所述校验存储节点的校验数据、所述数据存储节点的数据和所述第一节点的数据,降级依次恢复丢失的剩余节点的数据。
12.根据权利要求11所述的装置,其特征在于,当丢失的所述四个存储节点为四个数据存储节点,且所述第一节点为所述丢失的四个存储节点中节点盘号处于中间的任一节点时,所述第一恢复单元,包括:
第一调节因子异或和生成子单元,用于将未发生数据丢失的四个校验存储节点的四组校验数据分成两个组合,并将每个所述组合中两组校验数据的所有条带的数据进行异或生成对应所述组合的校验数据的调节因子异或和;
第一校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第一异或和,并将所述第一异或和与所述校验数据异或生成所述校验数据的第一校验因子;
第一恢复子单元,用于将所述第一校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
13.根据权利要求11所述的装置,其特征在于,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述第一恢复单元,包括:
调节因子信息生成子单元,用于根据未发生数据丢失的校验存储节点的校验数据对应直线的斜率值选择校验数据的异或组合,并将所述异或组合中校验数据对应条带的数据分别进行异或,生成所述校验数据的调节因子信息;
第二校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第二异或和,并将所述第二异或和与所述校验数据异或生成所述校验数据的第二校验因子;
第二恢复子单元,用于将所述第二校验因子及所述调节因子信息采用异或消元运算恢复所述第一节点的数据;
其中,所述调节因子信息生成子单元具体用于:
将所述未发生数据丢失的三个校验存储节点中斜率最小和斜率最大的直线所对应的校验存储节点的校验数据逐条带单元异或,生成所述两组校验数据的调节因子异或和,或者
当所述未发生数据丢失的校验数据存储节点包含斜率为零的直线所对应的校验数据存储节点时,将所述斜率为零的直线所对应的校验数据分别与所述未发生数据丢失的校验数据存储节点中剩余两个校验存储节点的校验数据逐条带单元异或,生成对应所述两个校验数据的第二调节因子。
14.根据权利要求11所述的装置,其特征在于,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点且未丢失的三个校验存储节点的斜率按等差数列非连续变化,且所述第一节点为所述丢失的三个数据存储节点中节点盘号处于中间的节点时,所述第一恢复单元,包括:
第三调节因子异或和生成子单元,用于将所述未发生数据丢失的三个校验存储节点中对应直线的斜率不连续的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
第三校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第三异或和,并将所述第三异或和与所述校验数据异或生成所述校验数据的第三校验因子;
第三恢复子单元,用于将所述第三校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
15.根据权利要求11所述的装置,其特征在于,当丢失的所述四个存储节点为三个数据存储节点和一个校验存储节点,且所述第一节点为所述丢失的校验数据存储节点时,所述第一恢复单元,包括:
第四校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第四异或和,并将所述第四异或和与所述校验数据异或生成所述校验数据的第四校验因子;
第四恢复子单元,用于将所述第四校验因子采用异或消元运算恢复所述第一节点的数据。
16.根据权利要求11所述的装置,其特征在于,当丢失的所述四个存储节点为两个数据存储节点和两个校验存储节点,且所述第一节点为所述丢失的两个数据存储节点中的一个节点时,所述第一恢复单元,包括:
第五调节因子异或和生成子单元,用于将所述未发生数据丢失的两个校验存储节点中的校验数据的所有条带的数据进行异或,生成对应所述两组校验数据的调节因子异或和;
第五校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第五异或和,并将所述第五异或和与所述校验数据异或生成所述校验数据的第五校验因子;
第五恢复子单元,用于将所述第五校验因子及所述调节因子异或和采用异或消元运算恢复所述第一节点的数据。
17.根据权利要求11所述的装置,其特征在于,当丢失的所述四个存储节点为一个数据存储节点和三个校验存储节点,且所述第一节点为所述丢失的数据存储节点时,所述第一恢复单元,包括:
第六校验因子生成子单元,用于将沿所述未发生数据丢失的校验存储节点的校验数据对应斜率的直线经过的分别位于所述未发生数据丢失的数据存储节点的数据块异或得到第六异或和,并将所述第六异或和与所述校验数据异或生成所述校验数据的第六校验因子;
第三调节因子生成子单元,用于根据所述第六校验因子以及所述数据存储节点的数据生成所述校验数据的第三调节因子;
第六恢复子单元,用于根据所述第六校验因子及所述第三调节因子采用异或消元运算恢复所述第一节点的数据;
其中,所述第三调节因子生成子单元具体用于:
采用公式生成P0的第三调节因子;
其中,由公式<g-x·a>p=p-1确定g的值;x为所述未丢失的校验存储节点对应直线的斜率;为所述未丢失校验存储节点的第g个条带单元数据。
18.根据权利要求11所述的装置,其特征在于,当丢失的四个存储节点为一个数据存储节点和三个校验存储节点且未丢失的校验存储节点对应直线的斜率为零,且所述第一节点为所述丢失的数据存储节点时,所述第一恢复单元具体用于:将所述未发生数据丢失的校验存储节点的校验数据与所述数据存储节点的数据异或,恢复所述第一节点的数据。
19.一种数据处理的存储系统,其特征在于,包括:N个数据存储节点、四个校验存储节点以及如权利要求10-18任一项所述的数据恢复装置,其中,N+4个存储节点都被划分成p-1个条带,p为大于4的素数,N为大于等于1且小于等于p的整数。
CN201410427438.8A 2014-08-27 2014-08-27 数据恢复方法、装置及存储系统 Active CN104156283B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410427438.8A CN104156283B (zh) 2014-08-27 2014-08-27 数据恢复方法、装置及存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410427438.8A CN104156283B (zh) 2014-08-27 2014-08-27 数据恢复方法、装置及存储系统

Publications (2)

Publication Number Publication Date
CN104156283A true CN104156283A (zh) 2014-11-19
CN104156283B CN104156283B (zh) 2017-08-25

Family

ID=51881788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410427438.8A Active CN104156283B (zh) 2014-08-27 2014-08-27 数据恢复方法、装置及存储系统

Country Status (1)

Country Link
CN (1) CN104156283B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511982A (zh) * 2015-12-18 2016-04-20 山东海量信息技术研究院 一种容忍dram颗粒失效的内存存取方法
CN106227617A (zh) * 2016-07-15 2016-12-14 乐视控股(北京)有限公司 自修复方法和基于纠删码算法的存储系统
CN107197324A (zh) * 2017-05-15 2017-09-22 郑州云海信息技术有限公司 一种分布式文件系统的视频容错方法及装置
CN107562569A (zh) * 2016-06-30 2018-01-09 杭州海康威视数字技术股份有限公司 一种数据重构方法及装置
CN107957919A (zh) * 2016-10-14 2018-04-24 北京京东尚科信息技术有限公司 数据容灾系统、方法和装置
CN108762973A (zh) * 2018-04-17 2018-11-06 华为技术有限公司 存储数据的方法和存储设备
CN109426587A (zh) * 2017-08-25 2019-03-05 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置
CN110727541A (zh) * 2019-09-02 2020-01-24 广东紫晶信息存储技术股份有限公司 一种光盘分块存储校验方法及系统
CN110968454A (zh) * 2018-09-28 2020-04-07 杭州海康威视系统技术有限公司 确定已丢失数据块的恢复数据的方法和装置
CN111596861A (zh) * 2020-05-06 2020-08-28 清华大学 数据存储方法和装置,数据恢复方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801105A (zh) * 2004-11-24 2006-07-12 国际商业机器公司 容许存储系统中的多个存储设备故障的系统和方法
US20090132851A1 (en) * 2007-11-21 2009-05-21 Arvind Pruthi Parallel reed-solomon raid (rs-raid) architecture, device, and method
CN101719086A (zh) * 2009-11-30 2010-06-02 成都市华为赛门铁克科技有限公司 磁盘阵列容错处理方法和装置及容错系统
US20130073896A1 (en) * 2011-09-19 2013-03-21 Thomson Licensing Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801105A (zh) * 2004-11-24 2006-07-12 国际商业机器公司 容许存储系统中的多个存储设备故障的系统和方法
US20090132851A1 (en) * 2007-11-21 2009-05-21 Arvind Pruthi Parallel reed-solomon raid (rs-raid) architecture, device, and method
CN101719086A (zh) * 2009-11-30 2010-06-02 成都市华为赛门铁克科技有限公司 磁盘阵列容错处理方法和装置及容错系统
US20130073896A1 (en) * 2011-09-19 2013-03-21 Thomson Licensing Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
万武南: "分布式安全存储系统纠删码技术的研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 *
万武南等: "一种基于3容错阵列码的RAID数据布局", 《计算机学报》 *
王玉林: "多节点容错存储系统的数据与缓存组织研究", 《中国博士学位论文全文数据库信息科技辑》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511982A (zh) * 2015-12-18 2016-04-20 山东海量信息技术研究院 一种容忍dram颗粒失效的内存存取方法
CN107562569A (zh) * 2016-06-30 2018-01-09 杭州海康威视数字技术股份有限公司 一种数据重构方法及装置
CN107562569B (zh) * 2016-06-30 2020-09-25 杭州海康威视数字技术股份有限公司 一种数据重构方法及装置
CN106227617A (zh) * 2016-07-15 2016-12-14 乐视控股(北京)有限公司 自修复方法和基于纠删码算法的存储系统
CN107957919A (zh) * 2016-10-14 2018-04-24 北京京东尚科信息技术有限公司 数据容灾系统、方法和装置
CN107197324A (zh) * 2017-05-15 2017-09-22 郑州云海信息技术有限公司 一种分布式文件系统的视频容错方法及装置
CN109426587A (zh) * 2017-08-25 2019-03-05 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置
CN108762973A (zh) * 2018-04-17 2018-11-06 华为技术有限公司 存储数据的方法和存储设备
CN108762973B (zh) * 2018-04-17 2021-05-14 华为技术有限公司 存储数据的方法和存储设备
CN110968454A (zh) * 2018-09-28 2020-04-07 杭州海康威视系统技术有限公司 确定已丢失数据块的恢复数据的方法和装置
CN110968454B (zh) * 2018-09-28 2022-09-09 杭州海康威视系统技术有限公司 确定已丢失数据块的恢复数据的方法和装置
CN110727541A (zh) * 2019-09-02 2020-01-24 广东紫晶信息存储技术股份有限公司 一种光盘分块存储校验方法及系统
CN111596861A (zh) * 2020-05-06 2020-08-28 清华大学 数据存储方法和装置,数据恢复方法和装置

Also Published As

Publication number Publication date
CN104156283B (zh) 2017-08-25

Similar Documents

Publication Publication Date Title
CN104156283A (zh) 数据恢复方法、装置及存储系统
CN102624866B (zh) 一种存储数据的方法、装置及分布式网络存储系统
CN103412799B (zh) 数据恢复方法、数据恢复设备和分布式存储系统
CN104052576B (zh) 一种云存储下基于纠错码的数据恢复方法
US10665137B2 (en) Inconsistency detecting method, inconsistency detecting system, inconsistency detecting device, and program
US20190173667A1 (en) Block generation method, device and blockchain network
CN100570573C (zh) 大规模磁盘阵列存储系统的磁盘容错方法
WO2018034079A1 (ja) 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム
CN101882992B (zh) 门限秘密信息分配、还原方法及装置
CN103336785A (zh) 一种基于网络编码的分布式存储方法及其装置
CN101625652A (zh) 多磁盘容错系统及生成校验块、恢复数据块的方法
CN101719086A (zh) 磁盘阵列容错处理方法和装置及容错系统
CN105406966A (zh) 一种门限秘密信息分配、还原、完整性验证方法及装置
US20150100819A1 (en) Method of Recovering Data in a Storage Device
CN103746774A (zh) 一种高效数据读取的容错编码方法
CN105245343A (zh) 一种基于多变量密码技术的在线离线签名系统及方法
Hollmann Storage codes—Coding rate and repair locality
CN105808170A (zh) 一种能够以最小磁盘读写修复单磁盘错误的raid6编码方法
CN103744750B (zh) 一种数据恢复方法及装置
CN103838649A (zh) 一种降低二进制编码存储系统中计算量的方法
JP2005250866A (ja) 秘密情報保管システム
CN100470489C (zh) 磁碟阵列中处理资料运算的方法及其控制器
CN104782101A (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
JP2013225078A (ja) 分散装置、復元装置、分散方法、復元方法及び分散復元システム
CN115543693A (zh) 数据恢复方法及相关设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant