一种基于改进型纠删码的失效数据修复方法技术

技术编号:9924681 阅读:69 留言:0更新日期:2014-04-16 16:22
本发明专利技术公开了一种基于改进型纠删码的失效数据修复方法,目的是设计针对数据访问特点的高效的失效数据修复方法。技术方案是构建一个由1个控制节点和N个存储节点组成的分布存储系统,控制节点安装有数据写入管理程序和数据修复程序;存储节点安装有数据写入程序和数据读取程序;数据写入管理程序接收用户提交的数据对象,对其进行分块和编码计算,将得到的数据块写入存储节点;数据修复程序接收失效数据子块修复请求,从存储节点读取可用数据子块,进行解码计算,得到修复的数据子块。采用本发明专利技术可提高系统的数据可用性,降低数据块失效对数据访问的影响,减少数据访问涉及的失效数据量,减少网络传输数据量,提高失效数据的修复效率。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,目的是设计针对数据访问特点的高效的失效数据修复方法。技术方案是构建一个由1个控制节点和N个存储节点组成的分布存储系统,控制节点安装有数据写入管理程序和数据修复程序;存储节点安装有数据写入程序和数据读取程序;数据写入管理程序接收用户提交的数据对象,对其进行分块和编码计算,将得到的数据块写入存储节点;数据修复程序接收失效数据子块修复请求,从存储节点读取可用数据子块,进行解码计算,得到修复的数据子块。采用本专利技术可提高系统的数据可用性,降低数据块失效对数据访问的影响,减少数据访问涉及的失效数据量,减少网络传输数据量,提高失效数据的修复效率。【专利说明】
本专利技术涉及分布存储系统的数据容错方法,尤其是基于纠删码的失效数据修复方法。
技术介绍
数据容错是海量数据分布存储的关键技术之一,数据容错对于提高系统的可用性和可靠性至关重要。目前,数据容错技术主要包括基于复制的容错技术和基于纠删码的容错技术。基于复制的容错技术简单直观,易于实现和部署,需要为每个数据对象创建若干同样大小的副本,存储空间开销较大。基于纠删码的容错技术通过将数据对象分割为多个数据块,通过利用纠删码算法对原始的数据块进行编码得到冗余的数据块,把多个数据块的信息融合到较少的冗余信息中,有效节省存储空间。与基于复制的容错技术相比,基于纠删码的容错技术具有冗余度低、存储空间利用率高等优点,已经逐步成为大数据时代数据容错的主流技术。基于纠删码的容错技术的基本思想是对k个原始数据块进行编码计算得到m个冗余数据块;只需k+m个数据块中的任意k个数据块,就可通过解码计算恢复得到原始的k个数据块。具体而言,每个冗余数据块Cj (j = 1,2,^m)都是k个原始数据块Di (i =I,2,…,k)的线性组合,编码计算可表示为公式(I),其中,GjJ j = I, 2,…,m, i = I, 2,…,k)是数据块编码系数。也就是说,对于冗余数据块& (j = 1,2,...,πι)而言,首先,编码系数Gji (i = 1,2,…,k)与数据块Di (i = 1,2,…,k)进行逐位相乘,得到k个新数据块Tji =GjiXDi (i = 1,2,…,k);然后,k个新数据块L (i = 1,2,...,k)进行逐位相加,得到冗余 数据块【权利要求】1.,其特征在于包括以下步骤: 第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连; 分布存储系统中的节点分为两类:控制节点和存储节点,控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境; 分布存储系统包括一个控制节点,负责与用户交互,控制节点上安装有数据写入管理程序和数据修复程序;数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;数据修复程序接收用户提交的失效数据子块修复请求,负责存储解码系数,从各存储节点获取可用数据子块,进行解码计算,完成修复后向用户发送修复成功的数据子块; 分布存储系统包括 N个存储节点,N为正整数,它们负责存储数据对象的原始数据块和冗余数据块,执行数据块写入任务和可用数据子块读取任务,所述原始数据块由多个原始数据子块组成,冗余数据块由多个冗余数据子块组成; 存储节点上安装有数据写入程序和数据读取程序,数据写入程序负责接收来自控制节点的数据块写入请求,完成数据块写入任务,数据读取程序负责接收来自控制节点的可用数据子块读取请求,读取可用数据子块,并发送给控制节点; 第二步,控制节点执行数据写入管理程序,接收用户提交的数据对象NDO,对数据对象NDO进行分块和编码计算,得到原始数据块和冗余数据块,将原始数据块和冗余数据块写入存储节点,具体步骤如下: . 2.1控制节点的数据写入管理程序接收用户提交的数据对象NDO写入请求; . 2.2控制节点的数据写入管理程序将数据对象NDO分割为k个原始数据块,并将每个原始数据块分割为f个原始数据子块,记这k个原始数据块为TD1~TDk,记原始数据块TDx分割的第I个原始数据子块为tdxy, l^x^k, l^y^f; .2.3控制节点的数据写入管理程序重新构建k个原始数据块,记这k个原始数据块为D1~Dk,Di包括f个原始数据子块,Di的第I个原始数据子块记为Clil, i = 1,2,…,k,I = .2.4控制节点的数据写入管理程序利用存储的编码系数对k个原始数据块即D1-Dk的原始数据子块进行编码计算,得到m个冗余数据块即C1~Cm的冗余数据子块,EDi的第I个原始数据子块为dil;记Cj的第I个冗余数据子块为Cjl, I≤i≤k, I≤j≤m, I≤I≤f,具体步骤如下:. 2.4.1初始化信息,具体包括: . 2.4.1.1令冗余数据块Cj的序号j = I ; . 2.4.1.2令冗余数据子块Cjl的序号1 = 1; . 2.4.1.3令原始数据块Di的序号i = I ; .2.4.2控制节点的数据写入管理程序进行编码计算,将编码系数Gm与原始数据子块CliI进行逐位相乘,即,tja = GuXdil,得到新数据子块tjn ; . 2.4.3如果i=l,令Cj1 = tjU,转第2.4.4步;否则,将tjn与Cjl进行逐位相加,即,Cjl=Cj^tjil,转第 2.4.4 步; .2.4.4更新原始数据块Di的序号,i = i+1 ;.2.4.5 如果 i >k,则令 i = I, I = 1+1 ;.2.4.6 如果 I > f,则令 l = l,j = j+1 ; .2.4.7如果j > m,则转第2.5步;否则,转第2.4.2步; .2.5控制节点的数据写入管理程序将D1~Dk和C1~Cm分别写入不同的存储节点,写入存储节点的数据对象记为DO ; 第三步,控制节点执行数据修复程序,接收用户提交的数据对象DO的失效数据子块CliI修复请求;从数据对象DO的k+m-1个可用数据块中任意选择k个可用数据块,采用存储节点数组SNArray存储这k个可用数据块所在的存储节点,SNArray 表示第j个可用数据块所在的存储节点,k ;向k个可用数据块所在的存储节点发送可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号I ; 第四步,k个可用数据块所在的存储节点即SNArray~SNArray同时执行数据读取程序,接收来自控制节点的可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号I ;根据可用数据块编号获取本地存储的可用数据块,记为;根据待修复的失效数据子块序号I读取可用数据块&中的数据子块A1,将可用数据子块A1发送给控制节点; 第五步,控制节点执行数据修复程序,接收来自SNArray~SNArray的可用数据子块eu~ekl,利用存储的解码系数Hil~Hik进行解码计算,得到修复成功的数据子块(Iil,并向用户发送数据子块Clil,具体步骤如下: .5.1初始化信息,令存储节点数组的节点序号j = I ; .5.2控制节点的数据修复程序接收来自存储节本文档来自技高网...

【技术保护点】
一种基于改进型纠删码的失效数据修复方法,其特征在于包括以下步骤:第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连;分布存储系统中的节点分为两类:控制节点和存储节点,控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境;分布存储系统包括一个控制节点,负责与用户交互,控制节点上安装有数据写入管理程序和数据修复程序;数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;数据修复程序接收用户提交的失效数据子块修复请求,负责存储解码系数,从各存储节点获取可用数据子块,进行解码计算,完成修复后向用户发送修复成功的数据子块;分布存储系统包括N个存储节点,N为正整数,它们负责存储数据对象的原始数据块和冗余数据块,执行数据块写入任务和可用数据子块读取任务,所述原始数据块由多个原始数据子块组成,冗余数据块由多个冗余数据子块组成;存储节点上安装有数据写入程序和数据读取程序,数据写入程序负责接收来自控制节点的数据块写入请求,完成数据块写入任务,数据读取程序负责接收来自控制节点的可用数据子块读取请求,读取可用数据子块,并发送给控制节点;第二步,控制节点执行数据写入管理程序,接收用户提交的数据对象NDO,对数据对象NDO进行分块和编码计算,得到原始数据块和冗余数据块,将原始数据块和冗余数据块写入存储节点,具体步骤如下:2.1控制节点的数据写入管理程序接收用户提交的数据对象NDO写入请求;2.2控制节点的数据写入管理程序将数据对象NDO分割为k个原始数据块,并将每个原始数据块分割为f个原始数据子块,记这k个原始数据块为TD1~TDk,记原始数据块TDx分割的第y个原始数据子块为tdxy,1≤x≤k,1≤y≤f;2.3控制节点的数据写入管理程序重新构建k个原始数据块,记这k个原始数据块为D1~Dk,Di包括f个原始数据子块,Di的第l个原始数据子块记为dil,i=1,2,…,k,l=1,2,…,f;2.4控制节点的数据写入管理程序利用存储的编码系数对k个原始数据块即D1~Dk的原始数据子块进行编码计算,得到m个冗余数据块即C1~Cm的冗余数据子块,记Di的第l个原始数据子块为dil,记Cj的第l个冗余数据子块为cjl,1≤i≤k,1≤j≤m,1≤l≤f,具体步骤如下:2.4.1初始化信息,具体包括:2.4.1.1令冗余数据块Cj的序号j=1;2.4.1.2令冗余数据子块cjl的序号l=1;2.4.1.3令原始数据块Di的序号i=1;2.4.2控制节点的数据写入管理程序进行编码计算,将编码系数Gji与原始数据子块dil进行逐位相乘,即,tjil=Gji×dil,得到新数据子块tjil;2.4.3如果i=1,令cjl=tjil,转第2.4.4步;否则,将tjil与cjl进行逐位相加,即,cjl=cjl+tjil,转第2.4.4步;2.4.4更新原始数据块Di的序号,i=i+1;2.4.5如果i>k,则令i=1,l=l+1;2.4.6如果l>f,则令l=1,j=j+1;2.4.7如果j>m,则转第2.5步;否则,转第2.4.2步;2.5控制节点的数据写入管理程序将D1~Dk和C1~Cm分别写入不同的存储节点,写入存储节点的数据对象记为DO;第三步,控制节点执行数据修复程序,接收用户提交的数据对象DO的失效数据子块dil修复请求;从数据对象DO的k+m‑1个可用数据块中任意选择k个可用数据块,采用存储节点数组SNArray存储这k个可用数据块所在的存储节点,SNArray[j]表示第j个可用数据块所在的存储节点,1≤j≤k;向k个可用数据块所在的存储节点发送可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号l;第四步,k个可用数据块所在的存储节点即SNArray[1]~SNArray[k]同时执行数据读取程序,接收来自控制节点的可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号l;根据可用数据块编号获取本地存储的可用数据块,记为Ej;根据待修复的失效数据子块序号l读取可用数据块Ej中的数据子块ejl,将可用数据子块ejl发送给控制节点;第五步,控制节点执行数据修复程序,接收来自SNArray[1]~SNArray[k]的可用数据子块e1l~ekl,利用存储的解码系数Hi1~Hik进行解码计算,得到修复成功的数据子块dil,并向用户发送数据子块dil,具体步骤如下:5.1初始化信息,令存储节点数组的节点序号j=1;5.2控制节点的数据修复程序接收来自存储节点SNArray[j]的可用数据子块ejl;5.3控制节点的数据修复程序进行解码计算,将解码系数Hij与可用数据子块ejl进行逐位相乘,即,...

【技术特征摘要】

【专利技术属性】
技术研发人员:王意洁孙伟东裴晓强许方亮符永铨程力李小勇马行空王媛赵越林轩熊泽宇
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

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

1