提升分布式存储集群中LRC码修复性能的方法、装置及系统与流程

文档序号:18899460发布日期:2019-10-18 21:44阅读:199来源:国知局
提升分布式存储集群中LRC码修复性能的方法、装置及系统与流程

本发明属于计算机存储领域,更具体地,涉及一种提升分布式存储集群中lrc码修复性能的方法、装置及系统。



背景技术:

随着信息技术的快速发展,需要存储的数据量不断增大,大规模的分布式存储集群获得了广泛的应用廉价存储设备的应用也逐渐变得广泛。而随着存储规模的增大、廉价磁盘数目的增多,分布式存储集群中磁盘发生故障的概率也在上升,从而导致存储系统的可靠性面临严峻的挑战。为了保证存储系统的可靠性,大多数存储系统都使用了容错技术。lrc码(locallyrepairablecodes,局部性修复编码)是一种重要的存储容错技术,已经应用在microsoft和facebook的分布式存储集群中。lrc码在rs码(reed-solomoncodes,里所码)的基础上,将条带内的编码块分组,每一个分组称为一个局部组,再对每个局部组内的块进行编码生成一个额外的局部校验块,单个块丢失时,只需同局部组内的其它块的数据解码即可恢复丢失的数据。

现代分布式存储集群大多具有层次架构,一个机架包含多台服务器,再由多个机架组成一个集群。分布式存储集群的层次架构使得节点间的网络传输被分为机架内传输和机架间传输,机架内传输带宽比较富余,机架间传输带宽则相对紧张,对于某个节点来说,二者的可用量可能相差5-20倍。例如,在google的存储集群中,机架间访问吞吐量仅为机架内访问吞吐量的约十分之一。

而目前,在分布式存储集群中,为了最大化故障域,提高容错能力,往往将同一条带的编码块放入不同机架的节点中,例如,相应的条带分布和修复过程都是水平的,分布式存储集群本身的层次拓扑结构被忽略或刻意消除了。这导致在分布式存储集群中执行lrc码修复操作时,消耗的都是稀缺的机架间网络带宽资源,这大大限制了分布式集群中lrc码的修复性能。



技术实现要素:

针对现有技术的缺陷和改进需求,本发明提供了一种提升分布式存储集群中lrc码修复性能的方法、装置及系统,其目的在于,提升分布式存储集群中lrc码的修复性能。

为实现上述目的,按照本发明的第一方面,提供了一种提升分布式存储集群中lrc码修复性能的方法,包括:

对待存储的数据块执行lrc编码,以生成相应的条带;

对于每一个条带,将其中的每一个局部组进一步划分为一个或多个小分组后,将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中;

对单个编码块进行修复时,获得待修复编码块所在的小分组,记为目标小分组,并获得与目标小分组属于同一局部组的所有小分组;在各小分组所在机架内,由中继节点通过机架内网络收集同一小分组内的编码块,并通过解码计算得到中间结果;在目标小分组所在机架内,由目标节点收集各中继节点所计算的中间结果后,通过解码计算修复得到待修复的编码块并存储该编码块,从而完成修复操作;

其中,中继节点和目标节点均为相应机架内的节点。

本发明所提供的提升分布式存储集群中lrc码修复性能的方法,在通过执行lrc码得到条带后,对条带内的局部组进一步分组,并将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中,由此实现了对条带的分层放置;在对单个编码块执行修复时,先由中继节点通过同一小分组内的编码块,并通过解码计算得到中间结果,然后由目标节点收集中间结果后,通过解码计算修复得到待修复的编码块并存储该编码块,由此将单个编码块的修复过程分为了机架内修复阶段和机架间修复阶段,即实现了分层修复;由于在机架内修复阶段中,仅使用机架内带宽,因此,相比于传统的lrc码修复操作,本发明能够将大量的机架间修复带宽转换为机架内修复带宽,使得节点故障时的降级读和节点恢复等修复操作的性能大幅提升,还能提高系统的可靠性。

进一步地,本发明所提供的提升分布式存储集群中lrc码修复性能的方法,还包括:在对多个不同条带的单个编码块进行修复时,将单个编码块的修复操作划分为磁盘读取、机架内传输、机架内计算、机架间传输以及目标节点内计算这五个操作,并按照流水线的方式并发执行对多个编码块的修复操作。

本发明所提供的提升分布式存储集群中lrc码修复性能的方法,通过流水线的方式并发执行对多个编码块的修复操作,能够有效提升节点恢复的效率,从而提升lrc码的修复性能,提高系统的可靠性。

进一步地,各小分组的大小相等,以平衡各机架的负载。

进一步地,机架内的中继节点为该机架内存储有编码块的机架,以减小机架内的数据传输,提高修复性能。

进一步地,目标节点内为目标小分组所在机架内的空闲节点,以使得修复得到待修复的编码块后,可以直接由目标节点存储该编码块。

按照本发明的第二方面,提供了一种提升分布式存储集群中lrc码修复性能的控制装置,包括:编码模块、分层放置模块以及分层修复模块;

编码模块,用于对待存储的数据块执行lrc编码,以生成相应的条带;

分层放置模块,用于对于由编码模块生成的每一个条带,将其中的每一个局部组进一步划分为一个或多个小分组后,将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中;

分层修复模块,用于在对单个编码块进行修复时,获得待修复编码块所在的小分组,记为目标小分组,并获得与目标小分组属于同一局部组的所有小分组;使得各小分组所在机架内,由中继节点通过机架内网络收集同一小分组内的编码块,并通过解码计算得到中间结果;使得目标小分组所在机架内,由目标节点收集各中继节点所计算的中间结果后,通过解码计算修复得到待修复的编码块并存储该编码块,从而完成修复操作;

其中,中继节点和目标节点均为相应机架内的节点。

按照本发明的第三方面,提供了一种分布式存储集群,该分布式存储集群包括本发明第二方面所提供的控制装置。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

(1)本发明所提供的提升分布式存储集群中lrc码修复性能的方法、装置及系统,通过将同一条带的多个块放入同一机架实现了对条带的分层放置,并通过分层修复的方法将对单个编码块的修复过程分为机架内修复和机架间修复,从而将大量机架间修复带宽转换为机架内修复带宽,使得节点故障时的降级读和节点恢复等修复操作的性能大幅提升,还能提升系统的可靠性。

(2)本发明所提供的提升分布式存储集群中lrc码修复性能的方法、装置及系统,在其优选方案中,通过流水线的方式并发执行对多个编码块的修复操作,能够有效提升节点恢复的效率,从而提升lrc码的修复性能,提高系统的可靠性。

附图说明

图1为本发明实施例提供的提升分布式集群中lrc码修复性能的方法示意图;其中,(a)为编码和编码过程示意图,(b)为修复过程示意图;

图2为本发明实施例提供的提升分布式集群中lrc码修复性能的方法的应用实例。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明所提供的提升分布式存储集群中lrc码修复性能的方法,如图1所示,包括:

对待存储的数据块执行lrc编码,以生成相应的条带;如图1(a)所示,以rs(m,k)编码为例,执行lrc编码后,会对k个数据块执行rs编码,得到m-k个全局校验块;然后对全部m个编码块进行分组,每个分组中包含r个编码块,利用r个编码块生成一个局部校验块,从而由每个分组中的r个编码块连同所生成的局部校验块构成一个局部组,并得到由数据块、全局校验块、局部校验块共n个编码块组成的完整的条带;m、n、r之间满足m=n*r/(r+1);

对于每一个条带,将其中的每一个局部组进一步划分为一个或多个小分组后,将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中;如图1(a)所示,本发明对条带内的局部组进一步分组,并将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中,由此实现了对条带的分层放置;

对单个编码块进行修复时,获得待修复编码块所在的小分组,记为目标小分组,并获得与目标小分组属于同一局部组的所有小分组;在各小分组所在机架内,由中继节点通过机架内网络收集同一小分组内的编码块,并通过解码计算得到中间结果;在目标小分组所在机架内,由目标节点收集各中继节点所计算的中间结果后,通过解码计算修复得到待修复的编码块并存储该编码块,从而完成修复操作;如图1(b)所示,在本实施例中,先由中继节点通过同一小分组内的编码块,并通过解码计算得到中间结果,然后由目标节点收集中间结果后,通过解码计算修复得到待修复的编码块并存储该编码块,由此将单个编码块的修复过程分为了机架内修复阶段和机架间修复阶段,即实现了分层修复;在目标小分组所在机架内,待修复的编码块因丢失而不可收集,因此,在该机架内,用于计算中间结果的编码块与其他机架相比少一个;

其中,中继节点和目标节点均为相应机架内的节点。

本发明所提供的提升分布式存储集群中lrc码修复性能的方法,通过分层放置和分层修复的方式,将大量的机架间修复带宽转换为机架内修复带宽,使得节点故障时的降级读和节点恢复等修复操作的性能大幅提升,还能提高系统的可靠性。

在本发明中底层编码与传统lrc码结构相同,并且系统修复后回归到稳定状态。

为进一步提升分布式存储集群中lrc码的修复性能,上述提升分布式存储集群中lrc码修复性能的方法,还可包括:在对多个不同条带内的单个编码块进行修复时,将单个编码块的修复操作划分为磁盘读取、机架内传输、机架内计算、机架间传输以及目标节点内计算这五个操作,并按照流水线的方式并发执行对多个编码块的修复操作;

通过流水线的方式并发执行对多个编码块的修复操作,能够有效提升节点恢复的效率,从而提升lrc码的修复性能,提高系统的可靠性。

在将局部组划分为小分组时,可根据实际需求确定划分方式,以权衡分布式存储集群的容错能力和修复性能,各小分组的大小可相等也可不相等;当小分组的大小等于局部组的大小时,同一个局部组中的编码块被放入同一机架中,此时,在对单个编码块进行修复时,仅消耗机架内带宽,能够最大化lrc码修复性能,但是相应地,分布式集群的容错能力较差;当小分组的大小等于单个编码块的大小时,同局部组内的编码块放入不同机架的节点中,此时,相应的条带分布和修复过程都是水平的,分布式集群的容错能力达到最大,但相应地,在对单个编码块进行修复时,消耗的都是稀缺的机架间网络带宽资源,修复性能较差;

在一个可选的实施方式中,各小分组的大小相等,以平衡各机架的负载。

在本实施例中,机架内的中继节点为该机架内存储有编码块的机架,以减小机架内的数据传输,提高修复性能。

在本实施例中,目标节点内为目标小分组所在机架内的空闲节点,以使得修复得到待修复的编码块后,可以直接由目标节点存储该编码块。

本发明还提供了一种提升分布式存储集群中lrc码修复性能的控制装置,用于执行上述提升分布式存储集群中lrc码修复性能的方法的各步骤,该控制装置包括:编码模块、分层放置模块以及分层修复模块;

编码模块,用于对待存储的数据块执行lrc编码,以生成相应的条带;

分层放置模块,用于对于由编码模块生成的每一个条带,将其中的每一个局部组进一步划分为一个或多个小分组后,将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中;

分层修复模块,用于在对单个编码块进行修复时,获得待修复编码块所在的小分组,记为目标小分组,并获得与目标小分组属于同一局部组的所有小分组;使得各小分组所在机架内,由中继节点通过机架内网络收集同一小分组内的编码块,并通过解码计算得到中间结果;使得目标小分组所在机架内,由目标节点收集各中继节点所计算的中间结果后,通过解码计算修复得到待修复的编码块并存储该编码块,从而完成修复操作;

其中,中继节点和目标节点均为相应机架内的节点;

在本发明实施例中,各模块的具体实时方式可参考上述方法实施例中的描述,在此将不作复述。

本发明还提供了一种分布式存储集群,该分布式存储集群包括本发明所提供的控制装置。

应用实例:

如图2所示,执行lrc编码时,(n,k,r)=(8,4,3),以一个条带为例说明,通过执行lrc编码,4个数据块d0、d1、d2、d3生成了两个全局校验块g0、g1;把这6个块分为两组,第组的3个块d0、d1、d2生成局部校验块l0,第二组的3个块d3、g0、g1生成局部校验块l1;d0、d1、d2和l0组成第一个局部组,d3、g0、g1和l1组成第二个局部组;数据块d0、d1、d2、d3,全局校验块g0、g1以及局部校验块块l0、l1,共同组成了一个条带。

通过分层放置,将条带内的编码块分布到集群中,在图2中,设定每两个编码块放入同一机架的不同节点中,从而将每一个局部组划分为两个大小相等的小分组,将同一个小分组内的编码块放置到同一个机架中的不同节点,不同的小分组放置到不同机架中,得到图2中所示的编码块在机架中的分布。

当某个节点故障时,例如数据块d0所在节点故障导致数据丢失时,使用分层修复:在机架内修复阶段,由将第二个机架内的中继节点收集该小分组内的数据块d2和局部校验块l0并通过解码计算得到中间结果;由于第一个机架中只有数据块d1可收集,第一个机架内,数据块d1即为中间结果;机架间修复阶段,由第一个机架中的一个目标节点收集第一个机架的中间结果和数据块d1进行解码计算,以恢复丢失的数据,并由该目标节点存储修复出的数据块,系统恢复到分层放置后的稳定状态,然后等待下一次修复过程。这样只需通过机架间网络传输1个块的数据量,大幅减少了机架间修复带宽。

总体而言,本发明所提供的分层的局部性修复编码及其修复方法,在维持lrc编码结构和存储开销不变的前提下,针对存储集群的层次架构对传统lrc码进行改进,通过分层放置和分层修复使用机架内带宽换取机架间带宽,提升了系统的可靠性以及降级读和节点恢复性能,并利用流水线技术进一步提升了节点恢复效率。实验表明,相对于传统lrc来说,本发明所提供的分层的局部性修复编码,可靠性最多可提升183.7%,降级读时间最多减少69.5%,节点恢复效率最多提升292.6%。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1