一种云存储下基于纠错码的数据恢复方法.pdf

上传人:r5 文档编号:510577 上传时间:2018-02-20 格式:PDF 页数:14 大小:2.10MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410250861.5

申请日:

2014.06.07

公开号:

CN104052576A

公开日:

2014.09.17

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 1/00申请日:20140607|||公开

IPC分类号:

H04L1/00; H04L29/08; H04L12/24

主分类号:

H04L1/00

申请人:

华中科技大学

发明人:

曹强; 万胜刚; 李诗逸; 李晓倩; 宋驰; 谢长生

地址:

430074 湖北省武汉市洪山区珞喻路1037号

优先权:

专利代理机构:

华中科技大学专利中心 42201

代理人:

廖盈春

PDF下载: PDF下载
内容摘要

本发明公开了一种云存储下基于纠错码的数据恢复方法,属于云存储技术领域。本发明首先将数据对象按块进行处理,在分布式云存储系统中的各远程存储节点中存储数据块、复制块以及校验块。当远程存储节点出现故障时,通过相关数据块所在存储节点的计算,将数据传输到替换节点中重组数据以实现数据恢复。本发明通过使用RS校验码及利用存储节点自身的计算性能,减少了网络通讯的数据量,能够在极低带宽的情况下进行数据恢复,同时仅使用一个复制块以及少量的校验块,节省了存储空间。

权利要求书

1.  一种云存储下基于纠错码的数据恢复方法,其特征在于,包括:
步骤1将存储的数据分成固定大小的m个数据块b0~bm-1,同时复制所有的数据块生成m个复制块b'0~b'm-1,其中m<N,N为云存储系统中的存储节点总数;
步骤2选取m个存储节点存储所述m个数据块b0~bm-1和所述m个复制块b'0~b'm-1,其中每一存储节点分别存储一个数据块和一个复制块,即第i个存储节点存储数据块bi和数据块bi+1的复制块bi'+1,0≤i<m-1,第m个存储节点存储数据块bm-1和数据块b0的复制块b'0
步骤3另随机选取不同于所述m个存储节点的k-1个存储节点分别存储使用标准RS编码所形成的k-1个奇偶校验块,其中k表示所述云存储系统中的容错节点数,k<m;
步骤4根据故障节点所存储的数据内容确定数据恢复所需要用到的数据块或复制块或奇偶校验块,并由所述所需要用到的数据块或复制块或奇偶校验块所在的存储节点进行数据恢复计算;
步骤5将所述数据恢复计算的结果传输到替换所述故障节点的替换节点上;
步骤6所述替换节点计算并重组所述数据块或所述复制块或所述奇偶校验块以实现数据恢复。

2.
  如权利要求1所述的方法,其特征在于,用2行n列矩阵表示各数据块在所述存储节点中的分布,其中n≡m+k-1,每个数据块作为所述矩阵中的一个元素,记为Ci,j(0≤i<2,0≤j<n),其中,第1行前m个元素为为原生元素,即为所述数据块;第1行第m~第m+k-2个元素为校验元素,记为即为所述奇偶校验块,其中ai,j组成一个系数矩阵, 用于计算纠错码;第2行前m个元素为复制元素,记为C1,j=C0,<j+1>m,即为所述复制块;第2行的第m~第m+k-2个元素为空,其中所述原生元素和所述复制元素统称为数据元素。

3.
  如权利要求2所述的方法,其特征在于,当多个存储节点发生故障时,令f0、f1分别为两个故障节点存储的所述数据元素或所述校验元素的标号,其中f0<f1,当0≤f0<f1<n时,所述步骤4进行的所述数据恢复计算包括以下子步骤:
(4-1)如果0≤f0<f1<m,即两个损坏数据块中不存在所述奇偶校验块,则执行步骤(4-6),如果0≤f0<m&&f1==m,即为数据元素、为所述校验元素,则执行步骤(4-2);
(4-2)从未发生故障的存储节点中本地读取的数据内容分别直接恢复的数据,令一个整数sum值为0,如果f0可以被2整除,令j=1,否则令j=0,执行步骤(4-3);
(4-3)存储C0,j和C1,j两数据元素的本地存储节点计算其中符号表示异或运算,将计算得到的结果tmp[j]传输给所述替换节点,其中,所述替换节点是可恢复的故障节点本身或其他未存储数据的存储节点,在所述替换节点中计算执行步骤(4-4);
(4-4)令j=j+2,如果j≥m,执行步骤(4-5),否则继续执行步骤(4-3);
(4-5)运算结束,所述替换节点中sum的值即为替换失效的所述奇偶校验块的数据内容,所述数据恢复计算完成;
(4-6)如果f0+1==f1,执行步骤(4-7),如果<f0-1>m==f1,执行步骤(4-8),否则执行步骤(4-12),其中<f0-1>m==f1表示f0-1模m;
(4-7)从未故障的存储节点中读取的数据内容分别直接恢复的数据,令如果f0可以被2整除,令j=1, 否则令j=0,执行步骤(4-9);
(4-8)从未故障的存储节点中读取的数据内容分别直接恢复的数据,令j=0,执行步骤(4-9);
(4-9)如果j≠f0,存储C0,j和C1,j两数据元素的存储节点计算将计算得到的结果tmp[j]传输给所述替换节点,在所述替换节点中计算执行步骤(4-10),如果j=f0,则直接执行步骤(4-11);
(4-10)令j=j+2,如果j≥m,执行步骤(4-11),否则继续执行步骤(4-9);
(4-11)存储校验元素C0,m的存储节点将校验元素C0,m数据传输给所述替换节点,所述替换节点计算当f0+1==f1时,sum值等于的数据;当<f0-1>m==f1时,sum等于的数据,所述数据恢复计算完成;
(4-12)从未失效的存储节点中读取数据元素的数据内容,分别恢复失效数据块的数据,所述数据恢复计算完成。

4.
  如权利要求1所述的方法,其特征在于,当单个所述存储节点发生故障,且所述故障节点所存储的所述数据内容为所述数据块或所述复制块时,所述步骤4进行的所述数据恢复计算为通过读取其对应的所述复制块或所述数据块直接得到数据。

5.
  如权利要求1所述的方法,其特征在于,当单个所述存储节点发生故障,且所述故障节点所存储的所述数据内容为所述奇偶校验块时,选择个存储节点对每个存储节点dj,其中 表示m/2的值若不存在小数位,则直接取m/2,若存在小数位则为m/2的整数部分加1,进行如所述步骤4进行的所述数据恢复计算,具体包括以下子步骤:
(5-1)从存储原生块bj和复制块b'<j+1>m的存储节点读取这两个数据块的数据内容;
(5-2)读取系数矩阵ck中的ai,j和ai,<j+1>m,其中所述系数矩阵ck为:
ck=a0,0a0,1···a0,m-1a1,0a1,1···a1,m-1············ak-2,0ak-2,1···ak-2,m-1]]>
其中,ai,j表示用于计算纠错码所需的元素;
(5-3)采用折半算法计算tmpj=ai,j×bj+ai,<j+1>m×b'<j+1>m,其中
(5-4)将tmpj传输给所述替换节点,其中且其中,所述替换节点是可恢复的故障节点本身或其他未存储数据的存储节点;
(5-5)对所述步骤(5-3)得到的tmpj进行异或运算,获得奇偶校验块Pi=Σtmpj

6.
  如权利要求1所述的方法,其特征在于,使用所述标准的RS编码形成所述奇偶校验块的编码公式为其中0≤i<k-1;ai,j表示纠错码。

说明书

一种云存储下基于纠错码的数据恢复方法
技术领域
本发明属于云存储技术领域,更具体地,涉及一种云存储下基于纠错码的数据恢复方法。
背景技术
云存储,指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和访问功能的系统。在大量存储设备协同工作的云存储系统中,存储设备出现故障而可能导致的数据异常是在设计云存储系统时需要考虑的关键部分。
目前的云存储系统主要通过远程备份功能提供容错服务,例如Hadoop。在云存储系统中,数据被分成多个固定大小的数据块,按照一定的分布方式,分开存储在多个远程节点上,同时,能够在其他远程节点存储数据块的备份。这种方式能够一定程度的避免数据的损坏,但是其存储开销太大,且增量写延迟较高。
目前针对云存储远程备份功能的缺陷,出现了NCCloud,其将数据分块存储在远程节点上,同时存储数据的校验块。并在云存储体系中引入代理节点,当远程节点出现故障时,代理节点通过获取其他节点的数据(数据块及校验块),恢复出现故障的远程节点及其中存储的数据。但是,NCCloud的代理节点需要从远程节点获取故障恢复相关的所有数据,进行大量的数据传输,对网络带宽的要求较高。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种云存储下基于 纠错码的数据恢复方法,该方法能够在远程节点发生永久性故障时,进行数据修复。
本发明是一种采用最大距离可分(Maximum-Distance-Separable,以下简称MDS)纠错编码,利用HPC算法的数据恢复方法。将数据分块存储在各远程存储节点上,同时存储数据块的副本和数据的校验块。当远程存储节点发生永久性故障而导致其内存储的数控失效时,修复操作可以读取现有的幸存云数据并恢复丢失的数据。
本发明提供一种云存储下基于纠错码的数据恢复方法,包括以下步骤:
步骤1将存储的数据分成固定大小的m个数据块b0~bm-1,同时复制所有的数据块生成m个复制块b'0~b'm-1,其中m<N,N为云存储系统中的存储节点总数;
步骤2选取m个存储节点存储所述m个数据块b0~bm-1和所述m个复制块b'0~b'm-1,其中每一存储节点分别存储一个数据块和一个复制块,即第i个存储节点存储数据块bi和数据块bi+1的复制块bi'+1,0≤i<m-1,第m个存储节点存储数据块bm-1和数据块b0的复制块b'0
步骤3另随机选取不同于所述m个存储节点的k-1个存储节点分别存储使用标准RS编码所形成的k-1个奇偶校验块,其中k表示所述云存储系统中的容错节点数,k<m;
步骤4根据故障节点所存储的数据内容确定数据恢复所需要用到的数据块或复制块或奇偶校验块,并由所述所需要用到的数据块或复制块或奇偶校验块所在的存储节点进行数据恢复计算;
步骤5将所述数据恢复计算的结果传输到替换所述故障节点的替换节点上;
步骤6所述替换节点计算并重组所述数据块或所述复制块或所述奇偶校验块以实现数据恢复。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下优点:
节约带宽,不需要通过大量的数据块数据传输进行数据块的恢复,通过使用RS校验码及利用存储节点自身的计算性能,先在存储节点对数据恢复所需的数据进行相应计算,对计算后的数据内容传输至替换节点,再在替换节点进行数据计算和重组以实现数据块的恢复,减少了数据传输量,减轻了数据恢复节点的计算负担;
节省空间,MDS编码仅存储1个复制块以及少量校验块,既保证了数据恢复的功能,又节省了分布式云存储系统的存储空间。
附图说明
图1为本发明采用HPC(m,k,ck)数据恢复算法的云存储环境的数据布局结构图;
图2为本发明一种典型的HPC数据恢复算法模型HPC(4,2,c2)的示意图;
图3为本发明采用a行n列规范化的数据布局结构图;
图4a为本发明损坏数据块中不存在奇偶校验块的数据恢复方法的流程图;
图4b为本发明损坏数据块中存在奇偶校验块的数据恢复方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例中将会用到一些新的定义,其中的名词解释如下:
数据块(data block):是本发明数据恢复方法中的基本单位。本发明 实施例中有三种数据块:原生块(native block)、复制块(replica block)和校验块(parity block)。
HPC(m,k,ck):本发明数据恢复算法,称为HPC数据恢复算法,其中,m表示对云存储系统在处理数据对象时,数据分块的个数;k表示校验块数目,即可对k个节点故障进行容错;ck表示HPC数据恢复算法中需要用到的系数矩阵。
表示m/2的值若不存在小数位,则直接取m/2;若存在小数位则该值为m/2的整数部分加1。
<j+1>m:表示j+1模m的值,例如若j=4、m=4,则<j+1>m=1;若j=1,m=5,则<j+1>m=2。
一、数据编码
图1所示为本发明采用HPC(m,k,ck)算法的云存储系统的数据布局结构图。设云存储系统中有N个存储节点,对每个存储在该云存储系统中的对象,做以下处理:设存储对象的大小为M,将该存储对象分为m(m<N)个大小相同的数据块,记为b0~bm-1,各数据块采用传统的MDS编码。将数据分块可使云存储环境中的各种数据整齐化,使得更加容易组织和管理。
使用标准的RS编码形成k-1个奇偶校验块(k<m),记为P0~Pk-2,编码公式如下:
Pi=Σj=0m-1ai,j×bj,0i<k-1---(1)]]>
如下式所示,ai,j组成一个系数矩阵ck,云存储系统初始化时存储了用于计算校验码的该系数矩阵ck
ck=a0,0a0,1&CenterDot;&CenterDot;&CenterDot;a0,m-1a1,0a1,1&CenterDot;&CenterDot;&CenterDot;a1,m-1&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;&CenterDot;ak-2,0ak-2,1&CenterDot;&CenterDot;&CenterDot;ak-2,m-1]]>
当系数矩阵ck中任意(k-1)×(k-1)的子矩阵既是满秩矩阵也是可逆矩阵时,该云存储系统能允许在至多k个存储节点发生错误时恢复数据。由公式(1)所示,奇偶校验块P0~Pk-2中的数据计算采用非常简单的异或运算,是作为远程节点的硬件设备都能够高效完成的,比起一些复杂的校验码构建要容易得多。
接着,拷贝所有的数据块得到2m个数据块,其中有m个原生块b0~bm-1和m个复制块b'0~b'm-1,复制块和其对应的原生块没有区别,在云存储系统中可以进行读写。在云存储系统的N个存储节点中随机选取m个存储节点存储该2m个数据块,该m个存储节点记为d0~dm-1,每个存储节点存储两个连续的数据块,即数据块bi和数据块bi+1的复制块bi'+1,0≤i<m-1,最后一个存储节点存储的是数据块bm-1和数据块b0的复制块b'0。同时,除之前选取的m个存储节点外,另外随机选取k-1个存储节点分别存储k-1个奇偶校验块P0~Pk-2
二、数据读写
对于普通客户端通过读取本地数据或其副本来获取数据。在云存储系统中,通过同时向原生块和复制块发送读请求,读取更快响应请求的存储节点的数据,提高了数据读取的性能。
当客户端向分布式存储系统中发送写请求,不仅需要写入原生块和复制块,还需要重新计算修改第k-1块奇偶校验块的数据内容,因此写入过程比单纯的数据复制要复杂一些。可是,与复制块写入相比,校验块数据的计算简单高效,只需要各个相关远程节点在本地进行计算,再将数据传输到存储校验块的远程节点上,进行简单的异或运算即可,比起3副本的hadoop在写入数据过程的写入3副本要高效。
三、HPC(m,k,ck)数据恢复算法
在本发明实施例中,分布式存储系统以块为存储单位,数据恢复也以 块为单位。
分布式存储系统中出现的节点故障可能有两种类型:一种是单块故障,一种是多块故障,由于云存储系统下数据块是随机存储在各远程节点上的,多块故障可能会导致多个节点的数据故障。
1、单块故障
如果一个数据块bi(0≤i<m)或其复制块bi'失效,可以通过读取其对应复制块或原生块直接得到数据。此时,读写过程和数据传输中的成本消耗与普通云存储系统中的读过程相同。
如果一个奇偶校验块Pi(0≤i<k-1)失效,则需要重构该奇偶校验块Pi内的数据。在HPC数据恢复算法中,选择个存储节点(或),对每个存储节点dj(或)进行如下操作:
(1)从存储原生块bj和复制块b'<j+1>m的存储节点dj读取这两个数据块的数据,
(2)读取系数矩阵ck中的ai,j和ai,<j+1>m
(3)采用折半算法计算tmpj=ai,j×bj+ai,<j+1>m×b'<j+1>m的值,
(4)将传输给存储了该奇偶校验块Pi的存储节点;
(5)进行简单的异或(XOR)运算,获得奇偶校验块Pi的数据如下:

在本发明实施例中,tmpj的值即为需要传输给替换节点的数据,在本发明实施例中,替换节点可以是故障节点本身(若故障节点的故障可恢复)或其他未存储数据的远程节点(除之前选定的m+k-1个存储节点外的某存储节点,即剩余的N-n个存储节点中的某存储节点)。本技术方案并没有 将各个数据块的数据全部传输给存储失效的奇偶校验块Pi的存储节点自行进行数据组织,而是利用各个存储节点的计算功能,减少了单个存储节点的计算负担,提高了数据恢复的效率。
2、多块故障
对于多个数据块失效,将存储节点分成两个部分,一个部分是前m个存储数据块的存储节点d0~dm-1,另一个部分是后k-1个存储奇偶校验块的存储节点dm~dm+k-2
对于前m个存储节点,只有存储节点d<j-1>m和dj(0≤j<m)存储的数据同时失效才导致数据块bj的数据失效,需要使用奇偶校验块恢复数据。否则,只需要读取相应的原生块或复制块来重构数据。
对于后k-1个存储节点,如果存储节点di+m存储的数据失效,即奇偶校验块Pi失效,则需要通过未失效的数据进行重构。
这里以k=2讨论HPC数据恢复算法的具体实现,按照HPC数据恢复算法的数据组织方式,由于k=2,则只有一个奇偶校验块P0。因此采用简单的奇偶校验方式,令系数矩阵ck中ai,j的值全为1,如下所示:
c2=a0,0a0,1&CenterDot;&CenterDot;&CenterDot;a0,m-1=11&CenterDot;&CenterDot;&CenterDot;1]]>
则根据公式(1)有,奇偶校验块
如图2为本发明一种典型的HPC数据恢复算法模型HPC(4,2,c2)的示意图。
如果奇偶校验块P0失效,存储节点d0计算存储节点d2计算将tmp0、tmp2传输到管理节点或需要替换数据的存储节点,即存储失效的奇偶校验块P0的存储节点上,在该存储节点上计算以恢复奇偶校验块P0的数据。
如果某一存储节点上存储的数据块失效,则只需要读取其对应的未失 效的原生块或复制块来恢复数据。例如,若存储节点d1上存储的数据块b1失效,则读取存储节点d0上存储的复制块b1'即可恢复数据;若存储节点d1上存储的数据块b'2失效,则读取存储节点d2上存储的原生块b2即可恢复数据。
图3所示为本发明采用a行n列规范化数据布局的结构示意图。按照如图1所示的数据块分布,将HPC数据恢复算法规范化,如图3所示,用2行n列矩阵表示各数据块在存储节点中的分布,其中n≡m+k-1,表示一个数据对象的存储空间,每个数据块作为矩阵中的一个元素,记为Ci,j(0≤i<2,0≤j<n)。其中,第2行的第m~第m+k-2个元素为空,其余元素分为三种类型:原生元素、复制元素和校验元素,在本发明实施例中,原生元素和复制元素统称为数据元素。第1行前m个元素为原生元素,第1行第m~第m+k-2个元素为校验元素,,第2行元素前m个元素为复制元素。根据数据组织的规律,参照公式(1)中给出的计算方式,HPC(m,k,ck)数据恢复算法编码参数化公式如下:
复制元素:C1,j=C0,<j+1>m
校验元素:C0,i+m=Σj=0m-1ai,j×C0,j]]>
图4a、图4b所示分别为本发明损坏数据块中不存在奇偶校验块和存在奇偶校验块的数据恢复方法的流程图,图4a、图4b将结合图3进行说明。令f0、f1(f0<f1)分别为两个故障节点存储的数据元素(或校验元素)的标号,当0≤f0<f1<n时,进行如下数据恢复过程:
(1)如果0≤f0<f1<m,即两个损坏数据块中不存在奇偶校验块,则执行步骤(6),具体如图4b所示,如果0≤f0<m&&f1==m,即为数据元素、为校验元素,则执行步骤(2);
(2)从未故障的存储节点中本地读取这两块的数据内容分别直接恢复的数据,令一个整数sum值为0,如果f0可以被 2整除,令j=1,否则令j=0,执行步骤(3);
(3)本地存储节点dj读取C0,j和C1,j两数据块的数据,计算表示C0,j异或C1,j,将计算得到的结果tmp[j]传输给替换该故障节点的替换节点,在本发明实施例中,替换节点可以是故障节点本身(若故障节点的故障可恢复)或其他未存储数据的远程节点(除之前选定的m+k-1个存储节点外的某存储节点,即剩余的N-n个存储节点中的某存储节点),在替换节点中计算执行步骤(4);
(4)令j=j+2,如果j≥m,执行步骤(5),否则继续执行步骤(3);
(5)运算结束,替换节点中sum的值即为替换失效奇偶校验块的数据值,节点数据恢复完成;
(6)如果f0+1==f1,即f1对应的数据块为f0对应的数据块的下一块,执行步骤(7),如果<f0-1>m==f1,即在数据对象分块过程中,f0为第一个原生块,f1为最后一个原生块,执行步骤(8),否则执行步骤(12);
(7)从未故障的存储节点中本地读取这两元素的数据分别直接恢复的数据,令如果f0可以被2整除,令j=1,否则令j=0,执行步骤(9);
(8)从未故障的存储节点中本地读取这两块的数据分别直接恢复的数据,令j=0,执行步骤(9);
(9)如果j≠f0,本地存储节点dj读取C0,j和C1,j两数据元素的数据,计算将计算得到的结果tmp[j]传输给替换该故障节点的替换节点,在替换节点中计算执行步骤(10),如果j=f0,则直接执行步骤(11);
(10)令j=j+2,如果j≥m,执行步骤(11),否则继续执行步骤(9);
(11)本地存储节点dm读取校验元素C0,m的数据,将校验元素C0,m数据传输给替换节点,替换节点计算当f0+1==f1时,sum值等 于数据元素的值;当<f0-1>m==f1时,sum等于的值,节点数据恢复完成;
(12)从未失效的存储节点中读取数据元素的数据,分别恢复失效数据块的数据,节点数据恢复完成。
当有多个(大于两个)连续存储节点发生故障时,需要计算和存储多个校验块用于数据恢复,数据恢复方法与上述数据恢复方法类似,根据数据块和校验块之间的异或关系进行数据恢复。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

一种云存储下基于纠错码的数据恢复方法.pdf_第1页
第1页 / 共14页
一种云存储下基于纠错码的数据恢复方法.pdf_第2页
第2页 / 共14页
一种云存储下基于纠错码的数据恢复方法.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种云存储下基于纠错码的数据恢复方法.pdf》由会员分享,可在线阅读,更多相关《一种云存储下基于纠错码的数据恢复方法.pdf(14页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104052576A43申请公布日20140917CN104052576A21申请号201410250861522申请日20140607H04L1/00200601H04L29/08200601H04L12/2420060171申请人华中科技大学地址430074湖北省武汉市洪山区珞喻路1037号72发明人曹强万胜刚李诗逸李晓倩宋驰谢长生74专利代理机构华中科技大学专利中心42201代理人廖盈春54发明名称一种云存储下基于纠错码的数据恢复方法57摘要本发明公开了一种云存储下基于纠错码的数据恢复方法,属于云存储技术领域。本发明首先将数据对象按块进行处理,在分布式云存储系统中的各远。

2、程存储节点中存储数据块、复制块以及校验块。当远程存储节点出现故障时,通过相关数据块所在存储节点的计算,将数据传输到替换节点中重组数据以实现数据恢复。本发明通过使用RS校验码及利用存储节点自身的计算性能,减少了网络通讯的数据量,能够在极低带宽的情况下进行数据恢复,同时仅使用一个复制块以及少量的校验块,节省了存储空间。51INTCL权利要求书3页说明书6页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书6页附图4页10申请公布号CN104052576ACN104052576A1/3页21一种云存储下基于纠错码的数据恢复方法,其特征在于,包括步骤1将存储的数据分成固定大小。

3、的M个数据块B0BM1,同时复制所有的数据块生成M个复制块B0BM1,其中MN,N为云存储系统中的存储节点总数;步骤2选取M个存储节点存储所述M个数据块B0BM1和所述M个复制块B0BM1,其中每一存储节点分别存储一个数据块和一个复制块,即第I个存储节点存储数据块BI和数据块BI1的复制块BI1,0IM1,第M个存储节点存储数据块BM1和数据块B0的复制块B0;步骤3另随机选取不同于所述M个存储节点的K1个存储节点分别存储使用标准RS编码所形成的K1个奇偶校验块,其中K表示所述云存储系统中的容错节点数,KM;步骤4根据故障节点所存储的数据内容确定数据恢复所需要用到的数据块或复制块或奇偶校验块,。

4、并由所述所需要用到的数据块或复制块或奇偶校验块所在的存储节点进行数据恢复计算;步骤5将所述数据恢复计算的结果传输到替换所述故障节点的替换节点上;步骤6所述替换节点计算并重组所述数据块或所述复制块或所述奇偶校验块以实现数据恢复。2如权利要求1所述的方法,其特征在于,用2行N列矩阵表示各数据块在所述存储节点中的分布,其中NMK1,每个数据块作为所述矩阵中的一个元素,记为CI,J0I2,0JN,其中,第1行前M个元素为为原生元素,即为所述数据块;第1行第M第MK2个元素为校验元素,记为即为所述奇偶校验块,其中AI,J组成一个系数矩阵,用于计算纠错码;第2行前M个元素为复制元素,记为C1,JC0,J1。

5、M,即为所述复制块;第2行的第M第MK2个元素为空,其中所述原生元素和所述复制元素统称为数据元素。3如权利要求2所述的方法,其特征在于,当多个存储节点发生故障时,令F0、F1分别为两个故障节点存储的所述数据元素或所述校验元素的标号,其中F0F1,当0F0F1N时,所述步骤4进行的所述数据恢复计算包括以下子步骤41如果0F0F1M,即两个损坏数据块中不存在所述奇偶校验块,则执行步骤46,如果0F0MF1M,即和为数据元素、为所述校验元素,则执行步骤42;42从未发生故障的存储节点中本地读取和的数据内容分别直接恢复和的数据,令一个整数SUM值为0,如果F0可以被2整除,令J1,否则令J0,执行步骤。

6、43;43存储C0,J和C1,J两数据元素的本地存储节点计算其中符号表示异或运算,将计算得到的结果TMPJ传输给所述替换节点,其中,所述替换节点是可恢复的故障节点本身或其他未存储数据的存储节点,在所述替换节点中计算执行步骤44;权利要求书CN104052576A2/3页344令JJ2,如果JM,执行步骤45,否则继续执行步骤43;45运算结束,所述替换节点中SUM的值即为替换失效的所述奇偶校验块的数据内容,所述数据恢复计算完成;46如果F01F1,执行步骤47,如果F01MF1,执行步骤48,否则执行步骤412,其中F01MF1表示F01模M;47从未故障的存储节点中读取和的数据内容分别直接恢。

7、复和的数据,令如果F0可以被2整除,令J1,否则令J0,执行步骤49;48从未故障的存储节点中读取和的数据内容分别直接恢复和的数据,令J0,执行步骤49;49如果JF0,存储C0,J和C1,J两数据元素的存储节点计算将计算得到的结果TMPJ传输给所述替换节点,在所述替换节点中计算执行步骤410,如果JF0,则直接执行步骤411;410令JJ2,如果JM,执行步骤411,否则继续执行步骤49;411存储校验元素C0,M的存储节点将校验元素C0,M数据传输给所述替换节点,所述替换节点计算当F01F1时,SUM值等于和的数据;当F01MF1时,SUM等于和的数据,所述数据恢复计算完成;412从未失效。

8、的存储节点中读取数据元素和的数据内容,分别恢复失效数据块和的数据,所述数据恢复计算完成。4如权利要求1所述的方法,其特征在于,当单个所述存储节点发生故障,且所述故障节点所存储的所述数据内容为所述数据块或所述复制块时,所述步骤4进行的所述数据恢复计算为通过读取其对应的所述复制块或所述数据块直接得到数据。5如权利要求1所述的方法,其特征在于,当单个所述存储节点发生故障,且所述故障节点所存储的所述数据内容为所述奇偶校验块时,选择个存储节点或对每个存储节点DJ,其中或表示M/2的值若不存在小数位,则直接取M/2,若存在小数位则为M/2的整数部分加1,进行如所述步骤4进行的所述数据恢复计算,具体包括以下。

9、子步骤51从存储原生块BJ和复制块BJ1M的存储节点读取这两个数据块的数据内容;52读取系数矩阵CK中的AI,J和AI,J1M,其中所述系数矩阵CK为权利要求书CN104052576A3/3页4其中,AI,J表示用于计算纠错码所需的元素;53采用折半算法计算TMPJAI,JBJAI,J1MBJ1M,其中54将TMPJ传输给所述替换节点,其中且其中,所述替换节点是可恢复的故障节点本身或其他未存储数据的存储节点;55对所述步骤53得到的TMPJ进行异或运算,获得奇偶校验块PITMPJ。6如权利要求1所述的方法,其特征在于,使用所述标准的RS编码形成所述奇偶校验块的编码公式为其中0IK1;AI,J表。

10、示纠错码。权利要求书CN104052576A1/6页5一种云存储下基于纠错码的数据恢复方法技术领域0001本发明属于云存储技术领域,更具体地,涉及一种云存储下基于纠错码的数据恢复方法。背景技术0002云存储,指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和访问功能的系统。在大量存储设备协同工作的云存储系统中,存储设备出现故障而可能导致的数据异常是在设计云存储系统时需要考虑的关键部分。0003目前的云存储系统主要通过远程备份功能提供容错服务,例如HADOOP。在云存储系统中,数据被分成多个固定大小的数据块,按照。

11、一定的分布方式,分开存储在多个远程节点上,同时,能够在其他远程节点存储数据块的备份。这种方式能够一定程度的避免数据的损坏,但是其存储开销太大,且增量写延迟较高。0004目前针对云存储远程备份功能的缺陷,出现了NCCLOUD,其将数据分块存储在远程节点上,同时存储数据的校验块。并在云存储体系中引入代理节点,当远程节点出现故障时,代理节点通过获取其他节点的数据数据块及校验块,恢复出现故障的远程节点及其中存储的数据。但是,NCCLOUD的代理节点需要从远程节点获取故障恢复相关的所有数据,进行大量的数据传输,对网络带宽的要求较高。发明内容0005针对现有技术的以上缺陷或改进需求,本发明提供一种云存储下。

12、基于纠错码的数据恢复方法,该方法能够在远程节点发生永久性故障时,进行数据修复。0006本发明是一种采用最大距离可分MAXIMUMDISTANCESEPARABLE,以下简称MDS纠错编码,利用HPC算法的数据恢复方法。将数据分块存储在各远程存储节点上,同时存储数据块的副本和数据的校验块。当远程存储节点发生永久性故障而导致其内存储的数控失效时,修复操作可以读取现有的幸存云数据并恢复丢失的数据。0007本发明提供一种云存储下基于纠错码的数据恢复方法,包括以下步骤0008步骤1将存储的数据分成固定大小的M个数据块B0BM1,同时复制所有的数据块生成M个复制块B0BM1,其中MN,N为云存储系统中的存。

13、储节点总数;0009步骤2选取M个存储节点存储所述M个数据块B0BM1和所述M个复制块B0BM1,其中每一存储节点分别存储一个数据块和一个复制块,即第I个存储节点存储数据块BI和数据块BI1的复制块BI1,0IM1,第M个存储节点存储数据块BM1和数据块B0的复制块B0;0010步骤3另随机选取不同于所述M个存储节点的K1个存储节点分别存储使用标准RS编码所形成的K1个奇偶校验块,其中K表示所述云存储系统中的容错节点数,KM;0011步骤4根据故障节点所存储的数据内容确定数据恢复所需要用到的数据块或复说明书CN104052576A2/6页6制块或奇偶校验块,并由所述所需要用到的数据块或复制块或。

14、奇偶校验块所在的存储节点进行数据恢复计算;0012步骤5将所述数据恢复计算的结果传输到替换所述故障节点的替换节点上;0013步骤6所述替换节点计算并重组所述数据块或所述复制块或所述奇偶校验块以实现数据恢复。0014总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下优点0015节约带宽,不需要通过大量的数据块数据传输进行数据块的恢复,通过使用RS校验码及利用存储节点自身的计算性能,先在存储节点对数据恢复所需的数据进行相应计算,对计算后的数据内容传输至替换节点,再在替换节点进行数据计算和重组以实现数据块的恢复,减少了数据传输量,减轻了数据恢复节点的计算负担;0016节省空间,MDS编。

15、码仅存储1个复制块以及少量校验块,既保证了数据恢复的功能,又节省了分布式云存储系统的存储空间。附图说明0017图1为本发明采用HPCM,K,CK数据恢复算法的云存储环境的数据布局结构图;0018图2为本发明一种典型的HPC数据恢复算法模型HPC4,2,C2的示意图;0019图3为本发明采用A行N列规范化的数据布局结构图;0020图4A为本发明损坏数据块中不存在奇偶校验块的数据恢复方法的流程图;0021图4B为本发明损坏数据块中存在奇偶校验块的数据恢复方法的流程图。具体实施方式0022为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处。

16、所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。0023本发明实施例中将会用到一些新的定义,其中的名词解释如下0024数据块DATABLOCK是本发明数据恢复方法中的基本单位。本发明实施例中有三种数据块原生块NATIVEBLOCK、复制块REPLICABLOCK和校验块PARITYBLOCK。0025HPCM,K,CK本发明数据恢复算法,称为HPC数据恢复算法,其中,M表示对云存储系统在处理数据对象时,数据分块的个数;K表示校验块数目,即可对K个节点故障进行容错;CK表示HPC数据恢复算法中。

17、需要用到的系数矩阵。0026表示M/2的值若不存在小数位,则直接取M/2;若存在小数位则该值为M/2的整数部分加1。0027J1M表示J1模M的值,例如若J4、M4,则J1M1;若J1,M5,则J1M2。0028一、数据编码0029图1所示为本发明采用HPCM,K,CK算法的云存储系统的数据布局结构图。设云存储系统中有N个存储节点,对每个存储在该云存储系统中的对象,做以下处理设存储对象的大小为M,将该存储对象分为MMN个大小相同的数据块,记为B0BM1,各数据块说明书CN104052576A3/6页7采用传统的MDS编码。将数据分块可使云存储环境中的各种数据整齐化,使得更加容易组织和管理。00。

18、30使用标准的RS编码形成K1个奇偶校验块KM,记为P0PK2,编码公式如下00310032如下式所示,AI,J组成一个系数矩阵CK,云存储系统初始化时存储了用于计算校验码的该系数矩阵CK00330034当系数矩阵CK中任意K1K1的子矩阵既是满秩矩阵也是可逆矩阵时,该云存储系统能允许在至多K个存储节点发生错误时恢复数据。由公式1所示,奇偶校验块P0PK2中的数据计算采用非常简单的异或运算,是作为远程节点的硬件设备都能够高效完成的,比起一些复杂的校验码构建要容易得多。0035接着,拷贝所有的数据块得到2M个数据块,其中有M个原生块B0BM1和M个复制块B0BM1,复制块和其对应的原生块没有区别。

19、,在云存储系统中可以进行读写。在云存储系统的N个存储节点中随机选取M个存储节点存储该2M个数据块,该M个存储节点记为D0DM1,每个存储节点存储两个连续的数据块,即数据块BI和数据块BI1的复制块BI1,0IM1,最后一个存储节点存储的是数据块BM1和数据块B0的复制块B0。同时,除之前选取的M个存储节点外,另外随机选取K1个存储节点分别存储K1个奇偶校验块P0PK2。0036二、数据读写0037对于普通客户端通过读取本地数据或其副本来获取数据。在云存储系统中,通过同时向原生块和复制块发送读请求,读取更快响应请求的存储节点的数据,提高了数据读取的性能。0038当客户端向分布式存储系统中发送写请。

20、求,不仅需要写入原生块和复制块,还需要重新计算修改第K1块奇偶校验块的数据内容,因此写入过程比单纯的数据复制要复杂一些。可是,与复制块写入相比,校验块数据的计算简单高效,只需要各个相关远程节点在本地进行计算,再将数据传输到存储校验块的远程节点上,进行简单的异或运算即可,比起3副本的HADOOP在写入数据过程的写入3副本要高效。0039三、HPCM,K,CK数据恢复算法0040在本发明实施例中,分布式存储系统以块为存储单位,数据恢复也以块为单位。0041分布式存储系统中出现的节点故障可能有两种类型一种是单块故障,一种是多块故障,由于云存储系统下数据块是随机存储在各远程节点上的,多块故障可能会导致。

21、多个节点的数据故障。00421、单块故障说明书CN104052576A4/6页80043如果一个数据块BI0IM或其复制块BI失效,可以通过读取其对应复制块或原生块直接得到数据。此时,读写过程和数据传输中的成本消耗与普通云存储系统中的读过程相同。0044如果一个奇偶校验块PI0IK1失效,则需要重构该奇偶校验块PI内的数据。在HPC数据恢复算法中,选择个存储节点或,对每个存储节点DJ,或进行如下操作00451从存储原生块BJ和复制块BJ1M的存储节点DJ读取这两个数据块的数据,00462读取系数矩阵CK中的AI,J和AI,J1M;00473采用折半算法计算TMPJAI,JBJAI,J1MBJ1。

22、M的值,00484将传输给存储了该奇偶校验块PI的存储节点;00495进行简单的异或XOR运算,获得奇偶校验块PI的数据如下00500051在本发明实施例中,TMPJ的值即为需要传输给替换节点的数据,在本发明实施例中,替换节点可以是故障节点本身若故障节点的故障可恢复或其他未存储数据的远程节点除之前选定的MK1个存储节点外的某存储节点,即剩余的NN个存储节点中的某存储节点。本技术方案并没有将各个数据块的数据全部传输给存储失效的奇偶校验块PI的存储节点自行进行数据组织,而是利用各个存储节点的计算功能,减少了单个存储节点的计算负担,提高了数据恢复的效率。00522、多块故障0053对于多个数据块失效。

23、,将存储节点分成两个部分,一个部分是前M个存储数据块的存储节点D0DM1,另一个部分是后K1个存储奇偶校验块的存储节点DMDMK2。0054对于前M个存储节点,只有存储节点DJ1M和DJ0JM存储的数据同时失效才导致数据块BJ的数据失效,需要使用奇偶校验块恢复数据。否则,只需要读取相应的原生块或复制块来重构数据。0055对于后K1个存储节点,如果存储节点DIM存储的数据失效,即奇偶校验块PI失效,则需要通过未失效的数据进行重构。0056这里以K2讨论HPC数据恢复算法的具体实现,按照HPC数据恢复算法的数据组织方式,由于K2,则只有一个奇偶校验块P0。因此采用简单的奇偶校验方式,令系数矩阵CK。

24、中AI,J的值全为1,如下所示说明书CN104052576A5/6页900570058则根据公式1有,奇偶校验块0059如图2为本发明一种典型的HPC数据恢复算法模型HPC4,2,C2的示意图。0060如果奇偶校验块P0失效,存储节点D0计算存储节点D2计算将TMP0、TMP2传输到管理节点或需要替换数据的存储节点,即存储失效的奇偶校验块P0的存储节点上,在该存储节点上计算以恢复奇偶校验块P0的数据。0061如果某一存储节点上存储的数据块失效,则只需要读取其对应的未失效的原生块或复制块来恢复数据。例如,若存储节点D1上存储的数据块B1失效,则读取存储节点D0上存储的复制块B1即可恢复数据;若存。

25、储节点D1上存储的数据块B2失效,则读取存储节点D2上存储的原生块B2即可恢复数据。0062图3所示为本发明采用A行N列规范化数据布局的结构示意图。按照如图1所示的数据块分布,将HPC数据恢复算法规范化,如图3所示,用2行N列矩阵表示各数据块在存储节点中的分布,其中NMK1,表示一个数据对象的存储空间,每个数据块作为矩阵中的一个元素,记为CI,J0I2,0JN。其中,第2行的第M第MK2个元素为空,其余元素分为三种类型原生元素、复制元素和校验元素,在本发明实施例中,原生元素和复制元素统称为数据元素。第1行前M个元素为原生元素,第1行第M第MK2个元素为校验元素,第2行元素前M个元素为复制元素。。

26、根据数据组织的规律,参照公式1中给出的计算方式,HPCM,K,CK数据恢复算法编码参数化公式如下0063复制元素C1,JC0,J1M0064校验元素0065图4A、图4B所示分别为本发明损坏数据块中不存在奇偶校验块和存在奇偶校验块的数据恢复方法的流程图,图4A、图4B将结合图3进行说明。令F0、F1F0F1分别为两个故障节点存储的数据元素或校验元素的标号,当0F0F1N时,进行如下数据恢复过程00661如果0F0F1M,即两个损坏数据块中不存在奇偶校验块,则执行步骤6,具体如图4B所示,如果0F0MF1M,即和为数据元素、为校验元素,则执行步骤2;00672从未故障的存储节点中本地读取和这两块。

27、的数据内容分别直接恢复和的数据,令一个整数SUM值为0,如果F0可以被2整除,令J1,否则令J0,执行步骤3;00683本地存储节点DJ读取C0,J和C1,J两数据块的数据,计算表说明书CN104052576A6/6页10示C0,J异或C1,J,将计算得到的结果TMPJ传输给替换该故障节点的替换节点,在本发明实施例中,替换节点可以是故障节点本身若故障节点的故障可恢复或其他未存储数据的远程节点除之前选定的MK1个存储节点外的某存储节点,即剩余的NN个存储节点中的某存储节点,在替换节点中计算执行步骤4;00694令JJ2,如果JM,执行步骤5,否则继续执行步骤3;00705运算结束,替换节点中SU。

28、M的值即为替换失效奇偶校验块的数据值,节点数据恢复完成;00716如果F01F1,即F1对应的数据块为F0对应的数据块的下一块,执行步骤7,如果F01MF1,即在数据对象分块过程中,F0为第一个原生块,F1为最后一个原生块,执行步骤8,否则执行步骤12;00727从未故障的存储节点中本地读取和这两元素的数据分别直接恢复和的数据,令如果F0可以被2整除,令J1,否则令J0,执行步骤9;00738从未故障的存储节点中本地读取和这两块的数据分别直接恢复和的数据,令J0,执行步骤9;00749如果JF0,本地存储节点DJ读取C0,J和C1,J两数据元素的数据,计算将计算得到的结果TMPJ传输给替换该故。

29、障节点的替换节点,在替换节点中计算执行步骤10,如果JF0,则直接执行步骤11;007510令JJ2,如果JM,执行步骤11,否则继续执行步骤9;007611本地存储节点DM读取校验元素C0,M的数据,将校验元素C0,M数据传输给替换节点,替换节点计算当F01F1时,SUM值等于和数据元素的值;当F01MF1时,SUM等于和的值,节点数据恢复完成;007712从未失效的存储节点中读取数据元素和的数据,分别恢复失效数据块和的数据,节点数据恢复完成。0078当有多个大于两个连续存储节点发生故障时,需要计算和存储多个校验块用于数据恢复,数据恢复方法与上述数据恢复方法类似,根据数据块和校验块之间的异或关系进行数据恢复。0079本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。说明书CN104052576A101/4页11图1图2说明书附图CN104052576A112/4页12图3说明书附图CN104052576A123/4页13图4A说明书附图CN104052576A134/4页14图4B说明书附图CN104052576A14。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1