一种面向纠删码的数据放置方法

文档序号:6549876阅读:134来源:国知局
一种面向纠删码的数据放置方法
【专利摘要】本发明公开了一种面向纠删码的数据放置方法,目的是提高大规模分布存储系统的容错能力。技术方案是先构建由一个控制节点和M个机架(每个机架上安装N个存储节点)组成的分布存储系统,控制节点上安装有数据写入管理程序,存储节点上安装有数据写入程序;控制节点执行数据写入管理程序,接收用户提交的数据对象写入请求,对数据对象进行分块和编码计算,得到原始数据块和冗余数据块,且向各存储节点分发数据块写入请求;存储节点的数据写入程序接收来自控制节点的数据块写入请求,将原始数据块或冗余数据块写入本地磁盘。本发明有效兼顾了分布存储系统的数据访问效率、数据可靠性和数据修复效率,最大限度地提升了大规模分布存储系统的容错能力。
【专利说明】—种面向纠删码的数据放置方法
【技术领域】
[0001]本发明涉及分布存储系统的数据容错技术,尤其是面向纠删码的数据放置方法。【背景技术】
[0002]数据容错是海量数据分布存储的关键技术之一,数据容错对于提高系统的可用性和可靠性至关重要。目前,数据容错技术主要包括基于复制的容错技术和基于纠删码的容错技术。
[0003]基于复制的容错技术简单直观,易于实现和部署,需要为每个数据对象创建若干同样大小的副本,存储空间开销较大。基于纠删码的容错技术通过将数据对象分割为多个数据块,通过利用纠删码算法对原始的数据块进行编码得到冗余的数据块,把多个数据块的信息融合到较少的冗余信息中,有效节省存储空间。与基于复制的容错技术相比,基于纠删码的容错技术具有冗余度低、存储空间利用率高等优点,已经逐步成为大数据时代数据容错的主流技术。
[0004]基于纠删码的容错技术的基本思想是对k个原始数据块进行编码计算得到m个冗余数据块;只需k+m个数据块中的任意k个数据块,就可通过解码计算恢复得到原始的k个数据块。
[0005]具体而言,每个冗余数据块Cj(j = I, 2,…,m)都是k个原始数据块Di (i =
I,2,…,k)的线性组合,编码计算可表示为公式(I),其中,Gji (j = I, 2,…,m, i =
1.2,-,k)是数据块编码系数。也就是说,对于冗余数据块C^j= 1,2,...,!!!)而言,首先,编码系数(i = I, 2,…,k)与数据块Di (i = I, 2,…,k)进行逐位相乘,得到k个新数据块Tji = GjiXDi (i = I, 2,…,k);然后,k个新数据块TjiQ = I, 2,…,k)进行逐位相加,得
到冗余数据块。
【权利要求】
1.一种面向纠删码的数据放置方法,其特征在于包括以下步骤: 第一步,构建一个分布存储系统,它由多个节点构成,每个节点都是一台可独立运行的计算机,各节点通过网络设备互连; 分布存储系统中的节点分为两类:控制节点和存储节点,控制节点和存储节点上均安装有操作系统、TCP/IP协议软件,配置了网络环境; 分布存储系统包括一个控制节点,负责与用户交互,控制节点上安装有数据写入管理程序;数据写入管理程序接收用户提交的数据对象写入请求,负责存储编码系数,对数据对象进行分块和编码计算,向各存储节点分发数据块写入请求;所述编码系数是指纠删码编码计算公式Gjl XD1+…+Gji XDi+…+GjkXDk = Cj 中的系数Gji, j = 1,2,…,m,i = 1,2,…,k ; 分布存储系统包括M个机架,每个机架上安装N个存储节点,存储节点负责存储数据对象的原始数据块和冗余数据块,执行数据块写入任务;在分布存储系统中,每个原始数据块和冗余数据块均拥有唯一的数据块编号,M为正整数,N为正整数; 存储节点上安装有数据写入程序,数据写入程序负责接收来自控制节点的数据块写入请求,完成数据块写入任务; 第二步,控制节点执行数据写入管理程序,接收用户提交的数据对象D0,对数据对象DO进行分块和编码计算,得到原始数据块和冗余数据块,具体步骤如下: .2.1控制节点的数据写入管理程序接收用户提交的数据对象DO写入请求;. 2.2控制节点的数据写入管理程序将数据对象DO分割为k个原始数据块D1~Dk,记Di;l ≤ i ≤ k ; . 2.3控制节点的数据写入管理程序利用编码系数对k个原始数据块D1~Dk进行编码计算,得到m个冗余数据块C1~Cm,记Cj, 1≤j≤m ; 第三步,控制节点执行数据写入管理程序,将编码计算得到的k个原始数据块即D1~Dk和m个冗余数据块即C1~Cm分别写入不同的存储节点,具体步骤如下: . 3.1初始化信息,具体包括: .3.1.1分布存储系统的机架记为Rz,z为机架序号,1≤ z ≤ M,分布存储系统的M个机架构成机架集合RSet ; . 3.1.2分布存储系统中每个机架Rz的N个存储节点构成存储节点集合SNSetz ; . 3.1.3令原始数据块Dx的序号x=l; .3.1.4令写入同一机架的原始数据块数目sum = m ; . 3.1.5令冗余数据块Cy的序号y = 1 ; .3.2控制节点的数据写入管理程序从RSet中任意选择一个机架Rz,将sum个原始数据块写入从Rz的存储节点集合SNSetz中任意选择的sum个存储节点; .3.3如果(k-x+1) ≥m,则转第3.2步,继续将原始数据块写入到不同机架的存储节点;否则,转第3.4步; .3.4如果0〈 (k-x+1) <m,则令sum = k_x+l,转到第3.2步,继续将原始数据块写入到不同机架的存储节点;否则,说明k个原始数据块已经分别写入不同机架的存储节点,转第.3.5 步; .3.5控制节点的数据写入管理程序从RSet中任意选择一个机架Rz,将m个冗余数据块C1~Cm写入从SNSetz中任意选择的m个存储节点。第四步,控制节点执行数据写入管理程序,向用户发送数据写入成功信息。
2.如权利要求1所述的一种面向纠删码的数据放置方法,其特征在于2.3步中所述控制节点的数据写入管理程序利用编码系数对k个原始数据块D1~Dk进行编码计算的具体方法是: . 2.3.1初始化信息,具体包括: . 2.3.1.1令冗余数据块Cj的序号j = I ; . 2.3.1.2令原始数据块Di的序号i = I ; .2.3.2控制节点的数据写入管理程序进行编码计算,将编码系数Gm与原始数据块01进行逐位相乘,即,Tji = GjiXDi,得到新数据块Tji ; .2.3.3如果i = 1,那么,令Cj = Tji,转第2.3.4步;否则,将Tji与Cj进行逐位相加,BP, Cj = CfTji,转第 2.3.4 步; .2.3.4更新原始数据块Di的序号,i = i+1 ;
.2.3.5 如果 i>k,则令 i = 1,j = j+Ι ; .2.3.6如果j>m,则编码计算生成冗余数据块结束;否则,转第2.3.2步。
3.如权利要求1所述的一种面向纠删码的数据放置方法,其特征在于3.2步中控制节点的数据写入管理程序从RSet中任意选择一个机架Rz,将sum个原始数据块写入从Rz的存储节点集合SNSetz中任意选择的sum个存储节点的具体方法是: .3.2.1初始化信息,令写入机架Rz的原始数据块数目dn = I ; .3.2.2控制节点的数据写入管理程序从SNSetz中任意选择一个存储节点SN,控制节点的数据写入管理程序向存储节点SN发送Dx的写入请求,将存储节点SN从SNSetz中删除,即,SNSetz = SNSetz-{SN}; . 3.2.3存储节点SN的数据写入程序接收来自控制节点的Dx写入请求,将Dx写入本地磁盘; .3.2.4更新Dx的序号,X = x+1 ; .3.2.5更新写入机架Rz的原始数据块数目dn = dn+Ι ; .3.2.6如果dn>Sum,则说明sum个原始数据块已经分别写入机架Rz中的不同存储节点,转第3.2.7步;否则,转第3.2.2步; .3.2.7 将机架 Rz 从 RSet 中删除,即,RSet = RSet-{RJ。
4.如权利要求1所述的一种面向纠删码的数据放置方法,其特征在于3.5步中控制节点的数据写入管理程序从RSet中任意选择一个机架Rz,将m个冗余数据块C1~Cm写入从SNSetz中任意选择的m个存储节点的具体步骤是: .3.5.1初始化信息,令写入机架Rz的冗余数据块数目cn = I ; .3.5.2控制节点的数据写入管理程序从SNSetz中任意选择一个存储节点SN,控制节点的数据写入管理程序向存储节点SN发送Cy的写入请求,将存储节点SN从SNSetz中删除,即,SNSetz = SNSetz-{SN}; .3.5.3存储节点SN的数据写入程序接收来自控制节点的Cy写入请求,将Cy写入本地磁盘; .3.5.4更新Cy的序号,y = y+Ι ; .3.5.5更新写入机架Rz的原始数据块数目cn = cn+Ι ;.3.5.6如果cn≤ m,则转第3.5.2步,继续将冗余数据块写入机架Rz中的存储节点;否贝U,说明m 个冗余数据块已经分别写入机架Rz中的不同存储节点,结束。
【文档编号】G06F3/06GK104035732SQ201410269720
【公开日】2014年9月10日 申请日期:2014年6月17日 优先权日:2014年6月17日
【发明者】王意洁, 许方亮, 裴晓强, 符永铨, 孙伟东, 程力, 李小勇, 马行空, 王媛, 赵越, 林轩, 熊泽宇 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1