一种数据恢复的方法及设备的制造方法

文档序号:9396769阅读:497来源:国知局
一种数据恢复的方法及设备的制造方法
【技术领域】
[0001]本发明涉及数据处理领域,尤其涉及一种数据恢复的方法及设备。
【背景技术】
[0002]随着网络技术的发展,需要处理的数据高速增长,为海量数据提供具备高可靠性及高扩展性的存储对现代企业来说是一个巨大的挑战。为保证数据的可靠性和可用性,通常采用存储多个数据副本的方法,当某个副本由于硬盘、服务器、网络或软件出现故障导致副本不可使用时,由其它副本提供服务。这样就带来一个问题,存储空间利用率极低。以3个副本的数据为例,存储空间利用率只有30%左右。
[0003]目前主要是一种擦除码(ErasureCode,EC)技术解决存储空间利用率低的问题,该技术将数据集合等分为η个数据块,每个数据块存储该数据集合的一部分数据,然后通过纯异或运算,以及代数域运算计算出该数据集合的m个冗余的编码块,再将这η个数据块和m个编码块分别保存在不同的地方。当上述η个数据块和m个编码块中存在的数据损坏的坏块时,使用未损坏的数据块或编码块进行相关的运算恢复坏块,其中,η和m为大于O的整数。
[0004]但上述技术中,当坏块的数量大于上述m时,就无法恢复坏块,从而导致数据存储的可靠性低。

【发明内容】

[0005]本发明实施例提供了一种恢复数据的方法及设备,可以提高数据存储的可靠性。
[0006]本发明第一方面提供一种恢复数据的方法,当前处理的数据集合划分为η个数据块,并计算得出所述数据集合的m个冗余的编码块,所述η和m为大于O的整数,所述方法还可以包括:
[0007]当所述η个数据块中存在坏块时,分析所述η个数据块中每个坏块的损坏数据在所述每个坏块中所处的位置;
[0008]根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则划分成h个小块,在所述η个数据块和所述m个编码块包含的所有小块中,将在每个数据块和编码块中所处位置相同的小块作为一个子集合,每个子集合包含的存在损坏数据的坏小块的数量小于或等于所述m,所述h为大于I的整数;
[0009]针对一个存在坏小块的子集合,分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据。
[0010]结合第一方面,在第一种可能的实现方式中,分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据,包括:
[0011]获取存在坏小块的子集合中,所属于所述m个编码块中小块的数据,以及所属于所述η个数据块中未损坏的小块的数据;
[0012]使用所述获取的所述m个编码块中小块的数据和所述η个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
[0013]结合第一方面,在第二种可能的实现方式中,所述针对一个存在坏小块的子集合,分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据,包括:
[0014]分析存在坏小块的子集合中坏小块的数量;
[0015]获取存在坏小块的子集合中,所属于所述m个编码块中的并且和坏小块的数量相同的小块的数据,以及所属于所述η个数据块中的未损坏的小块的数据;
[0016]使用所述获取的所述m个编码块中小块的数据和所述η个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
[0017]结合第一方面或第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则划分成h个小块包括:
[0018]根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则以预先设置的大小划分成h个小块,所述预先设置的大小为所述η个数据块存储数据的最小单位和所述m个编码块存储数据的最小单位的公倍数的大小。
[0019]结合第一方面或第一种可能的实现方式或第二种可能的实现方式,在第四种可能的实现方式中,所述根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则划分成h个小块包括:
[0020]根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则以预先设置的大小划分成h个小块,所述预先设置的大小以一个扇区为单位且包括至少一个扇区的大小。
[0021]本发明第二方面提供一种恢复数据的设备,当前处理的数据集合划分为η个数据块,并计算得出所述数据集合的m个冗余的编码块,所述η和m为大于O的整数,所述设备包括:第一分析单元、划分单元和恢复单元,其中:
[0022]所述第一分析单元,用于当所述η个数据块中存在坏块时,分析所述η个数据块中每个坏块的损坏数据在所述每个坏块中所处的位置;
[0023]所述划分单元,用于根据所述分析单元分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则划分成h个小块,在所述η个数据块和所述m个编码块包含的所有小块中,将在每个数据块和编码块中所处位置相同的小块作为一个子集合,每个子集合包含的存在损坏数据的坏小块的数量小于或等于所述m,所述h为大于I的整数;
[0024]所述恢复单元,用于针对一个存在坏小块的子集合,分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据。
[0025]结合第二方面,在第一种可能的实现方式中,所述恢复单元包括:
[0026]第一获取单元,用于获取存在坏小块的子集合中,所属于所述m个编码块中小块的数据,以及所属于所述η个数据块中未损坏的小块的数据;
[0027]第一恢复子单元,用于使用所述获取的所述m个编码块中小块的数据和所述η个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
[0028]结合第二方面,在第二种可能的实现方式中,所述恢复单元包括:
[0029]第二分析单元,用于分析存在坏小块的子集合中坏小块的数量;
[0030]第二获取单元,用于获取存在坏小块的子集合中,所属于所述m个编码块中的并且和坏小块的数量相同的小块的数据,以及所属于所述η个数据块中的未损坏的小块的数据;
[0031]第二恢复子单元,用于使用所述获取的所述m个编码块中小块的数据和所述η个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
[0032]结合第二方面或第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述划分单元还用于根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则以预先设置的大小划分成h个小块,所述预先设置的大小为所述η个数据块存储数据的最小单位和所述m个编码块存储数据的最小单位的公倍数的大小。
[0033]结合第二方面或第一种可能的实现方式或第二种可能的实现方式,在第四种可能的实现方式中,所述划分单元还用于根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则以预先设置的大小划分成h个小块,所述预先设置的大小以一个扇区为单位且包括至少一个扇区的大小。
[0034]本发明第三方面提供一种恢复数据的设备,当前处理的数据集合划分为η个数据块,并计算得出所述数据集合的m个冗余的编码块,所述η和m为大于O的整数,其特征在于,所述设备包括处理器,通信接口,存储器和总线:
[0035]其中处理器、通信接口、存储器通过总线完成相互间的通信;
[0036]所述通信接口,用于从存储所述η个数据块的数据和所述m个编码块的数据的存储设备接收所述η个数据块的数据和所述m个编码块的数据;
[0037]所述存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,用于执行以下操作:
[0038]当所述η个数据块中存在坏块时,分析所述η个数据块中每个坏块的损坏数据在所述每个坏块中所处的位置;
[0039]根据所述分析出的位置,将所述η个数据块和所述m个编码块中的每个块按照相同的划分规则划分成h个小块,在所述η个数据块和所述m个编码块包含的所有小块中,将在每个数据块和编码块中所处位置相同的小块作为一个子集合,每个子集合包含的存在损坏数据的坏小块的数量小于或等于所述m,所述h为大于I的整数;
[0040]针对一个存在坏小块的子集合,分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据。
[0041]结合第三方面,在第一种可能的实现方式中,所述处理器执行的分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据的操作包括:
[0042]获取存在坏小块的子集合中,所属于所述m个编码块中小块的数据,以及所属于所述η个数据块中未损坏的小块的数据;
[0043]使用所述获取的所述m个编码块中小块的数据和所述η个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
[0044]结合第三方面,在第二种可能的实现方式中,所述处理器执行的分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据的操作包括:
[0045]分析存在坏小块的子集合中坏小块的数量;
[0046]获取存在坏小块的子集合中,所属于所述m个编码块中的并且和坏小块的数量相同的小块的数据,以及所属于所述η个数据块中的未损坏的小块的数据;
[0047]使用所述获取的所述m个编码块中小块的数据和所述η个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
[0048]结合第三方面或第一种可能的实现方式或第二种可能的实现方式,在第三种
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1