硬盘故障处理方法及装置与流程

文档序号:16781165发布日期:2019-02-01 19:08阅读:200来源:国知局
硬盘故障处理方法及装置与流程

本发明涉及存储技术领域,具体而言,涉及一种硬盘故障处理方法及装置。



背景技术:

在大规模存储集群中,硬盘的数量是巨大的。在数量众多的硬盘里,出现硬盘坏道的概率是很大的。一块硬盘如果出现一个硬盘坏道就被看作坏盘,将其从集群中踢出,这样的解决方案虽然可以有效的避免再次访问存在坏道的硬盘,但直接踢出有坏道的硬盘的做法是不合理的,会导致存储集群的坏盘率很高,且将硬盘从存储集群中踢出后会触发整块硬盘存储的数据的恢复,从而影响整个存储集群的性能。



技术实现要素:

本发明实施例的目的在于提供一种硬盘故障处理方法及装置,在存储集群中的硬盘访问出错时,通过将访问失败的地址进行隔离,并对硬盘的检测点进行检测,当检测结果表征硬盘不可继续使用时,将该硬盘移出存储集群,降低了存储集群的坏盘率,从而降低了硬盘故障对整个存储集群性能的影响。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种硬盘故障处理方法,应用于存储系统,存储系统运行于包括多个硬盘的存储集群,硬盘预先存储硬盘坏道地址表并预先设置检测点,所述方法包括:当硬盘执行存储系统下发的访问请求失败时,接收硬盘响应的访问失败的地址信息并将访问失败的地址信息加入至硬盘坏道地址表;对硬盘的检测点进行故障检测;当故障检测的结果表征硬盘不可继续使用时,将硬盘移出存储集群。

第二方面,本发明实施例还提供了一种硬盘故障处理装置,所述装置包括接收模块、检测模块和移出模块。其中,接收模块用于当硬盘执行存储系统下发的访问请求失败时,接收硬盘响应的访问失败的地址信息并将访问失败的地址信息加入至硬盘坏道地址表;检测模块用于对硬盘的检测点进行故障检测;移出模块用于当故障检测的结果表征硬盘不可继续使用时,将硬盘移出存储集群。

相对现有技术,本发明实施例提供的一种硬盘故障处理方法及装置,首先,存储系统向硬盘下发访问请求,硬盘响应该访问请求,并向存储系统返回访问失败的地址信息;然后,硬盘接收该访问失败的地址信息,并将该访问失败的地址信息加入至硬盘坏道地址表;最后,当访问请求访问失败时,存储系统对所述硬盘的检测点进行故障检测,当所述故障检测的结果表征该硬盘不可继续使用时,将该硬盘移出存储集群。与现有技术相比,本发明实施例在存储集群中的硬盘访问出错时,通过将访问失败的地址进行隔离,并对硬盘的检测点进行检测,将检测结果表征硬盘不可继续使用时,将该硬盘移出存储集群,降低了存储集群的坏盘率,从而降低了硬盘故障对整个存储集群性能的影响。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的运行存储系统的设备的方框示意图。

图2示出了本发明实施例提供的硬盘故障处理方法流程图。

图3为图2示出的步骤s103的子步骤流程图。

图4示出了本发明实施例提供的硬盘故障处理装置的方框示意图。

图标:100-运行存储系统的设备;101-存储器;102-通信接口;103-处理器;104-总线;200-硬盘故障处理装置;201-接收模块;202-检测模块;203-移出模块;204-第一恢复模块;205-第二恢复模块;206-保持模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1示出了本发明实施例提供的运行存储系统的设备100的方框示意图。运行存储系统的设备100可以是,但不限于,主机、虚拟机、实体服务器、实体服务器上的虚拟机等能提供与所述服务器或者虚拟机有相同功能的实体或者虚拟的服务端。运行存储系统的设备100的操作系统可以是,但不限于,windows系统、linux系统等。所述运行存储系统的设备100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。

其中,存储器101可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该运行存储系统的设备100与至少一个其他运行存储系统的设备100、以及外部存储设备之间的通信连接。

总线104可以是isa总线、pci总线或eisa总线等。图1中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器101用于存储程序,例如图4所示的硬盘故障处理装置200。该硬盘故障处理装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述运行存储系统的设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的硬盘故障处理方法。

第一实施例

请参照图2,图2示出了本发明实施例提供的硬盘故障处理方法流程图。处理方法包括以下步骤:

步骤s101,当硬盘执行存储系统下发的访问请求失败时,接收硬盘响应的访问失败的地址信息并将访问失败的地址信息加入至硬盘坏道地址表。

在本发明实施例中,用户通过客户端将访问文件的访问请求发送至存储系统,存储系统将该访问文件的访问请求通过计算转化成访问硬盘的访问请求并下发至硬盘,其中,访问硬盘的访问请求可以是对硬盘上存储的数据的读数据请求或者将数据写入硬盘的写数据请求,访问失败的地址信息可以表征硬盘在响应访问请求时无法对访问失败的地址信息对应的存储区域进行读写操作。当访问硬盘上的数据失败时,硬盘向存储系统返回错误码和访问失败的地址信息,其中,错误码可以表征访问失败对应的错误类型,例如是写操作超时,还是写操作失败,或者是读操作失败等。失败的地址信息可以是硬盘的lba(logicalblockaddress,逻辑区块地址)地址信息。

在本发明实施例中,硬盘预先存储硬盘坏道地址表,硬盘坏道地址表在创建时是空的,即里面没有存储访问失败的地址信息,在硬盘使用过程中,当访问硬盘上的数据访问失败后,则将访问失败的地址信息更新至硬盘坏道表中,例如,当前硬盘坏道表中是空的,此时收到一个访问硬盘数据的访问请求,硬盘向存储系统返回访问地址0x123456时访问失败的地址信息,则存储系统将此访问地址0x123456加入至硬盘坏道地址表。

步骤s102,对硬盘的检测点进行故障检测。

在本发明实施例中,硬盘预先设置多个检测点,每个检测点对应硬盘上的一个lba地址,为了不影响用户数据,检测点的lba地址对应的存储区域专门用来进行故障检测的,不存储用户数据,对硬盘的检测点进行故障检测时,首先对硬盘上的每一个检测点对应的存储区域写数据,然后读出所写的数据并进行校验,若检验通过证明读取到的数据和写入的数据是一致的,证明访问检测点成功,当访问任意一个检测点出错时,判定故障检测的结果表征该硬盘不可继续使用,因为,如果继续使用该硬盘,则该硬盘访问失败的概率极高。

请参照图3,对硬盘的检测点进行故障检测的步骤还包括以下子步骤:

子步骤s1021,访问硬盘的多个检测点。

在本发明实施例中,检测点可以认为是对硬盘的地址进行的抽样,检测点的个数越多,对检测点进行故障检测的结果也越能准确地反映硬盘是否可继续使用,同时,检测点越多,则硬盘上用户可以用的空间越少,而且故障检测所需的时间也越长,所以检测点的多少需要考虑检测点对硬盘可使用空间的影响及对故障检测时间的影响,一般来说,为了保证对检测点进行故障检测的结果的可参考性,硬盘容量越大,该硬盘上设置的检测点的个数也越多,用户可以根据实际场景的需求对检测点的个数或者位置进行不同的配置。在本发明实施例中,用户可以在配置文件中指定检测点的个数,存储系统根据检测点的个数及硬盘容量确定检测点的位置,即将硬盘容量除以检测点的个数得到两个检测点位置之间的间隔,例如,配置文件中指定的检测点的个数为5,硬盘的容量为100gb,则检测点的位置分别为硬盘上0gb、20gb、40gb、60gb、80gb对应的lba地址。对检测点进行故障检测指对抽样的地址进行访问,即读写与抽样的地址对应的存储区域,若读出的数据和之前写入的数据一致,则认为读写正常,即访问成功。

子步骤s1022,当访问任意一个检测点出错时,则判定故障检测的结果表征硬盘不可继续使用。

在本发明实施例中,由于检测点是对硬盘的地址进行的抽样,所以,当访问任意一个检测点出错时,可以认为如果继续使用该硬盘,访问该硬盘失败的概率较高,因而判定故障检测的结果表征硬盘不可继续使用,当硬盘的所有检测点均访问成功时,认为如果继续使用该硬盘,访问该硬盘失败的概率较低,因而判定故障检测的结果表征硬盘可继续使用。

步骤s103,当故障检测的结果表征硬盘不可继续使用时,将硬盘移出存储集群。

在本发明实施例中,当访问任意一个检测点出错时,判定故障检测的结果表征硬盘不可继续使用,也就是说,如果继续使用该硬盘,访问该硬盘失败的概率极高,此时,为了及时避免后续频繁访问该硬盘失败对存储系统的影响,应该将硬盘移出存储集群。

在本发明实施例中,将不可继续使用的硬盘移出存储集群后,为了便于继续访问被移出硬盘上的数据,需要将被移出硬盘上的数据恢复出来,存放到存储集群中的其他硬盘上,因此本发明实施例还包括步骤s104。

步骤s104,按照预设规则从存储集群中确定出备用硬盘,并将移出存储集群的硬盘上的数据恢复至备用硬盘。

在本发明实施例中,存储集群中的每个硬盘均预留备用空间,在将不可继续使用的硬盘移出存储集群后,为了提高移出存储集群的硬盘上的数据的恢复效率及数据的可靠性,可以按照预设规则从存储集群中确定出多个备用硬盘,将该硬盘上的数据恢复至多个备用硬盘的备用空间,其中,预设规则可以是硬盘坏道地址表中访问失败的地址信息的数量,也可以是硬盘的已使用容量,还可以是硬盘性能参数等,例如,可以根据硬盘备用空间的容量,从存储集群中选出硬盘坏道地址表中访问失败的地址信息的数量最少的硬盘作为备用硬盘、且所有备用硬盘的备用空间总大小大于或等于移出存储集群的硬盘的容量。

在本发明实施例中,为了可以继续对与访问失败的地址信息对应的存储区域存储的数据进行访问,需要将与访问失败的地址信息对应的存储区域存储的数据恢复出来,因此,本发明实施例还包括步骤s105。

步骤s105,将访问失败的地址信息对应的存储区域所属的存储对象的数据恢复至硬盘的备用空间。

在本发明实施例中,数据恢复是以存储对象为单位进行的,例如,访问失败的地址信息为lba地址为0x00000006b,与该lba地址对应的存储区域所述的存储对象为存储对象a,存储对象的大小为64kb,则需要恢复的数据为存储对象a的64kb的数据。

在本发明实施例中,为了保证访问失败的地址不会再次被分配出去继续使用,造成访问该地址时再次访问失败,因此,在本发明实施例还包括步骤s106。

步骤s106,保持硬盘坏道地址表中的访问失败的地址不被释放。

在本发明实施例中,存储系统不会将访问失败的地址释放,不释放的地址无法被分配出去,由此保证访问失败的地址不会被再次使用。

在本发明实施例中,在存储集群中的硬盘访问出错时,通过不释放访问失败的地址实现访问失败的地址的隔离,并对硬盘的检测点进行检测,当检测结果表征硬盘不可继续使用时,将该硬盘移出存储集群,与现有技术相比,具有以下有益效果:

第一,通过不释放访问失败的地址实现访问失败的地址的隔离,防止访问失败的地址被再次分配出去继续使用,减少了硬盘出现坏道时对整个存储集群性能的影响。

第二,当硬盘的访问请求访问失败时,对硬盘的检测点进行故障检测,以便于提前发现后续访问失败概率高的硬盘并将其移出存储集群,一方面避免后续频繁访问该硬盘失败对存储系统的影响,另一方面实现硬盘的防患于未然,提高了存储系统的可靠性。

第三,当硬盘的访问请求访问失败时,对硬盘的检测点进行故障检测,当故障检测结果表征硬盘可继续使用时,仍然将该硬盘保留在存储集群中继续使用,有效降低存储集群中硬盘的故障率,降低存储集群的物料成本及人力维护成本。

第四,用户可以根据实际场景的需要预先对硬盘的检测点进行配置,使得对硬盘的检测点的故障检测与实际硬盘的状况更接近,从而使得对于硬盘故障的预判更准确。

第二实施例

请参照图4,图4示出了本发明实施例提供的硬盘故障处理装置200的方框示意图。硬盘故障处理装置200应用于运行存储系统的设备100,其包括接收模块201;检测模块202;移出模块203;第一恢复模块204;第二恢复模块205;保持模块206。

接收模块201,用于当硬盘执行存储系统下发的访问请求失败时,接收硬盘响应的访问失败的地址信息并将访问失败的地址信息加入至硬盘坏道地址表。

在本发明实施例中,接收模块201用于执行步骤s101。

检测模块202,用于对硬盘的检测点进行故障检测。

在本发明实施例中,检测模块202用于执行步骤s102及其子步骤s1021-s1022。

移出模块203,用于当故障检测的结果表征硬盘不可继续使用时,将硬盘移出存储集群。

在本发明实施例中,移出模块203用于执行步骤s103。

第一恢复模块204,用于按照预设规则从存储集群中确定出备用硬盘,并将移出存储集群的硬盘上的数据恢复至备用硬盘。

在本发明实施例中,第一恢复模块204用于执行步骤s104。

第二恢复模块205,用于将访问失败的地址信息对应的存储区域所属的存储对象的数据恢复至硬盘的备用空间。

在本发明实施例中,第二恢复模块205用于执行步骤s105。

保持模块206,用于保持硬盘坏道地址表中的访问失败的地址不被释放。

在本发明实施例中,保持模块206用于执行步骤s106。

综上所述,本发明实施例提供的一种硬盘故障处理方法及装置,所述应用于存储系统,存储系统运行于包括硬盘的存储集群,硬盘预先存储硬盘坏道地址表并预先设置检测点,所述方法包括:当硬盘执行存储系统下发的访问请求失败时,接收硬盘响应的访问失败的地址信息并将访问失败的地址信息加入至硬盘坏道地址表;对硬盘的检测点进行故障检测;当故障检测的结果表征硬盘不可继续使用时,将硬盘移出存储集群。与现有技术相比,本发明实施例在存储集群中的硬盘访问出错时,通过将访问失败的地址进行隔离,并对硬盘的检测点进行检测,将检测结果表征硬盘不可继续使用时,将该硬盘移出存储集群,降低了存储集群的坏盘率,从而降低了硬盘故障对整个存储集群性能的影响。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1