一种基于纠删码的小块数据恢复方法及系统技术方案

技术编号:27621136 阅读:14 留言:0更新日期:2021-03-10 11:02
本申请公开了一种基于纠删码的小块数据恢复方法及系统,该方法包括:在小块数据的属性中增加一对象属性;利用对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对全零纠删单元进行标记;当进行存储系统故障恢复时,从对象属性中获取所有的全零纠删单元;判断当前待恢复的纠删单元是否为全零纠删单元;如果是,创建一个与当前待恢复的纠删单元中零数据相同大小的空文件代替零数据,执行写入操作;否则直接进行小块数据恢复。该系统包括:对象属性增加模块、记录和标记模块、全零纠删单元获取模块、判断模块、空文件创建模块和数据恢复模块。通过本申请,能够节省存储空间,提高数据恢复效率和数据恢复性能。数据恢复效率和数据恢复性能。数据恢复效率和数据恢复性能。

【技术实现步骤摘要】
一种基于纠删码的小块数据恢复方法及系统


[0001]本申请涉及分布式存储系统
,特别是涉及一种基于纠删码的小块数据恢复方法及系统。

技术介绍

[0002]随着信息技术的快速发展,数据的作用愈发凸显,日常生活和工作会产生大量的数据,对这些数据进行收集分析、提炼总结,可以获取关键信息并依据这些信息创造巨大的经济收益,这就促进了大数据等产业快速发展,而数据的快速增长同样给数据存储带来了巨大的压力,为保证快速增长的数据安全高效存储,较多的企业通常使用副本技术或纠删码技术保证数据的一致性。
[0003]其中,纠删码技术中读写数据以纠删条带为单位,每个纠删条带划分为K个纠删单元,写入纠删条带的数据需按照纠删单元划分为K份,并利用这K份数据通过计算获取M份校验数据,将这K+M份数据保存在不同位置,如不同节点或同一节点的不同硬盘上,读取保存数据时只需要读取K+M中的K份数据,并通过计算就可以获取到全部的写入数据。利用纠删码技术进行数据存储的情况,当存储系统处于故障场景时,如何对小块数据进行恢复,是个重要的技术问题。
[0004]目前当存储系统处于故障场景时,对小块数据进行恢复的方法,通常是在小块数据写入时进行优化。具体地,如果写入数据的长度小于纠删条带,原纠删码技术需要将不足纠删条带的部分以零数据补齐,然后划分成K个纠删单元,判断一个纠删单元上是否全部为零数据,如果全部为零数据,数据写入时创建空文件代替写入操作。
[0005]然而目前对小块数据进行恢复的方法中,当存储系统发生故障时,如果需要恢复的数据为空文件,那么这个空文件会被恢复成对应大小的零数据,这些零数据会造成空间的浪费,同时还占用写入带宽,增加写入时间。因此,目前对小块数据进行恢复的方法,使得存储系统空间资源的利用率较低,存储系统的数据恢复效率不够高。

技术实现思路

[0006]本申请提供了一种基于纠删码的小块数据恢复方法及系统,以解决现有技术中对小块数据恢复的方法使得存储系统空间资源利用率较低、存储系统数据恢复效率不够高的问题。
[0007]为了解决上述技术问题,本申请实施例公开了如下技术方案:
[0008]一种基于纠删码的小块数据恢复方法,所述方法包括:
[0009]在小块数据的属性中增加一对象属性;
[0010]利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记;
[0011]当进行存储系统故障恢复时,从所述对象属性中获取所有的全零纠删单元;
[0012]判断当前待恢复的纠删单元是否为全零纠删单元;
[0013]如果是,创建一个与当前待恢复的纠删单元中零数据相同大小的空文件代替零数据,执行写入操作;
[0014]如果否,直接进行小块数据恢复。
[0015]可选地,利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记之后,所述方法还包括:
[0016]在小块数据修改写或追加写阶段,对所述对象属性进行更新。
[0017]可选地,所述利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记,包括:
[0018]在小块数据创建写阶段,将全零纠删单元保存在一个map容器shards中;
[0019]在所述对象属性中,利用all_zero标记是否有全零纠删单元;
[0020]将all_zero和shards加密到第一存储空间中;
[0021]将所述第一存储空间随对象的写入保存至数据库中。
[0022]可选地,所述在小块数据修改写或追加写阶段,对所述对象属性进行更新,包括:
[0023]获取所述对象属性;
[0024]根据所述对象属性,解密得到all_zero和shards;
[0025]根据解密后的all_zero和shards,将当前修改写或追加写阶段的全零纠删单元与所述对象属性中的全零纠删单元取交集;
[0026]根据取交集的结果,更新全零纠删单元的shards,获取更新后的数据;
[0027]将更新后的数据重新写入所述对象属性中。
[0028]可选地,所述将更新后的数据重新写入所述对象属性中,包括:
[0029]根据更新后的shards是否为空,设置all_zero的值;
[0030]将更新后的shards和设置后的all_zero加密到第二存储空间中;
[0031]将所述第二存储空间随对象的写入保存在数据库中。
[0032]一种基于纠删码的小块数据恢复系统,所述系统包括:
[0033]对象属性增加模块,用于在小块数据的属性中增加一对象属性;
[0034]记录和标记模块,用于利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记;
[0035]全零纠删单元获取模块,用于当进行存储系统故障恢复时,从所述对象属性中获取所有的全零纠删单元;
[0036]判断模块,用于判断当前待恢复的纠删单元是否为全零纠删单元,如果是,启动空文件创建单元,如果否,直接进行小块数据恢复;
[0037]空文件创建模块,用于当前待恢复的纠删单元为全零纠删单元时,创建一个与当前待恢复的纠删单元中零数据相同大小的空文件代替零数据,执行写入操作;
[0038]数据恢复模块,用于当前待恢复的纠删单元不是全零纠删单元时,直接进行小块数据恢复。
[0039]可选地,所述系统中还包括有:对象属性更新模块,用于在小块数据修改写或追加写阶段,对所述对象属性进行更新。
[0040]可选地,所述记录和标记模块包括:
[0041]第一保存单元,用于在小块数据创建写阶段,将全零纠删单元保存在一个map容器
shards中;
[0042]标记单元,用于在所述对象属性中,利用all_zero标记是否有全零纠删单元;
[0043]第一加密单元,用于将all_zero和shards加密到第一存储空间中;
[0044]第二保存单元,用于将所述第一存储空间随对象的写入保存至数据库中。
[0045]可选地,所述对象属性更新模块包括:
[0046]对象属性获取单元,用于获取所述对象属性;
[0047]解密单元,用于根据所述对象属性,解密得到all_zero和shards;
[0048]取交集单元,用于根据解密后的all_zero和shards,将当前修改写或追加写阶段的全零纠删单元与所述对象属性中的全零纠删单元取交集;
[0049]更新单元,用于根据取交集的结果,更新全零纠删单元的shards,获取更新后的数据;
[0050]第三保存单元,用于将更新后的数据重新写入所述对象属性中。
[0051]可选地,所述第三保存单元包括:
[0052]设置子单元,用于根据更新后的shards是否为空,设置all_zero的值;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于纠删码的小块数据恢复方法,其特征在于,所述方法包括:在小块数据的属性中增加一对象属性;利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记;当进行存储系统故障恢复时,从所述对象属性中获取所有的全零纠删单元;判断当前待恢复的纠删单元是否为全零纠删单元;如果是,创建一个与当前待恢复的纠删单元中零数据相同大小的空文件代替零数据,执行写入操作;如果否,直接进行小块数据恢复。2.根据权利要求1所述的一种基于纠删码的小块数据恢复方法,其特征在于,利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记之后,所述方法还包括:在小块数据修改写或追加写阶段,对所述对象属性进行更新。3.根据权利要求1或2所述的一种基于纠删码的小块数据恢复方法,其特征在于,所述利用所述对象属性记录小块数据在创建写阶段产生的全零纠删单元,并对所述全零纠删单元进行标记,包括:在小块数据创建写阶段,将全零纠删单元保存在一个map容器shards中;在所述对象属性中,利用all_zero标记是否有全零纠删单元;将all_zero和shards加密到第一存储空间中;将所述第一存储空间随对象的写入保存至数据库中。4.根据权利要求3所述的一种基于纠删码的小块数据恢复方法,其特征在于,所述在小块数据修改写或追加写阶段,对所述对象属性进行更新,包括:获取所述对象属性;根据所述对象属性,解密得到all_zero和shards;根据解密后的all_zero和shards,将当前修改写或追加写阶段的全零纠删单元与所述对象属性中的全零纠删单元取交集;根据取交集的结果,更新全零纠删单元的shards,获取更新后的数据;将更新后的数据重新写入所述对象属性中。5.根据权利要求4所述的一种基于纠删码的小块数据恢复方法,其特征在于,所述将更新后的数据重新写入所述对象属性中,包括:根据更新后的shards是否为空,设置all_zero的值;将更新后的shards和设置后的all_zero加密到第二存储空间中;将所述第二存储空间随对象的写入保存在数据库中。6.一种基于纠删码的小块数据恢复系统,其特征在于,所述系统包括:对象属性增加模块,用于在小块数据的属性中增加一对象属性;记录和标记模...

【专利技术属性】
技术研发人员:薛玉喜
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1