CN103034567A - 发现并修复损坏数据的装置和方法 - Google Patents

发现并修复损坏数据的装置和方法 Download PDF

Info

Publication number
CN103034567A
CN103034567A CN2012105196368A CN201210519636A CN103034567A CN 103034567 A CN103034567 A CN 103034567A CN 2012105196368 A CN2012105196368 A CN 2012105196368A CN 201210519636 A CN201210519636 A CN 201210519636A CN 103034567 A CN103034567 A CN 103034567A
Authority
CN
China
Prior art keywords
fault
subregion
impaired
group
numbering
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.)
Granted
Application number
CN2012105196368A
Other languages
English (en)
Other versions
CN103034567B (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.)
Guangdong Gaohang Intellectual Property Operation Co ltd
Haining hi tech Zone Science and Innovation Center 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 CN201210519636.8A priority Critical patent/CN103034567B/zh
Publication of CN103034567A publication Critical patent/CN103034567A/zh
Application granted granted Critical
Publication of CN103034567B publication Critical patent/CN103034567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及数据存储领域,根据本发明实施例的一种发现并修复损坏数据的装置和方法包括:根据各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找故障数据存储节点,并获取故障数据存储节点所包括的分区的编号作为故障分区的编号;根据故障分区的编号确定故障分区对应的受损EC组;针对受损EC组,利用EC算法生成恢复数据,并将恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点。通过在查找到故障数据存储节点的情况下直接基于故障数据存储节点的分区信息来确定待修复的损坏数据所属的EC组,根据本发明实施例的发现并修复损坏数据的装置和方法能够及时、有效地发现并修复损坏数据。

Description

发现并修复损坏数据的装置和方法
技术领域
本发明涉及数据存储领域,具体涉及一种发现并修复损坏数据的装置和方法。
背景技术
在数据存储领域,数据存储的可靠性是非常重要的。目前保证可靠性的方法有多种,例如可通过以EC(Erasure Code,纠删码)算法为代表的“信息纠错技术”来实现数据存储的可靠性。EC算法的核心是,通过对M个原始数据块进行计算后得到N个校验数据块(0<N<M),当这M+N个数据块(定义为一个EC组)中有任意K个数据块(0<K≤N)丢失,都可以通过一定的算法恢复出来。
无论采用哪种方法,保证数据存储可靠性的关键在于如何能够快速有效地发现损坏的数据(即检测数据的完整性)并及时修复损坏的数据。对于EC算法,目前比较通用的方式是周期性地或在访问数据时对数据的完整性进行检测,并在检测到数据丢失时启动修复。
具言之,在对数据的完整性进行检测时,读取某一EC组中的最少条带数据,例如上述M个原始数据块,并判断这些条带数据中是否存在至少一个条带数据不可访问。如果判断结果为是,则确认对应的条带数据已经发生丢失。在确认发生了数据丢失的情况下,读取该EC组的所有剩余条带数据,例如上述N个校验数据块,并启动修复以通过EC算法重新生成条带数据,然后将对应丢失的条带数据写入存储单元来完成修复。
由于通过读取EC组的最少条带数据(或者所有条带数据)来进行数据的完整性判断,发明人发现,上述方法无法直接获知发生故障的数据存储节点的信息,从而无法及时、有效、经济地修复因数据存储节点故障而丢失的数据。时间越长,数据存储节点故障率越高,数据永久丢失的概率就越大,从而使得系统可靠性严重下降。
发明内容
有鉴于此,本发明要解决的技术问题是,如何能够快速有效地发现并修复损坏数据。
为了解决上述问题,第一方面,本发明的实施例提供了一种发现并修复损坏数据的装置,包括:故障节点发现单元,用于根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,获取故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送出去;受损EC组确定单元,与所述故障节点发现单元连接,用于根据从所述故障节点发现单元接收到的故障分区的编号确定故障分区对应的受损EC组;以及损坏数据修复单元,与所述受损EC组确定单元连接,用于针对所确定的受损EC组利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点。
对于上述发现并修复损坏数据的装置,在一种可能的实施方式中,所述受损EC组确定单元包括:故障分区编号接收模块,与所述故障节点发现单元连接,用于接收所述故障节点发现单元所发送的故障分区的编号;最接近非故障分区查找模块,与所述故障分区编号接收模块连接,用于基于所接收到的故障分区的编号查找最接近非故障分区,其中所述最接近非故障分区是编号与所述故障分区的编号最接近的非故障分区;以及受损EC组确定模块,与所述最接近非故障分区查找模块以及所述损坏数据修复单元连接,用于将读取到的最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并判断潜在受损EC组信息是否包括所述故障分区的编号,并在判断结果为是的情况下将该潜在受损EC组信息表示的EC组确定作为受损EC组。
对于上述发现并修复损坏数据的装置,在一种可能的实施方式中,所述最接近非故障分区查找模块首先查找左侧最接近非故障分区,其中左侧最接近非故障分区是在编号减小方向上的最接近非故障分区,所述受损EC组确定模块将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并判断潜在受损EC组信息是否包括所述故障分区的编号,在判断结果为是的情况下,所述受损EC组确定模块将潜在受损EC组信息表示的EC组确定作为受损EC组;在判断结果为否的情况下,所述最接近非故障分区查找模块继续查找右侧最接近非故障分区,其中右侧最接近非故障分区是在编号增大方向上的最接近非故障分区,以及所述受损EC组确定模块将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息、并将潜在受损EC组信息表示的EC组确定作为受损EC组。
对于上述发现并修复损坏数据的装置,在一种可能的实施方式中,所述受损EC组确定单元还包括与所述故障分区编号接收模块以及所述最接近非故障分区查找模块连接的故障分区排序模块,所述故障分区排序模块用于对所述故障分区编号接收模块所接收到的故障分区的编号按大小进行排序,以生成按编号大小排列的故障分区序列,对于所述故障分区序列中的编号无间断的n+1个故障分区pt(i)~pt(i+n),其中i为整数、n为大于等于0的整数,所述最接近非故障分区查找模块将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区;所述受损EC组确定模块将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息,并基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组。
对于上述发现并修复损坏数据的装置,在一种可能的实施方式中,所述故障节点发现单元包括:节点状态记录模块,与存储集群系统中的各数据存储节点连接,用于接收并记录各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息;故障节点确定模块,与所述节点状态记录模块连接,用于根据所述节点状态记录模块所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及分区编号获取模块,与所述故障节点确定模块以及所述受损EC组确定单元连接,用于获取所述故障节点确定模块所确定的故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送至所述受损EC组确定单元。
为了解决上述问题,第二方面,本发明的实施例提供了一种发现并修复损坏数据的方法,包括:故障节点发现步骤,根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,并获取故障数据存储节点所包括的分区的编号作为故障分区的编号;受损EC组确定步骤,根据所获取到的故障分区的编号确定故障分区对应的受损EC组;损坏数据修复步骤,针对所确定的受损EC组,利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点;以及判断所有故障分区是否均已处理,如果判断为是,则再次进入故障节点发现步骤以查找新的故障数据存储节点,如果判断为否,则再次进入受损EC组确定步骤,以继续处理待修复损坏数据的故障分区。
对于上述发现并修复损坏数据的方法,在一种可能的实施方式中,所述受损EC组确定步骤包括:根据所获取到的故障分区的编号查找左侧最接近非故障分区,其中左侧最接近非故障分区为在编号减小方向上的编号与所述故障分区的编号最接近的非故障分区;将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;判断潜在受损EC组信息是否包括故障分区的编号,在判断结果为是的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组并进入所述损坏数据修复步骤,否则进入如下步骤;根据所获取到的故障分区的编号查找右侧最接近非故障分区,其中右侧最接近非故障分区为在编号增大方向上的编号与所述故障分区的编号最接近的非故障分区;以及将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,将潜在受损EC组信息表示的EC组确定作为受损EC组,并进入所述损坏数据修复步骤。
对于上述发现并修复损坏数据的方法,在一种可能的实施方式中,所述受损EC组确定步骤包括:根据所获取到的故障分区的编号查找右侧最接近非故障分区,其中右侧最接近非故障分区为在编号增大方向上的编号与所述故障分区的编号最接近的非故障分区;将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;判断潜在受损EC组信息是否包括故障分区的编号,在判断结果为是的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组并进入所述损坏数据修复步骤,否则进入如下步骤;根据所获取到的故障分区的编号查找左侧最接近非故障分区,其中左侧最接近非故障分区为在编号减小方向上的编号与所述故障分区的编号最接近的非故障分区;以及将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,将潜在受损EC组信息表示的EC组确定作为受损EC组,并进入所述损坏数据修复步骤。
对于上述发现并修复损坏数据的方法,在一种可能的实施方式中,在所述故障节点发现步骤之后还包括:按编号大小对所有的故障分区进行排序,以生成按编号大小排列的故障分区序列,所述受损EC组确定步骤进一步包括:对于所述故障分区序列中的编号无间断的n+1个故障分区pt(i)~pt(i+n),将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区,其中i为整数、n为大于等于0的整数;将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,并将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息;以及基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组,并进入所述损坏数据修复步骤。
对于上述发现并修复损坏数据的方法,在一种可能的实施方式中,所述基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组包括:在左侧潜在受损EC组信息包括故障分区pt(i)和/或pt(i+n)的编号的情况下,将左侧潜在受损EC组信息表示的EC组确定作为受损EC组;以及在右侧潜在受损EC组信息包括故障分区pt(i)和/或pt(i+n)的编号的情况下,将右侧潜在受损EC组信息表示的EC组确定作为受损EC组。
对于上述发现并修复损坏数据的方法,在一种可能的实施方式中,其特征在于,所述故障节点发现步骤进一步包括:记录存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息;根据所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及获取故障数据存储节点所包括的分区的编号作为故障分区的编号。
通过在发现故障数据存储节点的情况下,直接基于故障数据存储节点的分区信息来确定待修复的条带数据所属的EC组,根据本发明实施例的发现并修复损坏数据的装置和方法能够及时、有效地发现并修复损坏数据。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的说明书附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出了根据本发明实施例的一种发现并修复损坏数据的装置的结构框图;
图2示出了根据本发明另一实施例的一种发现并修复损坏数据的装置的结构框图;
图3示出了根据本发明又一实施例的一种发现并修复损坏数据的装置的结构框图;
图4示出了根据本发明再一实施例的一种发现并修复损坏数据的装置的结构框图;
图5示出了根据本发明一实施例的一种发现并修复损坏数据的方法的流程图;
图6示出了根据本发明另一实施例的一种发现并修复损坏数据的方法的流程图;
图7示出了根据本发明又一实施例的一种发现并修复损坏数据的方法的流程图;
图8示出了根据本发明又一实施例的一种发现并修复损坏数据的方法的流程图;以及
图9示出了根据本发明再一实施例的一种发现并修复损坏数据的设备的结构框图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例,不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
在描述本发明的具体实施例之前,先对所涉及的术语做如下定义:
EC组,如上所述为M个原始数据块和针对这M个原始数据块基于EC算法生成的N个校验数据块的集合,其中0<N<M;
存储集群系统,包括通过网络互联的多个数据存储节点;以及
分区(partition),为用于存储数据的虚拟容器,对应于某个数据存储节点上的一段存储空间,每个数据存储节点通常包含多个分区,并且每个分区具有唯一的例如整数形式的编号。
根据EC算法,属于同一EC组的S个条带数据各自存储于S个分区,并且这S个分区的编号连续。此外,出于数据安全性的考虑,这S个分区可分别存储在不同的数据存储节点上。
将以整数形式的分区编号为例详细介绍根据本发明的实施例如下,但本发明不限于此,并且本领域技术人员应能理解,能够进行连续编号的任意编号形式均适用于本发明。以下pt(i)表示编号为i的分区,其中i为整数。EC组(i)表示编号为i的分区所存储的条带数据所属的EC组、即分区pt(i)对应的EC组。以及,EC组(i~i+S)表示S+1个条带数据各自存储于分区pt(i)~pt(i+S)内,并且这S+1个条带数据属于同一EC组。
图1示出了根据本发明一实施例的一种发现并修复损坏数据的装置的结构框图。如图1所示,发现并修复损坏数据的装置100包括故障节点发现单元110、受损EC组确定单元120和损坏数据修复单元130。其中:
故障节点发现单元110与受损EC组确定单元120连接,用于根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,获取故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送给受损EC组确定单元120。
受损EC组确定单元120与故障节点发现单元110以及损坏数据修复单元130连接,用于根据所接收到的故障分区的编号确定故障分区对应的受损EC组。
例如,由于用于存储属于同一EC组的条带数据的分区具有连续的编号,并且通常情况下属于同一EC组的条带数据不会同时被损坏,受损EC组确定单元120可基于如下思想来确定故障分区对应的受损EC组,即:对于某个故障分区,可以基于编号与该故障分区的编号最接近的非故障分区(以下称为最接近非故障分区)所存储的条带数据携带的EC组信息来确定该故障分区对应的受损EC组。具言之,对于某个故障分区,可通过读取其左侧最接近非故障分区和/或右侧最接近非故障分区所存储的条带数据携带的EC组信息、判断所读取到的EC组信息是否包括该故障分区的编号、并将包括该故障分区的编号的EC组信息表示的EC组确定作为受损EC组来确定该故障分区对应的受损EC组。其中,左侧最接近非故障分区是在编号减小方向上的最接近非故障分区,右侧最接近非故障分区是在编号增大方向上的最接近非故障分区。并且,如果从左侧最接近非故障分区和右侧最接近非故障分区所读取到的EC组信息均不包括该故障分区的编号,则认为出现了该故障分区对应的受损EC组的条带数据均被损坏的极端情况,从而超出了利用EC算法修复数据的范畴。
损坏数据修复单元130与受损EC组确定单元120连接,用于针对所确定的受损EC组,利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点。
通过在故障节点发现单元110查找到存储集群系统中的故障数据存储节点的情况下,受损EC组确定单元120直接基于故障数据存储节点的分区信息来确定待修复的条带数据所属的EC组,根据本发明上述实施例的发现并修复损坏数据的装置能够及时、有效地发现并修复损坏数据,从而提高了数据存储以及系统的可靠性。
图2示出了根据本发明另一实施例的一种发现并修复损坏数据的装置的结构框图。图2中与图1标号相同的组件具有相同的功能。图2所示的发现并修复损坏数据的装置200中的受损EC组确定单元120可包括故障分区编号接收模块121、最接近非故障分区查找模块122以及受损EC组确定模块123。
其中,故障分区编号接收模块121与故障节点发现单元110以及最接近非故障分区查找模块122连接,用于接收来自故障节点发现单元110的故障分区的编号,并将所接收到的故障分区的编号发送给最接近非故障分区查找模块122。
最接近非故障分区查找模块122与故障分区编号接收模块121以及受损EC组确定模块123连接,用于基于所接收到的故障分区的编号查找最接近非故障分区,并将所查找到的最接近非故障分区的编号发送给受损EC组确定模块123。
受损EC组确定模块123与最接近非故障分区查找模块122以及损坏数据修复单元130连接,用于将读取到的最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,判断潜在受损EC组信息是否包括故障分区的编号,并在判断为潜在受损EC组信息包括故障分区的编号的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组,以使得损坏数据修复单元130可以基于该受损EC组通过EC算法来修复故障分区的损坏数据。
例如,根据本发明的一种实施方式,在pt(i)为故障分区的情况下,最接近非故障分区查找模块122可以通过依次判断分区pt(i-1)、pt(i-2)…是否为非故障分区来确定左侧最接近非故障分区pt(j),其中j<i。此外,j可进一步限定为大于i-Max,Max表示查找限值,以避免例如在对应于同一EC组的最左侧分区故障的情况下无意义地向左侧进行过多次的查找判断。用户可基于存储集群系统的资源占用率等因素自由设置查找限值Max。例如,在资源占用率较高的情况下,查找限值Max可设置为较小,例如10以下,以避免因查找最接近非故障分区而过多增大存储集群系统的负担。
在确定了左侧最接近非故障分区之后,受损EC组确定模块123可将读取到的左侧最接近非故障分区pt(j)所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并判断潜在受损EC组信息是否包括故障分区pt(i)的编号。
在判断为潜在受损EC组信息包括故障分区pt(i)的编号的情况下,受损EC组确定模块123将潜在受损EC组信息表示的EC组确定作为受损EC组。
否则,需要由最接近非故障分区查找模块122继续查找右侧的最接近非故障分区。具言之,最接近非故障分区查找模块122可以通过依次判断分区pt(i+1)、pt(i+2)…是否为非故障分区来确定右侧最接近非故障分区pt(k),其中k>i。此外,k可进一步限定为小于i+Max,Max如上所述表示查找限值,以避免例如在对应于同一EC组的最右侧分区故障的情况下无意义地向右侧进行过多次的查找判断。
在确定了右侧最接近非故障分区之后,受损EC组确定模块123可将读取到的右侧最接近非故障分区pt(k)所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并将潜在受损EC组信息表示的EC组确定作为受损EC组。
需要说明的是,尽管以先查找左侧最接近非故障分区为例解释了最接近非故障分区查找模块122和受损EC组确定模块123的操作如上,但本领域技术人员应能理解,显然也可先查找右侧最接近非故障分区。
此外,由于受损EC组确定单元120通过参考最接近非故障分区来确定故障分区所对应的EC组,根据本发明上述实施例的发现并修复损坏数据的装置能够准确、快速地确定受损EC组,进而能够及时修复故障分区的损坏数据。
图3示出了根据本发明另一实施例的一种发现并修复损坏数据的装置的结构框图。图3中与图2标号相同的组件具有相同的功能。图3所示的发现并修复损坏数据的装置300中的受损EC组确定单元120还可包括故障分区排序模块124。
如图3所示,故障分区排序模块124与故障分区编号接收模块121以及最接近非故障分区查找模块122连接,用于对所接收到的故障分区的编号按大小进行排序,以使得最接近非故障分区查找模块122可按编号大小顺序遍历所有的故障分区。
例如,根据本发明的一种实施方式,故障分区排序模块124可以将所有的故障分区按编号从小到大排序。然后,对于按编号从小到大排列的故障分区序列中的某个编号孤立的故障分区pt(i),最接近非故障分区查找模块122可将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+1)分别确定作为故障分区pt(i)的左侧最接近非故障分区和右侧最接近非故障分区。
在确定了左侧最接近非故障分区pt(i-1)和右侧最接近非故障分区pt(i+1)的基础上,受损EC组确定模块123可将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,并判断左侧潜在受损EC组信息是否包括故障分区pt(i)的编号。
在判断为左侧潜在受损EC组信息包括故障分区pt(i)的编号的情况下,受损EC组确定模块123将潜在受损EC组信息表示的EC组确定作为受损EC组。否则,受损EC组确定模块123可以将读取到的右侧最接近非故障分区pt(i+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息,并将右侧潜在受损EC组信息表示的EC组确定作为受损EC组。
另一方面,对于按编号从小到大排列的故障分区序列中的n+1个编号连续的故障分区pt(i)~pt(i+n),最接近非故障分区查找模块122可将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区。
在确定了左侧最接近非故障分区pt(i-1)和右侧最接近非故障分区pt(i+n+1)的基础上,受损EC组确定模块123可将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息、将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息,并分别确定左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号。
在左侧潜在受损EC组信息包括故障分区pt(i)以及pt(i+n)的编号的情况下,认为故障分区pt(i)~pt(i+n)对应于同一受损EC组,并且受损EC组确定模块123将左侧潜在受损EC组信息表示的EC组确定作为受损EC组。
在右侧潜在受损EC组信息包括故障分区pt(i)以及pt(i+n)的编号的情况下,认为故障分区pt(i)~pt(i+n)对应于同一受损EC组,并且受损EC组确定模块123将右侧潜在受损EC组信息表示的EC组确定作为受损EC组。
而左侧潜在受损EC组信息包括故障分区pt(i)的编号、右侧潜在受损EC组信息包括故障分区pt(i+n)的编号的情况下,认为故障分区pt(i)~pt(i+n)对应于两个不同的受损EC组,并且受损EC组确定模块123通过将左侧潜在受损EC组信息和右侧潜在受损EC组信息表示的EC组均确定作为受损EC组。
需要说明的是,尽管以故障分区排序模块124按编号从小到大对所有故障分区进行排序为例解释了最接近非故障分区查找模块122和受损EC组确定模块123的操作如上,但本领域技术人员应能理解,显然故障分区排序模块124也可按编号从大到小对所有故障分区进行排序。
通过故障分区排序模块124将所有的故障分区按编号大小进行排序,根据本发明上述实施例的发现并修复损坏数据的装置能够有序地遍历所有故障分区,这在一定程度上能够进一步提高最接近非故障分区的查找速度和准确度,进而能够进一步提高修复损坏数据的及时性。
图4示出了根据本发明另一实施例的一种发现并修复损坏数据的装置的结构框图。图4中与图1标号相同的组件具有相同的功能。图4所示的发现并修复损坏数据的装置400中的故障节点发现单元110可包括节点状态记录模块111、故障节点确定模块112以及分区编号获取模块113。
其中,节点状态记录模块111与故障节点确定模块112以及存储集群系统中的各数据存储节点连接,用于接收并记录各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息。
故障节点确定模块112与节点状态记录模块111和分区编号获取模块113连接,用于根据节点状态记录模块111所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点。其中,所述预定时间可由用户根据对数据存储的安全性和/或系统的可靠性的实际需求灵活设置。例如,在安全性及可靠性要求高的情况下,所述预定时间应设置得较短,优选为若干秒、甚至若干毫秒。在安全性及可靠性要求不是很高的情况下,所述预定时间可设置得相对较长,例如为若干分钟。
分区编号获取模块113与故障节点确定模块112以及受损EC组确定单元120(可具体为受损EC组确定单元120中的故障分区编号接收模块121)连接,用于获取故障节点确定模块112所确定的故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送至受损EC组确定单元120(可具体为受损EC组确定单元120中的故障分区编号接收模块121)。
通过由故障节点发现单元主动地基于存储集群系统中的各数据存储节点的状态来定位故障数据存储节点,根据本发明上述实施例的发现并修复损坏数据的装置能够及时地发现故障数据存储节点,从而进一步提高了数据存储以及系统的可靠性。
图5示出了根据本发明一实施例的一种发现并修复损坏数据的方法的流程图。如图5所示,发现并修复损坏数据的方法500包括:
步骤S510,根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,并获取故障数据存储节点所包括的分区的编号作为故障分区的编号;
步骤S520,根据所获取到的故障分区的编号确定故障分区所对应的受损EC组;
步骤S530,针对所确定的受损EC组,利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点;以及
步骤S540,判断所有故障分区是否均已处理,如果判断为是,则再次进入步骤S510以查找新的故障数据存储节点,如果判断为否,则再次进入步骤S520,以继续处理待修复损坏数据的故障分区。
在上述步骤S520中,由于用于存储属于同一EC组的条带数据的分区具有连续的编号,并且通常情况下属于同一EC组的条带数据不会同时被损坏,可基于如下思想来确定故障分区所对应的EC组,即:对于某个故障分区,可以基于编号与该故障分区的编号最接近的非故障分区(以下称为最接近非故障分区)所存储的条带数据携带的EC组信息来确定该故障分区对应的受损EC组。具言之,对于某个故障分区,可通过读取其左侧最接近非故障分区和/或右侧最接近非故障分区所存储的条带数据携带EC组信息、判断所读取到的EC组信息是否包括该故障分区的编号、并将包括该故障分区的编号的EC组信息表示的EC组确定作为受损EC组来确定该故障分区对应的受损EC组。其中,左侧最接近非故障分区是在编号减小方向上的最接近非故障分区,右侧最接近非故障分区是在编号增大方向上的最接近非故障分区。并且,如果从左侧最接近非故障分区和右侧最接近非故障分区所读取到的EC组信息均不包括该故障分区的编号,则认为出现了该故障分区对应的受损EC组的条带数据均被损坏的极端情况,从而超出了利用EC算法修复数据的范畴。
由于在查找到故障数据存储节点的情况下,直接基于故障数据存储节点的分区信息来确定待修复的条带数据所属的EC组,利用根据本发明上述实施例的发现并修复损坏数据的方法能够及时、有效地发现并修复损坏数据,进而能够有效提高数据存储及系统的可靠性。
图6示出了根据本发明另一实施例的一种发现并修复损坏数据的方法的流程图。图6中与图5标号相同的步骤具有相同的功能。在图6所示的发现并修复损坏数据的方法600中,图5所示的步骤S520可具体包括:
步骤S621,根据所获取到的故障分区的编号查找左侧最接近非故障分区;
步骤S622,将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;
步骤S623,判断潜在受损EC组信息是否包括故障分区的编号,在判断结果为是的情况下直接进入步骤S624,否则经由步骤S625、S626进入步骤S624;
步骤S624,将潜在受损EC组信息表示的EC组确定作为受损EC组,并随后进入步骤S530;
步骤S625,根据所获取到的故障分区的编号查找右侧最接近非故障分区;以及
步骤S626,将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并随后进入步骤S624。
例如,根据本发明的一种实施方式,在pt(i)为故障分区的情况下,在步骤S621中,可以通过依次判断分区pt(i-1)、pt(i-2)…是否为非故障分区来确定左侧最接近非故障分区pt(j),其中j<i。此外,j可进一步限定为大于i-Max,Max表示查找限值,以避免例如在对应于同一EC组的最左侧分区故障的情况下无意义地向左侧进行过多次的查找判断。用户可基于存储集群系统的资源占用率等因素自由设置查找限值Max。例如,在资源占用率较高的情况下,查找限值Max可设置为较小,例如10以下,以避免因查找最接近非故障分区而过多增大存储集群系统的负担。
在确定了左侧最接近非故障分区之后,可通过步骤S622将读取到的左侧最接近非故障分区pt(j)所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并通过步骤S623判断潜在受损EC组信息是否包括故障分区pt(i)的编号。
在步骤S623判断为是的情况下,直接进入步骤S624。在步骤S624中,将潜在受损EC组信息表示的EC组确定作为受损EC组。
另一方面,在步骤S623判断为否的情况下,进入步骤S625。在步骤S625中,可以通过依次判断分区pt(i+1)、pt(i+2)…是否为非故障分区来确定右侧最接近非故障分区pt(k),其中k>i。此外,k可进一步限定为小于i+Max,Max如上所述表示查找限值,以避免例如在对应于同一EC组的最右侧分区故障的情况下无意义地向右侧进行过多次的查找判断。
在确定了右侧最接近非故障分区之后,可通过步骤S626将读取到的右侧最接近非故障分区pt(k)所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并随后通过步骤S624将该潜在受损EC组信息表示的EC组确定作为受损EC组。
需要说明的是,尽管以先查找左侧最接近非故障分区为例解释了确定受损EC组的具体流程如上,但本领域技术人员应能理解,显然也可先查找右侧最接近非故障分区。
此外,由于通过参考最接近非故障分区来确定故障分区所对应的EC组,利用根据本发明上述实施例的发现并修复损坏数据的方法能够准确、快速地确定受损EC组,进而能够及时修复故障分区的损坏数据。
图7示出了根据本发明另一实施例的一种发现并修复损坏数据的方法的流程图。图7中与图5标号相同的步骤具有相同的功能。在图7所示的发现并修复损坏数据的方法700中,可在图5所示的步骤S520之前还包括步骤S710。在步骤S710中,按编号大小对所有的故障分区进行排序,以生成按编号大小排列的故障分区序列。
此外,在图7所示的发现并修复损坏数据的方法700中,图5所示的步骤S520可具体包括:
步骤S721,对于故障分区序列中的编号无间断的n+1个故障分区pt(i)~pt(i+n),将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区,其中n为大于等于0的整数;
步骤S722,将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,并将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息;以及
步骤S723,基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组,并然后进入步骤S530。
对于上述步骤S723,根据本发明的一种实施方式,在左侧潜在受损EC组信息包括故障分区pt(i)以及pt(i+n)的编号的情况下,认为故障分区pt(i)~pt(i+n)对应于同一受损EC组,并将左侧潜在受损EC组信息表示的EC组确定作为受损EC组;在右侧潜在受损EC组信息包括故障分区pt(i)以及pt(i+n)的编号的情况下,也认为故障分区pt(i)~pt(i+n)对应于同一受损EC组,并将右侧潜在受损EC组信息表示的EC组确定作为受损EC组;以及,在左侧潜在受损EC组信息包括故障分区pt(i)的编号、右侧潜在受损EC组信息包括故障分区pt(i+n)的编号的情况下,认为故障分区pt(i)~pt(i+n)对应于两个不同的受损EC组,并且可将左侧潜在受损EC组信息以及右侧潜在受损EC组信息表示的EC组均确定作为受损EC组。
由于将所有的故障分区按编号大小进行排序,通过根据本发明上述实施例的发现并修复损坏数据的方法能够有序地遍历所有故障分区,这在一定程度上能够进一步提高最接近非故障分区的查找速度和准确度,进而能够进一步提高修复损坏数据的及时性。
图8示出了根据本发明另一实施例的一种发现并修复损坏数据的方法的流程图。图8中与图5标号相同的步骤具有相同的功能。在图8所示的发现并修复损坏数据的方法800中,图5所示的步骤S510可具体包括:
步骤S811,记录存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息;
步骤S812,根据所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及
步骤S813,获取故障数据存储节点所包括的分区的编号作为故障分区的编号。
其中,步骤S811中的状态信息记录可根据各数据存储节点的上报而实时进行。相应地,在步骤S540的判断结果为针对当前的故障数据存储节点所确定的所有故障分区均已处理的情况下,则将再次进入步骤S812以根据在步骤S811中实时更新的数据存储节点的状态信息来定位新的故障数据存储节点。
此外,步骤S812中的预定时间可由用户根据实际对数据存储的安全性、可靠性的要求高低灵活设置。例如,在安全性、可靠性要求高的情况下,该预定时间应设置得较短,优选为若干秒、甚至若干毫秒。然而,在安全性、可靠性要求不是很高的情况下,该预定时间可设置得相对较长,例如若干分钟。
通过主动地基于存储集群系统中的各数据存储节点的状态来定位故障数据存储节点,根据本发明上述实施例的发现并修复损坏数据的方法能够及时地发现故障数据存储节点,从而进一步提高了数据存储以及系统的可靠性。
图9示出了根据本发明再一实施例的一种发现并修复损坏数据的设备的结构框图。所述发现并修复损坏数据的设备900可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述发现并修复损坏数据的设备900包括处理器(processor)910、通信接口(Communications Interface)920、存储器(memoryarray)930和总线940。其中,处理器910、通信接口920、以及存储器930通过总线940完成相互间的通信。
通信接口920用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储等。
处理器910用于执行程序。处理器910可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器930用于存放文件。存储器930可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器930也可以是存储器阵列。存储器930还可能被分块,并且所划分的块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序可用于:
根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,并获取故障数据存储节点所包括的分区的编号作为故障分区的编号;
根据所获取到的故障分区的编号确定故障分区所对应的受损EC组;
针对所确定的受损EC组,利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点;以及
判断所有故障分区是否均已处理,如果判断为是,则再次查找新的故障数据存储节点,如果判断为否,则再次根据所获取到的故障分区的编号确定故障分区所对应的受损EC组,以继续处理待修复损坏数据的故障分区。
对于上述程序,在一种可能的实施方式中,根据所获取到的故障分区的编号确定故障分区所对应的受损EC组包括:
根据所获取到的故障分区的编号查找左侧最接近非故障分区,其中左侧最接近非故障分区为在编号减小方向上的编号与所述故障分区的编号最接近的非故障分区;
将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;
判断潜在受损EC组信息是否包括故障分区的编号;
在判断结果为是的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组;
否则,根据所获取到的故障分区的编号查找右侧最接近非故障分区,将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并将潜在受损EC组信息表示的EC组确定作为受损EC组,其中右侧最接近非故障分区为在编号增大方向上的编号与所述故障分区的编号最接近的非故障分区。
对于上述程序,在一种可能的实施方式中,根据所获取到的故障分区的编号确定故障分区所对应的受损EC组包括:
根据所获取到的故障分区的编号查找右侧最接近非故障分区,其中右侧最接近非故障分区为在编号增大方向上的编号与所述故障分区的编号最接近的非故障分区;
将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;
判断潜在受损EC组信息是否包括故障分区的编号;
在判断结果为是的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组;
否则,根据所获取到的故障分区的编号查找左侧最接近非故障分区,将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并将潜在受损EC组信息表示的EC组确定作为受损EC组,其中左侧最接近非故障分区为在编号减小方向上的编号与所述故障分区的编号最接近的非故障分区。
对于上述程序,在一种可能的实施方式中,该程序还可用于:按编号大小对所有的故障分区进行排序,以生成按编号大小排列的故障分区序列,
根据所获取到的故障分区的编号确定故障分区所对应的受损EC组进一步包括:
对于所述故障分区序列中的编号无间断的n+1个故障分区pt(i)~pt(i+n),将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区,其中i为整数、n为大于等于0的整数;
将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,并将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息;以及
基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组。
对于上述程序,在一种可能的实施方式中,所述基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组包括:
在左侧潜在受损EC组信息包括故障分区pt(i)和/或pt(i+n)的编号的情况下,将左侧潜在受损EC组信息表示的EC组确定作为受损EC组;以及
在右侧潜在受损EC组信息包括故障分区pt(i)和/或pt(i+n)的编号的情况下,将右侧潜在受损EC组信息表示的EC组确定作为受损EC组。
对于上述程序,在一种可能的实施方式中,根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,并获取故障数据存储节点所包括的分区的编号作为故障分区的编号包括:
记录存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息;
根据所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及
获取故障数据存储节点所包括的分区的编号作为故障分区的编号。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (11)

1.一种发现并修复损坏数据的装置,其特征在于,包括:
故障节点发现单元,用于根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,获取故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送出去;
受损EC组确定单元,与所述故障节点发现单元连接,用于根据从所述故障节点发现单元接收到的故障分区的编号确定故障分区对应的受损EC组;以及
损坏数据修复单元,与所述受损EC组确定单元连接,用于针对所确定的受损EC组利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点。
2.根据权利要求1所述的装置,其特征在于,所述受损EC组确定单元包括:
故障分区编号接收模块,与所述故障节点发现单元连接,用于接收所述故障节点发现单元所发送的故障分区的编号;
最接近非故障分区查找模块,与所述故障分区编号接收模块连接,用于基于所接收到的故障分区的编号查找最接近非故障分区,其中所述最接近非故障分区是编号与所述故障分区的编号最接近的非故障分区;以及
受损EC组确定模块,与所述最接近非故障分区查找模块以及所述损坏数据修复单元连接,用于将读取到的最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并判断潜在受损EC组信息是否包括所述故障分区的编号,并在判断结果为是的情况下将该潜在受损EC组信息表示的EC组确定作为受损EC组。
3.根据权利要求2所述的装置,其特征在于,所述最接近非故障分区查找模块首先查找左侧最接近非故障分区,其中左侧最接近非故障分区是在编号减小方向上的最接近非故障分区,
所述受损EC组确定模块将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,并判断潜在受损EC组信息是否包括所述故障分区的编号,
在判断结果为是的情况下,所述受损EC组确定模块将潜在受损EC组信息表示的EC组确定作为受损EC组;
在判断结果为否的情况下,所述最接近非故障分区查找模块继续查找右侧最接近非故障分区,其中右侧最接近非故障分区是在编号增大方向上的最接近非故障分区,以及所述受损EC组确定模块将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息、并将潜在受损EC组信息表示的EC组确定作为受损EC组。
4.根据权利要求2所述的装置,其特征在于,所述受损EC组确定单元还包括与所述故障分区编号接收模块以及所述最接近非故障分区查找模块连接的故障分区排序模块,所述故障分区排序模块用于对所述故障分区编号接收模块所接收到的故障分区的编号按大小进行排序,以生成按编号大小排列的故障分区序列,
对于所述故障分区序列中的编号无间断的n+1个故障分区pt(i)~pt(i+n),其中i为整数、n为大于等于0的整数,
所述最接近非故障分区查找模块将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区;
所述受损EC组确定模块将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息,并基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组。
5.根据权利要求1至4中任一项所述的装置,其特征在于,所述故障节点发现单元包括:
节点状态记录模块,与存储集群系统中的各数据存储节点连接,用于接收并记录各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息;
故障节点确定模块,与所述节点状态记录模块连接,用于根据所述节点状态记录模块所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及
分区编号获取模块,与所述故障节点确定模块以及所述受损EC组确定单元连接,用于获取所述故障节点确定模块所确定的故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送至所述受损EC组确定单元。
6.一种发现并修复损坏数据的方法,其特征在于,包括:
故障节点发现步骤,根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,并获取故障数据存储节点所包括的分区的编号作为故障分区的编号;
受损EC组确定步骤,根据所获取到的故障分区的编号确定故障分区对应的受损EC组;
损坏数据修复步骤,针对所确定的受损EC组,利用EC算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点;以及
判断所有故障分区是否均已处理,如果判断为是,则再次进入故障节点发现步骤以查找新的故障数据存储节点,如果判断为否,则再次进入受损EC组确定步骤,以继续处理待修复损坏数据的故障分区。
7.根据权利要求6所述的方法,其特征在于,所述受损EC组确定步骤包括:
根据所获取到的故障分区的编号查找左侧最接近非故障分区,其中左侧最接近非故障分区为在编号减小方向上的编号与所述故障分区的编号最接近的非故障分区;
将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;
判断潜在受损EC组信息是否包括故障分区的编号,在判断结果为是的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组并进入所述损坏数据修复步骤,否则进入如下步骤;
根据所获取到的故障分区的编号查找右侧最接近非故障分区,其中右侧最接近非故障分区为在编号增大方向上的编号与所述故障分区的编号最接近的非故障分区;以及
将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,将潜在受损EC组信息表示的EC组确定作为受损EC组,并进入所述损坏数据修复步骤。
8.根据权利要求6所述的方法,其特征在于,所述受损EC组确定步骤包括:
根据所获取到的故障分区的编号查找右侧最接近非故障分区,其中右侧最接近非故障分区为在编号增大方向上的编号与所述故障分区的编号最接近的非故障分区;
将读取到的右侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息;
判断潜在受损EC组信息是否包括故障分区的编号,在判断结果为是的情况下将潜在受损EC组信息表示的EC组确定作为受损EC组并进入所述损坏数据修复步骤,否则进入如下步骤;
根据所获取到的故障分区的编号查找左侧最接近非故障分区,其中左侧最接近非故障分区为在编号减小方向上的编号与所述故障分区的编号最接近的非故障分区;以及
将读取到的左侧最接近非故障分区所存储的条带数据携带的EC组信息作为潜在受损EC组信息,将潜在受损EC组信息表示的EC组确定作为受损EC组,并进入所述损坏数据修复步骤。
9.根据权利要求6所述的方法,其特征在于,在所述故障节点发现步骤之后还包括:按编号大小对所有的故障分区进行排序,以生成按编号大小排列的故障分区序列,
所述受损EC组确定步骤进一步包括:
对于所述故障分区序列中的编号无间断的n+1个故障分区pt(i)~pt(i+n),将未包括在该故障分区序列中的分区pt(i-1)和分区pt(i+n+1)分别确定作为这n+1个故障分区pt(i)~pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区,其中i为整数、n为大于等于0的整数;
将读取到的左侧最接近非故障分区pt(i-1)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,并将读取到的右侧最接近非故障分区pt(i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息;以及
基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组,并进入所述损坏数据修复步骤。
10.根据权利要求9所述的方法,其特征在于,所述基于左侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区pt(i)、pt(i+n)的编号来确定受损EC组包括:
在左侧潜在受损EC组信息包括故障分区pt(i)和/或pt(i+n)的编号的情况下,将左侧潜在受损EC组信息表示的EC组确定作为受损EC组;以及
在右侧潜在受损EC组信息包括故障分区pt(i)和/或pt(i+n)的编号的情况下,将右侧潜在受损EC组信息表示的EC组确定作为受损EC组。
11.根据权利要求6至10中任一项所述的方法,其特征在于,所述故障节点发现步骤进一步包括:
记录存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息;
根据所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及
获取故障数据存储节点所包括的分区的编号作为故障分区的编号。
CN201210519636.8A 2012-12-06 2012-12-06 发现并修复损坏数据的装置和方法 Active CN103034567B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210519636.8A CN103034567B (zh) 2012-12-06 2012-12-06 发现并修复损坏数据的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210519636.8A CN103034567B (zh) 2012-12-06 2012-12-06 发现并修复损坏数据的装置和方法

Publications (2)

Publication Number Publication Date
CN103034567A true CN103034567A (zh) 2013-04-10
CN103034567B CN103034567B (zh) 2015-09-09

Family

ID=48021485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210519636.8A Active CN103034567B (zh) 2012-12-06 2012-12-06 发现并修复损坏数据的装置和方法

Country Status (1)

Country Link
CN (1) CN103034567B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104699567A (zh) * 2013-10-21 2015-06-10 国际商业机器公司 用于在分布式数据存储系统中恢复数据对象的方法和系统
CN105718221A (zh) * 2016-01-22 2016-06-29 华为技术有限公司 一种数据存储的方法、装置和系统
CN106227617A (zh) * 2016-07-15 2016-12-14 乐视控股(北京)有限公司 自修复方法和基于纠删码算法的存储系统
CN107402841A (zh) * 2016-03-30 2017-11-28 阿里巴巴集团控股有限公司 大规模分布式文件系统数据修复方法及设备
CN109491589A (zh) * 2017-09-13 2019-03-19 北京易华录信息技术股份有限公司 一种基于文件内容的分层处理方法及装置
WO2020048488A1 (zh) * 2018-09-04 2020-03-12 杭州海康威视系统技术有限公司 一种数据存储方法及存储装置
CN114595092A (zh) * 2022-04-28 2022-06-07 阿里云计算有限公司 分布式存储系统、数据重构方法、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587453A (zh) * 2009-06-18 2009-11-25 成都市华为赛门铁克科技有限公司 数据备份处理方法、数据存储节点设备及数据存储装置
US20100199041A1 (en) * 2009-01-23 2010-08-05 Infortrend Technology, Inc. Storage Subsystem And Storage System Architecture Performing Storage Virtualization And Method Thereof
CN102769673A (zh) * 2012-07-25 2012-11-07 楚云汉智武汉网络存储系统有限公司 一种适应于大规模存储集群的失效检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100199041A1 (en) * 2009-01-23 2010-08-05 Infortrend Technology, Inc. Storage Subsystem And Storage System Architecture Performing Storage Virtualization And Method Thereof
CN101587453A (zh) * 2009-06-18 2009-11-25 成都市华为赛门铁克科技有限公司 数据备份处理方法、数据存储节点设备及数据存储装置
CN102769673A (zh) * 2012-07-25 2012-11-07 楚云汉智武汉网络存储系统有限公司 一种适应于大规模存储集群的失效检测方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216581B2 (en) 2013-10-21 2019-02-26 International Business Machines Corporation Automated data recovery from remote data object replicas
US10210047B2 (en) 2013-10-21 2019-02-19 International Business Machines Corporation Automated data recovery from remote data object replicas
CN104699567A (zh) * 2013-10-21 2015-06-10 国际商业机器公司 用于在分布式数据存储系统中恢复数据对象的方法和系统
US10169159B2 (en) 2013-10-21 2019-01-01 International Business Machines Corporation Automated data recovery from remote data object replicas
CN104699567B (zh) * 2013-10-21 2017-12-12 国际商业机器公司 用于在分布式数据存储系统中恢复数据对象的方法和系统
US10176050B2 (en) 2013-10-21 2019-01-08 International Business Machines Corporation Automated data recovery from remote data object replicas
CN105718221A (zh) * 2016-01-22 2016-06-29 华为技术有限公司 一种数据存储的方法、装置和系统
CN105718221B (zh) * 2016-01-22 2018-09-21 华为技术有限公司 一种数据存储的方法、装置和系统
CN107402841A (zh) * 2016-03-30 2017-11-28 阿里巴巴集团控股有限公司 大规模分布式文件系统数据修复方法及设备
CN107402841B (zh) * 2016-03-30 2021-01-29 阿里巴巴集团控股有限公司 大规模分布式文件系统数据修复方法及设备
CN106227617A (zh) * 2016-07-15 2016-12-14 乐视控股(北京)有限公司 自修复方法和基于纠删码算法的存储系统
CN109491589A (zh) * 2017-09-13 2019-03-19 北京易华录信息技术股份有限公司 一种基于文件内容的分层处理方法及装置
WO2020048488A1 (zh) * 2018-09-04 2020-03-12 杭州海康威视系统技术有限公司 一种数据存储方法及存储装置
CN114595092A (zh) * 2022-04-28 2022-06-07 阿里云计算有限公司 分布式存储系统、数据重构方法、设备及存储介质
CN114595092B (zh) * 2022-04-28 2022-09-20 阿里云计算有限公司 分布式存储系统、数据重构方法、设备及存储介质

Also Published As

Publication number Publication date
CN103034567B (zh) 2015-09-09

Similar Documents

Publication Publication Date Title
CN103034567B (zh) 发现并修复损坏数据的装置和方法
US10725692B2 (en) Data storage method and apparatus
US7240178B2 (en) Non-volatile memory and non-volatile memory data rewriting method
CN102541667B (zh) 用散列函数区分存储系统中随机和重复差错的方法和系统
CN103049354A (zh) 数据修复方法、数据修复装置以及存储系统
CN110008129B (zh) 一种存储定时快照的可靠性测试方法、装置及设备
CN111581022B (zh) 一种数据恢复方法及系统
CN105359108A (zh) 带有自适应纠删码生成的存储系统
CN103534688A (zh) 数据恢复方法、存储设备和存储系统
CN104199754A (zh) 生产故障分析系统
CN103530206B (zh) 一种数据恢复的方法和设备
CN103744620A (zh) 一种用于数据存储的方法与设备
US9658922B2 (en) Computer-readable recording medium having stored therein program for write inspection, information processing device, and method for write inspection
CN110196792B (zh) 故障预测方法、装置、计算设备及存储介质
CN105573872A (zh) 数据存储系统的硬盘维护方法和装置
CN106708648B (zh) 一种文本数据的存储校验方法和系统
CN105446982A (zh) 用于管理数据存储系统的方法和装置
CN107729182B (zh) 数据存储和访问的方法及装置
CN106708445A (zh) 链路选择方法及装置
CN103812719B (zh) 集群系统的失效预测方法及装置
CN114550791A (zh) 备用电路修补位置确定方法及装置、集成电路修补方法
CN111324513B (zh) 一种人工智能开发平台的监控管理方法及系统
CN104575605A (zh) 存储器装置及使用非易失性存储器对系统进行开机的方法
CN113708959A (zh) 一种规则库更新方法、装置及设备
CN113254269A (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
TR01 Transfer of patent right

Effective date of registration: 20191218

Address after: 314400 No.11, Weisan Road, Nongfa District, Chang'an Town, Haining City, Jiaxing City, Zhejiang Province

Patentee after: Haining hi tech Zone Science and Innovation Center Co.,Ltd.

Address before: 510000 unit 2414-2416, building, No. five, No. 371, Tianhe District, Guangdong, China

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Effective date of registration: 20191218

Address after: 510000 unit 2414-2416, building, No. five, No. 371, Tianhe District, Guangdong, China

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right