[发明专利]一种最小存储再生码的编码和存储节点修复方法有效
| 申请号: | 201380001960.3 | 申请日: | 2013-02-26 |
| 公开(公告)号: | CN103688514B | 公开(公告)日: | 2017-07-11 |
| 发明(设计)人: | 李挥;侯韩旭;朱兵 | 申请(专利权)人: | 北京大学深圳研究生院;李挥 |
| 主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F11/14 |
| 代理公司: | 深圳市科吉华烽知识产权事务所(普通合伙)44248 | 代理人: | 胡玉 |
| 地址: | 518055 广东省深圳*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 最小 存储 再生 编码 节点 修复 方法 | ||
1.一种最小存储再生码的编码方法,其特征在于,包括如下步骤:
A)将原始数据平均分为n个数据块,得到n个第一数据包;所述第一数据包表示为Si,i=1,2,...,n;其中,所述n为偶数;
B)设置n个存储节点及正整数k,使n=2k,其中,修复节点数为k+1;
C)分别以第i个第一数据包的下一个第一数据包为起点,对该起点及其随后连续k-1个第一数据包的数据头或尾部加入设定数量的比特0,得到k个第二数据包,运算所述k个第二数据包得到一个编码数据包;重复上述步骤得到n个编码数据包;所述编码数据包表示为Pi,i=1,2,...,n;其中,所述第一数据包的第n个和第1个是连续的,连续的k个第一数据包中一个为第n个第一数据包时,其下一个连续的第一数据包是第1个第一数据包;Pi表示第i个第一数据包的下一个第一数据包为起点得到的编码数据包;
D)将第i个第一数据包和以该第一数据包的下一个第一数据包为起点得到的编码数据包存储在第i个存储节点;
所述步骤C)进一步包括如下步骤:
C1)得到n个编码识别码,每个编码识别码对应于一个第一数据包;每个编码识别码包括k个数值,这些数值指示出每个第一数据包在以和该编码识别码对应的第一数据包作为起点进行编码时,应该在该第一数据包的数据头部添加比特0的个数;
C2)以第i个第一数据包的下一个第一数据包为起点,对该起点及跟随在该起点后的、连续的k-1个第一数据包分别依据第i+1个第一数据包对应的编码识别码进行在其数据头部或尾部添加设定数量的比特0,得到k个第二数据包;对所述k个第二数据包进行运算,得到一个编码数据包;
C3)依次分别将步骤C2)中作为起点的第一数据包之后的第一数据包作为起点,重复步骤C2),直到得到n个编码数据包。
2.根据权利要求1所述的最小存储再生码的编码方法,其特征在于,所述步骤C1)进一步包括:
C11)判断k是否素数,如是,执行步骤C12);否则,执行步骤C13);
C12)按照分别将a=1,2,...,n带入数列(0,a,2a,...,(k-1)a),并对得到的数列中的元素分别取k的模,得到n个编码识别码;其中,分别是该编码识别码的元素值;
C13)取大于k的最小素数p,并按照分别将a=1,2,...,n带入数列(a-1,2a-1,2a,...,ka-1),并对得到的数列中的元素分别取p的模,得到n个编码识别码。
3.根据权利要求2所述的最小存储再生码的编码方法,其特征在于,所述步骤C2)进一步包括:
C21)取得第i+1个第一数据包对应的编码识别码元素中的最大值,即
C22)在第i+1个第一数据包的数据头部添加该编码识别码中第h个元素值个比特0,而在第i+1个第一数据包的数据尾部添加个比特0,得到一个第二数据包;由所述第i+1个第一数据包开始,对连续的k个第一数据包重复上述步骤,得到k个第二数据包;其中,h是编码识别码元素在该编码识别码中的序号,其取值随本步骤中选择的第一数据包的编号增加,依次由1增加到k;
C23)将得到的k个第二数据包相加,所述相加为将这些数据包彼此相互异或,得到第i个编码数据包,即其中,Pi表示以第i个第一数据包的下一个第一数据包为起点得到的编码数据包,sj(rti)表示第j个第二数据包,j是(i+1)mod n到(i+k)mod n之间的正整数;t随着连续的k个第二数据包依次取值1到k,即所取得连续的第一个第二数据包时t=1,所取得连续的第二个第二数据包时t=2,并依此类推,直到取得连续的第k个第二数据包时t=k。
4.根据权利要求3所述的最小存储再生码的编码方法,其特征在于,所述存储节点中的第一数据包和编码数据包分别存储,表示为第i个存储节点存储的数据包集合为(Si,Pi)。
5.根据权利要求4所述的最小存储再生码的编码方法,其特征在于,原始文件的数据量为n。
6.一种修复如权利要求1所述的编码方法中存储节点的存储节点修复方法,其特征在于,包括如下步骤:
I)确认第i个存储节点失效,并取得第i+1个第一数据包对应的编码识别码;
J)依次下载第i+1到i+k个可用存储节点上的第一数据包,所述下载第一数据包的k个存储节点是连续的;通过对下载的k个第一数据包进行编码异或运算得到所述第i个存储节点的编码数据包;
K)下载第i-1个存储节点的编码数据包,并取得所述第i+1到第i+k-1个存储节点的第一数据包,所述下载第一数据包的k-1个存储节点是连续的;对下载的编码数据包和k-1个第一数据包运算后得到所述第i个存储节点的第一数据包;
L)组合所述运算得到的第一数据包和编码数据包并存入新的第i个存储节点;
所述步骤J)进一步包括:
J1)取出所述编码识别码中的k个编码识别码元素;
J2)取得所述编码识别码元素中的最大值,即
J3)在第i+1个第一数据包的数据头部添加该编码识别码中第h个元素值个比特0,而在第i+1个第一数据包的数据尾部添加个比特0,得到一个第二数据包;由所述第i+1个第一数据包开始,对连续的k个第一数据包重复上述步骤,得到k个第二数据包;其中,h是编码识别码元素在该编码识别码中的序号,其取值随本步骤中选择的第一数据包的编号增加,依次由1增加到k;
J4)将得到的k个第二数据包相加,所述相加为将这些数据包彼此相互异或,得到第i个编码数据包,即其中,Pi表示以第i个第一数据包下一个第一数据包为起点得到的编码数据包,sj(rti)表示第j个第二数据包,j是(i+1)mod n到(i+k)mod n之间的正整数;t随着连续的k个第二数据包依次取值1到k,即所取得连续的第一个第二数据包时t=1,所取得连续的第二个第二数据包时t=2,并依此类推,直到取得连续的第k个第二数据包时t=k;
所述步骤K)进一步包括:
K1)下载第i-1个存储节点的编码数据包,并取得所述第i+1到第i+k-1个存储节点的第一数据包,所述下载第一数据包的k-1个存储节点是连续的;
K2)对下载的第i-1个存储节点编码数据包和k-1个第一数据包异或运算后得到所述第i个存储节点对应的第二数据包,即si(r1i)表示第i个第二数据包,j是(i+1)mod n到(i+k-1)mod n之间的正整数;t随着连续的k-1个第二数据包依次取值2到k,即所取得连续的第一个第二数据包时t=2,所取得连续的第二个第二数据包时t=3,并依此类推,直到取得连续的第k-1个第二数据包时t=k;
K3)取出第i个第一数据包对应的编码识别码中的k个编码识别码元素;
K4)将得到的第i个第二数据包按照第i个第一数据包对应的编码识别码去掉其数据头部和尾部添加的比特0,得到第i个存储节点的第i个第一数据包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学深圳研究生院;李挥,未经北京大学深圳研究生院;李挥许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380001960.3/1.html,转载请声明来源钻瓜专利网。





