分布式存储系统的数据编码、解码及修复方法技术方案

技术编号:24133682 阅读:41 留言:0更新日期:2020-05-13 07:17
一种分布式存储系统的数据编码、解码及修复方法,可用于实现分布式存储系统的数据保护策略。其采用局部可修复编码方法,根据编码参数,对文件段切分后的数据块调用Reed‑Solomon编码算法生成全局编码块,并分别对数据块和全局编码块进行局部编码生成局部编码块;且能根据当前节点状态,计算解码块索引和修复块索引,读取辅助节点块数据,完成文件段解码和故障块修复。本发明专利技术编码方法通过增加局部编码块,降低修复故障节点时需要传输的数据量,加快了节点修复速度。本方案可解决分布式存储系统中采用Reed‑Solomon编码时,故障修复时修复带宽过大问题,可减少故障节点修复时间,继而提高存储系统数据访问速度和吞吐量。

【技术实现步骤摘要】
【国外来华专利技术】分布式存储系统的数据编码、解码及修复方法
本专利技术涉及网络编码领域,具体涉及一种分布式存储系统的数据编码、解码及修复方法。
技术介绍
分布式存储系统,如HDFS、WindowsAzure、GFS等,采用多副本或纠删码等数据冗余策略以实现系统高可用性及高可靠性。多副本策略具有较高的读取效率,但其主要缺点是高存储冗余,如3副本,存储冗余高达200%。高存储冗余带来高存储成本,在大规模存储集群中变得不可用。Reed-Solomon(RS)纠删码,通过对原始数据进行编码生成编码数据(总量一般远小于原始数据)作为存储冗余,与多副本相比,大大降低存储成本。如RS(10,4)编码,将原始文件段切分为10数据块,编码生成额外4编码块,仅有40%的存储冗余。但由于在写入数据时采用RS纠删码的方式需要编码过程且读取数据时需要从更多的节点读取数据,其执行存取操作的效率低于多副本策略,因此不适用于需要频繁存取的数据存储,适合存储规模较大、访问频率较低的温数据或冷数据存储。另一方面,RS编码为最大距离可分割(MaximumDistanceSeparable,MDS)编码,在同等可靠性下具有最高的存储效率。如RS(10,4)存储冗余为40%,支持最多4个存储节点失效,而3副本模式,存储冗余为200%,支持最多2节点失效。RS编码由于数据冗余度低于多副本策略,其对存储空间的利用效率更高,故具有较高的存储效率,但是需要较高的修复带宽,如RS(10,4)编码,一个存储节点上的数据块故障时,需要从其它10在线节点读取并传输共10个编码块以修复一个数据块。在大规模存储集群中,存储节点故障为常态,系统经常处于故障节点修复过程中,较高的修复带宽会降低正常存取的性能。多副本模式虽然具有最高的修复效率,一个数据块故障时,只需读取同等长度的副本,但明显的缺点是具有最高的存储冗余。为克服上述RS编码与多副本缺点,局部可修复编码(LocalRepairable/Recoverable/RegenerateCode,LRC)通过增加局部编码块,以一定的额外存储冗余增加,实现更低的修复带宽。局部编码块由最多r(r<<k)数据块或RS编码块线性运算生成,其中r为修复度或Locality,即修复单个数据块需要读取的其它数据块数目。由于集群中单节点故障占绝大多数,LRC编码因为具有远低于RS编码的修复度,大大降低了修复带宽,从而提高了系统正常存取效率。Facebook在HDFS中加入HDFS-Xorbas模块,实现一种局部可修复编码(LRC)。其在RS(k=10,m=4)编码基础上实现LRC(k=10,m=6,r=5)编码,即10个数据块,生成4个RS全局编码块,每r=5数据块生成1局部编码块,共2局部编码块。LRC(k=10,m=6,r=5)编码,在修复带宽和磁盘IO(单节点故障时仅需读取5个数据块实现修复)具有高效率,不足之处在于,通常情况下,LRC(k,n-k,r)需满足n为(r+1)的整数倍,可构造域大小为(|F|=q>(n,k+k/r-1)>>n),构造时间复杂度为指数时间(k28n),在多项式时间且在域(|F|=q>n)内构造此LRC编码仍然是未决的开放问题。
技术实现思路
本申请提供一种分布式存储系统的数据编码、解码及修复方法,使在分布式存储系统中采用RS编码时,在减小故障修复带宽的同时减少故障节点修复时间。根据本申请的第一方面,本申请提供了一种分布式存储系统的编码方法,包括:初始化步骤,用于进行编码参数设置;编码步骤,将每一个文件段划分为k数据块,对k原始数据块调用RS(k,m+1)编码,生成m全局编码块;对k数据块,依次取r数据块为一组进行异或运算,共生成局部编码块;对m全局编码块,依次取r编码块进行异或运算,生成局部编码块。根据本申请的第二方面,本申请提供了一种分布式存储系统的数据解码方法,包括:获取存储节点状态,读取编码后各数据块及编码块所存储的n存储节点状态,获得在线块索引列表和故障块索引列表;根据存储节点状态,获取可解码状态;根据不同的可解码状态,确定解码需要读取的数据位置以确定解码索引列表;根据解码索引列表,读取解码所需数据块或编码块;根据可解码状态、解码块索引及其已读取的对应块数据,解码文件段根据本申请的第三方面,本申请提供一种分布式存储系统的数据修复方法,包括:获取存储节点状态,读取编码后各数据块及编码块所存储的n存储节点状态,获得在线块索引列表和故障块索引列表;根据存储节点状态,获取可修复状态;根据可修复状态,获取应读取的用于修复故障块的修复块索引列表;根据修复块索引列表,读取修复块索引对应存储节点的数据块或编码块;根据可修复状态、修复块索引及其对应块数据,修复故障块。依据上述实施例的分布式存储系统的编码方法及数据解码和修复方法,增加了局部编码块,降低修复故障节点时需要传输的数据量,加快了节点修复速度。本方案可解决分布式存储系统中采用RS编码时,故障修复时修复带宽过大问题,可减少故障节点修复时间,继而提高存储系统数据访问速度和吞吐量。附图说明图1为分布式存储系统的编码过程示意图;图2为单故障修复过程示意图;图3为多故障局部修复过程示意图;图4为多故障仅RS解码修复示意图;图5为多故障局部及RS解码联合修复示意图;具体实施方式下面通过具体实施方式结合附图对本专利技术作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。本专利技术实施例中,提供了一种分布式存储系统的数据编码、解码及修复方法,其提出了一种局部可修复编码方法并基于该编码方法给出了相应的数据解码和修复方法。在本专利技术实施例中,编码、数据解码和修复的基本单元为文件段,其为固定长度数据段。对单个文件进行编码时,首先将文件切分为文件段,然后逐个对文件段进行编码。如果文件长度不为文件段长度整数倍,则对长度不足的文件段尾部补0至标准文件段大小,然后进行编码。本实施例以分布式存储系统为应用背景,介绍本专利技术所述的局部可修复编码方法及数据解码和修复方法。实施例一:一种分布式存储系统的局部可修本文档来自技高网
...

【技术保护点】
一种分布式存储系统的编码方法,其特征在于包括:/n初始化步骤,用于进行编码参数设置,包括获取原始数据块数k,全局编码块数m,修复度r,代数运算域GF空间设置w,即运算域

【技术特征摘要】
【国外来华专利技术】一种分布式存储系统的编码方法,其特征在于包括:
初始化步骤,用于进行编码参数设置,包括获取原始数据块数k,全局编码块数m,修复度r,代数运算域GF空间设置w,即运算域

编码步骤,将每一个文件段划分为k数据块,对k所述原始数据块调用RS(k,m+1)编码,生成m全局编码块;对k数据块,依次取r数据块为一组进行异或运算,共生成
局部编码块;对m全局编码块,依次取r编码块进行异或运算,生成
局部编码块。



根据权利要求1所述的方法,其特征在于,编码后数据总块数为
最后一个数据块分组不足r时,取实际剩余数据块进行异或运算;最后一个编码块分组不足r时,取实际剩余编码块进行异或运算。



根据权利要求1所述的方法,其特征在于,所述方法调用RS(k,m+1)编码为系统码,即前k数据块保持不变,m+1RS全局编码块中第一个编码块为隐含全局编码块,其由所有数据块异或运算或前
局部编码块异或运算得到。



一种分布式存储系统的数据解码方法,用于读取分布式存储系统中存储的数据,其特征在于,所述分布式存储系统采用如权利要求1所述的编码方法,所述解码方法包括:
获取存储节点状态,读取编码后各数据块及编码块所存储的n存储节点状态,获得在线块索引列表和故障块索引列表;
根据所述存储节点状态,获取可解码状态;
根据不同的可解码状态,确定解码需要读取的数据位置以确定解码索引列表;
根据所述解码索引列表,读取解码所需数据块或编码块;
根据可解码状态、解码块索引及其已读取的对应块数据,解码文件段。


根据权利要求4所述的方法,其特征在于,所述可解码状态包括无需解码、可局部解码、可仅RS解码、可局部及RS联合解码、不可解码。


根据权利要求4所述的方法,其特征在于,所述可解码状态获取过程为,
当单节点故障时,若故障节点为数据节点,则可解码状态为可局部解码,否则无需解码;
当故障节点不为一个时,依次进行如下判断:若k数据块所在存储节点都在线,返回无需解码状态;若每个局部编码分组中有且仅有一个数据块故障且局部编码块在线时,返回可局部解码状态;当k数据块及m全局编码块中有不少于k个在线时,返回可仅RS解码状态;当局部编码块可通过局部解码恢复,从而隐含全局编码块可恢复,或通过局部解码可恢复数据块或全局编码块数目达k时,剩余故障数据块可通过RS解码获得,返回可局部及RS联合解码状态;以上条件不满足时,返回不可解码状态。


根据权利要求6所述的方法,其特征在于,
当返回无需解码状态时,利用k在线数据块直接拼接成原始文件段;
当返回单节点/多节点可局部解码状态时,对于每个故障数据块,获取数目为r的在线局部分组块,对所述局部分组块进行异或运算解码出故障数据块;
当返回可仅RS解码状态时,利用k输入数据块和/或全局编码块,调用RS解码算法解码获得包括故障数据块在内的所有数据块;
当返回可局部及RS联合解码状态时,采用局部解码依次修复数据块、前
局部编码块、隐含全局编码块、其它RS全局编码块,当前k+m数据块和全局编码块及...

【专利技术属性】
技术研发人员:郝斌朱健
申请(专利权)人:深圳花儿数据技术有限公司
类型:发明
国别省市:广东;44

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

1