CN104025056B - 一种数据恢复的方法及设备 - Google Patents

一种数据恢复的方法及设备 Download PDF

Info

Publication number
CN104025056B
CN104025056B CN201280002929.7A CN201280002929A CN104025056B CN 104025056 B CN104025056 B CN 104025056B CN 201280002929 A CN201280002929 A CN 201280002929A CN 104025056 B CN104025056 B CN 104025056B
Authority
CN
China
Prior art keywords
fritter
data
block
bad
subclass
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201280002929.7A
Other languages
English (en)
Other versions
CN104025056A (zh
Inventor
张巍
张烽
雷晓松
项锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510489175.8A priority Critical patent/CN105117303B/zh
Publication of CN104025056A publication Critical patent/CN104025056A/zh
Application granted granted Critical
Publication of CN104025056B publication Critical patent/CN104025056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例提供了一种恢复数据的方式,当前处理的数据集合划分为n个数据块,并计算得出数据集合的m个冗余的编码块,所述方法还包括:当所述n个数据块中存在坏块时,分析n个数据块中坏块的损坏数据在坏块中所处的位置;根据分析出的位置,将n个数据块和m个编码块中的每个块按照相同的划分规则划分成h个小块,在n个数据块和m个编码块包含的所有小块中,将在每个数据块和编码块中所处位置相同的小块作为一个子集合;针对一个存在坏小块的子集合,分别使用所属于该存在坏小块的子集合中的未损坏的小块的数据恢复所述子集合中坏小块中被损坏的数据。相应地,本发明实施例还提供了恢复数据的设备。本发明实施例可以提高数据存储的可靠性。

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个数据块中未损坏的小块的数据;
第一恢复子单元,用于使用所述获取的所述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×h个坏小块,相比现在技术中只能恢复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,再分别使用每个所述子集合中的未损坏的小块恢复每个所述子集合中的坏小块中被损坏的数据,这样最多就可以恢复m×h个坏小块,而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)算法、磁盘阵列(RedundantArrays 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个编码块中的并且和坏小块的数量相同的小块的数据,从而可以节约网络开销同时,还可以提高数据存储的可靠性。
下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至三实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一、实施例二和实施例三。
图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通过可以上划分方式可以实现每个小块存储的未损坏的数据都是完整,即划分单元42在划分过程中不会损坏数据块或编码块所存储的数据,从而保证编码块存储的编码数据(例如:校验码)的编码或校验等功能不会失效。
上述技术方案中,由于根据损坏数据所处的位置,将所述n个数据块和所述m个编码块中的每个块按照相同的划分规则划分成h个小块,在所述n个数据块和所述m个编码块包含的所有小块中,将在每个数据块和编码块中所处位置相同的小块作为一个子集合,以使得每个子集合包含的存在损坏数据的坏小块的数量小于或等于所述m,所述h为大于1的整数;这样就可以将损坏的数据划分在小于或等于h个子集合内,且每个子集合中损坏的数据所在的小块的数量小于或等于所述m,再分别使用每个所述子集合中的未损坏的小块恢复每个所述子集合中的坏小块中被损坏的数据,这样最多就可以恢复m×h个坏小块,相比现在技术中只能恢复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×h个坏小块,相比现在技术中只能恢复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个编码块中的并且和坏小块的数量相同的小块的数据。
这样可以实现只获取所属于所述m个编码块中的并且和坏小块的数量相同的小块的数据,从而可以节约网络开销。
作为一种可选的实施方式,本发明可以应用于RS算法(Reed Solomon,该算法属于外来词,并无准确的中文意思,在算法领域中为常见的算法,并统一RS算法、CRS算法、RAID5技术、RAID6技术中。
上技术方案中,在上面实施例的基础上,实现了以小块为单位进行网络传输,这样可以节约网络资源。同时,还可以提高数据存储的可靠性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (15)

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个数据块中未损坏的小块的数据;
第一恢复子单元,用于使用所述获取的所述m个编码块中小块的数据和所述n个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
8.如权利要求6所述的设备,其特征在于,所述恢复单元包括:
第二分析单元,用于分析存在坏小块的子集合中坏小块的数量;
第二获取单元,用于获取存在坏小块的子集合中,所属于所述m个编码块中的并且和坏小块的数量相同的小块的数据,以及所属于所述n个数据块中的未损坏的小块的数据;
第二恢复子单元,用于使用所述获取的所述m个编码块中小块的数据和所述n个数据块中未损坏的小块的数据恢复所述子集合中的坏小块中被损坏的数据。
9.如权利要求6-8中任一项所述的设备,其特征在于,所述划分单元还用于根据所述分析出的位置,将所述n个数据块和所述m个编码块中的每个块按照相同的划分规则以预先设置的大小划分成h个小块,所述预先设置的大小为所述n个数据块存储数据的最小单位和所述m个编码块存储数据的最小单位的公倍数的大小。
10.如权利要求6-8中任一项所述的设备,其特征在于,所述划分单元还用于根据所述分析出的位置,将所述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个小块,所述预先设置的大小以一个扇区为单位且包括至少一个扇区的大小。
CN201280002929.7A 2012-11-23 2012-11-23 一种数据恢复的方法及设备 Active CN104025056B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510489175.8A CN105117303B (zh) 2012-11-23 2012-11-23 一种数据恢复的方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/085155 WO2014079040A1 (zh) 2012-11-23 2012-11-23 一种数据恢复的方法及设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510489175.8A Division CN105117303B (zh) 2012-11-23 2012-11-23 一种数据恢复的方法及设备

Publications (2)

Publication Number Publication Date
CN104025056A CN104025056A (zh) 2014-09-03
CN104025056B true CN104025056B (zh) 2015-08-19

Family

ID=50775412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280002929.7A Active CN104025056B (zh) 2012-11-23 2012-11-23 一种数据恢复的方法及设备

Country Status (4)

Country Link
US (1) US9417962B2 (zh)
EP (1) EP2908247A4 (zh)
CN (1) CN104025056B (zh)
WO (1) WO2014079040A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117303A (zh) * 2012-11-23 2015-12-02 华为技术有限公司 一种数据恢复的方法及设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108182961A (zh) * 2018-01-12 2018-06-19 江苏华存电子科技有限公司 一种多通道存储系统的坏块处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1498895A1 (en) * 2003-07-16 2005-01-19 Samsung Electronics Co., Ltd. Data recording method and data reproducing method with robust error handling capability and data recording and reproducing apparatus thereof
CN1801107A (zh) * 2006-01-12 2006-07-12 上海洲信信息技术有限公司 数据恢复方法
CN101387975A (zh) * 2008-10-20 2009-03-18 中科院成都信息技术有限公司 一种磁盘阵列系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6904498B2 (en) * 2002-10-08 2005-06-07 Netcell Corp. Raid controller disk write mask
US6892276B2 (en) * 2002-11-26 2005-05-10 Lsi Logic Corporation Increased data availability in raid arrays using smart drives
US20090055682A1 (en) * 2007-07-18 2009-02-26 Panasas Inc. Data storage systems and methods having block group error correction for repairing unrecoverable read errors
US7788541B2 (en) * 2008-04-15 2010-08-31 Dot Hill Systems Corporation Apparatus and method for identifying disk drives with unreported data corruption
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
JP6039699B2 (ja) * 2012-07-23 2016-12-07 株式会社日立製作所 ストレージシステム及びデータ管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1498895A1 (en) * 2003-07-16 2005-01-19 Samsung Electronics Co., Ltd. Data recording method and data reproducing method with robust error handling capability and data recording and reproducing apparatus thereof
CN1801107A (zh) * 2006-01-12 2006-07-12 上海洲信信息技术有限公司 数据恢复方法
CN101387975A (zh) * 2008-10-20 2009-03-18 中科院成都信息技术有限公司 一种磁盘阵列系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117303A (zh) * 2012-11-23 2015-12-02 华为技术有限公司 一种数据恢复的方法及设备

Also Published As

Publication number Publication date
EP2908247A1 (en) 2015-08-19
EP2908247A4 (en) 2015-11-11
US9417962B2 (en) 2016-08-16
CN104025056A (zh) 2014-09-03
WO2014079040A1 (zh) 2014-05-30
US20150301891A1 (en) 2015-10-22

Similar Documents

Publication Publication Date Title
US10795789B2 (en) Efficient recovery of erasure coded data
CN108733314B (zh) 用于独立冗余阵列(raid)重建的方法、设备和计算机可读存储介质
EP3014451B1 (en) Locally generated simple erasure codes
US10140172B2 (en) Network-aware storage repairs
US20170286280A1 (en) Isolating the introduction of software defects in a dispersed storage network
CN103534688B (zh) 数据恢复方法、存储设备和存储系统
CN110618895B (zh) 一种基于纠删码的数据更新方法、装置和存储介质
US20170063397A1 (en) Systems and methods for verification of code resiliencey for data storage
CN113574509B (zh) 减少计算存储环境中的重建时间
US9529674B2 (en) Storage device management of unrecoverable logical block addresses for RAID data regeneration
CN110413208B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US9569307B2 (en) Mitigating the impact of a single point of failure in an object store
CN111104051B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN105117303A (zh) 一种数据恢复的方法及设备
CN110737391A (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN113687975A (zh) 数据处理方法、装置、设备及存储介质
CN112558875A (zh) 数据校验方法、装置、电子设备及存储介质
Miyamae et al. Erasure code with shingled local parity groups for efficient recovery from multiple disk failures
CN110442298A (zh) 存储设备异常检测方法及装置、分布式存储系统
CN104025056B (zh) 一种数据恢复的方法及设备
CN111857549B (zh) 用于管理数据的方法、设备和计算机程序产品
CN111857560B (zh) 用于管理数据的方法、设备和计算机程序产品
US20230214300A1 (en) Method, device and computer program product for storage management
CN115454343A (zh) 一种基于raid芯片的数据处理方法、装置及介质
CN113535065B (zh) 在存储系统中管理条带的方法、设备和计算机程序产品

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant