一种基于纠删码的全分布修复方法技术

技术编号:20362788 阅读:37 留言:0更新日期:2019-02-16 16:29
本发明专利技术公开了一种基于纠删码的全分布修复方法,目的是提高失效数据的修复效率。技术方案是构建由控制节点、存储节点组成的分布存储系统,控制节点上安装有数据写入管理程序和数据修复管理程序;存储节点上安装有数据写入程序和数据修复程序;数据写入管理程序对数据对象进行分块和编码计算,将原始数据块和冗余数据块写入不同的存储节点;数据修复管理程序为失效数据块D'i选择新存储节点LN;数据修复管理程序和数据修复程序相互配合,进行解码计算后得到修复成功的数据子块,并存储到LN;LN的数据修复程序对数据子块进行合并,得到D'i恢复后的Di。本发明专利技术能充分利用各存储节点的上行带宽,有效避免网络中的瓶颈带宽,提高失效数据的修复效率。

【技术实现步骤摘要】
一种基于纠删码的全分布修复方法
本专利技术涉及分布存储系统的数据容错技术,尤其是基于纠删码的全分布修复方法。
技术介绍
数据容错是海量数据分布存储的关键技术之一,数据容错对于提高系统的可用性和可靠性至关重要。目前,数据容错技术主要包括基于复制的容错技术和基于纠删码的容错技术。基于复制的容错技术简单直观,易于实现和部署,需要为每个数据对象创建若干同样大小的副本,存储空间开销较大。基于纠删码的容错技术通过将数据对象分割为多个数据块,利用纠删码算法对原始的数据块进行编码得到冗余的数据块,把多个数据块的信息融合到较少的冗余信息中,有效节省存储空间。与基于复制的容错技术相比,基于纠删码的容错技术具有冗余度低、存储空间利用率高等优点,已经逐步成为大数据时代数据容错的主流技术。基于纠删码的容错技术的基本思想是对k个原始数据块进行编码计算得到m个冗余数据块;只需k+m个数据块中的任意k个数据块,就可通过解码计算恢复得到原始的k个数据块。k和m均为正整数。具体而言,冗余数据块Cj(1≤j≤m)是k个原始数据块即D1,D2,……,Di,……,Dk(1≤i≤k)的线性组合,编码计算可表示为公式(1),其中,Gji是数据块编码系数。也就是说,对于冗余数据块Cj而言,首先,编码系数Gji与数据块Di进行逐位相乘,得到新数据块Tji=Gji×Di;然后,k个新数据块进行逐位相加,得到冗余数据块Cj,Gj1×D1+…+Gji×Di+…+Gjk×Dk=Cj(1)原始数据块D1,D2,……,Di,……,Dk都是其它任意k个可用数据块Er(1≤r≤k)(原始数据块或者冗余数据块)的线性组合,解码计算可表示为公式(2),其中,Hir是数据块解码系数。也就是说,对于原始数据块Di而言,首先,解码系数Hir与可用数据块Er进行逐位相乘,得到新数据块Sir=Hir×Er;然后,k个新数据块进行逐位相加,得到原始数据块Di,Hi1×E1+…+Hir×Er+…+Hik×Ek=Di(2)纠删码的编解码计算对内存空间的需求取决于数据块的大小。随着海量数据规模的不断增大,数据对象的大小和数据对象的数目都呈现出逐渐增长的趋势。数据对象越来越大直接导致数据块大小不断变大,从而使得纠删码的编解码计算对内存空间的需求越来越大,甚至超出服务器的内存容量。为了有效实现纠删码的编解码计算,一个原始数据块(冗余数据块)可以进一步划分为k+m-1个原始数据子块(冗余数据子块),即,原始数据块Di(1≤i≤k)划分为k+m-1个原始数据子块,原始数据子块表示为dil(1≤l≤k+m-1),冗余数据块Cj(1≤j≤m)划分为k+m-1个冗余数据子块,冗余数据子块表示为cjl(1≤l≤k+m-1)。纠删码的编解码计算可以在原始数据子块和冗余数据子块之间进行,从而降低编解码计算对内存空间的需求。冗余数据子块cjl是原始数据子块dil(1≤i≤k,1≤l≤k+m-1)的线性组合,编码计算可表示为公式(3),其中,Gji(1≤j≤m,1≤i≤k)是数据块编码系数。也就是说,对于冗余数据子块cjl而言,首先,编码系数Gji与数据子块dil进行逐位相乘,得到k个新数据子块,新数据子块表示为tjil,tjil=Gji×dil;然后,新数据子块tj1l,……,tjil,……,tjkl进行逐位相加,得到冗余数据子块cjl,Gj1×d1l+…+Gji×dil+…+Gjk×dkl=cjl(3)原始数据子块dil(1≤i≤k,1≤l≤k+m-1)是其它任意k个可用数据子块erl(1≤r≤k,1≤l≤k+m-1)(原始数据子块或者冗余数据子块)的线性组合,解码计算可表示为公式(4),其中,Hir(1≤i≤k,1≤r≤k)是数据块解码系数。也就是说,对于原始数据子块dil而言,首先,解码系数Hir与可用数据子块erl进行逐位相乘,得到新数据子块sirl=Hir×erl(1≤r≤k);然后,新数据子块si1l,……,sirl,……,sikl进行逐位相加,得到原始数据子块dil,Hi1×e1l+…+Hir×erl+…+Hik×ekl=dil(4)尽管随着技术的进步,各种软硬件资源的可靠性得到了显著提高,但是,随着存储资源规模的不断扩大,资源的失效概率明显上升。在大规模分布存储系统中,资源失效是一种常态行为。在数据块失效时,基于纠删码的容错技术需要多个数据块才能解码恢复失效的原始数据块,需要占用较多的网络资源。如果发现数据块失效,传统修复方法是从k+m-1个可用数据块中选择k个可用数据块,然后通过解码计算恢复得到失效的数据块。众所周知,网络环境中的上行带宽(指上传数据的速率)和下行带宽(指下载数据的速率)是不对称的,一般上行带宽小于下行带宽。因此,传统修复方法从k+m-1个可用数据块中选择k个可用数据块,从k个可用数据块所在的存储节点上传数据,只利用了这k个可用数据块所在存储节点的上行带宽,没有充分利用所有k+m-1可用数据块所在存储节点的上行带宽进行全分布修复,其修复效率往往受限于这k个可用数据块所在的存储节点的上行带宽。因此,如何针对纠删码的特点,设计高效的失效数据修复方法,充分利用各存储节点的上行带宽,有效避免网络中的瓶颈带宽,有效提高失效数据的修复效率,已经成为分布存储领域的热点研究问题。
技术实现思路
本专利技术要解决的技术问题是:针对纠删码的特点,提出一种基于纠删码的全分布修复方法,充分利用各存储节点的上行带宽,有效避免网络中的瓶颈带宽,提高失效数据的修复效率。本专利技术技术方案包括以下步骤:第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连。分布存储系统中的节点分为两类:控制节点和存储节点。控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境。分布存储系统包括一个控制节点,负责与用户交互,接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;接收用户提交的失效数据块修复请求,为失效数据块选择新的存储节点,向各存储节点发送失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号,接收修复成功信息,向用户返回修复成功信息。分布存储系统包括N个存储节点(N为正整数),它们负责存储数据对象的原始数据块(由多个原始数据子块组成)和冗余数据块(由多个冗余数据子块组成)。接收来自控制节点的数据块写入请求,完成数据块写入任务;接收控制节点发送的失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号;根据可用数据子块编号获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将修复成功的数据子块发送给失效数据块的新存储节点;合并修复成功的数据子块得到恢复的数据块,完成修复后向控制节点发送修复成功信息。在分布存储系统中,每个数据块(指原始数据块和冗余数据块)拥有唯一的数据块编号。控制节点上安装有数据写入管理程序和数据修复管理程序。数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求。数据修复管理程序接收用户本文档来自技高网
...

【技术保护点】
1.一种基于纠删码的全分布修复方法,其特征在于包括以下步骤:第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连;节点包括控制节点和存储节点,控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境;分布存储系统包括一个控制节点,负责与用户交互,接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;接收用户提交的失效数据块修复请求,为失效数据块选择新的存储节点,向各存储节点发送失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号,接收修复成功信息,向用户返回修复成功信息;分布存储系统包括N个存储节点,N为正整数,存储节点负责存储数据对象的原始数据块和冗余数据块;接收来自控制节点的数据块写入请求,完成数据块写入任务;接收控制节点发送的失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号;根据可用数据子块编号获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将修复成功的数据子块发送给失效数据块的新存储节点;合并修复成功的数据子块得到恢复的数据块,完成修复后向控制节点发送修复成功信息;控制节点上安装有数据写入管理程序和数据修复管理程序;数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;数据修复管理程序接收用户提交的失效数据块修复请求,为失效数据块选择新的存储节点,向各存储节点发送失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号,从存储节点接收修复成功信息,向用户返回修复成功信息;存储节点上安装有数据写入程序和数据修复程序;数据写入程序负责接收来自控制节点的数据块写入请求,完成数据块写入任务;数据修复程序接收控制节点发送的失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号;获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将修复成功的数据子块发送给失效数据块的新存储节点;合并修复成功的数据子块得到恢复的数据块,完成修复后向控制节点发送修复成功信息;第二步,控制节点的数据写入管理程序,对用户提交的数据对象NData进行分块和编码计算,得到k个原始数据块和m个冗余数据块,将原始数据块和冗余数据块分别写入不同的存储节点,具体步骤如下:2.1控制节点的数据写入管理程序接收用户提交的数据对象NData写入请求;2.2控制节点的数据写入管理程序将NData分割为k个原始数据块,记这k个原始数据块为D1,D2,……,Di,……,Dk,1≤i≤k,并将每个原始数据块分割为k+m‑1个原始数据子块,记原始数据块Di分割的第l个原始数据子块为dil,1≤l≤k+m‑1,k和m满足k+m+1≤N;2.3控制节点的数据写入管理程序利用存储的编码系数对k个原始数据块的原始数据子块进行编码计算,得到m个冗余数据块的冗余数据子块,记m个冗余数据块为C1,C2,……,Cj,……,Cm,1≤j≤m,记Cj的第l个冗余数据子块为cjl;2.4控制节点的数据写入管理程序将D1,D2,……,Di,……,Dk和C1,C2,……,Cj,……,Cm分别写入不同的存储节点,将写入存储节点的数据对象记为Data;第三步,控制节点的数据修复管理程序,为Data中待修复的失效数据块D'i选择新存储节点LN,D'i为Data中原始数据块Di失效后的数据块,具体方法是:3.1控制节点的数据修复管理程序接收用户提交的失效数据块D'i修复请求;3.2控制节点的数据修复管理程序从可用存储节点中选择一个存储节点作为D'i的新存储节点LN,选择原则是LN未存储数据对象Data的任何数据块,即在SNSet中既未存放任何原始数据块,又未存放任何冗余数据块的N‑k‑m个存储节点中选取;第四步,控制节点的数据修复管理程序向数据对象Data中除去D'i的k+m‑1个可用数据块所在的存储节点发送D'i的数据子块修复请求、可用数据子块编号及可用数据子块解码系数、D'i的新存储节点LN的编号;数据对象Data的除去D'i的k+m‑1个可用数据块所在的存储节点执行数据修复程序,接收控制节点发送的D'i的数据子块修复请求、可用数据子块编号及可用数据子块解码系数、D'i的新存储节点LN的编号,获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将其发送给LN,具体方法是:4.1控制节点的数据修复管理程序将数据对象Data的除去D'i以外的...

【技术特征摘要】
1.一种基于纠删码的全分布修复方法,其特征在于包括以下步骤:第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连;节点包括控制节点和存储节点,控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境;分布存储系统包括一个控制节点,负责与用户交互,接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;接收用户提交的失效数据块修复请求,为失效数据块选择新的存储节点,向各存储节点发送失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号,接收修复成功信息,向用户返回修复成功信息;分布存储系统包括N个存储节点,N为正整数,存储节点负责存储数据对象的原始数据块和冗余数据块;接收来自控制节点的数据块写入请求,完成数据块写入任务;接收控制节点发送的失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号;根据可用数据子块编号获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将修复成功的数据子块发送给失效数据块的新存储节点;合并修复成功的数据子块得到恢复的数据块,完成修复后向控制节点发送修复成功信息;控制节点上安装有数据写入管理程序和数据修复管理程序;数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;数据修复管理程序接收用户提交的失效数据块修复请求,为失效数据块选择新的存储节点,向各存储节点发送失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号,从存储节点接收修复成功信息,向用户返回修复成功信息;存储节点上安装有数据写入程序和数据修复程序;数据写入程序负责接收来自控制节点的数据块写入请求,完成数据块写入任务;数据修复程序接收控制节点发送的失效数据子块修复请求、可用数据子块编号及可用数据子块解码系数、失效数据块的新存储节点编号;获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将修复成功的数据子块发送给失效数据块的新存储节点;合并修复成功的数据子块得到恢复的数据块,完成修复后向控制节点发送修复成功信息;第二步,控制节点的数据写入管理程序,对用户提交的数据对象NData进行分块和编码计算,得到k个原始数据块和m个冗余数据块,将原始数据块和冗余数据块分别写入不同的存储节点,具体步骤如下:2.1控制节点的数据写入管理程序接收用户提交的数据对象NData写入请求;2.2控制节点的数据写入管理程序将NData分割为k个原始数据块,记这k个原始数据块为D1,D2,……,Di,……,Dk,1≤i≤k,并将每个原始数据块分割为k+m-1个原始数据子块,记原始数据块Di分割的第l个原始数据子块为dil,1≤l≤k+m-1,k和m满足k+m+1≤N;2.3控制节点的数据写入管理程序利用存储的编码系数对k个原始数据块的原始数据子块进行编码计算,得到m个冗余数据块的冗余数据子块,记m个冗余数据块为C1,C2,……,Cj,……,Cm,1≤j≤m,记Cj的第l个冗余数据子块为cjl;2.4控制节点的数据写入管理程序将D1,D2,……,Di,……,Dk和C1,C2,……,Cj,……,Cm分别写入不同的存储节点,将写入存储节点的数据对象记为Data;第三步,控制节点的数据修复管理程序,为Data中待修复的失效数据块D'i选择新存储节点LN,D'i为Data中原始数据块Di失效后的数据块,具体方法是:3.1控制节点的数据修复管理程序接收用户提交的失效数据块D'i修复请求;3.2控制节点的数据修复管理程序从可用存储节点中选择一个存储节点作为D'i的新存储节点LN,选择原则是LN未存储数据对象Data的任何数据块,即在SNSet中既未存放任何原始数据块,又未存放任何冗余数据块的N-k-m个存储节点中选取;第四步,控制节点的数据修复管理程序向数据对象Data中除去D'i的k+m-1个可用数据块所在的存储节点发送D'i的数据子块修复请求、可用数据子块编号及可用数据子块解码系数、D'i的新存储节点LN的编号;数据对象Data的除去D'i的k+m-1个可用数据块所在的存储节点执行数据修复程序,接收控制节点发送的D'i的数据子块修复请求、可用数据子块编号及可用数据子块解码系数、D'i的新存储节点LN的编号,获取可用数据子块,基于可用数据子块及可用数据子块解码系数进行解码计算,得到修复成功的数据子块,并将其发送给LN,具体方法是:4.1控制节点的数据修复管理程序将数据对象Data的除去D'i以外的k+m-1个可用数据块所在的存储节点构成存储节点数组NSet,NSet[l]表示第l个可用数据块所在的存储节点,1≤l≤k+m-1;4.2初始化存储节点序号l=1;4.3控制节点的数据修复管理程序向NSet[l]发送d'il修复请求;4.4控制节点的数据修复管理程序为d'il选择用于修复的可用数据子块,得到可用数据子块编号数组DBSetil,DBSetil[r]表示用于修复d'il的第r个可用数据子块的编号,1≤r≤k;4.5控制节点的数据修复管理程序向存储节点NSet[l]发送DBSetil及DBSetil中的k个可用数据子块的解码系数Hi1,Hi2,……,Hir,……,Hi...

【专利技术属性】
技术研发人员:王意洁许方亮包涵马行空
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南,43

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

1