CN103729151B - 一种基于改进型纠删码的失效数据修复方法 - Google Patents
一种基于改进型纠删码的失效数据修复方法 Download PDFInfo
- Publication number
- CN103729151B CN103729151B CN201410019879.4A CN201410019879A CN103729151B CN 103729151 B CN103729151 B CN 103729151B CN 201410019879 A CN201410019879 A CN 201410019879A CN 103729151 B CN103729151 B CN 103729151B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- node
- sub
- memory node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种基于改进型纠删码的失效数据修复方法,目的是设计针对数据访问特点的高效的失效数据修复方法。技术方案是构建一个由1个控制节点和N个存储节点组成的分布存储系统,控制节点安装有数据写入管理程序和数据修复程序;存储节点安装有数据写入程序和数据读取程序;数据写入管理程序接收用户提交的数据对象,对其进行分块和编码计算,将得到的数据块写入存储节点;数据修复程序接收失效数据子块修复请求,从存储节点读取可用数据子块,进行解码计算,得到修复的数据子块。采用本发明可提高系统的数据可用性,降低数据块失效对数据访问的影响,减少数据访问涉及的失效数据量,减少网络传输数据量,提高失效数据的修复效率。
Description
技术领域
本发明涉及分布存储系统的数据容错方法,尤其是基于纠删码的失效数据修复方法。
背景技术
数据容错是海量数据分布存储的关键技术之一,数据容错对于提高系统的可用性和可靠性至关重要。目前,数据容错技术主要包括基于复制的容错技术和基于纠删码的容错技术。
基于复制的容错技术简单直观,易于实现和部署,需要为每个数据对象创建若干同样大小的副本,存储空间开销较大。基于纠删码的容错技术通过将数据对象分割为多个数据块,通过利用纠删码算法对原始的数据块进行编码得到冗余的数据块,把多个数据块的信息融合到较少的冗余信息中,有效节省存储空间。与基于复制的容错技术相比,基于纠删码的容错技术具有冗余度低、存储空间利用率高等优点,已经逐步成为大数据时代数据容错的主流技术。
基于纠删码的容错技术的基本思想是对k个原始数据块进行编码计算得到m个冗余数据块;只需k+m个数据块中的任意k个数据块,就可通过解码计算恢复得到原始的k个数据块。
具体而言,每个冗余数据块Cj(j=1,2,…,m)都是k个原始数据块Di(i=1,2,…,k)的线性组合,编码计算可表示为公式(1),其中,Gji(j=1,2,…,m,i=1,2,…,k)是数据块编码系数。也就是说,对于冗余数据块Cj(j=1,2,…,m)而言,首先,编码系数Gji(i=1,2,…,k)与数据块Di(i=1,2,…,k)进行逐位相乘,得到k个新数据块Tji=Gji×Di(i=1,2,…,k);然后,k个新数据块Tji(i=1,2,…,k)进行逐位相加,得到冗余数据块
Gj1×D1+…+Gji×Di+…+Gjk×Dk=Cj(1)
每个原始数据块Di(i=1,2,…,k)都是其它任意k个可用数据块Ej(j=1,2,…,k)(原始数据块或者冗余数据块)的线性组合,解码计算可表示为公式(2),其中,Hij(i=1,2,…,k,j=1,2,…,k)是数据块解码系数。也就是说,对于原始数据块Di(i=1,2,…,k)而言,首先,解码系数Hij(j=1,2,…,k)与可用数据块Ej(j=1,2,…,k)进行逐位相乘,得到k个新数据块Sij=Hij×Ej(j=1,2,…,k);然后,k个新数据块Sij(j=1,2,…,k)进行逐位相加,得到原始数据块
Hi1×E1+…+Hij×Ej+…+Hik×Ek=Di(2)
纠删码的编解码计算对内存空间的需求取决于数据块的大小。随着海量数据规模的不断增大,数据对象的大小和数据对象的数目都呈现出逐渐增长的趋势。数据对象越来越大直接导致数据块大小不断变大,从而使得纠删码的编解码计算对内存空间的需求越来越大,甚至超出服务器的内存容量。
为了有效实现纠删码的编解码计算,一个原始数据块(冗余数据块)可以进一步划分为f个原始数据子块(冗余数据子块),即,原始数据块Di(i=1,2,…,k)划分为f个原始数据子块dil(l=1,2,…,f),冗余数据块Cj(j=1,2,…,m)划分为f个冗余数据子块cjl(l=1,2,…,f)。纠删码的编解码计算可以在原始数据子块和冗余数据子块之间进行,从而降低编解码计算对内存空间的需求。
每个冗余数据子块cjl(j=1,2,…,m,l=1,2,…,f)都是k个原始数据子块dil(i=1,2,…,k,l=1,2,…,f)的线性组合,编码计算可表示为公式(3),其中,Gji(j=1,2,…,m,i=1,2,…,k)是数据块编码系数。也就是说,对于冗余数据子块cjl(j=1,2,…,m,l=1,2,…,f)而言,首先,编码系数Gji(i=1,2,…,k)与数据子块dil(i=1,2,…,k,l=1,2,…,f)进行逐位相乘,得到k个新数据子块tjil=Gji×dil(i=1,2,…,k);然后,k个新数据子块tjil(i=1,2,…,k)进行逐位相加,得到冗余数据子块
Gj1×d1l+…+Gji×dil+…+Gjk×dkl=cjl(3)
每个原始数据子块dil(i=1,2,…,k,l=1,2,…,f)都是其它任意k个可用数据子块ejl(j=1,2,…,k,l=1,2,…,f)(原始数据子块或者冗余数据子块)的线性组合,解码计算可表示为公式(4),其中,Hij(i=1,2,…,k,j=1,2,…,k)是数据块解码系数。也就是说,对于原始数据子块dil(i=1,2,…,k,l=1,2,…,f)而言,首先,解码系数Hij(j=1,2,…,k)与可用数据子块ejl(j=1,2,…,k,l=1,2,…,f)进行逐位相乘,得到k个新数据子块sijl=Hij×ejl(j=1,2,…,k);然后,k个新数据子块sijl(j=1,2,…,k)进行逐位相加,得到原始数据子块
Hi1×e1l+…+Hij×ejl+…+Hik×ekl=dil(4)
尽管随着技术的进步,各种软硬件资源的可靠性得到了显著提高,但是,随着存储资源规模的不断扩大,资源的失效概率明显上升。此外,为了有效降低维护成本,失效资源不会逐一及时更新,而是成批维护的。在大规模分布存储系统中,资源失效是一种常态行为。由此可见,在大规模分布存储系统中,失效数据修复对于保证系统的容错能力至关重要。
虽然在拥有相同容错能力的前提下,基于纠删码的容错技术在存储开销方面具有明显优势。但是,在数据块失效时,基于纠删码的容错技术需要多个数据块才能解码恢复失效的原始数据块,需要占用较多的网络带宽资源,影响失效数据的修复效率。
一方面,传统的纠删码是基于顺序分块的,每个原始数据块中的数据都是地址连续的;另一方面,用户的数据访问通常需要读取数据对象中地址连续的部分数据。因此,数据块失效对数据访问的影响较大,往往需要修复完整的原始数据块才能满足用户的数据访问需求。由于基于纠删码的容错技术需要多个数据块才能解码恢复失效的原始数据块,所以,当数据访问涉及到失效数据块时,数据修复需要占用较多的网络带宽资源,影响失效数据的修复效率。
现有的数据修复方法通过构建以失效数据块的新存储节点为根、可用存储节点为子节点的修复拓扑,失效数据块的新存储节点从若干可用存储节点获取可用数据块,并通过解码计算得到修复数据块。现有的数据修复方法的修复效率主要受限于修复拓扑中存储节点之间的瓶颈带宽。
因此,如何针对数据访问的特点,对传统的纠删码进行改进,设计基于改进型纠删码的失效数据修复方法,有效提高系统的数据可用性,从根本上减少数据访问涉及的失效数据量,有效减少网络传输数据量,有效避免网络中的瓶颈带宽,显著降低失效数据修复的带宽成本,有效提高失效数据的修复效率,已经成为分布存储领域的热点研究问题。
发明内容
本发明要解决的技术问题是:
针对数据访问的特点,对传统的纠删码进行改进,设计基于改进型纠删码的失效数据修复方法,有效提高系统的数据可用性,从根本上减少数据访问涉及的失效数据量,有效减少网络传输数据量,有效避免网络中的瓶颈带宽,显著降低失效数据修复的带宽成本,有效提高失效数据的修复效率。
本发明技术方案包括以下步骤:
第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连。
分布存储系统中的节点分为两类:控制节点和存储节点。控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境。
分布存储系统包括一个控制节点,负责与用户交互,控制节点上安装有数据写入管理程序和数据修复程序。数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;数据修复程序接收用户提交的失效数据子块修复请求,负责存储解码系数,从各存储节点获取可用数据子块,进行解码计算,完成修复后向用户发送修复成功的数据子块。
分布存储系统包括N个存储节点(N为正整数),它们负责存储数据对象的原始数据块(由多个原始数据子块组成)和冗余数据块(由多个冗余数据子块组成),执行数据块写入任务和可用数据子块读取任务。在分布存储系统中,每个数据块(指原始数据块和冗余数据块)拥有唯一的数据块编号。
存储节点上安装有数据写入程序和数据读取程序。数据写入程序负责接收来自控制节点的数据块写入请求,完成数据块写入任务。数据读取程序负责接收来自控制节点的可用数据子块读取请求,读取可用数据子块,并发送给控制节点。
第二步,控制节点执行数据写入管理程序,接收用户提交的数据对象NDO,对数据对象进行分块和编码计算,得到原始数据块和冗余数据块,将原始数据块和冗余数据块写入存储节点。具体步骤如下:
2.1控制节点的数据写入管理程序接收用户提交的数据对象NDO写入请求。
2.2控制节点的数据写入管理程序将数据对象NDO分割为k个原始数据块,并将每个原始数据块分割为f个原始数据子块,记这k个原始数据块为TD1~TDk,记原始数据块TDx分割的第y个原始数据子块为tdxy(1≤y≤f)。
2.3控制节点的数据写入管理程序重新构建k个原始数据块,记这k个原始数据块为D1~Dk,原始数据块Di包括f个原始数据子块,Di的第l个原始数据子块记为dil(1≤l≤f),具体步骤如下:
2.3.1初始化信息,具体包括:
2.3.1.1令数据对象NDO的原始数据块TDx的序号x=1。
2.3.1.2令数据对象NDO的原始数据块TDx的原始数据子块tdxy的序号y=1。
2.3.1.3令重新构建的原始数据块Di的序号i=1。
2.3.1.4令重新构建的原始数据块Di的原始数据子块dil的序号l=1。
2.3.2将原始数据子块tdxy分配给Di,具体包括:
2.3.2.1令dil=tdxy。
2.3.2.2如果l=1,则Di={dil},转第2.3.3步;否则,Di=Di∪{dil},转第2.3.3步。
2.3.3更新原始数据块序号和原始数据子块序号,具体包括:
2.3.3.1更新tdxy的序号,即令y=y+1。
2.3.3.2如果y>f,则令y=1,x=x+1。
2.3.3.3更新Di的序号,即令i=i+1。
2.3.3.4如果i>k,则令i=1,l=l+1。
2.3.4如果x>k,则说明重新构建原始数据块结束,转第2.4步;否则,转第2.3.2步,继续构建原始数据块。
2.4控制节点的数据写入管理程序利用存储的编码系数对k个原始数据块的原始数据子块进行编码计算,得到m个冗余数据块的冗余数据子块,记k个原始数据块为D1~Dk,记Di(1≤i≤k)的第l个原始数据子块为dil(1≤l≤f),记m个冗余数据块为C1~Cm,记Cj(1≤j≤m)的第l个冗余数据子块为cjl(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控制节点的数据写入管理程序将k个原始数据块(即,D1~Dk)和m个冗余数据块(即,C1~Cm)分别写入不同的存储节点,具体步骤如下:
2.5.1初始化信息,具体包括:
2.5.1.1分布存储系统的N个存储节点构成集合SNSet。
2.5.1.2令原始数据块Dx的序号x=1。
2.5.1.3令冗余数据块Cy的序号y=1。
2.5.2控制节点的数据写入管理程序从SNSet中任意选择一个存储节点SN,控制节点的数据写入管理程序向存储节点SN发送Dx的写入请求,将存储节点SN从SNSet中删除,即,SNSet=SNSet-{SN}。
2.5.3存储节点SN的数据写入程序接收来自控制节点的Dx写入请求,将Dx写入本地磁盘。
2.5.4更新Dx的序号,x=x+1。
2.5.5如果x>k,则说明k个原始数据块已经分别写入不同的存储节点,转第2.5.6步;否则,转到第2.5.2步,继续将原始数据块写入存储节点。
2.5.6控制节点的数据写入管理程序从SNSet中任意选择一个存储节点SN,控制节点的数据写入管理程序向存储节点SN发送Cy的写入请求,将存储节点SN从SNSet中删除,即,SNSet=SNSet-{SN}。
2.5.7存储节点SN的数据写入程序接收来自控制节点的Cy写入请求,将Cy写入本地磁盘。
2.5.8更新Cy的序号,y=y+1。
2.5.9如果y>m,则说明m个冗余数据块已经分别写入不同的存储节点,转第2.5.10步;否则,转第2.5.6步,继续将冗余数据块写入存储节点。
2.5.10为了区分用户提交的数据对象NDO和已经写入存储节点的数据对象,将写入存储节点的数据对象记为DO。
第三步,控制节点执行数据修复程序,接收用户提交的数据对象DO的失效数据子块dil(1≤i≤k,1≤l≤f)修复请求;从数据对象DO的k+m-1个可用数据块(除去失效数据子块dil所属的数据块Di)中任意选择k个可用数据块,采用存储节点数组SNArray存储这k个可用数据块所在的存储节点,SNArray[j]表示第j个可用数据块所在的存储节点,1≤j≤k;向k个可用数据块所在的存储节点发送可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号l。
第四步,k个可用数据块所在的存储节点(即,SNArray[1]~SNArray[k])同时执行数据读取程序,接收来自控制节点的可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号l;根据可用数据块编号获取本地存储的可用数据块,记为Ej;根据待修复的失效数据子块序号l读取可用数据块Ej中的数据子块ejl,将可用数据子块ejl发送给控制节点。
第五步,控制节点执行数据修复程序,接收来自k个可用数据块所在的存储节点(即,SNArray[1]~SNArray[k])的可用数据子块e1l~ekl,利用存储的解码系数(即,Hi1~Hik)进行解码计算,得到修复成功的数据子块dil,并向用户发送数据子块dil。具体步骤如下:
5.1初始化信息,令存储节点数组的节点序号j=1。
5.2控制节点的数据修复程序接收来自存储节点SNArray[j]的可用数据子块ejl。
5.3控制节点的数据修复程序进行解码计算,将解码系数Hij与可用数据子块ejl进行逐位相乘,即,sijl=Hij×ejl,得到新数据子块sijl。
5.4如果j=1,那么,令dil=sijl,转第5.5步;否则,将sijl与dil进行逐位相加,即,dil=dil+sijl,转第5.5步。
5.5更新存储节点数组的节点序号,j=j+1。
5.6如果j>k,那么,说明控制节点的数据修复程序已经完成修复任务,转第5.7步;否则,转第5.2步,控制节点的数据修复程序继续进行数据修复。
5.7控制节点的数据修复程序向用户发送修复的数据子块dil。
与现有技术相比,本发明具有以下技术优点:
1.本发明2.3步控制节点重新构建原始数据块,使得每个原始数据块中的原始数据子块之间都不是地址连续的,有效提高系统的数据可用性,有效降低数据块失效对数据访问的影响,有效减少数据访问涉及的失效数据量,有效提高失效数据的修复效率。
2.本发明第三步和第四步k个可用数据块所在的存储节点根据失效数据子块序号将可用数据块中对应序号的可用数据子块发送给控制节点,有效减少网络传输数据量,有效避免网络中的瓶颈带宽,显著降低失效数据修复的带宽成本,有效提高失效数据的修复效率。
3.本发明第五步控制节点利用存储的解码系数对k个可用数据子块进行解码计算,得到修复的数据子块,有效减少存储节点的计算开销和存储节点之间的协同开销,有效减少网络传输数据量,显著减少对网络带宽资源的占用,有效提高失效数据的修复效率。
附图说明
图1是本发明第一步构建的分布存储系统的物理结构图。
图2是本发明分布存储系统的软件部署图。
图3是本发明总流程图。
具体实施方式
图1是本发明第一步构建的分布存储系统的物理结构图。分布存储系统的节点由控制节点和存储节点组成。控制节点和存储节点均是包含处理器、存储器、磁盘和网络接口的计算机。控制节点和存储节点之间通过互连网络相连。
图2是本发明分布存储系统的软件部署图。控制节点上安装有操作系统、TCP/IP网络软件、数据写入管理程序和数据修复程序。其中操作系统、TCP/IP网络软件是通用软件,从公开发行的软件包中获得;数据写入管理程序和数据修复程序是本发明的专用软件。存储节点上安装有操作系统、TCP/IP网络软件、数据写入程序和数据读取程序。其中操作系统、TCP/IP网络软件是通用软件,从公开发行的软件包中获得;数据写入程序和数据读取程序是本发明的专用软件。
图3是本发明总流程图。具体流程如下:
第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连。
第二步,控制节点执行数据写入管理程序,接收用户提交的数据对象NDO,对数据对象进行分块和编码计算,得到原始数据块和冗余数据块,将原始数据块和冗余数据块写入存储节点。
第三步,控制节点执行数据修复程序,接收用户提交的数据对象DO的失效数据子块dil(1≤i≤k,1≤l≤f)修复请求;从数据对象DO的k+m-1个可用数据块(除去失效数据子块dil所属的数据块Di)中任意选择k个可用数据块,采用存储节点数组SNArray存储这k个可用数据块所在的存储节点,SNArray[j]表示第j个可用数据块所在的存储节点,1≤j≤k;向k个可用数据块所在的存储节点发送可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号l。
第四步,k个可用数据块所在的存储节点(即,SNArray[1]~SNArray[k])同时执行数据读取程序,接收来自控制节点的可用数据子块读取请求、可用数据块编号和待修复的失效数据子块序号l;根据可用数据块编号获取本地存储的可用数据块,记为Ej;根据待修复的失效数据子块序号l读取可用数据块Ej中的数据子块ejl,将可用数据子块ejl发送给控制节点。
第五步,控制节点执行数据修复程序,接收来自k个可用数据块所在的存储节点(即,SNArray[1]~SNArray[k])的可用数据子块e1l~ekl,利用存储的解码系数(即,Hi1~Hik)进行解码计算,得到修复成功的数据子块dil,并向用户发送数据子块dil。
Claims (3)
1.一种基于改进型纠删码的失效数据修复方法,其特征在于包括以下步骤:
第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连;
分布存储系统中的节点分为两类:控制节点和存储节点,控制节点和存储节点上均安装有操作系统、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进行逐位相乘,即,sijl=Hij×ejl,得到新数据子块sijl;
5.4如果j=1,那么,令dil=sijl,转第5.5步;否则,将sijl与dil进行逐位相加,即,dil=dil+sijl,转第5.5步;
5.5更新存储节点数组的节点序号,j=j+1;
5.6如果j>k,转第5.7步;否则,转第5.2步;
5.7控制节点的数据修复程序向用户发送修复的数据子块dil。
2.如权利要求1所述的一种基于改进型纠删码的失效数据修复方法,其特征在于所述2.3步中控制节点的数据写入管理程序重新构建k个原始数据块的具体步骤是:
2.3.1初始化信息,具体包括:
2.3.1.1令数据对象NDO的原始数据块TDx的序号x=1;
2.3.1.2令数据对象NDO的原始数据块TDx的原始数据子块tdxy的序号y=1;
2.3.1.3令重新构建的原始数据块Di的序号i=1;
2.3.1.4令重新构建的原始数据块Di的原始数据子块dil的序号l=1;
2.3.2将原始数据子块tdxy分配给Di,具体包括:
2.3.2.1令dil=tdxy;
2.3.2.2如果l=1,则Di={dil},转第2.3.3步;否则,Di=Di∪{dil},转第2.3.3步;
2.3.3更新原始数据块序号和原始数据子块序号,具体包括:
2.3.3.1更新tdxy的序号,即令y=y+1;
2.3.3.2如果y>f,则令y=1,x=x+1;
2.3.3.3更新Di的序号,即令i=i+1;
2.3.3.4如果i>k,则令i=1,l=l+1;
2.3.4如果x>k,则k个原始数据块构建结束;否则,转第2.3.2步。
3.如权利要求1所述的一种基于改进型纠删码的失效数据修复方法,其特征在于所述2.5步数据写入管理程序将D1~Dk和C1~Cm分别写入不同的存储节点的具体步骤是:
2.5.1初始化信息,具体包括:
2.5.1.1分布存储系统的N个存储节点构成集合SNSet;
2.5.1.2令原始数据块Dx的序号x=1;
2.5.1.3令冗余数据块Cy的序号y=1;
2.5.2控制节点的数据写入管理程序从SNSet中任意选择一个存储节点SN,控制节点的数据写入管理程序向存储节点SN发送Dx的写入请求,将存储节点SN从SNSet中删除,即,SNSet=SNSet-{SN};
2.5.3存储节点SN的数据写入程序接收来自控制节点的Dx写入请求,将Dx写入本地磁盘;
2.5.4更新Dx的序号,x=x+1;
2.5.5如果x>k,则转第2.5.6步;否则,转到第2.5.2步;
2.5.6控制节点的数据写入管理程序从SNSet中任意选择一个存储节点SN,控制节点的数据写入管理程序向存储节点SN发送Cy的写入请求,将存储节点SN从SNSet中删除,即,SNSet=SNSet-{SN};
2.5.7存储节点SN的数据写入程序接收来自控制节点的Cy写入请求,将Cy写入本地磁盘;
2.5.8更新Cy的序号,y=y+1;
2.5.9如果y>m,则转第2.5.10步;否则,转第2.5.6步;
2.5.10将写入存储节点的数据对象记为DO。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410019879.4A CN103729151B (zh) | 2014-01-16 | 2014-01-16 | 一种基于改进型纠删码的失效数据修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410019879.4A CN103729151B (zh) | 2014-01-16 | 2014-01-16 | 一种基于改进型纠删码的失效数据修复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103729151A CN103729151A (zh) | 2014-04-16 |
CN103729151B true CN103729151B (zh) | 2016-06-29 |
Family
ID=50453242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410019879.4A Active CN103729151B (zh) | 2014-01-16 | 2014-01-16 | 一种基于改进型纠删码的失效数据修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103729151B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942116B (zh) * | 2014-04-24 | 2017-02-01 | 深圳市中博科创信息技术有限公司 | 一种对数据进行容错处理的方法及数据处理系统 |
CN104052576B (zh) * | 2014-06-07 | 2017-05-10 | 华中科技大学 | 一种云存储下基于纠错码的数据恢复方法 |
CN104035732B (zh) * | 2014-06-17 | 2017-01-18 | 中国人民解放军国防科学技术大学 | 一种面向纠删码的数据放置方法 |
CN104102558B (zh) * | 2014-07-13 | 2017-01-25 | 中国人民解放军国防科学技术大学 | 一种基于纠删码的文件追加方法 |
CN110309012B (zh) * | 2018-03-27 | 2021-01-26 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及其装置 |
CN110178122B (zh) * | 2018-07-10 | 2022-10-21 | 深圳花儿数据技术有限公司 | 分布式存储系统的数据同步修复方法及存储介质 |
CN109067852A (zh) * | 2018-07-15 | 2018-12-21 | 中国人民解放军国防科技大学 | 一种基于纠删码的跨中心协同修复方法 |
CN109343998B (zh) * | 2018-10-09 | 2021-10-29 | 中国人民解放军国防科技大学 | 一种基于纠删码的全分布修复方法 |
CN109542939B (zh) * | 2018-11-21 | 2020-09-01 | 中国人民解放军国防科技大学 | 一种基于纠删码的count-min摘要方法及装置 |
CN111858128B (zh) * | 2019-04-26 | 2023-12-29 | 深信服科技股份有限公司 | 一种纠删码数据修复方法、装置、设备及存储介质 |
CN114595092B (zh) * | 2022-04-28 | 2022-09-20 | 阿里云计算有限公司 | 分布式存储系统、数据重构方法、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209210A (zh) * | 2013-03-04 | 2013-07-17 | 华中科技大学 | 一种提高基于纠删码的存储集群恢复性能的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473778B2 (en) * | 2010-09-08 | 2013-06-25 | Microsoft Corporation | Erasure coding immutable data |
-
2014
- 2014-01-16 CN CN201410019879.4A patent/CN103729151B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209210A (zh) * | 2013-03-04 | 2013-07-17 | 华中科技大学 | 一种提高基于纠删码的存储集群恢复性能的方法 |
Non-Patent Citations (2)
Title |
---|
云计算环境下的分布存储关键技术;王意洁等;《软件学报》;20120430;第23卷(第4期);第962-986页 * |
基于纠删码的分布式存储系统中针对多数据失效的树型并行修复技术;孙伟东等;《中国通信》;20130430;第10卷(第4期);第113-125页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103729151A (zh) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103729151B (zh) | 一种基于改进型纠删码的失效数据修复方法 | |
CN103607304B (zh) | 一种基于纠删码的失效数据线形修复方法 | |
CN104052576B (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
Xu et al. | Single disk failure recovery for X-code-based parallel storage systems | |
Hu et al. | NCFS: On the practicality and extensibility of a network-coding-based distributed file system | |
CN106776129B (zh) | 一种基于最小存储再生码的多节点数据文件的修复方法 | |
CN103336785B (zh) | 一种基于网络编码的分布式存储方法及其装置 | |
CN105260259A (zh) | 一种基于系统最小存储再生码的局部性修复编码方法 | |
CN103209210B (zh) | 一种提高基于纠删码的存储集群恢复性能的方法 | |
CN103761195B (zh) | 一种利用分布式数据编码的存储方法 | |
CN102110154B (zh) | 一种集群文件系统中文件冗余存储方法 | |
CN103944981A (zh) | 一种基于纠删码技术改进的云存储系统及实现方法 | |
CN104035732B (zh) | 一种面向纠删码的数据放置方法 | |
WO2010133080A1 (zh) | 基于(d,k)摩尔图的网络存储结构的数据存储方法 | |
WO2020010504A1 (zh) | 分布式存储系统的数据修复方法及存储介质 | |
CN107689983B (zh) | 基于低修复带宽的云存储系统及方法 | |
CN103544270B (zh) | 面向数据中心的通用化网络编码容错存储平台及工作方法 | |
CN108762978B (zh) | 一种局部部分重复循环码的分组构造方法 | |
CN113190377B (zh) | 一种基于分布式存储系统的可靠冗余方法及设备 | |
WO2023103213A1 (zh) | 一种分布式数据库的数据存储方法和装置 | |
CN109684127A (zh) | 基于完全图最小带宽再生码的局部性节点修复方法 | |
CN109358980A (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
CN104102558B (zh) | 一种基于纠删码的文件追加方法 | |
CN107153661A (zh) | 一种基于hdfs系统的数据的存储、读取方法及其装置 | |
CN106027638A (zh) | 一种基于混合编码的hadoop数据分发方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |