一种磁盘阵列故障恢复方法及装置与流程

文档序号:30134813发布日期:2022-05-21 00:26阅读:105来源:国知局
1.本技术实施例涉及故障恢复
技术领域
:,尤其涉及一种磁盘阵列故障恢复方法及装置。
背景技术
::2.独立硬盘冗余阵列(raid,redundantarrayofindependentdisks),为磁盘阵列中的一种,主要是利用虚拟化存储技术将多个硬盘组合起来,形成一个或多个硬盘阵列组,具备较高的容错特性,即当部分硬盘发生故障或者数据错误时,raid可以恢复硬盘中的数据,以提高数据的完整性以及可靠性。3.对于raid1、raid5、raid5e以及raid6等磁盘阵列,可能会存在单盘失效场景以及双盘失效场景。其中,单盘失效是指磁盘阵列中存在一个磁盘因为故障等原因而发生失效,双盘失效,即是指磁盘阵列中存在两个磁盘发生失效。当磁盘阵列出现双盘失效时,磁盘阵列会处于不可用状态,导致磁盘阵列出现严重的数据丢失。目前,当磁盘阵列中出现磁盘发生故障时,通常是将故障磁盘更换为新磁盘,并丢弃故障磁盘。此时,故障磁盘上所保存的可被读取的数据信息也会被摒弃,从而浪费了该故障磁盘上可被读取的数据信息资源。技术实现要素:4.本技术实施例提供一种磁盘阵列故障恢复方法、装置及存储介质,用于实现对于故障磁盘上可被读取的数据信息的有效利用。5.第一方面,本技术实施例提供一种磁盘阵列故障恢复方法,该磁盘阵列至少包括第一磁盘以及第二磁盘。当磁盘阵列中的第一磁盘发生故障时,可以获取该第一磁盘中的正常数据,并利用该第一磁盘中的正常数据对第二磁盘中的异常数据进行恢复。6.由于在将第一磁盘更换为新磁盘之前,先利用该第一磁盘中的正常数据对磁盘阵列中的其它磁盘中的数据进行异常修复,以尽可能确保其它磁盘上的数据的可靠性与正确性,从而充分利用了故障磁盘上的有效信息,实现对该故障磁盘上可被读取的数据信息的有效利用,尽可能的将第二磁盘上出现的异常数据恢复成正常数据。7.在一种可能的实施方式中,在利用第一磁盘中的正常数据对其它磁盘上的异常数据进行恢复后,可以再利用该其它磁盘上的数据对新磁盘进行数据重建,可以尽可能减少其它磁盘上出现异常数据而对该新磁盘重建效果的影响,从而提高磁盘阵列的故障恢复效果。8.在一种可能的实施方式中,在故障恢复过程中,在对更换磁盘进行故障重建之前,还可以对第二磁盘中不可修复的异常数据进行隔离,从而避免第二磁盘中的异常数据对更换磁盘的数据重建的影响,如当第二磁盘中出现不可修复的异常数据时,该异常数据使得第一磁盘的更换磁盘上的相应数据重建失败,从而可能导致该更换磁盘的数据重建过程因为存在数据不可重建而使得更换磁盘重建失败(重建过程终止)。而通过对第二磁盘中不可修复的异常数据进行隔离,可以使得在对第一磁盘的更换磁盘进行数据重建过程中,更换磁盘中对于部分无法被重建的数据可以因为第二磁盘上的异常数据被隔离而跳过相应数据的重建,从而可以避免更换磁盘数据重建过程因为存在数据重建失败而发生终止,提高更换磁盘的数据重建的成功率。9.在一种可能的实施方式中,在对第二磁盘中不可修复的异常数据进行隔离时,具体可以是对第二磁盘中不可修复的异常数据添加异常标识,该异常标识可以用于指示数据重建过程中跳过对不可修复的异常数据进行重建。如此,在对更换磁盘进行数据重建时,当第二磁盘中存在具有异常标识的异常数据时,可以在更换磁盘上跳过对相应数据的重建,具体可以是跳过对该异常数据所属条带在更换磁盘上的数据重建,而可以在更换磁盘上继续重建下一条带的数据。10.在一种可能的实施方式中,在对第二磁盘中不可修复的异常数据添加异常标识时,具体可以是将第二磁盘中不可修复的异常数据修改为预设数值,比如,可以是将不可修复的异常数据全部修改为0,或者全部修改为1,或者修改为01010101这种循环变换数据等。当然,预设数值也可以是其它可能的数值,本实施例对此并不进行限定。11.在一种可能的实施方式中,当第二磁盘在经过数据恢复后,仍然存在异常数据时,在对更换磁盘进行数据重建之前,可以对第二磁盘进行自恢复处理,该自恢复处理用于对第二磁盘中仍然存在的异常数据进行恢复。如此,在对更换磁盘进行数据重建之前,可以通过自恢复过程,进一步常识将第二磁盘中存在的异常数据尽可能的恢复,从而可以有益于提高更换磁盘的数据重建效果。12.在一种可能的实施方式中,对第二磁盘进行自恢复处理,具体可以是对第二磁盘进行下电处理后再进行上电处理。如此,当磁盘出现磁头飞行不稳定或者磁盘状态异常时,通过对该磁盘进行上下电处理,有可能会将该磁盘上的异常数据恢复至正常数据。13.在一种可能的实施方式中,在对第二磁盘进行下电以及上电处理时,具体可以是通过电源链接器的目标管脚的断电功能对第二磁盘先进行下电处理,再进行上电处理。如此,可以实现对单个磁盘的上下电过程,而可以不用对整个磁盘阵列进行上下电。14.在一种可能的实施方式中,磁盘阵列中还可以更多的磁盘,如还包括第三磁盘,则在利用第一磁盘中的正常数据对第二磁盘中的异常数据进行恢复时,具体可以是根据第一磁盘中的正常数据以及第三磁盘中的正常数据,通过奇偶校验算法对第二磁盘中的异常数据进行恢复。这样,在raid5、raid5e以及raid6等具有冗余校验的磁盘阵列中,通常其它磁盘上的正常数据可以对存在异常数据的磁盘上数据进行恢复,从而可以使得其他磁盘上的数据能够尽可能多的恢复正常,以便于提高后续对于更换磁盘的重建效果。15.在一种可能的实施方式中,在对更换磁盘进行数据重建之前,当磁盘阵列中同时存在第一磁盘以及第二磁盘发生故障时,也即发生双盘失效时,可以利用磁盘阵列的固件空间第二磁盘恢复至在线状态,该第二磁盘的故障时间晚于第一磁盘的故障时间。这样,磁盘阵列可以由双盘失效状态恢复至单盘失效状态,从而可以在单盘失效状态下对磁盘阵列进行故障恢复。16.在一种可能的实施方式中,磁盘阵列在经过故障恢复后,可以提示经过数据重建后的更换磁盘中的异常数据或磁盘阵列中的异常数据,从而用户可以根据该提示,对更换磁盘中的异常数据进行手动恢复,或者对于磁盘阵列中的异常数据进行相应的数据恢复操作。17.在一种可能的实施方式中,该磁盘阵列具体可以是具有校验冗余机制的raid,如raid5、raid5e以及raid6等,这些磁盘阵列可以至少具有三个磁盘,并且该磁盘阵列中任意一条条带数据,可以通过每个磁盘上的数据块或者校验数据进行校验恢复。18.第二方面,本技术实施例还提供了一种磁盘阵列故障恢复方法,该磁盘阵列包括第一磁盘以及第二磁盘。当该磁盘阵列中的第一磁盘发生故障时,可以获取该第一磁盘中的正常数据,并利用该第一磁盘中的正常数据,校验第二磁盘中的数据是否存在异常,从而可以充分利用故障磁盘上的有效信息,实现对该故障磁盘上可被读取的数据信息的有效利用,尽可能的校验出第二磁盘上出现的异常数据。19.在一种可能的实施方式中,可以根据经过数据校验的第二磁盘中的数据,对第一磁盘对应的更换磁盘进行数据重建。由于通过对第二磁盘中的数据进行校验,可以使得第二磁盘上用于对更换磁盘进行故障恢复的数据均为通过校验的正常数据,从而利用正常数据来重建更换磁盘,可以有效提高更换磁盘的数据重建效果。20.第三方面,基于与第一方面的方法实施例同样的发明构思,本技术实施例提供了一种计算装置。该装置具有实现上述第一方面的各实施方式对应的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。21.第四方面,基于与第二方面的方法实施例同样的发明构思,本技术实施例提供了一种计算装置。该装置具有实现上述第二方面的各实施方式对应的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。22.第五方面,本技术实施例提供一种计算装置,包括:处理器和存储器;该存储器用于存储指令,当该计算装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第一方面或第一方面的任一实现方式中的磁盘阵列故障恢复方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。23.第六方面,本技术实施例提供一种计算装置,包括:处理器和存储器;该存储器用于存储指令,当该计算装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第二方面或第二方面的任一实现方式中的磁盘阵列故障恢复方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。24.第七方面,本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述第一方面或第一方面的任一实现方式中的磁盘阵列故障恢复方法被执行。25.第八方面,本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述第二方面中的磁盘阵列故障恢复被执行。26.第九方面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一实现方式中的任意磁盘阵列故障恢复方法。27.第十面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一二方面中的磁盘阵列故障恢复方法。28.另外,第三方面至十方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,或者可参见第二方面中不同实现方式所带来的技术效果,此处不再赘述。附图说明29.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。30.图1为本技术实施例中一示例性系统架构示意图;31.图2为本技术实施例中一种磁盘阵列故障恢复方法的流程示意图;32.图3为本技术实施例中一示例性提示界面示意图;33.图4为存在两个磁盘发生故障的磁盘阵列示意图;34.图5为一示例性日志内容示意图;35.图6为磁盘阵列中存在异常数据的示意图;36.图7为利用磁盘3中的正常数据对磁盘阵列中异常数据修复的示意图;37.图8为利用上下电处理后可读取的正常数据对磁盘阵列中异常数据修复的示意图;38.图9为对磁盘阵列中的异常数据进行写0处理后的磁盘阵列示意图;39.图10为本技术实施例中一种计算装置的结构示意图;40.图11为本技术实施例中又一种计算装置的结构示意图;41.图12为本技术实施例中一种计算装置的硬件结构示意图;42.图13为本技术实施例中又一种计算装置的硬件结构示意图。具体实施方式43.在raid1、raid5、raid5e以及raid6等具有冗余机制的磁盘阵列中,通常包括至少两个磁盘。以raid5这种磁盘阵列为例,该磁盘阵列在存储数据时,通常是将连续的数据分割成大小相同的多个数据块,并将每段数据分别写入磁盘阵列的不同磁盘上,该连续的多段数据,可以称之为磁盘阵列中的条带,如图1所示的条带1、条带2以及条带3(连续数据被分割成大小相同的2个数据块)。同时,每个条带还包括一段校验数据,该校验数据与条带中的其它分段数据存储于磁盘阵列的不同磁盘。44.这样,当存在一个磁盘因为故障(如硬盘损坏等)而被替换成新磁盘时,磁盘阵列通常利用其它磁盘上的数据为该新磁盘进行数据重建,以使得该磁盘阵列恢复成故障磁盘发生故障之前的数据。45.举例来说,如图1所示,对于条带1,其包括数据块a1、数据块a2以及校验数据a3,分别存储于该磁盘阵列中的磁盘1、磁盘2以及磁盘3。46.当磁盘1发生损坏,如发生硬盘坏道等,通常是利用新磁盘来更换损坏的磁盘1。由于该新磁盘上通常未存储有数据,因此,磁盘阵列可以利用磁盘2上的数据块a2以及磁盘3上的校验数据a3对新磁盘上的条带1数据进行重建。具体实现时,由于条带1中的数据满足奇偶校验公式(1),因此,可以通过异或运算计算出新磁盘上条带1上的数据。示例性的,奇偶校验公式(1)具体如下所示:47.p=d1xord2xord3…xordnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(1)48.其中,d1至dn分别为第1个磁盘至第n个磁盘上存储的数据块(在上述示例中n的值为2),p为第n+1个磁盘上存储的校验信息,xor为异或运算。49.由于条带1中数据块a1中的第一位数据、数据块a2中的第一位数据以及校验数据a3中的第一位数据满足下表1其中一行的异或关系:50.表151.a1值a2值a3值(xor结果)00010101111052.因此,在对新磁盘中条带1中的第一位数据进行重建时,可以根据该条带1中在磁盘2的第一位数值以及在磁盘3中的第一位数值,反算出该条带1在新磁盘的第一位数值。比如,假设条带1中在磁盘2的第一位数值为1,条带1在磁盘3中的第一位数据为0,则基于上述异或运算过程可以确定条带1在新磁盘的第一位数据为1。类似的,参照上述过程,可以根据磁盘2以及磁盘3中的数据,计算出条带1在新磁盘上的所有数据。如此,可以计算出新磁盘上条带1至条带3的所有数据,从而使得新磁盘上的数据与磁盘1发生故障之前的所存储的数据一致,完成新磁盘的数据重建过程。当然,对于raid1等具有冗余机制的磁盘阵列,当其中一个磁盘上的数据发生故障并进行磁盘更换和数据重建时,也可以是利用该磁盘阵列的另一个磁盘上的数据对更换的新磁盘进行数据重建。53.但是实际应用中,对于新磁盘的数据重建效果难以达到预期,即新磁盘经过数据重建后,可能存在较多的数据没有被恢复。比如,新磁盘可能仅成功恢复了条带1的数据,而对于条带2以及条带3中的数据,数据恢复失败。54.通过研究发现,新磁盘的数据重建效果难以达到预期的原因在于,当第一磁盘发生故障时,通常是直接丢弃该第一磁盘,并利用新磁盘对故障的第一磁盘进行更换,没有有效利用第一磁盘中可被读取的正常数据,而直接利用磁盘阵列的其它磁盘对更换的新磁盘进行数据重建,实际上,该磁盘阵列中的其它磁盘虽然没有发生故障,但是仍然可能存在异常数据,从而基于该异常数据难以实现对新磁盘的数据恢复,从而导致数据重建效果较差。55.仍以图1所示的磁盘阵列为例,当磁盘1发生故障并对该磁盘1对应的新磁盘进行数据重建时,条带2中存储于磁盘2中的数据块b2可能发生异常,从而导致该数据块b2不可读或者存在数据错误;同时,条带3中存储于磁盘3中的校验数据c3发生异常,从而导致该校验数据c3不可读或者存在数据错误。这样,在基于磁盘2中存储的数据以及磁盘3中存储的数据,对条带2以及条带3在新磁盘上的数据块进行数据重建时,由于数据块b2不可读或者存储数据错误,仅基于条带2在磁盘3上正常存储的校验数据b3,难以将条带2在新磁盘上的数据恢复成b1;同样,由于数据块c3不可读或者存储数据错误,仅基于条带3在磁盘2上正常存储的校验数据c2,难以将条带2在新磁盘上的数据恢复成c1。如此,新磁盘上可能成功恢复了条带1的数据块,而对于条带2以及条带3在新磁盘上的数据块,则恢复失败,从而使得磁盘阵列(也即新磁盘)的故障恢复效果较差。56.基于此,本技术实施例提供了一种磁盘阵列故障恢复方法,以有效利用故障的第一磁盘中可被读取的正常数据。具体实现时,在对磁盘阵列进行故障恢复之前,由于该故障磁盘通常并未失去读取所有数据的能力,因此,可以先利用该故障磁盘上可被读取的正常数据对磁盘阵列的其它磁盘中的异常数据进行恢复,以尽可能确保其它磁盘上的数据的可靠性与正确性,从而可以充分利用故障的第一磁盘上的正常数据。57.进一步的,可以利用经过数据恢复的其它磁盘中的数据对该新磁盘进行数据重建,这样可以尽可能减少其它磁盘上出现异常数据而对该新磁盘重建效果的影响,从而提高磁盘阵列的故障恢复效果。58.举例来说,图1所示的磁盘阵列在进行故障恢复时,在对新磁盘进行数据重建之前,可以先读取原磁盘1中的数据,假设能够读取原磁盘1中的条带2以及条带3中的数据块b1以及数据块c1。然后,可以利用数据块b1以及条带2在磁盘3上正常存储的校验数据b3恢复条带2在磁盘2上的异常数据b2,并利用数据块c1以及条带3在磁盘2上正常存储的数据块c2对条带3在磁盘3上的异常校验数据c3进行恢复。这样,磁盘阵列中的异常数据b2以及c3可以恢复成正常数据。然后,再基于磁盘2以及磁盘3上存储的正常数据对条带1至条带3在新磁盘上的数据进行重建,使得新磁盘上被重建的数据成功恢复至原磁盘1故障之前的数据,从而有效提高了磁盘阵列(也即新磁盘)的故障恢复效果。59.为使本技术的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本技术实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。60.如图2所示,为本技术实施例中一种磁盘阵列故障恢复方法的流程示意图,该方法可以应用于磁盘阵列的控制器中,或者作为独立的设备与磁盘阵列进行连接,并控制磁盘阵列的故障恢复过程。其中,磁盘阵列可以包括两个或者两个以上的磁盘,为便于描述,以下以磁盘阵列包括第一磁盘以及第二磁盘为例进行示例性说明,相应的,当磁盘包括三个个及其以上的磁盘时,可以参照类似过程实现。该方法具体可以是包括:61.s210:当磁盘阵列中的第一磁盘发生故障时,获取第一磁盘中的正常数据。62.s220:利用第一磁盘中的正常数据对第二磁盘中的异常数据进行恢复。63.其中,磁盘阵列例如可以是raid1、raid5、raid5e以及raid6等具有冗余机制的磁盘阵列,即能够通过磁盘上存储的冗余信息对其它磁盘上的数据进行修复(纠正)。64.实际应用中,磁盘阵列中的磁盘可能会发生多种可能的故障。比如,某个磁盘发生硬盘坏道,导致该磁盘中无法读取坏道区域之前存储的数据以及无法在坏道区域写入新数据,出现坏快(badblock);又比如,磁盘中进入异物(如灰尘等)导致该磁盘中的部分区域无法读取和写入数据等;又或者,磁盘发生不可纠正错误的检查和纠正(uncorrectableerrorcheckingandcorrecting,uecc)等。因此,通常情况下,第一磁盘发生故障,通常是其上的部分区域存储的数据被破坏,造成数据丢失,而其余部分区域的数据仍然可被读取。65.本实施例中,对于磁盘上的正常数据,具体可以是指磁盘上可被读取的数据。相应的,对于磁盘上的异常数据,具体可以是指磁盘上不可被读取的数据。在某些具有校验冗余机制的磁盘阵列中,磁盘上的正常数据,除了要求该数据可被读取之外,还可以要求该数据是正确的数据,例如可以进一步要求该数据能够通过其它磁盘上的数据校验或者可以被该磁盘上的校验码所校验;而磁盘上的异常数据,具体可以是不可被读取、或者被证明为不正确的数据。66.实际应用中,对于磁盘阵列中其余未发生故障的磁盘,其上存储的数据无法保证所有的数据均为正常数据,比如,正常磁盘上中的某个数据位可能会因为环境、磁盘阵列发生物理抖动等原因导致该数据位所表征的值发生变化,比如由“1”变为“0”等,从而导致正常磁盘上存储的部分数据可能会出现异常,该部分数据也即为异常数据。因此,当磁盘阵列中存在某个磁盘(以下称之为第一磁盘)发生故障时,若直接利用新磁盘对故障的第一磁盘进行更换,则其它磁盘上出现的异常数据会影响对于新磁盘上的数据重建。67.为此,本实施例中,当第一磁盘故障时,在利用新磁盘对故障的第一磁盘进行更换之前,可以先获取第一磁盘中可被读取的正常数据,以便利用该第一磁盘中的正常数据对磁盘阵列的其余磁盘中的异常数据进行恢复。68.具体实现时,可以先检测第二磁盘中是否异常数据,例如,可以通过尝试读取第二磁盘中的数据,当遇到不可读的数据时,即可确认该处数据为异常数据。当然,实际应用中,如何检测磁盘中的数据是否异常存在多种其它可能的实施方式,本实施例对如何检测确定磁盘上的异常数据的具体实现方式并不进行限定。69.当第二磁盘上出现异常数据时,可以利用第一磁盘中的正常数据对第二磁盘中的正常数据进行恢复,例如可以是将第一磁盘中的正常数据重新写入第二磁盘中对应异常数据所在存储区域,实现将异常数据更新为正常数据。70.特别的,在raid5、raid5e以及raid6等具有校验冗余机制的磁盘阵列中,磁盘阵列除了包括第一磁盘、第二磁盘以外,还包括第三磁盘(或者更多的磁盘)。则,针对于第二磁盘上出现的异常数据,可以利用第一磁盘中的正常数据以及第三磁盘中的正常数据,通过奇偶校验算法对第二磁盘中的异常数据进行恢复,具体是通过奇偶校验算法对两个磁盘上的正常数据进行计算,并将计算出的值作为用于更新第二磁盘中的异常数据的值。类似的,针对于第三磁盘上出现的异常数据,可以利用第一磁盘中的正常数据以及第二磁盘中的正常数据,通过奇偶校验算法对第三磁盘中的异常数据进行恢复。如此,利用第一磁盘上的正常数据,能够尽可能减少其它磁盘上异常数据的数量,从而充分利用了故障的第一磁盘上的正常数据。71.实际应用中,对于故障的第一磁盘,通常是利用新磁盘对该故障磁盘进行替换(以下将该新磁盘称之为更换磁盘),并对更换磁盘进行数据重建。因此,在进一步可能的方案中,本实施例还可以包括:72.s230:根据经过数据恢复的第二磁盘中的数据,对第一磁盘对应的更换磁盘进行数据重建。73.本实施例中,当对第二磁盘中的异常数据进行恢复后,第二磁盘中的异常数据的数据量可以得到减少。此时,再利用第二磁盘中的数据对用于替换第一磁盘的新磁盘(以下称之为更换磁盘)进行数据重建,可以尽可能减少第二磁盘中的异常数据对于更换磁盘的数据重构的影响。理想情况下,利用第一磁盘中的正常数据,可以将第二磁盘中的全部异常数据均恢复正常,则再利用第二磁盘中的数据,可以实现对更换磁盘中的所有数据进行重建。比如,以图1所示的磁盘阵列为例,从故障的磁盘1所能得到的数据为条带2以及条带3的数据块b1以及数据块c1,无法在磁盘1上读取到条带1的数据块a1,虽然,在磁盘1上能读取到正常数据仅为数据块b1以及数据块c1,从而仅能保证对更换磁盘上条带2以及条带3的数据块进行重建,但是由于条带1在磁盘2以及磁盘3上的数据块并不存在异常,因此,最终可以实现在更换磁盘上重建出所有条带的数据。如此,可以有效提高磁盘阵列的故障恢复效果。74.当然,由于第一磁盘中的数据因为磁盘故障而导致在第一磁盘上所能读取到的正常数据仅为该第一磁盘上的部分数据(另一部分数据因为第一磁盘故障而不可读),这使得第二磁盘上仍然可能存在部分异常数据无法进行恢复。比如,在图1所示的具有校验冗余机制的磁盘阵列中,当图1中所示的条带1中的数据块,在磁盘1中不可读,在磁盘2或者磁盘3中出现数据异常时,则可能难以在更换磁盘上重建出条带1的数据。75.在具有校验冗余机制的磁盘阵列中,,为避免在重建过程中,因更换磁盘上的部分条带数据无法重建而导致该更换磁盘重建失败,本实施例中,磁盘阵列在重建过程中,可以对更换磁盘中无法重建出的数据块进行穿孔处理(即puncturingbadblock)。其中,“穿孔”,也可以是称之为“带错重建”,即在更换磁盘上重建条带数据时,若该条带数据无法完成重建,则磁盘阵列可以对更换磁盘上的该条带数据进行打孔,并允许继续进行重建,以避免磁盘阵列因为该条带数据无法重建而导致更换磁盘直接重建失败。其中,更换磁盘上的“穿孔”位置处的数据已经发生丢失,基于当前的磁盘阵列中的数据无法对其进行恢复。76.实际应用中,由于该更换磁盘中的条带出现“穿孔”,这使得当向第二磁盘或者第三磁盘中写入数据,或者在第二磁盘或第三磁盘发生故障并进行重建时,更换磁盘中的“穿孔”会导致同条带在其它磁盘上的数据也会出现“穿孔”,从而出现“穿孔扩散”的问题。77.因此,本实施例中,具有校验冗余机制的磁盘阵列在对更换磁盘进行数据重建之前,还可以对其它磁盘上出现的不可修复的异常数据(如存在“穿孔”或者其它原因导致数据不可修复等)进行隔离。这样,在对更换磁盘进行数据重建时,对于隔离的异常数据所属条带在该更换磁盘上的数据,可以无需再进行重建,即可以跳过该条带而继续重建下一条带的数据,如此,可以避免在更换磁盘上出现新的“穿孔”,从而可以避免磁盘阵列中出现“穿孔扩散”的问题。78.而一些可能的实施方式中,磁盘阵列在隔离不可修复的异常数据时,磁盘阵列可以是对不可修复的异常数据添加异常标识。这样,磁盘阵列在对更换磁盘进行数据重建的过程中,可以先检测当前重建数据在第二磁盘上是否包含该异常标识,若不包含,则可以利用其它磁盘上的数据在更换磁盘上进行数据重建,而若包含,则磁盘阵列可以跳过该数据(不对该数据进行重建处理),而继续对下一数据进行重建处理。79.示例性的,磁盘阵列对不可修复的异常数据添加异常标识,具体包括为该异常数据添加额外的标识数据的做法;也包括将异常数据修改为预设的数值的做法,例如可以将异常数据全部修改为0、或者全部修改为1、或者将异常数据修改为01010101这种循环数值等,本实施例中对于如何为异常数据添加异常标识的具体实现并不进行限定。80.其中,不可修复的异常数据,可以是由磁盘阵列基于之前利用第一磁盘上的正常数据对其余磁盘上的异常数据进行恢复的结果进行确定。比如,在利用第一磁盘上的正常数据完成对第二磁盘上的异常数据恢复后,磁盘阵列可以将第二磁盘上仍然存在的异常数据确定为不可修复的异常数据。当然,本实施例中对于磁盘阵列如何确定不可修复的异常数据的具体实现方式并不进行限定。81.实际应用中,第二磁盘上存在的异常数据,也可以通过磁盘的自恢复处理过程实现恢复,该自恢复处理用于实现在不依靠其它磁盘上的数据的情况下,对自身磁盘上的数据进行恢复。示例性的,该自恢复处理具体可以是对第二磁盘(或第三磁盘)进行下电以及上电处理。比如,当磁盘出现磁头飞行不稳定或者磁盘状态异常时,通过对该磁盘进行上下电处理,有可能会将该磁盘上的异常数据恢复至正常数据。因此,在进一步可能的实施方式中,在对第二磁盘(或第三磁盘)上不可修复的异常数据进行隔离之前,还可以对第二磁盘(或第三磁盘)进行至少一次下电以及上电处理。然后,磁盘阵列再确定经过上下电处理的第二磁盘(或第三磁盘)是否仍然存在异常数据,若不存在,则通过针对于该第二磁盘(或第三磁盘)的上下电处理,实现了对其上的异常数据恢复,而若仍然存在部分异常数据,则磁盘阵列可以对该部分异常数据进行隔离。82.值得注意的是,本实施例中,可以是针对于存在异常数据的第二磁盘(或第三磁盘)进行单体上下电(即当仅存在一个磁盘上有异常数据时,可以仅对该磁盘进行上下电处理),而可以不用对整个磁盘阵列进行上下电处理。作为一种示例,可以将电源链接器的目标管脚(如pin3管脚等)的断电功能对第二磁盘(或第三磁盘)进行至少一次的下电以及上电处理。其中,上下电的次数可以是根据实际应用的需求进行设定。当然,在其它实施例中,也可以是将磁盘阵列整体进行上下电处理,从而实现对第二磁盘(或第三磁盘)的异常数据恢复。83.实际应用时,当更换磁盘中未重建出所有数据时,比如在具有冗余校验介质的磁盘阵列中,该更换磁盘中的部分条带数据重建失败或者跳过重建等,磁盘阵列还可以提示更换磁盘中的异常数据。比如,磁盘阵列可以通过相应的客户端呈现如图3所示的提示界面,以提示用户更换磁盘(也即新磁盘)中的哪些条带数据存在异常,以便用户对该部分异常数据进行后续处理,如重新向磁盘阵列中写入该条带对应的数据等。在其它示例中,也可以是向用户提示该磁盘阵列中存在的异常数据,不局限于单个磁盘;或者,磁盘阵列在呈现整个磁盘阵列中所存在的异常数据的同时,还具体呈现某个磁盘上的异常数据。84.进一步的,上述实施例中是以磁盘阵列中出现一个磁盘(即第一磁盘)发生故障为例,对磁盘阵列的故障恢复过程进行介绍。实际应用中,磁盘阵列可能同时出现多个磁盘发生故障,如磁盘阵列出现双盘失效。其中,磁盘阵列中未出现磁盘发生故障时,磁盘阵列处于最优(optimal)状态,当磁盘阵列中出现一个磁盘发生故障时,则磁盘阵列会进入降低(degrade)状态,而当磁盘阵列中同时出现两个或者两个以上的磁盘发生故障时,磁盘阵列会进入下线(offline)状态。另外,每个磁盘至少可以包括在线(online)状态以及失效(failed)状态,即在未发生故障时,磁盘处于online状态,而当磁盘发生故障时,则磁盘处于failed状态。85.当磁盘阵列中出现多个磁盘发生故障时,磁盘阵列会处于offline状态,此时,可以先将磁盘阵列有offline状态恢复至degrade状态,即磁盘阵列中仅存在一个磁盘离线,具体可以是通过磁盘阵列中的固件(即磁盘阵列内部保存的设备“驱动程序”),将发生故障的第二磁盘由failed状态恢复至online状态(假设磁盘阵列中的第一磁盘与第二磁盘发生故障)。如此,可以实现将磁盘阵列的双盘失效场景变成单盘失效场景。86.示例性的,磁盘阵列中的固件可以监控该磁盘阵列的故障状态,并在确定当前存在第一磁盘以及第二磁盘发生故障而导致磁盘阵列处于offline状态时,可以获取第一磁盘与第二磁盘发生故障的时间,如通过相应的日志查询出第一磁盘的故障时间以及第二磁盘的故障时时间等,并进一步确定第二磁盘的故障时间晚于第一磁盘的故障时间(此处假设第二磁盘后故障)。然后,磁盘阵列中的固件可以控制较晚发生故障的第二磁盘由failed状态强制进入online状态。这样,磁盘阵列当前所处的失效场景为单盘失效场景,从而可以基于上述故障恢复过程对第一磁盘对应的更换磁盘进行数据重建。进一步的,在完成对该更换磁盘的数据重建后,还可以对故障的第二磁盘进行更换,并由磁盘阵列基于上述类似过程对第二磁盘对应的更换磁盘进行数据重建,以实现对磁盘阵列的故障恢复。87.为便于理解,下面结合图4所示的具有校验冗余机制的磁盘阵列对上述故障恢复过程进行说明。如图4所示,磁盘阵列中可以包括4个磁盘,分别为磁盘1至磁盘4,不同磁盘用于存储不同条带的数据块或者校验数据。其中,条带1的数据块为a1、a2、a3,校验数据为a*,条带2的数据块为b1、b2、b3,校验数据为b*,条带3的数据块为c1、c2、c3,校验数据为c*,条带4的数据块为d1、d2、d3,校验数据为d*。磁盘1至磁盘4中存储的数据块以及校验数据如图4所示。其中,磁盘阵列中磁盘3以及磁盘4发生故障,并且处于offline状态(图4中以交叉虚线表示磁盘3、4故障)。88.磁盘阵列(具体可以是磁盘阵列中的控制器)在进行故障恢复时,可以通过固件检测磁盘3以及磁盘4的离线时间,具体可以是通过查找图5所示的日志,以确定出磁盘3的离线时刻为“2020-10-09,05:36:39”,磁盘4的离线时刻为“2020-10-09,05:38:45”,从而磁盘阵列可以通过固件控制将后故障的磁盘4由failed状态强制恢复至online状态。此时,磁盘阵列处于单盘失效场景(当前只有磁盘3处于失效状态),相应的,磁盘阵列的状态由offline状态进入degrade状态。89.在对磁盘3进行更换之前,磁盘阵列可以对剩余的磁盘1、磁盘2以及磁盘4进行异常数据检测以及恢复。具体的,磁盘阵列通过检测发现磁盘1中存在校验数据c*为异常数据,磁盘2中存在数据块b2为异常数据,磁盘4中存在数据块a*和d3为异常数据,如图6灰色区域所示。90.此时,若直接对磁盘3进行更换,则利用磁盘1、磁盘2以及磁盘4上存储的数据对新磁盘进行数据重建,由于每个条带数据在这些磁盘上均存在异常数据,从而导致新磁盘无法重建出数据,进而使得新磁盘重建失败。91.为此,本实施例中,磁盘阵列在更换磁盘3之前,可以先检测并读取磁盘3上的正常数据,假设为数据块a3以及校验数据b*正常,则磁盘阵列可以利用奇偶校验算法,利用磁盘1上的正常数据块a1、磁盘2上的正常数据块a2、磁盘3上的正常数据块a3对磁盘4上的异常数据a*进行修复,具体可以对a1、a2以及a3进行奇偶校验运算,计算出a**,并利用该a**来更新磁盘4上的异常数据,完成对磁盘4上异常数据的修复。类似的,磁盘阵列可以利用磁盘1上的正常数据块b1、磁盘3上的正常数据块b*以及磁盘4上的正常数据b3,将磁盘2上的异常数据b2修复为b2*,如图7所示。92.由于条带3中的数据块c2以及条带4中的数据块d2因磁盘3发生故障而不可读,因此,无法按照上述类似过程对数据块c1以及数据块d3进行修复。此时,磁盘阵列可以单独对磁盘3进行至少一次上电以及下电操作,并对经过上下电操作后的磁盘3进行检测,确定数据块c2以及数据块d2是否被修复并被可读。假设经过上下电处理后,磁盘3中的数据块c2变成可读,则可以对该数据块c2以及c*、c3对磁盘1中的数据块c1进行奇偶校验运算,并利用计算出的c1*对磁盘1中异常的数据块c1进行更新。此时,磁盘阵列中各磁盘上的数据如图8所示。93.当前,只有条带4中的数据块d3无法完成修复。此时,若直接对磁盘3进行更换并进行数据重建,则条带4中的数据块d3异常而使得条带4在新磁盘中完成数据重建,并会在该新磁盘上进行穿孔处理,这使得在后续对磁盘4进行磁盘更换以及数据重建时,会使得穿孔被扩散到磁盘4对应的新磁盘上。为此,本实施例中,磁盘阵列可以对条带4数据进行隔离,比如,可以将条带4的所有数据进行写0处理,如图9所示;或者对条带4进行异常标记,从而在对磁盘3对应的更换磁盘进行数据重建时,对于写0或者被异常标记的条带4,可以调到数据重建,而继续对下一条带进行数据重建,并且,若条带4为磁盘阵列中的最后一个条带,则当前对于磁盘3对应的更换磁盘的数据重建过程结束。94.在进一步的实施方式中,当完成对磁盘3对应的更换磁盘的数据重建后,可以参照上述过程对发生故障的磁盘4对应的更换磁盘进行数据重建,由于其实现过程与上述过程类似,可参见前述相关之处描述,在此不做赘述。95.上述各实施例中,是以利用故障磁盘上的正常数据对其余磁盘上存在的异常数据进行异常数据恢复,而在其它可能的实施例中,当磁盘阵列中存在第一磁盘发生故障时,磁盘阵列可以利用该第一磁盘上的数据对该磁盘阵列中的其它磁盘上的数据进行校验,以校验其它磁盘上是否存在异常,从而在对第一磁盘对应的更换磁盘进行数据重建时,可以利用其它磁盘上通过校验的数据对该更换磁盘进行数据重建。而对于未通过校验的数据,可以是通过额外的数据恢复方式将其它磁盘上未通过校验的数据进行恢复,并利用恢复后的数据对更换磁盘进行数据重建;或者可以是通过异常数据标记的方式跳过该数据在更换磁盘上的重建;又或者可以是提示用户对更换磁盘上无法自动重建数据进行手动重建等,具体实现可参见上述实施例的相关之处描述,在此不做赘述。96.上文中结合图1至图9,详细描述了本技术所提供的磁盘阵列故障恢复方法,下面将结合图10至图13,描述根据本技术所提供的计算装置。97.与上述方法同样的发明构思,本技术实施例还提供一种计算装置,该装置可以实现上述图2所示的实施例中磁盘阵列的控制器或者与磁盘阵列连接的独立设备的功能,该磁盘阵列可以是具有冗余机制的磁盘阵列,至少包括第一磁盘以及第二磁盘。参见图10所示,该装置1000可以包括:98.获取模块1001,用于当所述第一磁盘故障时,获取所述第一磁盘中的正常数据;99.恢复模块1002,用于利用所述第一磁盘中的正常数据对所述第二磁盘中的异常数据进行恢复。100.在一种可能的实施方式中,装置1000还包括重建模块1003,用于根据经过数据恢复的第二磁盘中的数据,对所述第一磁盘对应的更换磁盘进行数据重建。101.在一种可能的实施方式中,恢复模块1002,还用于在对所述更换磁盘进行数据重建之前,对所述第二磁盘中不可修复的异常数据进行隔离。102.在一种可能的实施方式中,恢复模块1002,具体用于对所述第二磁盘中不可修复的异常数据添加异常标识,所述异常标识用于指示数据重建过程中跳过对所述不可修复的异常数据进行重建。103.在一种可能的实施方式中,所述恢复模块1002,,具体用于将所述第二磁盘中不可修复的异常数据修改为预设数值。104.在一种可能的实施方式中,所述恢复模块1002,还用于当所述第二磁盘在经过数据恢复后仍然存在异常数据时,在对所述更换磁盘进行数据重建之前,对所述第二磁盘进行自恢复处理,所述自恢复处理用于对所述第二磁盘中仍然存在的异常数据进行恢复。105.在一种可能的实施方式中,所述恢复模块1002,具体用于对所述第二磁盘进行下电处理后再进行上电处理。106.在一种可能的实施方式中,所述恢复模块1002,具体用于通过电源链接器的目标管脚的断电功能对所述第二磁盘进行下电处理后再进行上电处理。107.在一种可能的实施方式中,所述重建模块1003,还用于在对所述更换磁盘进行数据重建之前,当所述磁盘阵列同时存在所述第一磁盘以及所述第二磁盘发生故障时,利用所述磁盘阵列的固件控制所述第二磁盘恢复至在线状态,所述第二磁盘的故障时间晚于所述第一磁盘的故障时间。108.在一种可能的实施方式中,所述装置1000还包括:109.提示模块1004,用于提示经过数据重建后的更换磁盘中的异常数据或所述磁盘阵列中的异常数据。110.在一种可能的实施方式中,所述磁盘阵列包括具有校验冗余机制的独立硬盘冗余阵列,例如可以是raid5、raid5e以及raid6等。111.本实施例中的计算装置1000,对应于图2所示的磁盘阵列故障恢复方法,因此,对于本实施例计算装置1000中各个功能模块的具体实现及其所具有的技术效果,可以参见图2所示实施例中的相关之处描述,在此不做赘述。112.此外,本技术实施例还提供了一种计算装置,该装置可以实现上述实施例中磁盘阵列的控制器或者与磁盘阵列连接的独立设备的功能,该磁盘阵列可以是具有冗余机制的磁盘阵列,至少包括第一磁盘以及第二磁盘。参见图11所示,该装置1100可以包括:113.获取模块1101,用于当所述第一磁盘故障时,获取所述第一磁盘中的正常数据;114.校验模块1102,用于利用所述第一磁盘中的正常数据,校验所述第二磁盘中的数据是否存在异常。115.在一种可能的实施方式中,装置1100还可以包括:重建模块1103,用于根据经过数据校验的第二磁盘中的数据,对所述第一磁盘对应的更换磁盘进行数据重建。116.本实施例中的计算装置1000,对应于上述实施例所示的磁盘阵列故障恢复方法,因此,对于本实施例计算装置1100中各个功能模块的具体实现及其所具有的技术效果,可以参见上述实施例中的相关之处描述,在此不做赘述。117.此外,本技术实施例还提供一种计算装置,如图12所示,装置1200中可以包括通信接口1210、处理器1220。可选的,装置1200中还可以包括存储器1230。其中,存储器1230可以设置于装置1200内部,还可以设置于装置1200外部。示例性地,上述图2所示实施例中各个动作均可以由处理器1220实现。在实现过程中,处理流程的各步骤可以通过处理器1220中的硬件的集成逻辑电路或者软件形式的指令完成图2中执行的方法。为了简洁,在此不再赘述。处理器1220用于实现上述方法所执行的程序代码可以存储在存储器1230中。存储器1230和处理器1220连接,如耦合连接等。118.本技术实施例的一些特征可以由处理器1220执行存储器1230中的程序指令或者软件代码来完成/支持。存储器1230上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图10所示的获取模块1001、恢复模块1002、重建模块1003以及提示模块1004。119.本技术实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的其它装置。比如装置1200中的通信接口1210,示例性地,该其它装置可以是与该装置1200相连的设备,比如,可以是读取磁盘阵列中的数据的用户终端等。120.此外,本技术实施例还提供一种计算装置,如图13所示,装置1300中可以包括通信接口1310、处理器1320。可选的,装置1300中还可以包括存储器1330。其中,存储器1330可以设置于装置1300内部,还可以设置于装置1300外部。示例性地,上述方法实施例中各个动作均可以由处理器1320实现。在实现过程中,处理流程的各步骤可以通过处理器1320中的硬件的集成逻辑电路或者软件形式的指令完成上述方法实施例执行的方法。为了简洁,在此不再赘述。处理器1320用于实现上述方法所执行的程序代码可以存储在存储器1330中。存储器1330和处理器1320连接,如耦合连接等。121.本技术实施例的一些特征可以由处理器1320执行存储器1330中的程序指令或者软件代码来完成/支持。存储器1330上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图11所示的获取模块1101、校验模块1102以及重建模块1103。122.本技术实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的其它装置。比如装置1300中的通信接口1310,示例性地,该其它装置可以是与该装置1300相连的设备,比如,可以是读取磁盘阵列中的数据的用户终端等。123.本技术实施例中涉及的处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。124.本技术实施例中的耦合是装置、模块或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、模块或模块之间的信息交互。125.处理器可能和存储器协同操作。存储器可以是非易失性存储器,比如硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。126.本技术实施例中不限定上述通信接口、处理器以及存储器之间的具体连接介质。比如存储器、处理器以及通信接口之间可以通过总线连接。所述总线可以分为地址总线、数据总线、控制总线等。127.基于以上实施例,本技术实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述实施例提供的磁盘阵列故障恢复方法。所述计算机存储介质可以包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。128.基于以上实施例,本技术实施例还提供了一种芯片,该芯片包括处理器,用于实现上述实施例提供的磁盘阵列故障恢复方法。可选地,所述芯片还包括存储器,所述存储器,用于处理器所执行必要的程序指令和数据。该芯片,可以由芯片构成,也可以包含芯片和其他分立器件。129.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。130.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图或方框图来描述的。应理解可由计算机程序指令实现流程图或方框图中的每一流程或方框、以及流程图或方框图中的流程或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程或方框图一个方框或多个方框中指定的功能的装置。131.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程或方框图一个方框或多个方框中指定的功能。132.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程或方框图一个方框或多个方框中指定的功能的步骤。133.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。134.显然,本领域的技术人员可以对本技术实施例进行各种改动和变型而不脱离本技术实施例的范围。这样,倘若本技术实施例的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1