发现并修复损坏数据的装置和方法制造方法及图纸

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

【技术实现步骤摘要】

本专利技术涉及数据存储领域,具体涉及一种。
技术介绍
在数据存储领域,数据存储的可靠性是非常重要的。目前保证可靠性的方法有多种,例如可通过以EC(ErasUre Code,纠删码)算法为代表的“信息纠错技术”来实现数据存储的可靠性。EC算法的核心是,通过对M个原始数据块进行计算后得到N个校验数据块(0〈Ν〈Μ),当这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为整数、η为大于等于O的整数,所述最接近非故障分区查找模块将未包括在该故障分区序列中的分区pt(1-l)和分区pt(i+n+l)分别确定作为这n+1个故障分区pt (i) pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区;所述受损EC组确定模块将读取到的左侧最接近非故障分区Pt (1-Ι )所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,将读取到的右侧最接近非故障分区Pt (i+η+Ι)所存储的条带数据携带的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算法生成恢复数据,并将所生成的恢复数据存储到指定数据存储节点的相应分区上,以能够用所述指定数据存储节点替换所述故障数据存储节点。

【技术特征摘要】
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为整数、η为大于等于O的整数, 所述最接近非故障分区查找模块将未包括在该故障分区序列中的分区pt(1-l)和分区pt(i+n+l)分别确定作为这n+1个故障分区pt (i) pt(i+n)的左侧最接近非故障分区和右侧最接近非故障分区; 所述受损EC组确定模块将读取到的左侧最接近非故障分区pt (1-Ι)所存储的条带数据携带的EC组信息作为左侧潜在受损EC组信息,将读取到的右侧最接近非故障分区Pt (i+n+1)所存储的条带数据携带的EC组信息作为右侧潜在受损EC组信息,并基于左侧潜在受损EC组信息是否包括故障分区Pt⑴、pt (i+n)的编号以及右侧潜在受损EC组信息是否包括故障分区Pt (i)、pt (i+n)的编号来确定受损EC组。5.根据权利要求1至4中任一项所述的装置,其特征在于,所述故障节点发现单元包括 节点状态记录模块,与存储集群系统中的各数据存储节点连接,用于接收并记录各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息; 故障节点确定模块,与所述节点状态记录模块连接,用于根据所述节点状态记录模块所记录的状态信息,将状态信息表示已持续预定时间不可用的数据存储节点确定作为故障数据存储节点;以及 分区编号获取模块,与所述故障节点确定模块以及所述受损EC组确定单元连接,用于获取所述故障节点确定模块所确定的故障数据存储节点所包括的分区的编号,并将所获取到的编号作为故障分区的编号发送至所述受损EC组确定单元。6.一种发现并修复损坏数据的方法,其特征在于,包括 故障节点发现步骤,根据存储集群系统中的各数据存储节点上报的表示各数据存储节点自身是否可用的状态信息查找存储集群系统中的故障数据存储节点,并获取...

【专利技术属性】
技术研发人员:张烽陈国龙景叔武
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1