Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND APPARATUS FOR DATA RESTORATION
Document Type and Number:
WIPO Patent Application WO/2014/079040
Kind Code:
A1
Abstract:
A method for restoring data is provided in embodiments of the present invention, wherein currently processed data set is divided into n data blocks and m redundant coding blocks of the data set are calculated. The method also comprises: analyzing locations, of broken data of broken blocks in the n data blocks, in each broken block when there are broken blocks in the n data blocks; on the basis of the analyzed location, dividing, according to the same dividing rule, each block of the n data blocks and m coding blocks into h small blocks; among all the small blocks of the n data blocks and m coding blocks, putting small blocks which are in the same location in each data block and coding block together as one subset; for a subset with broken small blocks, using data in unbroken small blocks of the subset with the broken small blocks to restore broken data in the broken small blocks of the subset individually. Accordingly, an apparatus for restoring data is also provided in embodiments of the present invention. With embodiments of the present invention, reliability of data storage can be improved.

Inventors:
ZHANG WEI (CN)
ZHANG FENG (CN)
LEI XIAOSONG (CN)
XIANG RUI (CN)
Application Number:
PCT/CN2012/085155
Publication Date:
May 30, 2014
Filing Date:
November 23, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F11/10
Foreign References:
CN101387975A2009-03-18
EP1498895A12005-01-19
CN1801107A2006-07-12
Other References:
See also references of EP 2908247A4
Attorney, Agent or Firm:
GUANGZHOU SCIHEAD PATENT AGENT CO., LTD (CN)
广州三环专利代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求

1、 一种数据恢复的方法, 当前处理的数据集合划分为 n个数据块, 并计算 得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 其特征 在于, 所述方法包括:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数量小于或等于所述 m, 所 述 h为大于 1的整数;

针对一个存在坏小块的子集合, 分别使用所属于该存在坏小块的子集合中 的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据。

2、 根据权利要求 1所述的方法, 其特征在于, 所述分别使用所属于该存在 坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的 数据, 包括:

获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及 所属于所述 n个数据块中未损坏的 '〗、块的数据;

使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被损坏的数据。

3、 根据权利要求 1所述的方法, 其特征在于, 分别使用所属于该存在坏小 块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数 据, 包括:

分析存在坏小块的子集合中坏小块的数量;

获取存在坏小块的子集合中, 所属于所述 m个编码块中的并且和坏小块的 数量相同的小块的数据, 以及所属于所述 n个数据块中的未损坏的小块的数据; 使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被损坏的数据。 4、 如权利要求 1-3任一所述的方法, 其特征在于, 所述根据所述分析出的 位置, 将所述 n个数据块和所述 m个编码块中的每个块按照相同的划分规则划 分成 h个小块包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 为所述 n个数据块存储数据的最小单位和所述 m个编码块存储数据的最小单位 的公倍数的大小。

5、 如权利要求 1-3任一所述的方法, 其特征在于, 所述根据所述分析出的 位置, 将所述 n个数据块和所述 m个编码块中的每个块按照相同的划分规则划 分成 h个小块包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 以一个扇区为单位且包括至少一个扇区的大小。

6、 一种恢复数据的设备, 当前处理的数据集合划分为 n个数据块, 并计算 得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 其特征 在于, 所述设备包括: 第一分析单元、 划分单元和恢复单元, 其中:

所述第一分析单元, 用于当所述 n个数据块中存在坏块时, 分析所述 n个 数据块中每个坏块的损坏数据在所述每个坏块中所处的位置;

所述划分单元, 用于根据所述分析单元分析出的位置, 将所述 n个数据块 和所述 m个编码块中的每个块按照相同的划分规则划分成 h个小块, 在所述 n 个数据块和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所 处位置相同的小块作为一个子集合, 每个子集合包含的存在损坏数据的坏小块 的数量小于或等于所述 m, 所述 h为大于 1的整数;

所述恢复单元, 用于针对一个存在坏小块的子集合, 分别使用所属于该存 在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏 的数据。

7、 如权利要求 6所述的设备, 其特征在于, 所述恢复单元包括:

第一获取单元, 用于获取存在坏小块的子集合中, 所属于所述 m个编码块 中小块的数据, 以及所属于所述 n个数据块中未损坏的 d、块的数据;

第一恢复子单元, 用于使用所述获取的所述 m个编码块中小块的数据和所 述 n个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数 据。

8、 如权利要求 6所述的设备, 其特征在于, 所述恢复单元包括: 第二分析单元, 用于分析存在坏小块的子集合中坏小块的数量;

第二获取单元, 用于获取存在坏小块的子集合中, 所属于所述 m个编码块 中的并且和坏小块的数量相同的小块的数据, 以及所属于所述 n个数据块中的 未损坏的小块的数据;

第二恢复子单元, 用于使用所述获取的所述 m个编码块中小块的数据和所 述 n个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数 据。

9、 如权利要求 6-9中任一项所述的设备, 其特征在于, 所述划分单元还用 于根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块按 照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小为 所述 n个数据块存储数据的最小单位和所述 m个编码块存储数据的最小单位的 公倍数的大小。

10、 如权利要求 6-9中任一项所述的设备, 其特征在于, 所述划分单元还用 于根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块按 照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小以 一个扇区为单位且包括至少一个扇区的大小。

11、 一种恢复数据的设备, 当前处理的数据集合划分为 n个数据块, 并计 算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 其特 征在于, 所述设备包括处理器, 通信接口, 存储器和总线:

其中处理器、 通信接口、 存储器通过总线完成相互间的通信;

所述通信接口, 用于从存储所述 n个数据块的数据和所述 m个编码块的数 据的存储设备接收所述 n个数据块的数据和所述 m个编码块的数据;

所述存储器中存储一组程序代码, 且所述处理器用于调用所述存储器中存 储的程序代码, 用于执行以下操作:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数量小于或等于所述 m, 所 述 h为大于 1的整数;

针对一个存在坏小块的子集合, 分别使用所属于该存在坏小块的子集合中 的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据。

12、 如权利要求 11所述的设备, 其特征在于, 所述处理器执行的分别使用 所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小 块中被损坏的数据的操作包括:

获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及 所属于所述 n个数据块中未损坏的 '〗、块的数据;

使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被损坏的数据。

13、 如权利要求 11所述的设备, 其特征在于, 所述处理器执行的分别使用 所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小 块中被损坏的数据的操作包括:

分析存在坏小块的子集合中坏小块的数量;

获取存在坏小块的子集合中, 所属于所述 m个编码块中的并且和坏小块的 数量相同的小块的数据, 以及所属于所述 n个数据块中的未损坏的小块的数据; 使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被损坏的数据。

14、 如权利要求 11-13中任一项所述的设备, 其特征在于, 所述处理器执行 的根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块按 照相同的划分规则划分成 h个小块的操作包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 为所述 n个数据块存储数据的最小单位和所述 m个编码块存储数据的最小单位 的公倍数的大小。

15、 如权利要求 11-13中任一项所述的设备, 其特征在于, 所述处理器执行 的根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块按 照相同的划分规则划分成 h个小块的操作包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 以一个扇区为单位且包括至少一个扇区的大小。

16、 一种计算机存储介质, 其特征在于, 所述计算机存储介质存储有程序, 所述程序执行时包括如下步骤: 如权利要求 1~5任一项所述的步骤。

Description:
一种数据恢复的方法及设备 技术领域

本发明涉及数据处理领域, 尤其涉及一种数据恢复的方法及设备。 背景技术

随着网络技术的发展, 需要处理的数据高速增长, 为海量数据提供具备高 可靠性及高扩展性的存储对现代企业来说是一 个巨大的挑战。 为保证数据的可 靠性和可用性, 通常釆用存储多个数据副本的方法, 当某个副本由于硬盘、 月良 务器、 网络或软件出现故障导致副本不可使用时, 由其它副本提供服务。 这样 就带来一个问题, 存储空间利用率极低。 以 3 个副本的数据为例, 存储空间利 用率只有 30%左右。

目前主要是一种擦除码(Erasure Code, EC )技术解决存储空间利用率低的 问题, 该技术将数据集合等分为 n个数据块, 每个数据块存储该数据集合的一 部分数据, 然后通过纯异或运算, 以及代数域运算计算出该数据集合的 m个冗 余的编码块, 再将这 n个数据块和 m个编码块分别保存在不同的地方。 当上述 n个数据块和 m个编码块中存在的数据损坏的坏块时, 使用未损坏的数据块或 编码块进行相关的运算恢复坏块, 其中, n和 m为大于 0的整数。

但上述技术中, 当坏块的数量大于上述 m时, 就无法恢复坏块, 从而导致 数据存储的可靠性低。 发明内容

本发明实施例提供了一种恢复数据的方法及设 备, 可以提高数据存储的可 靠性。

本发明第一方面提供一种恢复数据的方法, 当前处理的数据集合划分为 n 个数据块, 并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 所述方法还可以包括:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所 述 h为大于 1的整数;

针对一个存在坏小块的子集合, 分别使用所属于该存在坏小块的子集合中 的未损坏的小块的数据恢复所述子集合中坏小 块中被损坏的数据。

结合第一方面, 在第一种可能的实现方式中, 分别使用所属于该存在坏小 块的子集合中的未损坏的小块的数据恢复所述 子集合中坏小块中被损坏的数 据, 包括:

获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及 所属于所述 n个数据块中未损坏的 '〗、块的数据;

使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被 损坏的数据。

结合第一方面, 在第二种可能的实现方式中, 所述针对一个存在坏小块的 子集合, 分别使用所属于该存在坏小块的子集合中的未 损坏的小块的数据恢复 所述子集合中坏小块中被损坏的数据, 包括:

分析存在坏小块的子集合中坏小块的数量;

获取存在坏小块的子集合中, 所属于所述 m个编码块中的并且和坏小块的 数量相同的小块的数据, 以及所属于所述 n个数据块中的未损坏的小块的数据; 使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被 损坏的数据。

结合第一方面或第一种可能的实现方式或第二 种可能的实现方式, 在第三 种可能的实现方式中,所述根据所述分析出的 位置,将所述 n个数据块和所述 m 个编码块中的每个块按照相同的划分规则划分 成 h个小块包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 为所述 n个数据块存储数据的最小单位和所述 m个编码块存储数据的最小单位 的公倍数的大小。

结合第一方面或第一种可能的实现方式或第二 种可能的实现方式, 在第四 种可能的实现方式中,所述根据所述分析出的 位置,将所述 n个数据块和所述 m 个编码块中的每个块按照相同的划分规则划分 成 h个小块包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 以一个扇区为单位且包括至少一个扇区的大小 。

本发明第二方面提供一种恢复数据的设备, 当前处理的数据集合划分为 n 个数据块, 并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 所述设备包括: 第一分析单元、 划分单元和恢复单元, 其中:

所述第一分析单元, 用于当所述 n个数据块中存在坏块时, 分析所述 n个 数据块中每个坏块的损坏数据在所述每个坏块 中所处的位置;

所述划分单元, 用于根据所述分析单元分析出的位置, 将所述 n个数据块 和所述 m个编码块中的每个块按照相同的划分规则划 成 h个小块, 在所述 n 个数据块和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所 处位置相同的小块作为一个子集合, 每个子集合包含的存在损坏数据的坏小块 的数量小于或等于所述 m, 所述 h为大于 1的整数;

所述恢复单元, 用于针对一个存在坏小块的子集合, 分别使用所属于该存 在坏小块的子集合中的未损坏的小块的数据恢 复所述子集合中坏小块中被损坏 的数据。

结合第二方面, 在第一种可能的实现方式中, 所述恢复单元包括: 第一获取单元, 用于获取存在坏小块的子集合中, 所属于所述 m个编码块 中小块的数据, 以及所属于所述 n个数据块中未损坏的 d、块的数据;

第一恢复子单元, 用于使用所述获取的所述 m个编码块中小块的数据和所 述 n个数据块中未损坏的小块的数据恢复所述子 合中的坏小块中被损坏的数 据。

结合第二方面, 在第二种可能的实现方式中, 所述恢复单元包括: 第二分析单元, 用于分析存在坏小块的子集合中坏小块的数量 ;

第二获取单元, 用于获取存在坏小块的子集合中, 所属于所述 m个编码块 中的并且和坏小块的数量相同的小块的数据, 以及所属于所述 n个数据块中的 未损坏的小块的数据;

第二恢复子单元, 用于使用所述获取的所述 m个编码块中小块的数据和所 述 n个数据块中未损坏的小块的数据恢复所述子 合中的坏小块中被损坏的数 据。

结合第二方面或第一种可能的实现方式或第二 种可能的实现方式, 在第三 种可能的实现方式中, 所述划分单元还用于根据所述分析出的位置, 将所述 n 个数据块和所述 m个编码块中的每个块按照相同的划分规则以 先设置的大小 划分成 h个小块, 所述预先设置的大小为所述 n个数据块存储数据的最小单位 和所述 m个编码块存储数据的最小单位的公倍数的大 。

结合第二方面或第一种可能的实现方式或第二 种可能的实现方式, 在第四 种可能的实现方式中, 所述划分单元还用于根据所述分析出的位置, 将所述 n 个数据块和所述 m个编码块中的每个块按照相同的划分规则以 先设置的大小 划分成 h个小块, 所述预先设置的大小以一个扇区为单位且包括 至少一个扇区 的大小。

本发明第三方面提供一种恢复数据的设备, 当前处理的数据集合划分为 n 个数据块, 并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 其特征在于, 所述设备包括处理器, 通信接口, 存储器和总线:

其中处理器、 通信接口、 存储器通过总线完成相互间的通信;

所述通信接口, 用于从存储所述 n个数据块的数据和所述 m个编码块的数 据的存储设备接收所述 n个数据块的数据和所述 m个编码块的数据;

所述存储器中存储一组程序代码, 且所述处理器用于调用所述存储器中存 储的程序代码, 用于执行以下操作:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所 述 h为大于 1的整数;

针对一个存在坏小块的子集合, 分别使用所属于该存在坏小块的子集合中 的未损坏的小块的数据恢复所述子集合中坏小 块中被损坏的数据。

结合第三方面, 在第一种可能的实现方式中, 所述处理器执行的分别使用 所属于该存在坏小块的子集合中的未损坏的小 块的数据恢复所述子集合中坏小 块中被损坏的数据的操作包括:

获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及 所属于所述 n个数据块中未损坏的 '〗、块的数据;

使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被 损坏的数据。

结合第三方面, 在第二种可能的实现方式中, 所述处理器执行的分别使用 所属于该存在坏小块的子集合中的未损坏的小 块的数据恢复所述子集合中坏小 块中被损坏的数据的操作包括:

分析存在坏小块的子集合中坏小块的数量;

获取存在坏小块的子集合中, 所属于所述 m个编码块中的并且和坏小块的 数量相同的小块的数据, 以及所属于所述 n个数据块中的未损坏的小块的数据; 使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据恢复所述子集合中的坏小块中被 损坏的数据。

结合第三方面或第一种可能的实现方式或第二 种可能的实现方式, 在第三 种可能的实现方式中, 所述处理器执行的根据所述分析出的位置, 将所述 n个 数据块和所述 m个编码块中的每个块按照相同的划分规则划 成 h个小块的操 作包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 为所述 n个数据块存储数据的最小单位和所述 m个编码块存储数据的最小单位 的公倍数的大小。

结合第三方面或第一种可能的实现方式或第二 种可能的实现方式, 在第四 种可能的实现方式中, 所述处理器执行的根据所述分析出的位置, 将所述 n个 数据块和所述 m个编码块中的每个块按照相同的划分规则划 成 h个小块的操 作包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块, 所述预先设置的大小 以一个扇区为单位且包括至少一个扇区的大小 。

本发明第四方面提供一种计算机存储介质所述 计算机存储介质存储有程 序, 所述程序执行时包括如下步骤: 如本发明第一方面提供一种恢复数据的方 法所述的步骤。

上述技术方案中, 由于根据损坏数据所处的位置, 将所述 n个数据块和所 述 m个编码块中的每个块按照相同的划分规则划 成 h个小块, 将所述 n个数 据块和所述 m个编码块包含的所有小块中在每个数据块和 码块中所处位置相 同的小块作为一个子集合, 以使得每个子集合包含的存在损坏数据的坏小 块的 数量小于或等于所述 m, 所述 h为大于 1的整数; 这样就可以将损坏的数据划 分在小于或等于 h个子集合内, 且每个子集合中损坏的数据所在的小块的数量 小于或等于所述 m, 再分别使用每个所述子集合中的未损坏的小块 恢复每个所 述子集合中的坏小块中被损坏的数据, 这样最多就可以恢复 个坏小块, 相 比现在技术中只能恢复 m个损坏的块, 可以提高数据存储的可靠性。 附图说明

为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下面将对实施 例或现有技术描述中所需要使用的附图作简单 地介绍, 显而易见地, 下面描述 中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付 出创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。

图 1是本发明实施例提供的一种可选的应用场景 ;

图 2是本发明实施例提供的一种恢复数据的方法 流程示意图;

图 3是本发明实施例提供的一种可选的数据结构 意图;

图 4是本发明实施例提供的另一种恢复数据的方 的流程示意图; 图 5是本发明实施例提供的另一种恢复数据的方 的流程示意图; 图 6是本发明实施例提供的一种数据恢复的设备 结构示意图;

图 7是本发明实施例提供的另一种数据恢复的设 的结构示意图; 图 8是本发明实施例提供的一种数据恢复的设备 结构示意图;

图 9是本发明实施例提供的另一种数据恢复的设 的结构示意图; 图 10是本发明实施例提供的一种数据恢复的设备 结构示意图; 图 11是本发明实施例提供的另一种数据恢复的设 的结构示意图。 具体实施方式

下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是 全部的实施例。 基于本发明中的实施例, 本领域普通技术人员在没有作出创造 性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。

图 1 是本发明实施例提供的一种可选的应用场景图 , 其中, 主存储节点在 接收到数据流 A时, 将数据流 A划分为 n个数据块存储到次存储节点上, 图 1 所示的次存储节点 1至次存储节点 9用于存储 n个数据块和 m个编码块, 其中 n可以等于 6, m可以等于 9, 其中上述 n个数据块组成一个数据集合, 可以通 过纯异或运算、 或者代数域运算计算出该数据集合的 m个冗余的编码块。 当图 1所示的主存储节点当前执行的程序或处理的 务需要使用上述数据集合时,就 需要向存储上述 n个数据块的次存储节点获取到上述 n个数据块, 即获取到上 述数据集合, 以完成当前执行的程序或当前处理的业务。 上述主存储节点可以 是网络中任一控制器或存储设备。

图 2是本发明实施例提供的一种恢复数据的方法 流程示意图, 当前处理 的数据集合划分为 n个数据块,并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 如图 2所示, 该方法还包括:

101、 当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的 损坏数据在所述每个坏块中所处的位置。

可选的, 上述当前处理的数据集合可以是实现本发明的 设备当前需要使用 的数据集合。 例如, 本发明的设备当前执行的程序或处理当前的业 务需要使用 的数据集合。

102、根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每 个块按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码 块包含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一 个子集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所述 h为大于 1的整数。

需要说明的是, 上述位置包含小块的起始位置和终点位置, 即在数据块和 编码块中所处位置相同的小块, 这些小块的大小也是相同的。

可选的, 实现本发明的设备(例如: 图 1 所示的主存储节点设备)知晓上 述 n个数据块和 m个编码块中的每个块的存储地址信息, 如预先获取存储上述 n个数据块和 m个编码块中的每个块的存储节点上报的存储 址信息, 或者通 过上次执行程序或处理业务过程中获取上述 n个数据块和 m个编码块时, 获取 的上述 n个数据块和 m个编码块中的每个块的存储地址信息等。 步骤 102中的 划分可以是将上述 n个数据块和 m个编码块中的每个块的存储地址划分为 h个 小块。

其中, 上述划分规则可以包括: 针对每个数据块和编码块, 划分出的小块 的大小, 每个小块是等分还是大小不同, 每个小块起始位置的确定等规则。

可选的, 上述划分规则可以是基于上述分析出的位置而 生成, 例如, 上述 分析得出 n个数据块中坏块的损坏数据在所述坏块中的 置为上半部分, 这样 上述划分规则就可以将按照将每个块中划分为 上下两部分的划分规则; 又如, 上述分析得出 n个数据块中坏块的损坏数据在所述坏块中的 置为左边部分, 这样上述划分规则就可以将按照将每个块中划 分为左右两部分的划分规则。

可选的, 步骤 102将每个块划分为 h个小块, 如将每个块以中间位置划分 为 2个小块, 那么每个块包含的 2个小块就在数据块或编码块所处的位置是上 半部分和下半部分; 而步骤 102将所述 n个数据块和所述 m个编码块包含的所 有小块中在每个数据块和编码块中所处位置相 同的小块作为一个子集合, 也就 得出 h个子集合, 如将每个块以中间位置划分为 2个小块, 就得到 2个子集合, 在数据块或编码块所处的位置为上半部分的小 块为一个子集合, 在数据块或编 码块所处的位置为下半部分的小块为另一个子 集合。 从而步骤 102 就可以将 n 个数据块和所述 m个编码块划分为 h个子集合, 每个子集合包含 n+m个小块, 且每个子集合中的小块在数据块或编码块的所 处位置相同。

103、 针对一个存在坏小块的子集合, 分别使用所属于该存在坏小块的子集 合中的未损坏的小块的数据恢复所述子集合中 坏小块中被损坏的数据。

可选的, 上述计算得出所述数据的 m个冗余的编码块可以为釆用背景技术 提到的 EC技术中通过纯异或运算, 以及代数域运算计算出该数据的 m个冗余 的编码块。

可选的, n个数据块和所述 m个编码块如图 3所示, 其中, n为 6 , m为 3 , 图 3标注有黑色框表示损坏的数据所处的位置, 可见坏块的数量大于 3 , 那么釆 用现有技术中是不可能恢复损坏的数据的。 本发明通过步骤 101 就可以分析出 损坏的数据所处的位置, 步骤 102根据步骤 101分析得到的位置, 可以将这 6 个数据块和 3个编码块中的每个块划分为两个小块, 具体如图 3 中虚线所示, 将每个块划分为上下两个小块, 步骤 102将所述 n个数据块和所述 m个编码块 包含的所有小块中在每个数据块和编码块中所 处位置相同的小块作为一个子集 合, 这就得到两个子集合, 一个子集合包含 n+m个上面的小块, 另一个子集合 包含 n+m个下面的小块, 这样就可以得到上面小块的子集合包含的坏小 块的数 量为 2, 而下面小块的子集合包含的坏小块的数量为 2, 最后通过步骤 103分别 可以将上面小块的子集合包含的坏小块中被损 坏的数据恢复和将下面小块的子 集合包含的坏小块中被损坏的数据恢复。 通过上述技术就可以恢复 4个损坏的 块的损坏数据, 而现有技术中是不可以恢复的, 从而提高数据存储的可靠性。

当然本发明中上述 h是可以随数据损坏的情况而变化, 例如, 图 3 中的损 坏的数据更多时, 步骤 102就可以将图 3中每个块划分 3、 4、 或 5个小块, 针 对一个数据块或一个编码块来讲, 所划分得到的小块的大小可以相同也可以不 相同, 用户可以根据损坏数据所占的大小来实际确定 ; 从而实现可以恢复更多 的损坏数据。 当然, 步骤 102将每个块划分为 h个小块时, 每个小块可以是以 预先设置的大小进行划分的, 即步骤 102中的根据所述分析出的位置, 将所述 n 个数据块和所述 m个编码块中的每个块按照相同的划分规则划 成 h个小块可 以包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块。

可选的, 所述预先设置的大小可以为所述 n个数据块存储数据的最小单位 和所述 m个编码块存储数据的最小单位的公倍数的大 。 当然, 所述 n个数据 块和所述 m个编码块中的每个块以所述公倍数的大小划 成 h个小块, 必需是 满足上述将所述 n个数据块和所述 m个编码块包含的所有小块中在每个数据块 和编码块中所处位置相同的小块作为一个子集 合, 每个子集合包含的存在损坏 数据的坏小块的数量小于或等于所述 m的条件。 如上述公倍数的大小以所述 n 个数据块存储数据的最小单位和所述 m个编码块存储数据的最小单位的最小公 倍数为单位, 且包括至少一个所述最小公倍数的大小。 其中, 上述最小单位可 以是存储一个数据(例如: 一个二进制数 0或 1 ), 且保证该数据的功能可以正 常使用所需要的存储空间。 在本发明中数据恢复过程可以是釆用代数运算 (例 如: 纯异或运算), 那么每一个数据都具有完整的编码或校验等功 能, 只要本发 明不将一个数据拆开就行。 例如数据块存储数据的最小单位为 4个字节, 编码 块存储数据的最小单位为 3个字节, 那么上述最小公倍数就为 12个字节, 这样 步骤 102就以 12个字节为单位, 所划分小块的大小, 那么最后划分的小块的大 小可以是 24字节大小, 也可以是 12字节大小从而实现每个小块存储的未损坏 的数据都是完整, 即步骤 102在划分过程中不会损坏数据块或编码块所存 储的 数据, 从而保证编码块存储的编码数据 (例如: 校验码) 的编码或校验等功能 不会失效。

可选的, 所述预先设置的大小以一个扇区为单位且包括 至少一个扇区的大 小, 也就是说一个小块的大小为 N个扇区, N大于等于 1的正整数, 例如, 一 个小块的大小包括两个或三个扇区的大小。 而所述 n个数据块和所述 m个编码 块中存储的任一个数据都不会拆分存储在不同 的扇区, 即步骤 102在划分过程 中不会损坏数据块或编码块所存储的数据,从 而保证编码块存储的编码数据(例 如: 校验码) 的编码或校验等功能不会失效。

上述技术方案中, 由于根据损坏数据所处的位置, 将所述 n个数据块和所 述 m个编码块中的每个块按照相同的划分规则划 成 h个小块, 在所述 n个数 据块和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所处位 置相同的小块作为一个子集合, 以使得每个子集合包含的存在损坏数据的坏小 块的数量小于或等于所述 m, 所述 h为大于 1的整数; 这样就可以将损坏的数 据划分在小于或等于 h个子集合内, 且每个子集合中损坏的数据所在的小块的 数量小于或等于所述 m, 再分别使用每个所述子集合中的未损坏的小块 恢复每 个所述子集合中的坏小块中被损坏的数据, 这样最多就可以恢复 个坏小块, 而 h为大于 1的整数, 相比现在技术中只能恢复 m个损坏的块, 可以提高数据 存储的可靠性。 图 4是本发明实施例提供的一种恢复数据的方法 流程示意图, 当前处理 的数据集合划分为 n个数据块,并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 如图 4所示, 该方法还包括:

201、 当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的 损坏数据在所述每个坏块中所处的位置。

在实际应用中损坏的数据几乎不可能是整个块 ,如 1M的数据块,损坏的数 据可能集中在某一个扇区, 如图 3 所示, 损坏的数据只占整个数据块的很小一 部分, 这样就可以通过步骤 201分析出损坏的数据所处的位置。

202、根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每 个块按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码 块包含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一 个子集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所述 h为大于 1的整数。

可选的, 如图 3所示, 损坏的数据有 4处, 位于 4个块, 其中, 2处位于块 的上半部分, 另 2处位于块的下半部分, 这样步骤 202就可以一个将图 3中每 个块划分为上下两个小块。

203、 获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及所属于所述 n个数据块中未损坏的小块的数据;

可选的, 上述步骤 203 可以是实现本发明的设备(例如图 1所示的主存储 节点 ),从存储上述 n个数据块和 m个编码块的设备中获取到上述所属于所述 m 个编码块中小块的数据, 以及所属于所述 n个数据块中未损坏的小块的数据。

204、针对一个存在坏小块的子集合,使用所述 获取的所述 m个编码块中小 块的数据和所述 n个数据块中未损坏的小块的数据恢复所述子 合中的坏小块 中被损坏的数据。

可选的, 如图 3 所示, 每个小块划分为上下两个小块, 形成两个子集合, 这样步骤 203 就可以是以子集合中每个小块为单位进行数据 块或编码块的网络 传输, 当图 3 中只有上面的小块存在损坏的数据时, 这样在步骤 203 中传输的 小块就只是坏块所属的子集合中的小块; 相比现有技术中以整个数据块或编码 块为单位进行网络传输, 可以减少网络传输, 以节约网络资源。

可选的, 步骤 203可以包括:

针对存在坏小块的子集合, 将存在坏小块的子集合中未损坏小块的位置信 息发送至存储所述未损坏小块数据的存储设备 (例如: 图 1所示的次存储节点), 向所述存储设备发送请求返回所述存在坏小块 的子集合中未损坏的小块所包含 的数据;

接收所述存储设备返回的数据;

这样实现本发明的设备(例如图 1 所示的主存储节点) 与其他存储数据的 存储设备(例如: 图 1 所示的次存储节点)之间就可以只传输坏小块 所在的子 集合中的小块所包含的数据信息, 从而减少网络传输。

作为一种可选的实施方式, 步骤 204可以包括:

使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据釆用 EC算法恢复所述子集合中的坏小块中被损坏的 据。

可选的, 例如釆用纯异或运算, 以及代数域运算恢复每个所述子集合中坏 小块。

作为一种可选的实施方式, 当发现存在坏小块的子集合中, 某一子集合所 属于所述 m个编码块中的小块存在损坏数据的坏块时, 且该子集合中存在坏小 块的子集合中 m个编码块中的坏小块的数量加上 n个数据块中的坏小块的数量 大于 m时, 就可以重新该子集合进行上述划分, 可以将该坏小块的子集合的每 个小块划分为多个小块, 以满足上述包含的存在损坏数据的坏小块的数 量小于 或等于所述 m。 再釆用步骤 204的技术特征进行恢复。 例如: 存在坏小块的子 集合中包含子集合 1、 子集合 2和子集合 3 , 其中, 子集合 3中所属于所述 m个 编码块中的小块存在损坏数据的坏块时, 且所述 m个编码块中的小块存在损坏 数据的坏块的数量为 h, 子集合 3中所属 n个数据块中的坏小块的数量为 t, 当 h+t大于 m时,就可以重新对子集合 3进行上述划分,将该坏小块的子集合的每 个小块划分为多个小块, 以满足上述包含的存在损坏数据的坏小块的数 量小于 或等于所述 m。 再釆用步骤 204的技术特征进行恢复。

作为一种可选的实施方式, 本发明可以应用于 RS算法(Reed Solomon, 该 算法属于外来词, 并无准确的中文意思, 在算法领域中为常见的算法, 并统一 RS算法、 改进的 RS ( Cauchy Reed Solomon, CRS )算法、磁盘阵列( Redundant Arrays of Inexpensive Disks, RAID ) 5技术、 RAID6技术中。

上技术方案中, 在上面实施例的基础上, 实现了以小块为单位进行网络传 输, 这样可以节约网络资源。 同时, 还可以提高数据存储的可靠性。 图 5是本发明实施例提供的一种恢复数据的方法 流程示意图, 当前处理 的数据集合划分为 n个数据块,并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数, 如图 5所示, 该方法还包括:

301、 当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的 损坏数据在所述每个坏块中所处的位置。 302、根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每 个块按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码 块包含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一 个子集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所述 h为大于 1的整数。

303、 分析存在坏小块的子集合中坏小块的数量;

304、获取存在坏小块的子集合中, 所属于所述 m个编码块中的并且和坏小 块的数量相同的小块的数据, 以及所属于所述 n个数据块中的未损坏的小块的 数据;

305、针对一个存在坏小块的子集合,使用所述 获取的所述 m个编码块中小 块的数据和所述 n个数据块中未损坏的小块的数据恢复所述子 合中的坏小块 中被损坏的数据。

这样可以实现只获取所属于所述 m个编码块中的并且和坏小块的数量相同 的小块的数据, 从而可以节约网络开销。

上技术方案中, 在上面实施例的基础上, 实现只获取所属于所述 m个编码 块中的并且和坏 d、块的数量相同的 d、块的数据, 从而可以节约网络开销同时, 还可以提高数据存储的可靠性。 下面为本发明装置实施例, 本发明装置实施例用于执行本发明方法实施例 一至三实现的方法, 为了便于说明, 仅示出了与本发明实施例相关的部分, 具 体技术细节未揭示的, 请参照本发明实施例一、 实施例二和实施例三。 图 6是本发明实施例提供的一种数据恢复的设备 结构示意图, 当前处理 的数据集合划分为 n个数据块,并计算得出所述数据集合的 m个冗余的编码块, 所述 n和 m为大于 0的整数。 如图 6所示, 所述设备包括: 第一分析单元 41、 划分单元 42和恢复单元 43 , 其中:

第一分析单元 41 , 用于当所述 n个数据块中存在坏块时, 分析所述 n个数 据块中每个坏块的损坏数据在所述每个坏块中 所处的位置;

划分单元 42 , 用于根据分析单元 41分析出的位置, 将所述 n个数据块和所 述 m个编码块中的每个块按照相同的划分规则划 成 h个小块, 在所述 n个数 据块和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所处位 置相同的小块作为一个子集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所述 h为大于 1的整数;

恢复单元 43 , 用于针对一个存在坏小块的子集合, 分别使用所属于该存在 坏小块的子集合中的未损坏的小块的数据恢复 所述子集合中坏小块中被损坏的 数据。

作为一种可选的实施方式,划分单元 42还可以用于根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块按照相同的划分规则以 先设 置的大小划分成 h个小块。

可选的, 所述预先设置的大小为所述 n个数据块存储数据的最小单位和所 述 m个编码块存储数据的最小单位的公倍数的大 。

可选的, 所述预先设置的大小以一个扇区为单位且包括 至少一个扇区的大 小。

这样划分单元 42通过可以上划分方式可以实现每个 d、块存储的未损坏的数 据都是完整, 即划分单元 42在划分过程中不会损坏数据块或编码块所存 的数 据, 从而保证编码块存储的编码数据(例如: 校验码) 的编码或校验等功能不 会失效。

上述技术方案中, 由于根据损坏数据所处的位置, 将所述 n个数据块和所 述 m个编码块中的每个块按照相同的划分规则划 成 h个小块, 在所述 n个数 据块和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所处位 置相同的小块作为一个子集合, 以使得每个子集合包含的存在损坏数据的坏小 块的数量小于或等于所述 m, 所述 h为大于 1的整数; 这样就可以将损坏的数 据划分在小于或等于 h个子集合内, 且每个子集合中损坏的数据所在的小块的 数量小于或等于所述 m, 再分别使用每个所述子集合中的未损坏的小块 恢复每 个所述子集合中的坏小块中被损坏的数据, 这样最多就可以恢复 个坏小块, 相比现在技术中只能恢复 m个损坏的块, 可以提高数据存储的可靠性 图 7是本发明实施例提供的另一种恢复数据的设 的结构示意图, 当前处 理的数据集合划分为 n个数据块, 并计算得出所述数据集合的 m个冗余的编码 块, 所述 n和 m为大于 0的整数, 如图 7所示, 包括: 第一分析单元 51、 划分 单元 52和恢复单元 53 , 恢复单元 53包括第一获取单元 531和第一恢复子单元 532, 其中:

第一分析单元 51 , 用于当所述 n个数据块中存在坏块时, 分析所述 n个数 据块中每个坏块的损坏数据在所述每个坏块中 所处的位置;

划分单元 521 , 用于根据所述分析出的位置, 将所述 n个数据块和所述 m 个编码块中的每个块按照相同的划分规则划分 成 h个小块, 在所述 n个数据块 和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所处位置相 同的小块作为一个子集合, 每个子集合包含的存在损坏数据的坏小块的数 量小 于或等于所述 m, 所述 h为大于 1的整数。

第一获取单元 531 , 用于获取存在坏小块的子集合中, 所属于所述 m个编 码块中小块的数据, 以及所属于所述 n个数据块中未损坏的小块的数据。

第一恢复子单元 532 , 用于针对一个存在坏小块的子集合, 使用所述获取的 所述 m个编码块中小块的数据和所述 n个数据块中未损坏的小块的数据恢复所 述子集合中的坏小块中被损坏的数据。

可选的, 如图 3 所示, 每个小块划分为上下两个小块, 形成两个子集合, 这样第一获取单元 531 就可以是以子集合中每个小块为单位进行数据 块或编码 块的网络传输, 当图 3 中只有上面的小块存在损坏的数据时, 这样在第一获取 单元 531 中传输的小块就只是坏块所属的子集合中的小 块; 相比现有技术中以 整个数据块或编码块为单位进行网络传输, 可以减少网络传输, 以节约网络资 源。

作为一种可选的实施方式, 第一恢复子单元 532还可以用于针对一个存在 坏小块的子集合, 使用所述获取的所述 m个编码块中的数据和所述 n个数据块 中未损坏的数据釆用 EC算法恢复所述子集合中的坏小块中被损坏的 据。

可选的, 例如釆用纯异或运算, 以及代数域运算恢复每个所述子集合中损 坏的小块。

作为一种可选的实施方式, 如图 8所述, 第一获取单元 531还可以包括: 发送单元 5311 , 用于针对存在坏小块的子集合, 将存在坏小块的子集合中 未损坏小块的位置信息发送至存储所述未损坏 小块数据的存储设备(例如: 图 1 所示的次存储节点 ), 向所述存储设备发送请求返回所述存在坏小块 的子集合中 未损坏的 '〗、块所包含的数据; 接收单元 5312, 用于接收所述存储设备返回的数据;

这样实现本发明的设备 (例如图 1所示的主存储节点)与上述存储设备 (例 如: 图 1 所示的次存储节点)之间就可以只传输坏小块 所在的子集合中的小块 所包含的数据信息, 从而减少网络传输。

作为一种可选的实施方式, 如图 9所示, 恢复单元 53还可以包括: 第二分析单元 533 , 用于分析存在坏小块的子集合中坏小块的数量 ; 第二获取单元 534, 用于获取存在坏小块的子集合中, 所属于所述 m个编 码块中的并且和坏小块的数量相同的小块的数 据, 以及所属于所述 n个数据块 中的未损坏的小块的数据;

第二恢复子单元 535 , 用于针对一个存在坏小块的子集合, 使用所述获取的 所述 m个编码块中小块的数据和所述 n个数据块中未损坏的小块的数据恢复所 述子集合中的坏小块中被损坏的数据。

这样可以实现只获取所属于所述 m个编码块中的并且和坏小块的数量相同 的小块的数据, 从而可以节约网络开销。

作为一种可选的实施方式, 本发明可以应用于 RS算法(Reed Solomon, 该 算法属于外来词, 并无准确的中文意思, 在算法领域中为常见的算法, 并统一 RS算法)、 CRS算法、 RAID5技术、 RAID6技术中。

上技术方案中, 在上面实施例的基础上, 实现了以小块为单位进行网络传 输, 这样可以节约网络资源。 同时, 还可以提高数据存储的可靠性。 图 10是本发明实施例提供的另一种数据恢复的设 的结构示意图, 当前处 理的数据集合划分为 n个数据块, 并计算得出所述数据集合的 m个冗余的编码 块, 所述 n和 m为大于 0的整数, 如图 10所示, 所述设备包括处理器 61 , 通 信接口 62, 存储器 63和总线 64:

其中处理器 61、 通信接口 62、 存储器 63通过总线 64完成相互间的通信; 通信接口 62, 用于从存储所述 n个数据块的数据和所述 m个编码块的数据 的存储设备接收所述 n个数据块的数据和所述 m个编码块的数据;

存储器 63中存储一组程序代码, 且处理器 61用于调用存储器 63中存储的 程序代码, 用于执行以下操作:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所 述 h为大于 1的整数;

针对一个存在坏小块的子集合, 分别使用所属于该存在坏小块的子集合中 的未损坏的小块的数据恢复所述子集合中坏小 块中被损坏的数据。

可选的, 上述计算得出所述数据的 m个冗余的编码块具体为釆用背景技术 提到的 EC技术中通过纯异或运算, 以及代数域运算计算出该数据的 m个冗余 的编码块。

作为一种可选的实施方式, 处理器 61执行的根据所述分析出的位置, 将所 述 n个数据块和所述 m个编码块中的每个块按照相同的划分规则划 成 h个小 块的步骤可以包括:

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则以预先设置的大小划分成 h个小块。

可选的, 所述预先设置的大小为所述 n个数据块存储数据的最小单位和所 述 m个编码块存储数据的最小单位的公倍数的大 。

可选的, 所述预先设置的大小以一个扇区为单位且包括 至少一个扇区的大 小。

这样处理器 61可以而实现每个小块存储的未损坏的数据都 完整, 即处理 器 61在划分过程中不会损坏数据块或编码块所存 的数据, 从而保证编码块存 储的编码数据(例如: 校验码) 的编码或校验等功能不会失效。

上述技术方案中, 由于根据损坏数据所处的位置, 将所述 n个数据块和所 述 m个编码块中的每个块按照相同的划分规则划 成 h个小块, 在所述 n个数 据块和所述 m个编码块包含的所有小块中, 将在每个数据块和编码块中所处位 置相同的小块作为一个子集合, 以使得每个子集合包含的存在损坏数据的坏小 块的数量小于或等于所述 m, 所述 h为大于 1的整数; 这样就可以将损坏的数 据划分在小于或等于 h个子集合内, 且每个子集合中损坏的数据所在的小块的 数量小于或等于所述 m, 再分别使用每个所述子集合中的未损坏的小块 恢复每 个所述子集合中的坏小块中被损坏的数据, 这样最多就可以恢复 个坏小块, 相比现在技术中只能恢复 m个损坏的块, 可以提高数据存储的可靠性。 图 11是本发明实施例提供的另一种数据恢复的设 的结构示意图, 当前处 理的数据集合划分为 n个数据块, 并计算得出所述数据集合的 m个冗余的编码 块, 所述 n和 m为大于 0的整数, 如图 11所示, 所述设备包括处理器 71 , 通 信接口 72, 存储器 73和总线 74:

其中处理器 71、 通信接口 72、 存储器 73通过总线 74完成相互间的通信; 通信接口 72, 用于从存储所述 n个数据块的数据和所述 m个编码块的数据 的存储设备接收所述 n个数据块的数据和所述 m个编码块的数据;

存储器 73中存储一组程序代码, 且处理器 71用于调用存储器 73中存储的 程序代码, 用于执行以下操作:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所 述 h为大于 1的整数;

获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及 所属于所述 n个数据块中未损坏的 '〗、块的数据;

针对一个存在坏小块的子集合, 使用所述获取的所述 m个编码块中小块的 数据和所述 n个数据块中未损坏的小块的数据恢复所述子 合中的坏小块中被 损坏的数据。

需要说明的是, 通信接口 72可以用于接收其它设备(例如: 图 1所述的次 存储节点)发送给实现本实施例的设备(例如 : 图 1 所述的主存储节点) 的信 息, 并将接收到的信息传输至处理器 71 , 如用于获取存在坏小块的子集合中, 所属于所述 m个编码块中小块的数据, 以及所属于所述 n个数据块中未损坏的 小块的数据。

作为一种可选的实施方式, 处理器 71执行接收所述存储设备发送的所述坏 小块所在的所述子集合中的未损坏的小块所包 含的数据信息的步骤可以包括: 针对存在坏小块的子集合, 将存在坏小块的子集合中未损坏小块的位置信 息发送至存储所述未损坏小块数据的存储设备 (例如: 图 1所示的次存储节点), 向所述存储设备发送请求返回所述存在坏小块 的子集合中未损坏的小块所包含 的数据;

接收所述存储设备返回的数据。

其中, 处理 71可以是通过通信接口 72将存在坏小块的子集合中未损坏小 块的位置信息发送至存储所述未损坏小块数据 的存储设备(例如: 图 1 所示的 次存储节点 ), 向所述存储设备发送请求返回所述存在坏小块 的子集合中未损坏 的小块所包含的数据; 处理器 71可以是通过通信接口 72接收所述存储设备返 回的数据。

这样实现本发明的设备 (例如图 1所示的主存储节点)与上述存储设备 (例 如: 图 1 所示的次存储节点)之间就可以只传输坏小块 所在的子集合中的小块 所包含的数据信息, 从而减少网络传输。

作为一种可选的实施方式,处理器 71执行的使用所述获取的所述 m个编码 块中小块的数据和所述 n个数据块中未损坏的小块的数据恢复所述子 合中的 坏小块中被损坏的数据的步骤可以包括:

使用所述获取的所述 m个编码块中小块的数据和所述 n个数据块中未损坏 的小块的数据釆用 EC算法恢复所述子集合中的坏小块中被损坏的 据。

可选的, 例如釆用纯异或运算, 以及代数域运算恢复每个所述子集合中损 坏的小块。

作为一种可选的实施方式, 处理器 71用于调用存储器 73 中存储的程序代 码, 还可以用于执行以下操作:

当所述 n个数据块中存在坏块时, 分析所述 n个数据块中每个坏块的损坏 数据在所述每个坏块中所处的位置;

根据所述分析出的位置, 将所述 n个数据块和所述 m个编码块中的每个块 按照相同的划分规则划分成 h个小块, 在所述 n个数据块和所述 m个编码块包 含的所有小块中, 将在每个数据块和编码块中所处位置相同的小 块作为一个子 集合, 每个子集合包含的存在损坏数据的坏小块的数 量小于或等于所述 m, 所 述 h为大于 1的整数; 分析存在坏小块的子集合中坏小块的数量;

获取存在坏小块的子集合中, 所属于所述 m个编码块中的并且和坏小块的 数量相同的小块的数据, 以及所属于所述 n个数据块中的未损坏的小块的数据; 针对一个存在坏小块的子集合, 使用所述获取的所述 m个编码块中小块的 数据和所述 n个数据块中未损坏的小块的数据恢复所述子 合中的坏小块中被 损坏的数据。

通信接口 72还可以用于从存储所述 n个数据块的数据的存储设备接收所述 n个数据块的数据, 以及从存储所述 m个编码块的数据的存储设备接收所属于 所述 m个编码块中的并且和坏 d、块的数量相同的小块的数据。

这样可以实现只获取所属于所述 m个编码块中的并且和坏小块的数量相同 的小块的数据, 从而可以节约网络开销。

作为一种可选的实施方式, 本发明可以应用于 RS算法(Reed Solomon, 该 算法属于外来词, 并无准确的中文意思, 在算法领域中为常见的算法, 并统一 RS算法、 CRS算法、 RAID5技术、 RAID6技术中。

上技术方案中, 在上面实施例的基础上, 实现了以小块为单位进行网络传 输, 这样可以节约网络资源。 同时, 还可以提高数据存储的可靠性。

所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描述 的系统、 装置和单元的具体工作过程, 可以参考前述方法实施例中的对应过程, 在此不再赘述。

在本申请所提供的几个实施例中, 应该理解到, 所揭露的系统、 装置和方 法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示意性 的, 例如, 所述单元的划分, 仅仅为一种逻辑功能划分, 实际实现时可以有另 外的划分方式, 例如多个单元或组件可以结合或者可以集成到 另一个系统, 或 一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间的耦合或直 接耦合或通信连接可以是通过一些通信接口, 装置或单元的间接耦合或通信连 接, 可以是电性, 机械或其它的形式。 单元显示的部件可以是或者也可以不是物理单 元, 即可以位于一个地方, 或者 也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或者全部 单元来实现本实施例方案的目的。 另外, 在本发明各个实施例中的各功能单元可以集成 在一个处理单元中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单元 中。

所述功能如果以软件功能单元的形式实现并作 为独立的产品销售或使用 时, 可以存储在一个计算机可读取存储介质中。 基于这样的理解, 本发明的技 术方案本质上或者说对现有技术做出贡献的部 分或者该技术方案的部分可以以 软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中, 包括若 干指令用以使得一台计算机设备(可以是个人 计算机, 服务器, 或者网络设备 等)执行本发明各个实施例所述方法的全部或 部分步骤。 而前述的存储介质包 括: U盘、 移动硬盘、 只读存储器(ROM, Read-Only Memory ), 随机存取存储 器(RAM, Random Access Memory ),磁碟或者光盘等各种可以存储程序代码的 介质。

以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于 此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易想到 变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应 所述以权利要求的保护范围为准。




 
Previous Patent: NETWORK OFFLOADING

Next Patent: POWER GENERATION DEVICE