一种基于纠删码的跨中心协同修复方法技术

技术编号:19866448 阅读:48 留言:0更新日期:2018-12-22 13:56
本发明专利技术公开了一种基于纠删码的跨中心协同修复方法,技术方案是先构建由数据中心和控制节点组成的分布存储系统,数据中心包括N个存储节点,控制节点为失效数据块Di选择新存储节点LN,向LN发送网络延迟测试请求和存储节点二维数组NSet;LN测试LN与NSet中各存储节点之间的网络延迟,向控制节点发送网络延迟测试结果数组NL;控制节点根据NL选择k个可用数据块及其所在存储节点,k个可用数据块所在的存储节点进行解码计算,被选存储节点所在的数据中心将解码计算结果进行合并,将合并后的结果发送给LN;LN将结果进一步合并得到恢复的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)每个原始数据块Di都是其它任意k个可用数据块Er(1≤r≤k)(原始数据块或者冗余数据块)的线性组合,解码计算可表示为公式(2),其中,Hir是数据块解码系数。也就是说,对于原始数据块Di而言,首先,解码系数Hir与可用数据块Er进行逐位相乘,得到新数据块Sir=Hir×Er;然后,k个新数据块进行逐位相加,得到原始数据块Hi1×E1+…+Hir×Er+…+Hik×Ek=Di(2)尽管随着技术的进步,各种软硬件资源的可靠性得到了显著提高,但是,随着存储资源规模的不断扩大,资源的失效概率明显上升。在大规模分布存储系统中,资源失效是一种常态行为。在数据块失效时,基于纠删码的容错技术需要多个数据块才能解码恢复失效的原始数据块,需要占用较多的网络资源。随着云计算技术的迅速发展,基于多数据中心的分布存储系统日益普及。同一数据中心内部的两个存储节点之间的网络延迟和位于不同数据中心的两个存储节点之间的网络延迟相差很大,不同数据中心之间的网络延迟也会存在较大差异。现有的纠删码数据修复技术主要是随机选择可用数据块进行失效数据修复,没有充分考虑到可用数据块所在的存储节点之间的网络延迟之间的差异给修复效率带来的影响。因此,如何针对存储节点之间网络延迟的差异,设计基于纠删码的跨中心协同修复方法,有效提高大规模分布存储系统的数据修复效率,从而提高大规模分布存储系统的容错能力,已经成为分布存储领域的热点研究问题。
技术实现思路
本专利技术要解决的技术问题是:针对存储节点之间网络延迟的差异,提出一种基于纠删码的跨中心协同修复方法,有效提高大规模分布存储系统的数据修复效率,从而提高大规模分布存储系统的容错能力。本专利技术技术方案包括以下步骤:第一步,构建一个分布存储系统,它由M个数据中心和一个控制节点组成,每个数据中心均包括N个存储节点,每个节点(包括控制节点和存储节点)都是一台可独立运行的计算机,各节点通过网络设备互连。M和N均为正整数。控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境。控制节点负责与用户交互,接收用户提交的失效数据块修复请求;负责为失效数据块选择新的存储节点,并向新的存储节点发送网络延迟测试请求;负责根据网络延迟选择可用数据块及其所在存储节点;负责存储解码系数,向各存储节点分发失效数据块修复任务和接收修复成功信息,向用户返回修复成功信息。存储节点负责存储数据对象的原始数据块和冗余数据块,执行网络延迟测试任务,并向控制节点返回网络延迟测试结果;执行失效数据块修复任务,并向控制节点返回修复成功信息。设数据对象DO分割为k个原始数据块即D1,D2,……,Di……,Dk(1≤i≤k),k为正整数,对k个原始数据块进行编码计算得到m个冗余数据块,m为正整数,这k+m(k+m<N)个数据块分别存储在k+m个存储节点上。在分布存储系统中,每个数据块拥有唯一的数据块编号。控制节点上安装有任务管理程序和结果回收程序。任务管理程序接收用户提交的失效数据块修复请求,为失效数据块选择一个新存储节点,并向新存储节点发送网络延迟测试请求;根据网络延迟测试结果从数据对象DO的k+m-1(除去失效数据块)个可用数据块中选择k个可用数据块及其所在存储节点;向k个可用数据块所在的存储节点发送失效数据块修复请求及修复所需的相关信息。结果回收程序负责接收存储节点的修复成功信息并返回给用户。存储节点上安装有网络延迟测试程序和修复程序。网络延迟测试程序负责接收来自控制节点的网络延迟测试请求,进行网络延迟测试,向控制节点发送网络延迟测试结果。修复程序负责接收来自控制节点的失效数据块修复请求,并对存储节点上存储的可用数据块进行解码计算,完成修复后向控制节点发送修复成功信息。第二步,控制节点为待修复的失效数据块Di选择新存储节点LN,具体方法是:2.1控制节点的任务管理程序接收用户提交的失效数据块Di修复请求。2.2控制节点的任务管理程序从可用存储节点中选择一个存储节点作为失效数据块Di的新存储节点LN,选择原则是存储节点LN未存储数据对象DO的任何数据块。第三步,控制节点向存储节点LN发送网络延迟测试请求和存储节点二维数组NSet,具体方法是:3.1控制节点的任务管理程序向存储节点LN发送网络延迟测试请求。3.2控制节点的任务管理程序将数据对象DO的除去失效数据块Di以外的k+m-1个可用数据块所在的存储节点构成存储节点二维数组NSet,NSet[s][1]表示第s个可用数据块所在的存储节点,NSet[s][2]表示第s个可用数据块所在的存储节点所在的数据中心,1≤s≤k+m-1,向存储节点LN发送存储节点二维数组NSet。第四步,存储节点LN接收来自控制节点的网络延迟测试请求和存储节点二维数组NSet,依次测试LN与NSet中各存储节点之间的网络延迟,向控制节点发送网络延迟测试结果数组NL,具体方法是:4.1存储节点LN的网络延迟测试程序接收来自控制节点的网络延迟测试请求和存储节点二维数组NSet。4.2存储节点LN的网络延迟测试程序依次测试LN与NSet中各存储节点之间的网络延迟,采用网络延迟测试结果数组NL存储测试结果,NL[s]表示存储节点LN与存储节点NSet[s][1]之间的网络延迟,具体步骤如下:4.2.1初始化存储节点序号s=1。4.2.2测试存储节点LN与存储节点NSet[s][1]之间的网络延迟Lat,令NL[s]=Lat。4.2.3更新存储节点序号,s=s+1。4.2.4如果s=k+m,那么,网络延迟测试结束,转第4.3步;否则,转到第4.2.2步,继续测试网络延迟。4.3存储节点LN的网络延迟测试程序向控制节点发送网络延迟测试结果数组NL。第五步,控制节点接收来自存储节点LN的网本文档来自技高网
...

【技术保护点】
1.一种基于纠删码的跨中心协同修复方法,其特征在于包括以下步骤:第一步,构建一个分布存储系统,它由M个数据中心和一个控制节点组成,每个数据中心均包括N个存储节点,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连,M和N均为正整数;控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境;控制节点负责与用户交互,接收用户提交的失效数据块修复请求;负责为失效数据块选择新的存储节点,并向新的存储节点发送网络延迟测试请求;负责根据网络延迟选择可用数据块及其所在存储节点;负责存储解码系数,向各存储节点分发失效数据块修复任务和接收修复成功信息,向用户返回修复成功信息;存储节点负责存储数据对象的原始数据块和冗余数据块,执行网络延迟测试任务,并向控制节点返回网络延迟测试结果;执行失效数据块修复任务,并向控制节点返回修复成功信息;将数据对象DO分割为k个原始数据块即D1,D2,……,Di……,Dk,1≤i≤k,k为正整数,对k个原始数据块进行编码计算得到m个冗余数据块,m为正整数,这k+m个数据块分别存储在k+m个存储节点上,k+m<N;在分布存储系统中,每个数据块拥有唯一的数据块编号;控制节点上安装有任务管理程序和结果回收程序;任务管理程序接收用户提交的失效数据块修复请求,为失效数据块选择一个新存储节点,并向新存储节点发送网络延迟测试请求;根据网络延迟测试结果从数据对象DO的除去失效数据块的k+m‑1个可用数据块中选择k个可用数据块及其所在存储节点;向k个可用数据块所在的存储节点发送失效数据块修复请求及修复所需的相关信息;结果回收程序负责接收存储节点的修复成功信息并返回给用户;存储节点上安装有网络延迟测试程序和修复程序;网络延迟测试程序负责接收来自控制节点的网络延迟测试请求,进行网络延迟测试,向控制节点发送网络延迟测试结果;修复程序负责接收来自控制节点的失效数据块修复请求,并对存储节点上存储的可用数据块进行解码计算,完成修复后向控制节点发送修复成功信息;第二步,控制节点为待修复的失效数据块Di选择新存储节点LN;第三步,控制节点向存储节点LN发送网络延迟测试请求和存储节点二维数组NSet,具体方法是:3.1控制节点的任务管理程序向存储节点LN发送网络延迟测试请求;3.2控制节点的任务管理程序将数据对象DO的除去失效数据块Di以外的k+m‑1个可用数据块所在的存储节点构成存储节点二维数组NSet,NSet[s][1]表示第s个可用数据块所在的存储节点,NSet[s][2]表示第s个可用数据块所在的存储节点所在的数据中心,1≤s≤k+m‑1,向存储节点LN发送存储节点数组NSet;第四步,存储节点LN接收来自控制节点的网络延迟测试请求和存储节点二维数组NSet,依次测试LN与NSet中各存储节点之间的网络延迟,向控制节点发送网络延迟测试结果数组NL,具体方法是:4.1存储节点LN的网络延迟测试程序接收来自控制节点的网络延迟测试请求和存储节点二维数组NSet;4.2存储节点LN的网络延迟测试程序依次测试LN与NSet中各存储节点之间的网络延迟,采用网络延迟测试结果数组NL存储测试结果,NL[s]表示存储节点LN与存储节点NSet[s][1]之间的网络延迟;4.3存储节点LN的网络延迟测试程序向控制节点发送网络延迟测试结果数组NL;第五步,控制节点接收来自存储节点LN的网络延迟测试结果数组NL;根据NL从数据对象DO的除去失效数据块的k+m‑1个可用数据块中选择k个可用数据块及其所在存储节点,具体方法是:5.1控制节点的任务管理程序接收来自存储节点LN的网络延迟测试结果数组NL;5.2控制节点的任务管理程序根据NL从数据对象DO的除去失效数据块的k+m‑1个可用数据块中选择k个可用数据块,采用被选存储节点二维数组RNSet存储被选中的k个可用数据块所在的存储节点及其所在数据中心,RNSet[t][1]表示被选中的第t个可用数据块所在存储节点,RNSet[t][2]表示被选中的第t个可用数据块所在存储节点的所在数据中心,1≤t≤k;第六步,控制节点执行任务管理程序,向第五步选择的k个可用数据块的所在存储节点发送失效数据块Di修复请求、可用数据块编号及其解码系数Hir、被选存储节点二维数组RNSet、失效数据块Di的新存储节点LN的编号,1≤r≤k;第七步,第五步选择的k个可用数据块的所在存储节点执行修复程序,接收来自控制节点的失效数据块Di修复请求、可用数据块编号及其解码系数Hir、被选存储节点二维数组RNSet、失效数据块Di的新存储节点LN的编号;基于可用数据块及其解码系数Hir进行解码计算,RNSet中的每个数据中心先将解码计算结果进行合并,然后将合并后的中间解码结果发送给LN:7.1被选中的k个可用数据块的所在存储节...

【技术特征摘要】
1.一种基于纠删码的跨中心协同修复方法,其特征在于包括以下步骤:第一步,构建一个分布存储系统,它由M个数据中心和一个控制节点组成,每个数据中心均包括N个存储节点,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连,M和N均为正整数;控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境;控制节点负责与用户交互,接收用户提交的失效数据块修复请求;负责为失效数据块选择新的存储节点,并向新的存储节点发送网络延迟测试请求;负责根据网络延迟选择可用数据块及其所在存储节点;负责存储解码系数,向各存储节点分发失效数据块修复任务和接收修复成功信息,向用户返回修复成功信息;存储节点负责存储数据对象的原始数据块和冗余数据块,执行网络延迟测试任务,并向控制节点返回网络延迟测试结果;执行失效数据块修复任务,并向控制节点返回修复成功信息;将数据对象DO分割为k个原始数据块即D1,D2,……,Di……,Dk,1≤i≤k,k为正整数,对k个原始数据块进行编码计算得到m个冗余数据块,m为正整数,这k+m个数据块分别存储在k+m个存储节点上,k+m<N;在分布存储系统中,每个数据块拥有唯一的数据块编号;控制节点上安装有任务管理程序和结果回收程序;任务管理程序接收用户提交的失效数据块修复请求,为失效数据块选择一个新存储节点,并向新存储节点发送网络延迟测试请求;根据网络延迟测试结果从数据对象DO的除去失效数据块的k+m-1个可用数据块中选择k个可用数据块及其所在存储节点;向k个可用数据块所在的存储节点发送失效数据块修复请求及修复所需的相关信息;结果回收程序负责接收存储节点的修复成功信息并返回给用户;存储节点上安装有网络延迟测试程序和修复程序;网络延迟测试程序负责接收来自控制节点的网络延迟测试请求,进行网络延迟测试,向控制节点发送网络延迟测试结果;修复程序负责接收来自控制节点的失效数据块修复请求,并对存储节点上存储的可用数据块进行解码计算,完成修复后向控制节点发送修复成功信息;第二步,控制节点为待修复的失效数据块Di选择新存储节点LN;第三步,控制节点向存储节点LN发送网络延迟测试请求和存储节点二维数组NSet,具体方法是:3.1控制节点的任务管理程序向存储节点LN发送网络延迟测试请求;3.2控制节点的任务管理程序将数据对象DO的除去失效数据块Di以外的k+m-1个可用数据块所在的存储节点构成存储节点二维数组NSet,NSet[s][1]表示第s个可用数据块所在的存储节点,NSet[s][2]表示第s个可用数据块所在的存储节点所在的数据中心,1≤s≤k+m-1,向存储节点LN发送存储节点数组NSet;第四步,存储节点LN接收来自控制节点的网络延迟测试请求和存储节点二维数组NSet,依次测试LN与NSet中各存储节点之间的网络延迟,向控制节点发送网络延迟测试结果数组NL,具体方法是:4.1存储节点LN的网络延迟测试程序接收来自控制节点的网络延迟测试请求和存储节点二维数组NSet;4.2存储节点LN的网络延迟测试程序依次测试LN与NSet中各存储节点之间的网络延迟,采用网络延迟测试结果数组NL存储测试结果,NL[s]表示存储节点LN与存储节点NSet[s][1]之间的网络延迟;4.3存储节点LN的网络延迟测试程序向控制节点发送网络延迟测试结果数组NL;第五步,控制节点接收来自存储节点LN的网络延迟测试结果数组NL;根据NL从数据对象DO的除去失效数据块的k+m-1个可用数据块中选择k个可用数据块及其所在存储节点,具体方法是:5.1控制节点的任务管理程序接收来自存储节点LN的网络延迟测试结果数组NL;5.2控制节点的任务管理程序根据NL从数据对象DO的除去失效数据块的k+m-1个可用数据块中选择k个可用数据块,采用被选存储节点二维数组RNSet存储被选中的k个可用数据块所在的存储节点及其所在数据中心,RNSet[t][1]表示被选中的第t个可用数据块所在存储节点,RNSet[t][2]表示被选中的第t个可用数据块所在存储节点的所在数据中心,1≤t≤k;第六步,控制节点执行任务管理程序,向第五步选择的k个可用数据块的所在存储节点发送失效数据块Di修复请求、可用数据块编号及其解码系数Hir、被选存储节点二维数组RNSet、失效数据块Di的新存储节点LN的编号,1≤r≤k;第七步,第五步选择的k个可用数据块的所在存储节点执行修复程序,接收来自控制节点的失效数据块Di修复请求、可用数据块编号及其解码系数Hir、被选存储节点二维数组RNSet、失效数据块Di的新存储节点LN的编号;基于可用数据块及其解码系数Hir进行解码计算,RNSet中的每个数据中心先将解码计算结果进行合并,然后将合并后的中间解码结果发送给LN:7.1被选中的k个可用数据块的所在存储节点的修复程序进行解码计算,得到新数据块Si1,…,Sir,…,Sik;7.2被选中的k个可用数据块的所在存储节点的修复程序进行数据中心内部的解码结果合并,得到合并后的中间解码结果,方法是:7.2.1采用数据块状态数组CSet记录被选中...

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

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

1