数据修复方法和装置制造方法及图纸

技术编号:33887284 阅读:16 留言:0更新日期:2022-06-22 17:20
本公开提出了一种数据修复方法和装置,涉及计算机技术领域。其中的数据修复方法包括:确定当前节点中的待修复编码块;根据所述待修复编码块在磁盘中的分布信息,对所述待修复编码块进行排序;按照所述排序,依次获取修复所述待修复编码块所需的可用块;根据修复所述待修复编码块所需的可用块,对所述待修复编码块进行修复。本公开能够顺序拉取并修复数据,减少读写磁盘的输入输出(IO)次数,降低磁盘占用率,提升数据修复效率。提升数据修复效率。提升数据修复效率。

【技术实现步骤摘要】
数据修复方法和装置


[0001]本公开涉及计算机领域,尤其涉及一种数据修复方法和装置。

技术介绍

[0002]分布式存储系统常采用纠删码(EC,erasure code)技术,主要是通过纠删码算法将原始的数据进行编码得到冗余,将数据和冗余一并存储起来,以达到容错的目的。数据分段存储在各节点上,当某个节点出现异常或数据落后时,可从其他节点拉取数据,根据相应算法计算出当前节点的数据。
[0003]相关技术中,恢复某节点数据的常见实现方案是:从元数据(meta)文件中查询待修复数据块对应的键(key),每次针对一个待修复数据块从其他节点拉取key对应的数据进行修复,直至所有待修复数据块全部修复成功。这种方式下,直接按照meta文件中的key的排序随机读写磁盘,会导致磁盘占用率高,数据修复效率低。另外,修复完一个数据块才去获取下一个数据块内容进行修复,修复速度有限。

技术实现思路

[0004]本公开要解决的一个技术问题是,提供一种解决方案,能够顺序拉取并修复数据,减少读写磁盘的输入输出(IO)次数,降低磁盘占用率,提升数据修复效率。
[0005]根据本公开的一方面,提出一种数据修复方法,包括:确定当前节点中的待修复编码块;根据所述待修复编码块在磁盘中的分布信息,对所述待修复编码块进行排序;按照所述排序,依次获取修复所述待修复编码块所需的可用块;根据修复所述待修复编码块所需的可用块,对所述待修复编码块进行修复。
[0006]在一些实施例中,将排序后的待修复编码块划分成至少一个批次,批量获取修复每个批次的待修复编码块所需的可用块;根据所述修复每个批次的待修复编码块所需的可用块,对该批次的待修复编码块进行批量修复。
[0007]在一些实施例中,批量获取可用块与批量修复异步执行。
[0008]在一些实施例中,批量获取修复每个批次的待修复编码块所需的可用块包括:从分布式存储系统中除所述当前节点之外的其他节点中选出多个节点;向所述多个节点并发地发起批量数据获取请求;接收所述多个节点返回的修复该批次的待修复编码块所需的可用块。
[0009]在一些实施例中,还包括:在所述确定当前节点中的待修复编码块之后,根据所述待修复编码块的键查询存储信息表,以得到所述待修复编码块在磁盘中的分布信息。
[0010]在一些实施例中,还包括:通过异步读写器读取修复后的编码块,并将所述修复后的编码块写入预写式日志文件;在满足预设的写盘条件时,将所述预写式日志文件保存的修复后的编码块批量写入磁盘。
[0011]在一些实施例中,所述预设的写盘条件包括:已写入预写式日志文件的数据块数量大于块数阈值;或者,已写入预写式日志文件的总字节数大于字节数阈值。
[0012]根据本公开的另一方面,还提出一种数据修复装置,包括:确定模块,被配置为确定当前节点中的待修复编码块;排序模块,被配置为根据所述待修复编码块在磁盘中的分布信息,对所述待修复编码块进行排序;获取模块,被配置为按照所述排序,依次获取修复所述待修复编码块所需的可用块;修复模块,被配置为根据修复所述待修复编码块所需的可用块,对所述待修复编码块进行修复。
[0013]在一些实施例中,所述获取模块被配置为将排序后的待修复编码块划分成至少一个批次,批量获取修复每个批次的待修复编码块所需的可用块;所述修复模块被配置为根据所述修复每个批次的待修复编码块所需的可用块,对该批次的待修复编码块进行批量修复。
[0014]在一些实施例中,所述获取模块批量获取可用块与所述修复模块批量修复异步执行。
[0015]在一些实施例中,所述获取模块被配置为:从分布式存储系统中除所述当前节点之外的其他节点中选出多个节点;向所述多个节点并发地发起批量数据获取请求;接收所述多个节点返回的修复该批次的待修复编码块所需的可用块。
[0016]在一些实施例中,还包括:查询模块,被配置为根据所述待修复编码块的键查询存储信息表,以得到所述待修复编码块在磁盘中的分布信息。
[0017]在一些实施例中,还包括写入模块,所述写入模块被配置为:通过异步读写器读取修复后的编码块,并将所述修复后的编码块写入预写式日志文件;在满足预设的写盘条件时,将所述预写式日志文件保存的修复后的编码块批量写入磁盘。
[0018]在一些实施例中,所述预设的写盘条件包括:已写入预写式日志文件的数据块数量大于块数阈值;或者,已写入预写式日志文件的总字节数大于字节数阈值。
[0019]根据本公开的另一方面,还提出一种数据修复装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器的指令执行如上述的数据修复方法。
[0020]根据本公开的另一方面,还提出一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述的数据修复方法。
[0021]与相关技术相比,本公开实施例中,通过确定当前节点中的待修复编码块,根据待修复编码块在磁盘中的分布信息对待修复编码块进行排序,按照该排序依次获取修复所述待修复编码块所需的可用块,并基于获取的可用块对待修复编码块进行修复,能够顺序拉取并修复数据,减少读写磁盘的输入输出(IO)次数,降低磁盘占用率,提高数据修复效率。
[0022]通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
[0023]构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
[0024]参照附图,根据下面的详细描述,可以更加清楚地理解本公开,
[0025]其中:
[0026]图1为根据本公开一些实施例的数据修复方法的流程示意图。
[0027]图2为根据本公开一些实施例的获取修复待修复编码块所需可用块的流程示意
图。
[0028]图3为根据本公开一些实施例的根据可用块修复待修复编码块的流程示意图。
[0029]图4为根据本公开另一些实施例的数据修复方法的流程示意图。
[0030]图5为根据本公开一些实施例的数据修复装置的结构示意图。
[0031]图6为根据本公开另一些实施例的数据修复装置的结构示意图。
[0032]图7为根据本公开再一些实施例的数据修复装置的结构示意图。
[0033]图8为根据本公开一些实施例的计算机系统的结构示意图。
具体实施方式
[0034]现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
[0035]同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
[0036]以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
[0037]对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据修复方法,包括:确定当前节点中的待修复编码块;根据所述待修复编码块在磁盘中的分布信息,对所述待修复编码块进行排序;按照所述排序,依次获取修复所述待修复编码块所需的可用块;根据修复所述待修复编码块所需的可用块,对所述待修复编码块进行修复。2.根据权利要求1所述的数据修复方法,其中,将排序后的待修复编码块划分成至少一个批次,批量获取修复每个批次的待修复编码块所需的可用块;根据所述修复每个批次的待修复编码块所需的可用块,对该批次的待修复编码块进行批量修复。3.根据权利要求2所述的数据修复方法,其中,批量获取可用块与批量修复异步执行。4.根据权利要求2所述的数据修复方法,其中,批量获取修复每个批次的待修复编码块所需的可用块包括:从分布式存储系统中除所述当前节点之外的其他节点中选出多个节点;向所述多个节点并发地发起批量数据获取请求;接收所述多个节点返回的修复该批次的待修复编码块所需的可用块。5.根据权利要求1所述的数据修复方法,还包括:在所述确定当前节点中的待修复编码块之后,根据所述待修复编码块的键查询存储信息表,以得到所述待修复编码块在磁盘中的分布信息。6.根据权利要求1所述的数据修复方法,还包括:通过异步读写器读取修复后的编码块,并将所述修复后的编码块写入预写式日志文件;在满足预设的写盘条件时,将所述预写式日志文件保存的修复后的编码块批量写入磁盘。7.根据权利要求6所述的数据修复方法,所述预设的写盘条件包括:已写入预写式日志文件的数据块数量大于块数阈值;或者已写入预写式日志文件的总字节数大于字节数阈值。8.一种数据修复装置,包括:确定模块,被配置为确定当前节点中的待修复编码块;排序模块,被配置为根据所述待修复编码块在磁盘中的分布信息,对所述待修复编码块进行排序;获取模块,被配置为按照所述排序,依次获取修复所述待修复编...

【专利技术属性】
技术研发人员:陈林芳景磊侯琳丁贵军郝敬龙田帅潘青
申请(专利权)人:京东科技信息技术有限公司
类型:发明
国别省市:

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

1