[发明专利]一种基于网络编码的分布式存储方法及其装置有效
申请号: | 201310219794.6 | 申请日: | 2013-06-04 |
公开(公告)号: | CN103336785A | 公开(公告)日: | 2013-10-02 |
发明(设计)人: | 冯丹;李白;施展;柳青;焦田丰 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 方放 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于网络编码的分布式存储方法及其装置,属于计算机存储技术领域,解决现有基于网络编码的分布式存储方法所存在的存储节点的磁盘IO过大的问题。本发明的分布式存储方法,适用于分布式存储系统,包括数据编码步骤、数据解码步骤和数据修复步骤;本发明的分布式存储装置,包括数据编码模块、数据解码模块和数据修复模块。本发明在数据节点损坏时,从d个数据节点下载不多于原始文件D大小的数据,修复损坏的数据,有效地减小修复带宽;直接从d个数据节点中下载随机选择的γ个编码数据块,数据块在数据节点内没有进行线性运算,在保证数据高可用性的前提下能够减小存储节点的磁盘IO,有效地提高数据节点的磁盘IO效率。 | ||
搜索关键词: | 一种 基于 网络 编码 分布式 存储 方法 及其 装置 | ||
【主权项】:
1.一种基于网络编码的分布式存储方法,适用于分布式存储系统,包括数据编码步骤、数据解码步骤和数据修复步骤,分布式存储系统由一个名字节点NS和P个存储节点{DS1,DS2,DS3...DSp}构成,P≥3,其中用于存储文件分块的存储节点称为数据节点,为n个,3≤n≤p;其特征在于:(1)数据编码步骤,包括下述子步骤:(1.1)数据分块:将原始文件D分割为c块等大小的原始数据块Dg,g=0,1...c-1,对于不足一块原始数据块大小的剩余原始数据DB,先记下DB的大小LB,再将其使用零填充补足为原始数据块大小,作为原始数据块Dc;c=k×(d+1+i-k)-(i+1)×i/2,其中,k为恢复出原文件所需最少数据节点数目,2≤k<n;d为修复一个损坏节点时可用数据节点的数目,k≤d<n;i为编码冗余参数,0≤i≤k-1;(1.2)冗余编码:将c个原始数据块Da与编码矩阵Me进行有限域2q内的运算,编码为r个编码数据块Cb,q=4、8、16、32或64;b=0,2,...r-1;r=(d+1+i-k)×n;C b = Σ g = 0 c - 1 a b , g D g ; ]]> 其中,编码矩阵Me中的矩阵元素ab,g为属于有限域2q的整数,0≤ab,g≤2q-1,编码矩阵Me为一个r行c列的范德蒙矩阵;每个Cb都是c个原始数据块(Dg)g=0,1...c-1的线性组合,线性组合系数对应为编码矩阵Me第b行的行向量Vb,即每个Cb对应编码矩阵Me第b行的行向量Vb;(1.3)生成元数据文件Dmeta:将编码矩阵Me以及参数n、k、d、i、q和LB保存在元数据文件Dmeta中;(1.4)数据存储:将r个编码数据块Cb存放在n个数据节点df上,f=0,1,...n-1,每个数据节点存储α=d+1+i-k个编码数据块,并存储一份Dmeta的副本;数据节点df存储的数据块为Ct,t=f×α,f×α+1,...(f+1)α-1;(2)数据解码步骤,包括下述子步骤:(2.1)获取文件元数据信息:下载原始文件D的元数据文件Dmeta,得到编码矩阵Me以及参数n、k、d、i、q和LB;(2.2)下载可用数据块:判断n个数据节点中可用数据节点数是否小于k个,是则数据读取失败,退出;否则任意选择k个可用数据节点,k个数据节点中包含rk=k×α=k×(d+1+i-k)个编码数据块,共对应编码矩阵Me中rk个行向量:
从编码矩阵Me这rk个行向量中选择c个行向量,要求这c个行向量组成的方阵Me1可逆,然后下载这c个行向量所对应的c个编码数据块:Cb1,Cb2...Cbc;(2.3)冗余解码:对所述方阵Me1矩阵求逆,得到其逆矩阵Me1-1,逆矩阵Me1-1中元素记为bgj,其中行数g=0,1,...c-1,列数j=0,1,...c-1;将逆矩阵Me1-1与下载的c个编码数据块做有限域2q内的运算,得到c个原始数据块Dg,D g = Σ j = 0 c - 1 b gj C bj , ]]> 其中g=0,1...c-1;Dg为c个编码数据块Cb0,Cb1...Cb(c-1)的线性组合,线性组合的系数为逆矩阵Me1-1对应的行向量Vdi;(2.4)恢复数据:将冗余解码后得到的c个原始数据块Dg按其下标的顺序D0,D1...Dc-1依次写入到恢复文件D0中,最后一块原始数据块Dc-1只写其前LB个字节到恢复文件D0中,形成恢复文件D0;(3)数据修复步骤,当一个数据节点dv损坏时,v为0、1、...或n-1,其存储的编码数据块的修复包括下述子步骤:(3.1)获取文件元数据信息:下载原始文件D的元数据文件Dmeta,得到编码矩阵Me以及参数n、k、d、i、q和LB;设置下载数据块数目变量γ的初值:γ=(2×c×d)/((2×k-i-1)×i+2×k×(d-k+1));(3.2)计算数据块修复信息,包括下述过程:(3.2.1)置循环次数变量N1=0,判断n个数据节点中可用数据节点数是否小于d个,是则数据修复失败,退出;否则进行过程(3.2.2);(3.2.2)从d个可用数据节点中随机选择γ个编码数据块,将它们对应的编码矩阵Me的γ个行向量Vh组合为γ行c列矩阵Vs,h=1,2...γ;置N1=N1+1;(3.2.3)生成一个(d+1+i-k)行γ列的修复矩阵Mr=[mp,h],其中每个元素mp,h从有限域2q内随机取值,p=1,2,...(d+1+i-k),h=1,2,...γ;(3.2.4)建立r行c列的新编码矩阵Me’,Me’由原有行向量和新行向量V′p构成,原有行向量为可用数据节点所包括的编码数据块对应的编码矩阵Me中的行向量,按其在Me中原有位置存在于Me’中,做有限域2q内的矩阵Mr与矩阵Vs乘法运算,得到新行向量V′z:V p ′ = Σ h = 1 γ m p , h V h , ]]> 用新行向量V′p代替编码矩阵Me中损坏的数据节点dv所存储的α个编码数据块对应的行向量Vz,其中z=v×α,v×α+1,...(v+1)×α-1;(3.2.5)检查所述新编码矩阵Me’是否满足MDS性质,是则进行子步骤(3.3),否则进行过程(3.2.6);(3.2.6)判断是否N1≤L,是则转过程(3.2.2);否则置N1=0,置γ=γ+1,然后转过程(3.2.2),最大循环次数L=1000~3000;(3.3)更新元数据文件:将元数据文件Dmeta中的编码矩阵Me替换为新编码矩阵Me’,形成更新后的元数据文件Dmeta’,将其拷贝到各个数据节点;(3.4)修复数据块:下载(3.2.2)中所随机选择的γ个编码数据块(Ce1,Ce2,...Ceγ),做有限域2q内矩阵Mr与γ个编码数据块(Ce1,Ce2,...Ceγ)的运算,得到修复的数据块Cp’:C p ′ = Σ h = 1 γ m p , h C eh ; ]]> Cp’为γ个编码数据块(Ce1,Ce2,...Ceγ)的线性组合,线性组合的系数为修复矩阵Mr对应的行向量Vr;(3.5)存储数据块:将修复的数据块Cp’存储到一个新的可用数据节点上。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310219794.6/,转载请声明来源钻瓜专利网。