一种基于纠删码的数据块重建方法技术

技术编号:11210406 阅读:69 留言:0更新日期:2015-03-26 19:51
一种基于纠删码的数据块重建方法,属于计算机存储技术领域,解决现有数据块修复方法需要传输大量数据的问题,以减少重建数据的传输量。本发明专利技术包括数据分块步骤、构造生成矩阵G步骤、生成校验块步骤、检查数据块状态步骤、构造修复矩阵步骤和修复数据块步骤。本发明专利技术将原始文件分为k个数据块,将每个数据块继续等分为r个数据片;k个数据块编码为m个校验块,每个校验块也包含r个校验片。重建任意一个数据块时,从剩余的每个数据块的r个数据片和校验块的r个校验片中取r/m片(该方法保证r被m整除),从而重建一个数据块只需要总量(m+k-1)r/m的数据片,相对里德-所罗门编码重建一个数据块的数据量,有了明显的减少。

【技术实现步骤摘要】

本专利技术属于计算机存储
,具体涉及, 可减少重建数据传输。
技术介绍
从RAID(独立硬盘冗余阵列)到分布式存储系统,纠删码广泛应用于存储系统中, 用于防止部分数据丢失或数据服务器宕机导致的数据不可访问。 纠删码是一种数据保护的编码方法,它首先将原始数据分为等大的数据块,然后 再将数据块编码为校验块。当若干个数据块或校验块丢失时,纠删码技术保证原始数据仍 然可以恢复。 传统的编码方法将原始数据等分为k份数据块,编码生成m份校验块并将它们存 储在k+m个不同的存储节点。存储节点是存储设备的逻辑抽象,既可以是一个磁盘也可以 是一个存储服务器。所有(k+m)块数据块和校验块中的任意k块都可以重建出k个数据块。 但是这类纠删码也面临着一个修复带宽问题:重建一个数据块需要该数据块大小的k倍磁 盘I/O和网络流量,占用大量的存储资源和网络资源。 以(n,k)里德-所罗门编码为例,η是数据块和校验块的总个数,k是数据块个 数,m = n-k是校验块个数。当使用(n,k)里德-所罗门编码对数据量为M的文件进行编 码时,首先将文件等分为k个数据块:DpDp. .. ,每个数据块大小为M/k,接着计算生成 矩阵和k个数据块的乘积(计算基于有限域),得到m个校验块CtlX1、…、Clrt,每个校验块 大小也是M/k。(n,k)里德-所罗门编码的生成矩阵是一个基于有限域GF(2W)的m行k列 的矩阵,该矩阵可以是变换后的范德尔蒙德矩阵(Vandermonde matrix),也可以是柯西矩 阵(Cauchy matrix)。当一个数据块或校验块失效时,需要重建数据块或校验块以保证可靠 性。如果失效的是校验块,利用k块数据块可以重新编码得到;如果失效的是数据块,利用 剩余n-1块数据块和校验块中的任意k块可重建该数据块。无论是失效的是一块数据块还 是一块校验块,都需要k块整块数据块或校验块进行重建,所需要的数据量是M。 现有减少单数据节点失效所需重建数据量的编码方法往往牺牲了最优的存储 效率或者最大距离可分(MDS)性质。简单再生码(Simple Regenerating Codes,见论 文:〃Simple regenerating codes :Network coding for cloud storage. INFOCOM, 2012Pr〇ceedings IEEE. IEEE,2012.)在每个存储节点多存储1/f的数据量,f越大,额外的 存储开销越小,但相应的修复带宽也越大,反之亦然。局部重建码(Local Reconstruction Codes,见论文:Erasure Coding in Windows Azure Storage. ^USENIX Annual Technical Conference. 2012.)将数据块分组,不仅在组内进行编码,并在组间进行编码,这样可以将 大部分单点失效的重建局限在组内进行,从而减少了重建数据量,但局部重建码需要额外 的存储开销,且不满足MDS性质。功能性最小存储再生码(Functional Minimum Storage Regenerating codes,见论文:NCCloud :A Network-Coding-Based Storage System in a Cl〇ud-〇f-Cl〇uds[J]. 2013.)虽然存储和修复单个节点失效所需要的数据量都是最优的, 但存在计算开销大,且保存的不是原来的数据,因此读取数据时需要解码等缺点。
技术实现思路
本专利技术提供,解决现有数据块修复方法需要传 输大量数据的问题,以减少重建数据的传输量。 本专利技术所提供的,包括数据分块步骤、构造生 成矩阵G步骤、生成校验块步骤、检查数据块状态步骤、构造修复矩阵步骤和修复数据块步 骤,其特征在于: (1)数据分块步骤: 将数据量为M的原始文件等分为k个数据块IV j = 0.....k-1,再将k个数据块 分别保存在k个数据节点上,进而将各数据节点上的数据块等分为r个数据片D M,P = 〇.....r-1,r = mH,k彡2, m彡2 ;等分过程中不足部分用0补齐并记录不足数据块或数 据片的长度; 对所有数据片赋予序号,数据片I^p为第jXr+p+l个数据片; (2)构造生成矩阵G步骤: 生成矩阵G是m行、k列的分块矩阵,包括mX k个子矩阵Gi,本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201410717059.html" title="一种基于纠删码的数据块重建方法原文来自X技术">基于纠删码的数据块重建方法</a>

【技术保护点】
一种基于纠删码的数据块重建方法,包括数据分块步骤、构造生成矩阵G步骤、生成校验块步骤、检查数据块状态步骤、构造修复矩阵步骤和修复数据块步骤,其特征在于:(1)数据分块步骤:将数据量为M的原始文件等分为k个数据块Dj,j=0、...、k‑1,再将k个数据块分别保存在k个数据节点上,进而将各数据节点上的数据块Dj等分为r个数据片Dj,p,p=0、...、r‑1,r=mk‑1,k≥2,m≥2;等分过程中不足部分用0补齐并记录不足数据块或数据片的长度;对所有数据片赋予序号,数据片Dj,p为第j×r+p+1个数据片;(2)构造生成矩阵G步骤:生成矩阵G是m行、k列的分块矩阵,包括m×k个子矩阵Gi,j:G0,0G0,1...G0,k-1G1,0G1,1...G1,k-1............Gm-1,0Gm-1,1...Gm-1,k-1,]]>其中,每个子矩阵Gi,j为一个r行、r列的方阵,满足下面等式:Gi,j=(Imi+)⊗j⊗(Im)⊗(k-1-j)·αi,j,]]>i=0~m‑1,j=0~k‑1;其中,表示矩阵的张量乘(也称为Kronecker乘),Im表示m行、m列的单位矩阵,表示单位矩阵Im所有元素循环左移i位后的结果,当i=0时,表示j个连续张量乘的结果,αi,j是(m+k,k)‑里德‑所罗门编码生成矩阵中第i行第j列元素;(3)生成校验块步骤:分别计算生成矩阵G中各行子矩阵和所有数据块的乘积,得到m个校验块Ci,i=0~m‑1,再将m个校验块分别保存在m个数据节点上,第i个校验块Ci为生成矩阵G的第i行子矩阵与k个数据块的乘积:Ci=Ci,0Ci,1...Ci,r-1=Gi,0Gi,1...Gi,k-1·D0D1...Dk-1;]]>校验块Ci再等分为r个校验片Cj,p,p=0~r‑1;对所有校验片赋予序号,校验片Cj,p为第i×r+p+1个校验片;(4)检查数据块状态步骤:定期依次检查各数据节点上的数据块是否出错或丢失,是则转步骤(5);否则不作处理;(5)构造修复矩阵步骤,包括下述子步骤:(5.1)当第i个数据节点上的数据块Di出错或丢失,将生成矩阵G中第i列的子矩阵全设置为0,构成第一中间矩阵GA;(5.2)在第一中间矩阵GA中选取任意一个非零子矩阵,在该非零子矩阵中选取任意一个非零矩阵元素作为种子,在第一中间矩阵GA中标记该非零矩阵元素所在的行向量与列向量;(5.3)对所标记的行向量与列向量中的每个非零矩阵元素,在第一中间矩阵GA中标记该非零矩阵元素所在的行向量和列向量;(5.4)判断是否有新的行向量和列向量被标记,是则转子步骤(5.3),否则进行子步骤(5.5);(5.5)构成修复矩阵Mr:首先生成一个k×r行,k×r列的单位矩阵GB;将第一中间矩阵GA标记的列向量序号作为行向量序号,从单位矩阵GB中选取对应的行向量,作为第一行向量组;将第一中间矩阵GA标记的行向量序号作为行向量序号,从生成矩阵G中选取对应的行向量,作为第二行向量组;将所述第一行向量组置于第二行向量组之上,构成第二中间矩阵Gc,将第二中间矩阵Gc中全零列删除得到正方矩阵Gd,然后从正方矩阵Gd的逆矩阵中选择从i×r/m开始的r个行向量,构成r行、(k+m‑1)×r/m列的修复矩阵Mr;(6)修复数据块步骤:选取第一中间矩阵GA标记的列向量的列序号作为数据片序号,其所对应的各数据片作为数据片序列SDr,数据片数量为(k‑1)×r/m,选取第一中间矩阵GA标记的行向量的行序号作为校验片序号,其所对应的各校验片作为校验片序列SCr,校验片数量为m×r/m;通过计算Mr和数据片序列SDr和校验片序列SCr的乘积重建数据块Di:Di=Mr×SDrSCr.]]>...

【技术特征摘要】
1. 一种基于纠删码的数据块重建方法,包括数据分块步骤、构造生成矩阵G步骤、生成 校验块步骤、检查数据块状态步骤、构造修复矩阵步骤和修复数据块步骤,其特征在于: (1) 数据分块步骤: 将数据量为M的原始文件等分为k个数据块j=O.....k-1,再将k个数据块分别保 存在k个数据节点上,进而将各数据节点上的数据块Dj等分为r个数据片Dj>p,p=O..... r-1,r=k多2,m多2 ;等分过程中不足部分用O补齐并记录不足数据块或数据片的 长度; 对所有数据片赋予序号,数据片Ip为第jXr+ρ+Ι个数据片; (2) 构造生成矩阵G步骤: 生成矩阵G是m行、k列的分块矩阵,包括mXk个子矩阵Gi, j:其中,每个子矩阵G._ 为一个r行、r列的方阵,满足下面等式: 其中,(g表示矩阵的张量乘(也称为Kronecker乘),I111表示m行、m列的单位矩阵,/= 表示单位矩阵Im所有元素循环左移i位后的结果,当i= 〇时,=/m,(tf表示j 个G连续张量乘的结果,αμ是(m+k,k)_里德-所罗门编码生成矩阵中第i行第j列元 素; (3) 生成校验块步骤: 分别计算生成矩阵G中各行子矩阵和所有数据块的乘积,得到m个校验块Ci,i= 0?m-Ι,再将m个校验块分别保存在m个数据节点上,第i个校验块Ci为生成矩阵G的第i行 子矩阵与k个数据块的乘积:校验块(^再等分为r个校验片CiP,p= 0?r-Ι;对所有校验片赋予序号,校验片Cj,P为第iXr+ρ+Ι个校验片; (4) 检查数据块状态步骤: 定期依次检查各数据节点上的数据块是否出错或丢失,是则转步骤(5);否则不作处 理; (5) 构...

【专利技术属性】
技术研发人员:冯丹柳青施展李剑欧阳梦云
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1