修复硬盘逻辑错误的方法及控制器的制造方法

文档序号:6521032阅读:431来源:国知局
修复硬盘逻辑错误的方法及控制器的制造方法
【专利摘要】本发明提供一种修复硬盘逻辑错误的方法及控制器。其中,该方法包括:控制器获取源数据,检测到存储源数据的存储介质出现逻辑错误,获取与源数据对应的目标数据;判断目标数据与源数据是否存在差异;若不存在差异,则根据目标数据对源数据进行修复;并将目标数据发送给应用系统。避免了由于修复逻辑错误而导致的主机或应用业务中断,提高了修复的效率,节省了由于主机或应用业务中断带来的额外成本。
【专利说明】修复硬盘逻辑错误的方法及控制器
【技术领域】
[0001]本发明涉及通信技术,尤其涉及一种修复硬盘逻辑错误的方法及控制器。
【背景技术】
[0002]硬盘故障通常包括物理错误与逻辑错误,其中逻辑错误指硬盘系统在对硬盘进行读写时由于逻辑操作造成的一类错误。逻辑错误由于没有对硬盘的物理器件造成损伤,因此可以通过软件工具进行修复。
[0003]现有技术中,在应用主机业务运行过程中,一旦存储系统内部出现逻辑错误,例如,不可修复的读错误(Unrecover Read Error,简称:UNC)坏道以及数据完整性区域(DataIntegrity Field,简称:DIF)错误。就有可能引发业务中断的严重后果。随着存储技术的发展,如今硬盘容量越来越大,出现逻辑错误的可能性也随之增大,其严重威胁到上层业务的正常运行。对于存储系统而言,如何避免逻辑错误影响到正常业务的运行是亟需解决的一大难题。
[0004]现有技术中,当应用系统需要读取某一数据时,会向存储系统发送读取请求消息,存储系统接收到该读取请求消息后,会将相应的数据通过读取响应消息发送给应用系统。当存储系统出现逻辑错误导致无法读取该数据时,存储系统向应用系统发送的读取响应消息中会包含读取失败信息。现有技术中,当应用系统获知该读取响应消息包含读取失败信息时,需要停止应用系统的运行,再由维护人员对逻辑错误进行修复,在修复完成之后重启应用系统。这样导致修复过程过于繁琐,效率低,并且由于应用层系统的中断和重启,会造成本的大幅提高。

【发明内容】

[0005]本发明提供一种修复硬盘逻辑错误的方法及控制器,用于提高了修复的效率。
[0006]本发明的第一个方面是提供一种修复硬盘逻辑错误的方法,包括:
[0007]读写处理单元从存储介质获取源数据;
[0008]所述故障检测单元对所述存储介质进行检测,若所述存储介质发生逻辑错误,则所述故障检测单元截获所述存储介质向应用系统发送的第一读取响应消息,所述第一读取响应消息包含读取失败信息;
[0009]所述故障检测单元向所述修复单元发送修复请求消息,所述修复请求消息包含所述源数据的标识和所述源数据的地址范围;
[0010]所述修复单元根据所述修复请求消息,向所述复制单元发送目标数据请求消息,所述目标数据请求消息包含所述源数据的标识;
[0011]所述复制单元根据所述源数据的标识,获取复制对列表中与所述源数据构成复制对的目标数据,所述复制对列表包含与所述源数据构成复制对的全部所述目标数据;
[0012]所述复制单元向所述修复单元发送第一目标数据响应消息,所述第一目标数据响应消息包含所述目标数据的标识;[0013]所述修复单元向所述复制单元发送差异查询请求,所述差异查询请求包含所述目标数据的标识和所述源数据的地址范围;
[0014]所述复制单元根据所述目标数据的标识和所述源数据的地址范围,将所述源数据的地址范围与所述目标数据的地址范围进行比较,若不存在差异,则所述复制单元向所述修复单元发送第二目标数据响应消息,所述第二目标数据响应消息包含确认信息,所述确认信息指示所述目标数据与所述源数据之间不存在差异;
[0015]所述修复单元接收到所述第二目标数据响应消息之后,所述修复单元向所述存储介质发送重定向请求消息,所述重定向请求消息包含所述目标数据的标识和所述目标数据的地址范围;
[0016]所述修复单元接收所述存储介质发送的第二读取响应消息,所述第二读取响应消息包含所述目标数据;所述存储介质接收到所述重定向请求消息后,向所述修复单元发送第二读取响应消息,所述第二读取响应消息包含所述目标数据;
[0017]所述修复单元将所述第二读取响应消息转发给所述读写处理单元;
[0018]所述读写处理单元将所述目标数据发送给所述应用系统;
[0019]所述修复单元将所述目标数据写入所述存储介质存储的所述源数据,对源数据进行修复。
[0020]结合第一个方面,在第一种可能的实现方式中,所述读写处理单元从存储介质获取源数据,包括:
[0021]所述读写处理单元接收应用系统发送的第一读取请求消息,所述第一读取请求消息包含源数据的标识和所述源数据的地址范围;
[0022]所述读写处理单元根据所述第一读取请求消息,向存储所述源数据的存储介质发送第二读取请求消息,所述第二读取请求消息包含所述源数据的标识和所述源数据的地址范围。
[0023]结合第一个方面或第一个方面的第一种可能的实现方式,在第二种可能的实现方式中,所述复制单元根据所述目标数据的标识和所述源数据的地址范围,将所述源数据的地址范围与所述目标数据的地址范围进行比较,包括:
[0024]所述复制单元根据所述目标数据的标识和所述源数据的地址范围,查询差异位图或者差异日志,判断所述目标数据的地址范围与所述源数据的地址范围是否存在差异。
[0025]结合第一个方面或第一个方面的上述任意一个可能的实现方式,在第三种可能的实现方式中,在所述修复单元将所述目标数据写入所述存储介质存储的所述源数据,对源数据进行修复之后,还包括:
[0026]所述修复单元接收所述存储介质发送的修复响应消息,所述修复响应消息指示修复完毕。
[0027]结合第一个方面或第一个方面的上述任意一个可能的实现方式,在第四种可能的实现方式中,与所述源数据构成复制对的所述目标数据由所述复制单元预先根据所述源数据通过备份、容灾、镜像或复制获取得到,并存储在所述存储介质中。
[0028]本发明的第二个方面是提供一种控制器,包括:读写处理单元、故障检测单元、修复单元和复制单元;
[0029]所述读写处理单元,用于从存储介质获取源数据;[0030]所述故障检测单元,用于对所述存储介质进行检测,若所述存储介质发生逻辑错误,则所述故障检测单元,还用于截获所述存储介质向应用系统发送的第一读取响应消息,所述第一读取响应消息包含读取失败信息;所述故障检测单元,还用于向所述修复单元发送修复请求消息,所述修复请求消息包含所述源数据的标识和所述源数据的地址范围;
[0031]所述修复单元,用于根据所述修复请求消息,向所述复制单元发送目标数据请求消息,所述目标数据请求消息包含所述源数据的标识;
[0032]所述复制单元,用于根据所述源数据的标识,获取复制对列表中与所述源数据构成复制对的目标数据,所述复制对列表包含与所述源数据构成复制对的全部所述目标数据,所述复制单元,还用于向所述修复单元发送第一目标数据响应消息,所述第一目标数据响应消息包含所述目标数据的标识;
[0033]所述修复单元,还用于向所述复制单元发送差异查询请求,所述差异查询请求包含所述目标数据的标识和所述源数据的地址范围;
[0034]所述复制单元,还用于根据所述目标数据的标识和所述源数据的地址范围,将所述源数据的地址范围与所述目标数据的地址范围进行比较,若不存在差异,则所述复制单元,还用于向所述修复单元发送第二目标数据响应消息,所述第二目标数据响应消息包含确认信息,所述确认信息指示所述目标数据与所述源数据之间不存在差异;
[0035]所述修复单元,还用于接收到所述第二目标数据响应消息之后,向所述存储介质发送重定向请求消息,所述重定向请求消息包含所述目标数据的标识和所述目标数据的地址范围;
[0036]所述修复单元,还用于接收所述存储介质发送的第二读取响应消息,所述第二读取响应消息包含所述目标数据;
[0037]所述修复单元,还用于将所述第二读取响应消息转发给所述读写处理单元;
[0038]所述读写处理单元,还用于将所述目标数据发送给所述应用系统;
[0039]所述修复单元,还用于将所述目标数据写入所述存储介质存储的所述源数据,对源数据进行修复。
[0040]结合第二个方面,在第一种可能的实现方式中,所述读写处理单元,具体用于接收应用系统发送的第一读取请求消息,所述第一读取请求消息包含源数据的标识和所述源数据的地址范围;
[0041]所述读写处理单元,具体还用于根据所述第一读取请求消息,向存储所述源数据的存储介质发送第二读取请求消息,所述第二读取请求消息包含所述源数据的标识和所述源数据的地址范围。
[0042]结合第二个方面或第二个方面的第一种可能的实现方式,在第二种可能的实现方式中,所述复制单元,具体用于根据所述目标数据的标识和所述源数据的地址范围,查询差异位图或者差异日志,判断所述目标数据的地址范围与所述源数据的地址范围是否存在差

[0043]结合第二个方面或第二个方面的上述任意一个可能的实现方式,在第三种可能的实现方式中,所述修复单元,还用于接收所述存储介质发送的所述存储介质向所述修复单元发送修复响应消息,所述修复响应消息指示修复完毕。
[0044]结合第二个方面或第二个方面的上述任意一个可能的实现方式,在第四种可能的实现方式中,所述复制单元,还用于根据所述源数据通过备份、容灾、镜像或复制获取得到与所述源数据构成复制对的所述目标数据,并存储在所述存储介质中。
[0045]本实施例提供的修复硬盘逻辑错误的方法,首先,读写处理单元从存储介质获取源数据;故障检测单元对存储介质进行检测,若存储介质发生逻辑错误,则故障检测单元截获存储介质向应用系统发送的第一读取响应消息;进一步的,故障检测单元向修复单元发送修复请求消息,修复单元根据修复请求消息,向复制单元发送目标数据请求消息,复制单元根据源数据的标识,获取复制对列表中与源数据构成复制对的目标数据,复制单元向修复单元发送第一目标数据响应消息,修复单元向复制单元发送差异查询请求,复制单元根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较,若不存在差异,则复制单元向修复单元发送第二目标数据响应消息,修复单元接收到第二目标数据响应消息之后,修复单元向存储介质发送重定向请求消息,修复单元接收存储介质发送的第二读取响应消息后,修复单元将第二读取响应消息转发给读写处理单元;读写处理单元将目标数据发送给应用系统;修复单元将目标数据写入存储介质存储的源数据,对源数据进行修复。由于故障检测单元截获存储介质向应用系统发送的第一读取响应消息,避免了应用系统接收到该第一读取响应消息后中断相应业务。同时还将应用系统所需的数据发送给了应用系统,在提高了修复的效率的同时,节省了由于主机或应用业务中断带来的额外成本。
【专利附图】

【附图说明】
[0046]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0047]图1为本发明提供的实施例一的修复硬盘逻辑错误的方法的流程示意图;
[0048]图2为本发明实施例二提供的备份场景中目标数据获取示意图;
[0049]图3为本发明实施例二提供的容灾场景中目标数据获取示意图;
[0050]图4为本发明实施例二提供的镜像场景中目标数据获取示意图;
[0051]图5为本发明实施例二提供的复制场景中目标数据获取示意图;
[0052]图6为本发明实施例二提供的复制场景中目标数据获取示意图;
[0053]图7为本发明实施例四提供的控制器的结构示意图。
【具体实施方式】
[0054]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055]图1为本发明提供的实施例一的修复硬盘逻辑错误的方法的流程示意图,其执行主体可以为存储系统中的控制器,该控制器可以为单个控制器或者集群控制器,该控制器的前端连接主机,后端连接存储介质(硬盘)。该控制器上运行存储系统的软件,软件功能包括数据缓存、存储虚拟化、增值特性、独立冗余磁盘阵列(Redundant Array of IndependentDisk,简称:RAID)冗余、服务质量(Quality of Service,简称:QoS)等,并且按照协议划分,并且,上述存储系统可以但不限定为存储区域网络(Storage Area Network,,简称:SAN)系统、网络附加存储(Network Attached Storage,,简称:NAS)系统以及统一存储系统;按照能力划分,该存储系统可以但不限定为低端存储系统、中端存储系统以及闻端存储系统。参照图1,其包括如下步骤:
[0056]步骤100、读写处理单元从存储介质获取源数据。
[0057]步骤101、故障检测单元对存储介质进行检测,若存储介质发生逻辑错误,则故障检测单元截获存储介质向应用系统发送的第一读取响应消息,第一读取响应消息包含读取失败息。
[0058]优选的,故障检测单元对存储介质进行检测,可以具有如下两种可行的实现方式:
[0059]方式一:故障检测单元在读写处理单元从存储介质获取源数据时,检测到存储介质发生逻辑错误。
[0060]或者,方式二:故障检测单元周期性扫描存储介质中存储的源数据,测到存储介质出现逻辑错误时,触发后续步骤。
[0061]步骤102、故障检测单元向修复单元发送修复请求消息,修复请求消息包含源数据的标识和源数据的地址范围。
[0062]步骤103、修复单元根据修复请求消息,向复制单元发送目标数据请求消息,目标数据请求消息包含源数据的标识。
[0063]步骤104、复制单元根据源数据的标识,获取复制对列表中与源数据构成复制对的目标数据,复制对列表包含与源数据构成复制对的全部目标数据。
[0064]具体的,源数据与目标数据构成一个复制对,复制对指:源数据与目标数据之间存在复制关系,目标数据为源数据一特定时刻的副本。进一步的,若目标数据为实时从源数据复制得到的,则该特定时刻指当前时刻。若目标数据为周期性从源数据复制得到时,则该特质时刻指同一个周期内的任意时刻。并且,源数据所占用的物理空间与目标数据占用的物理空间彼此完全隔离,例如,源数据可以存储在一台设备中的一硬盘中,该源数据对应的目标数据可以存储在该台设备的另一硬盘中。当存储源数据的硬盘出现物理损坏或者逻辑错误时,存储目标数据的硬盘依然可以使用,因此可以利用该目标数据对源数据进行修复。
[0065]步骤105、复制单元向修复单元发送第一目标数据响应消息,第一目标数据响应消息包含目标数据的标识。
[0066]步骤106、修复单元向复制单元发送差异查询请求,差异查询请求包含目标数据的标识和源数据的地址范围。
[0067]步骤107、复制单元根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较,若不存在差异,则复制单元向修复单元发送第二目标数据响应消息,第二目标数据响应消息包含确认信息,确认信息指示目标数据与源数据之间不存在差异。
[0068]具体的,由于控制器需要周期性地预先存储源数据对应的目标数据时,因此在每一个周期内,若存储系统的源数据发生了更新,此时,源数据与目标数据之间就会存在差异。因此,在根据目标数据进行源数据的修复之前,需要确保目标数据与源数据没有差异,以保证修复的准确。
[0069]步骤108、修复单元接收到第二目标数据响应消息之后,修复单元向存储介质发送重定向请求消息,重定向请求消息包含目标数据的标识和目标数据的地址范围。
[0070]步骤109、修复单元接收存储介质发送的第二读取响应消息,第二读取响应消息包含目标数据。
[0071]步骤110、修复单元将第二读取响应消息转发给读写处理单元。
[0072]步骤111、读写处理单元将目标数据发送给应用系统。
[0073]步骤112、修复单元将目标数据写入存储介质存储的源数据,对源数据进行修复。
[0074]本实施例提供的修复硬盘逻辑错误的方法,首先,读写处理单元从存储介质获取源数据;故障检测单元对存储介质进行检测,若存储介质发生逻辑错误,则故障检测单元截获存储介质向应用系统发送的第一读取响应消息;进一步的,故障检测单元向修复单元发送修复请求消息,修复单元根据修复请求消息,向复制单元发送目标数据请求消息,复制单元根据源数据的标识,获取复制对列表中与源数据构成复制对的目标数据,复制单元向修复单元发送第一目标数据响应消息,修复单元向复制单元发送差异查询请求,复制单元根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较,若不存在差异,则复制单元向修复单元发送第二目标数据响应消息,修复单元接收到第二目标数据响应消息之后,修复单元向存储介质发送重定向请求消息,修复单元接收存储介质发送的第二读取响应消息后,修复单元将第二读取响应消息转发给读写处理单元;读写处理单元将目标数据发送给应用系统;修复单元将目标数据写入存储介质存储的源数据,对源数据进行修复。由于故障检测单元截获存储介质向应用系统发送的第一读取响应消息,避免了应用系统接收到该第一读取响应消息后中断相应业务。同时还将应用系统所需的数据发送给了应用系统,在提高了修复的效率的同时,节省了由于主机或应用业务中断带来的额外成本。
[0075]进一步的,图1中步骤100的一种可行的实现方式为:
[0076]步骤100a、读写处理单元接收应用系统发送的第一读取请求消息,第一读取请求消息包含源数据的标识和源数据的地址范围。
[0077]具体的,应用系统可以但不限定为数据库、文件系统等。该应用系统设置于一应用主机上。该应用主机可以但不限定为:计算机、服务器等。
[0078]步骤100b、读写处理单元根据第一读取请求消息,向存储源数据的存储介质发送第二读取请求消息,第二读取请求消息包含源数据的标识和源数据的地址范围。
[0079]进一步的,图1中步骤107中,复制单元根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较的一种可行的实现方式为:
[0080]步骤107a、复制单元根据目标数据的标识和源数据的地址范围,查询差异位图或者差异日志,判断目标数据的地址范围与源数据的地址范围是否存在差异。
[0081]进一步的,在图1步骤112之后,还包括:
[0082]步骤113、修复单元接收存储介质发送的修复响应消息,修复响应消息指示修复完毕。
[0083]优选的,上述实施例中,与源数据构成复制对的目标数据由复制单元预先根据源数据通过备份、容灾、镜像或复制获取得到,并存储在存储介质中。
[0084]需要说明的是,上述实施例以及可行的实现方式中,源数据与目标数据可以存储在同一个存储介质中,或者分别存储在不同的存储介质中。存储介质可以但不限定为:硬盘、存储器等。
[0085]进一步的,对于上述实施例以及可行的实施例中的目标数据可以通过备份、容灾、镜像或复制获取得到的。
[0086]下面通过具体的实施例对备份、容灾、镜像或复制的场景进行说明:
[0087]图2为本发明实施例二提供的备份场景中目标数据获取示意图。如图2所示,源数据可以通过备份的方法,采用周期增量或全量备份的方式获得目标数据,并且可以通过备份获取多个目标数据,例如,第一目标数据、第二目标数据、第三目标数据等。采用周期增量的方式周期性的备份可以使得目标数据的数据量较小,并且备份窗口可以任意指定,并且该备份窗口可以设置到秒级,使得在通过目标数据对源数据进行恢复时的时间缩短。而采用全量备份则可以对一些数据量较小的核心应用的源数据进行备份。
[0088]图3为本发明实施例二提供的容灾场景中目标数据获取示意图。如图3所示,源数据可以通过容灾的方法,同步远程复制或异步远程复制的方式获得目标数据,该目标数据为容灾数据。并且可以通过备份获取多个目标数据,例如,第一目标数据、第二目标数据、第三目标数据等。这样,当存储有源数据的存储系统所在地遭遇自然灾害或者人为灾害,造成源数据出现逻辑错误时,可以远程获取目标数据对源数据进行修复。
[0089]图4为本发明实施例二提供的镜像场景中目标数据获取示意图。如图4所示,源数据可以通过镜像的方法,获得目标数据,并且可以通过备份获取多个目标数据,例如,第一目标数据、第二目标数据、第三目标数据等。对于可靠性很高的核心应用,一般情况下,通过镜像获得的目标数据与源数据在物理上是隔离的,目标数据或源数据发生故障对不会中断主机或应用业务。
[0090]图5为本发明实施例二提供的复制场景中目标数据获取示意图。如图5所示,源数据可以通过复制的方法,通过全量卷拷贝或增量卷拷贝的方式获得目标数据,并且可以通过备份获取多个目标数据,例如,第一目标数据、第二目标数据、第三目标数据等。通过全量卷拷贝或增量卷拷贝主要用于数据的迁移,其特点是使用公共的的协议,能够支持第三方设备。
[0091]图6为本发明实施例二提供的复制场景中目标数据获取示意图。如图6所示,源数据可以通过复制的方法,通过卷迁移的方式获得目标数据。并且可以通过卷迁移的方式获取多个目标数据,例如,第一目标数据、第二目标数据、第三目标数据等。
[0092]需要说明的是,上述各个适用的场景中,每一种复制特性的源数据(提供业务的卷)和目标数据组成一个复制对,一个源卷上可以叠加多种复制特性,即存在通过上述备份,容灾等场景获得的多个复制对共享一个逻辑单元号(Logical Unit Number,简称:LUN)的情况。对于镜像场景,镜像的源数据与第一目标数据是对等关系,也可以看做一个复制对。备份场景中可能是一对多的情况,即一个源数据对应多个目标数据,同样可以把备份的源数据和其多个目标数据看做一个广义上的复制对。
[0093]进一步的,针对上述实施例,若在步骤107中,复制单元根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较,存在差异时,根据实施例二各个场景可知,对于源数据可以同时对应多个目标数据,若实施例一中的目标数据为第一目标数据,该源数据还对应其他目标数据,例如第二目标数据、第三目标数据等。则当复制单元判断第一目标数据与源数据存在差异时,一种可能的实现方式为:
[0094]步骤114、复制单元根据源数据的标识,获取复制对列表中与源数据构成复制对的第二目标数据,复制对列表包含与源数据构成复制对的全部目标数据。
[0095]步骤115、复制单元向修复单元发送第三目标数据响应消息,第三目标数据响应消息包含第二目标数据的标识。
[0096]步骤116、修复单元向复制单元发送差异查询请求,差异查询请求包含第二目标数据的标识和源数据的地址范围。
[0097]步骤117、复制单元根据第二目标数据的标识和源数据的地址范围,将源数据的地址范围与第二目标数据的地址范围进行比较,若不存在差异,则复制单元向修复单元发送第四目标数据响应消息,第四目标数据响应消息包含确认信息,确认信息指示第二目标数据与源数据之间不存在差异。
[0098]进一步的,之后返回执行步骤108。
[0099]需要说明的是,参照图2至图6,控制器可以同时采用不同的方式对源数据进行备份获取多个目标数据,例如第一目标数据、第二目标数据、第三目标数据,并在发现存储源数据的存储介质出现逻辑错误时,逐一对上述各个目标数据进行差异比较,当发现某一个目标数据与源数据之间没有差异时,即采用该目标数据对源数据进行修复,否则,控制器会逐一对每一个目标数据进行比对直到找到没有差异的目标数据对源数据进行修复。
[0100]需要说明的是,当存储系统存储了多个目标数据时,多个目标数据之间可以设置在同一存储介质上,也可以分别设置在不同的存储介质上。并且,多个目标数据可以与源数据设置在同一存储介质上,也可以分别设置在不同的存储介质上。
[0101]需要说明的是,存储介质的逻辑错误有很多种,不可修复的读错误(UnrecoverRead Error,简称:UNC)坏道以及数据完整性区域(Data Integrity Field,简称:DIF)错误均是存储介质的逻辑错误。下面以UNC坏道与DIF错误为例,对逻辑错误进行说明:其中,对于UNC坏道:当硬盘受到震动、电压波动等不利因素影响时,硬盘磁头写入碟片的数据可能出现错误,进而导致读取数据的冗余校检(Cyclical Redundancy Check,简称:CRC)失败,此时硬盘就会向存储系统返回UNC坏道错误。UNC坏道并不是由于硬盘物理损伤导致的,因此,重新覆盖写一次就能够修复该硬盘,属于可修复的硬盘错误。当存储设备或主机访问硬盘发现UNC坏道时,如果硬盘自身错误检查和纠正(Error Correcting Code,简称:ECC)有效或者独立冗余磁盘阵列(Redundant Array of Independent Disk,简称:RAID)有冗余,可以通过硬盘自身ECC或RAID来恢复修复坏道;反之,如果硬盘自身ECC无效且RAID无冗余,则无法修复坏道,进而导致数据丢失和业务中断。对于DIF错误:通常在大多数场合下专指T10PI (保护信息Protection Information)标准中,DIF (在大多数场合下专指T10PI标准)通过对数据附加校验数据等信息的方式,对数据的完整性和一致性进行保护。DIF主要用来防止和检测静态数据破坏,包括数据通道上的硬件故障和软件BUG导致的数据破坏,以及磁盘不可检测和纠正的数据错误等。目前,很多商用存储设备都提供了 DIF功能,为了保证数据的完整性和一致性,从这些设备读出数据前都要进行DIF校验,一旦校验出错就会返回主机读失败。与UNC坏道一样,DIF错误也是一种逻辑上的错误,只要对出错的区域进行一次覆盖写就能修复错误。
[0102]本实施例提供的修复硬盘逻辑错误的方法,通过由控制器预先对源数据进行备份生成多个目标数据,并且这些目标数据可以通过备份、容灾、镜像或复制的方式获得,由存储系统在对源数据进行读操作时发现逻辑错误,或者通过后台周期性扫描发现源数据的逻辑错误,在通过获取预先存储好的目标数据对该源数据进行修复。由于本实施例提供的修复硬盘逻辑错误的方法由控制器执行,其能够避免由于修复逻辑错误而导致的主机或应用业务中断,提高了修复的效率,节省了由于主机或应用业务中断带来的额外成本。源数据修复过程完全对上层应用和用户透明,能够提高整个业务系统的可靠性和自愈能力,而且能够针对所有类型的数据进行修复;本实施例提供的修复硬盘逻辑错误的方法适用于上述备份、容灾、镜像或复制的场景,不限于SAN类型的存储系统,对于NAS类型的存储系统同样适用。
[0103]图7为本发明实施例四提供的控制器的结构示意图。该控制器可以设置在上文提到的存储系统中,或者也可以将该控制器设置在服务器上。如图7所示,该装置包括:故障检测单元10、读写处理单元11、复制单元12、修复单元13。并且各个单元之间的连接关系如图7所示。
[0104]读写处理单元11,用于从存储介质获取源数据;
[0105]故障检测单元10,用于对存储介质进行检测,若存储介质发生逻辑错误,则故障检测单元10,还用于截获存储介质向应用系统发送的第一读取响应消息,第一读取响应消息包含读取失败信息;故障检测单元10,还用于向修复单元13发送修复请求消息,修复请求消息包含源数据的标识和源数据的地址范围。
[0106]修复单元13,用于根据修复请求消息,向复制单元12发送目标数据请求消息,目标数据请求消息包含源数据的标识。
[0107]复制单元12,用于根据源数据的标识,获取复制对列表中与源数据构成复制对的目标数据,复制对列表包含与源数据构成复制对的全部目标数据,复制单元12,还用于向修复单元13发送第一目标数据响应消息,第一目标数据响应消息包含目标数据的标识。
[0108]修复单元13,还用于向复制单元12发送差异查询请求,差异查询请求包含目标数据的标识和源数据的地址范围。
[0109]复制单元12,还用于根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较,若不存在差异,则复制单元12,还用于向修复单元13发送第二目标数据响应消息,第二目标数据响应消息包含确认信息,确认信息指示目标数据与源数据之间不存在差异。
[0110]修复单元13,还用于接收到第二目标数据响应消息之后,修复单元13向存储介质发送重定向请求消息,重定向请求消息包含目标数据的标识和目标数据的地址范围。
[0111]修复单元13,还用于接收存储介质发送的第二读取响应消息,第二读取响应消息包含所述目标数据。
[0112]修复单元13,还用于将第二读取响应消息转发给读写处理单元11。
[0113]读写处理单元11,还用于将目标数据发送给应用系统。
[0114]修复单元13,还用于将目标数据写入存储介质存储的源数据,对源数据进行修复。
[0115]本实施例提供的控制器,首先,读写处理单元从存储介质获取源数据;故障检测单元对存储介质进行检测,若存储介质发生逻辑错误,则故障检测单元截获存储介质向应用系统发送的第一读取响应消息;进一步的,故障检测单元向修复单元发送修复请求消息,修复单元根据修复请求消息,向复制单元发送目标数据请求消息,复制单元根据源数据的标识,获取复制对列表中与源数据构成复制对的目标数据,复制单元向修复单元发送第一目标数据响应消息,修复单元向复制单元发送差异查询请求,复制单元根据目标数据的标识和源数据的地址范围,将源数据的地址范围与目标数据的地址范围进行比较,若不存在差异,则复制单元向修复单元发送第二目标数据响应消息,修复单元接收到第二目标数据响应消息之后,修复单元向存储介质发送重定向请求消息,修复单元接收存储介质发送的第二读取响应消息后,修复单元将第二读取响应消息转发给读写处理单元;读写处理单元将目标数据发送给应用系统;修复单元将目标数据写入存储介质存储的源数据,对源数据进行修复。由于故障检测单元截获存储介质向应用系统发送的第一读取响应消息,避免了应用系统接收到该第一读取响应消息后中断相应业务。同时还将应用系统所需的数据发送给了应用系统,在提高了修复的效率的同时,节省了由于主机或应用业务中断带来的额外成本。
[0116]进一步的,读写处理单元11,具体用于接收应用系统发送的第一读取请求消息,第一读取请求消息包含源数据的标识和源数据的地址范围。
[0117]读写处理单元11,具体还用于根据第一读取请求消息,向存储源数据的存储介质发送第二读取请求消息,第二读取请求消息包含源数据的标识和源数据的地址范围。
[0118]进一步的,复制单元12,具体用于根据目标数据的标识和源数据的地址范围,查询差异位图或者差异日志,判断目标数据的地址范围与源数据的地址范围是否存在差异。
[0119]进一步的,在修复单元13将目标数据写入存储介质存储的源数据,对源数据进行修复之后,还包括:
[0120]修复单元13,还用于接收存储介质发送的存储介质向修复单元发送修复响应消息,修复响应消息指示修复完毕。
[0121]进一步的,复制单元12,还用于根据源数据通过备份、容灾、镜像或复制获取得到与源数据构成复制对的目标数据,并存储在存储介质中。
[0122]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0123]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种修复硬盘逻辑错误的方法,其特征在于,包括: 读写处理单元从存储介质获取源数据; 故障检测单元对所述存储介质进行检测,若所述存储介质发生逻辑错误,则所述故障检测单元截获所述存储介质向应用系统发送的第一读取响应消息,所述第一读取响应消息包含读取失败息; 所述故障检测单元向修复单元发送修复请求消息,所述修复请求消息包含所述源数据的标识和所述源数据的地址范围; 所述修复单元根据所述修复请求消息,向复制单元发送目标数据请求消息,所述目标数据请求消息包含所述源数据的标识; 所述复制单元根据所述源数据的标识,获取复制对列表中与所述源数据构成复制对的目标数据,所述复制对列表包含与所述源数据构成复制对的全部所述目标数据; 所述复制单元向所述修复单元发送第一目标数据响应消息,所述第一目标数据响应消息包含所述目标数据的标识; 所述修复单元向所述复制单元发送差异查询请求,所述差异查询请求包含所述目标数据的标识和所述源数据的地址范围; 所述复制单元根据所述目标数据的标识和所述源数据的地址范围,将所述源数据的地址范围与所述目标数据的地址范围进行比较,若不存在差异,则所述复制单元向所述修复单元发送第二目标数据响应消息,所述第二目标数据响应消息包含确认信息,所述确认信息指示所述目标数据与所述源数据之间不存在差异; 所述修复单元接收到所述第二目标数据响应消息之后,所述修复单元向所述存储介质发送重定向请求消息,所述重`定向请求消息包含所述目标数据的标识和所述目标数据的地址范围; 所述修复单元接收所述存储介质发送的第二读取响应消息,所述第二读取响应消息包含所述目标数据;所述存储介质接收到所述重定向请求消息后,向所述修复单元发送第二读取响应消息,所述第二读取响应消息包含所述目标数据; 所述修复单元将所述第二读取响应消息转发给所述读写处理单元; 所述读写处理单元将所述目标数据发送给所述应用系统; 所述修复单元将所述目标数据写入所述存储介质存储的所述源数据,对源数据进行修复。
2.根据权利要求1所述的方法,其特征在于,所述读写处理单元从存储介质获取源数据,包括: 所述读写处理单元接收应用系统发送的第一读取请求消息,所述第一读取请求消息包含源数据的标识和所述源数据的地址范围; 所述读写处理单元根据所述第一读取请求消息,向存储所述源数据的存储介质发送第二读取请求消息,所述第二读取请求消息包含所述源数据的标识和所述源数据的地址范围。
3.根据权利要求1或2所述的方法,其特征在于,所述复制单元根据所述目标数据的标识和所述源数据的地址范围,将所述源数据的地址范围与所述目标数据的地址范围进行比较,包括:所述复制单元根据所述目标数据的标识和所述源数据的地址范围,查询差异位图或者差异日志,判断所述目标数据的地址范围与所述源数据的地址范围是否存在差异。
4.根据权利要求1-3任意一项所述的方法,其特征在于,在所述修复单元将所述目标数据写入所述存储介质存储的所述源数据,对源数据进行修复之后,还包括: 所述修复单元接收所述存储介质发送的修复响应消息,所述修复响应消息指示修复完毕。
5.根据权利要求1-4任意一项所述的方法,其特征在于,与所述源数据构成复制对的所述目标数据由所述复制单元预先根据所述源数据通过备份、容灾、镜像或复制获取得到,并存储在所述存储介质中。
6.一种控制器,其特征在于,包括:读写处理单元、故障检测单元、修复单元和复制单元; 所述读写处理单元,用于从存储介质获取源数据; 所述故障检测单元,用于对所述存储介质进行检测,若所述存储介质发生逻辑错误,则所述故障检测单元,还用于截获所述存储介质向应用系统发送的第一读取响应消息,所述第一读取响应消息包含读取失败信息;所述故障检测单元,还用于向所述修复单元发送修复请求消息,所述修复请求消息包含所述源数据的标识和所述源数据的地址范围; 所述修复单元,用于根据所述修复请求消息,向所述复制单元发送目标数据请求消息,所述目标数据请求消息包含所述源数据的标识; 所述复制单元,用于根据所述源数据的标识,获取复制对列表中与所述源数据构成复制对的目标数据,所述复制对列表`包含与所述源数据构成复制对的全部所述目标数据,所述复制单元,还用于向所述修复单`元发送第一目标数据响应消息,所述第一目标数据响应消息包含所述目标数据的标识; 所述修复单元,还用于向所述复制单元发送差异查询请求,所述差异查询请求包含所述目标数据的标识和所述源数据的地址范围; 所述复制单元,还用于根据所述目标数据的标识和所述源数据的地址范围,将所述源数据的地址范围与所述目标数据的地址范围进行比较,若不存在差异,则所述复制单元,还用于向所述修复单元发送第二目标数据响应消息,所述第二目标数据响应消息包含确认信息,所述确认信息指示所述目标数据与所述源数据之间不存在差异; 所述修复单元,还用于接收到所述第二目标数据响应消息之后,向所述存储介质发送重定向请求消息,所述重定向请求消息包含所述目标数据的标识和所述目标数据的地址范围; 所述修复单元,还用于接收所述存储介质发送的第二读取响应消息,所述第二读取响应消息包含所述目标数据; 所述修复单元,还用于将所述第二读取响应消息转发给所述读写处理单元; 所述读写处理单元,还用于将所述目标数据发送给所述应用系统; 所述修复单元,还用于将所述目标数据写入所述存储介质存储的所述源数据,对源数据进行修复。
7.根据权利要求6所述的控制器,其特征在于,所述读写处理单元,具体用于接收应用系统发送的第一读取请求消息,所述第一读取请求消息包含源数据的标识和所述源数据的地址范围; 所述读写处理单元,具体还用于根据所述第一读取请求消息,向存储所述源数据的存储介质发送第二读取请求消息,所述第二读取请求消息包含所述源数据的标识和所述源数据的地址范围。
8.根据权利要求6或7所述的控制器,其特征在于,所述复制单元,具体用于根据所述目标数据的标识和所述源数据的地址范围,查询差异位图或者差异日志,判断所述目标数据的地址范围与所述源数据的地址范围是否存在差异。
9.根据权利要求6-8任意一项所述的控制器,其特征在于,所述修复单元,还用于接收所述存储介质发送的所述存储介质向所述修复单元发送修复响应消息,所述修复响应消息指示修复完毕。
10.根据权利要求6-9任意一项所述的控制器,其特征在于,所述复制单元,还用于根据所述源数据通过备份、容灾、镜像或复制获取得到与所述源数据构成复制对的所述目标数据,并存储在所述存 储介质中。
【文档编号】G06F17/30GK103678517SQ201310617037
【公开日】2014年3月26日 申请日期:2013年11月27日 优先权日:2013年11月27日
【发明者】邹冶, 欧阳戟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1