一种存储系统的故障处理方法和存储系统与流程

文档序号:18009369发布日期:2019-06-25 23:48阅读:164来源:国知局
一种存储系统的故障处理方法和存储系统与流程

本发明涉及存储技术领域,具体地说,涉及一种存储系统的故障处理方法和存储系统。



背景技术:

存储系统中的硬盘阵列,通过存储控制器统一管理通过接口和协议连接起来的多个硬盘,以提供成熟、可靠、大容量的数据存储服务。

典型的硬盘阵列架构是双控系统,两个控制器通过镜像通道连接在一起,进行数据交换。硬盘通常是双端口盘,两个控制器的后端可以分别连接到每个硬盘上,硬盘对于两个控制器都是可见的。硬盘阵列的两个控制器可以通过pcie芯片与多个硬盘连接在一起,对于每个硬盘而言,都有两条链路分别与两个控制器连接。

在现有技术方案中,控制器通过硬盘管理软件来管理所有硬盘,保存硬盘链路信息,通过检测硬盘状态,及时发现异常并作出诊断,以尽可能地修复异常,保证硬盘阵列数据存储的可靠性。

然而现有技术中的故障处理方案,只对硬盘状态和硬盘故障进行修复,却不能修复链路中故障,导致io处理时延的增大。



技术实现要素:

本发明基于现有技术中只对硬盘状态和硬盘故障进行修复的情况,提供一种修复链路中的连接芯片的故障的方法和存储系统。

第一方面,本申请提供一种存储故障处理方法,应用于存储系统,所述存储系统包括至少一个存储盘和至少两个存储控制器,每个存储控制器包括连接芯片,所述每个控制器通过自身的连接芯片连接到每个存储盘,所述至少两个存储控制器互相连接;

所述方法包括:

第一存储控制器接收第一数据操作请求,通过第一链路的第一分支向所述第一数据读写操作对应的第一存储盘发送第一操作指令,所述第一链路为包含所述第一存储控制器的连接芯片的链路,所述第一链路的第一分支为所述第一链路中的目标端为所述第一存储盘的连接,所述第一存储控制器为所述至少两个存储控制器中的任一存储控制器;

所述第一存储控制器监测到所述第一操作指令执行超时,所述第一存储控制器通过第二链路的第一分支向所述第一存储盘转发所述第一操作指令,所述第二链路为包含所述第二存储控制器的连接芯片的链路,所述第二链路的第一分支为所述第二链路的目标端为所述第一存储盘的连接,所述第二存储控制器为与所述第一存储控制器连接的任一存储控制器;

所述第一存储控制器接收通过所述第二链路的第一分支传输的所述第一操作指令的操作成功响应,根据所述操作成功响应统计操作异常的次数,所述操作异常指示所述第一存储控制器接收到的操作指令通过所述第一链路执行超时,但通过所述第二链路执行成功;

所述第一存储控制器确定在预定时间内所述操作异常的统计次数超过预定阈值,对所述第一链路中的连接芯片进行故障修复。

上述方法,在从第一链路切换到第二链路的情况下,存储控制器可以根据操作指令的实际执行情况来统计操作异常的次数,在操作异常达到预定阈值之后,执行第一链路的修复,从而识别出链路故障并修复链路故障,提高存储系统的稳定性和后续数据操作的执行效率。

对于上述第一方面,一种可能的执行操作异常统计的方式如下:所述第一存储控制器根据统计规则和所述操作成功响应,将操作异常的次数增加一次或者维持原统计的操作异常次数不变,其中,所述统计规则包括:对于所述第一链路的每条分支上出现的操作异常,只统计一次;相应地,所述预定阈值小于或等于所述存储系统中所述存储盘的数量n。此种具体实施方式,将预定阈值设定为存储盘的数量n,也就是将预定阈值设定为第一链路的分支数量,在操作异常统计的时候,第一链路的每条分支上出现的操作异常只统计一次,已经统计过的任意分支上再次出现的操作异常将不做统计,当每条分支上都出现操作异常之后,操作异常的统计次数达到数量n,也就是达到预定阈值,此种情况下,即可判断第一链路出现链路故障。

对于上述第一方面,一种可能的实现方式中:所述方法还包括:所述第一存储控制器确定所述第一链路的第n分支上出现操作异常之后,设置所述第一链路的第n分支的故障标签,所述故障标签指示所述第一链路的第n分支不可用或者所述第一链路的第n分支的级别降低,n为自然数变量,n大于等于1,且小于等于n;所述第一控制器在接收到针对第n存储盘的后续数据操作请求之后,根据所述第一链路的第n分支的故障标签,直接通过所述第二链路的第n分支向所述第n存储盘发送后续操作指令

在第一链路故障没有修复之前,上述实现方式避免了后续操作指令的执行延时或者执行失败。

进一步地,在对所述第一链路中的连接芯片进行故障修复之后,所述方法还包括:删除所述第一链路的每条分支的故障标签,或者设置所述第一链路的每条分支的正常标签,所述正常标签指示所述第一链路状态可用或者所述第一链路的级别正常;则所述第一控制器在接收到针对所述第一存储盘的后续数据操作请求之后,根据所述第一链路故障标签的状态或者第一链路的正常标签,切换回所述第一链路向后续数据操作请求所针对的存储盘发送操作指令。

上述实现方式,使得第一存储控制器在接收到后续要发往存储盘的数据操作请求之后,根据所述第一链路的状态(故障标签已经删除或者第一链路的正常标签),直接选择第一链路进行操作指令的发送,由于第一链路的路径比第二链路更短,因此后续的操作指令将会更快速地得到处理,这样的处理方式避免了后续操作指令通过第二链路执行所引起的时延,提高了操作指令的处理效率。

可选地,在对所述第一链路的连接芯片进行故障修复之后,所述方法还包括:检测所述第一链路中的连接芯片是否修复成功;则在检测到所述第一链路中的连接芯片修复成功之后,删除所述第一链路的故障标签,或者设置所述第一链路的正常标签。

上述方法,在修复第一链路之后,进一步检测第一链路,从而获取到链路的真实状态,保证后续操作执行能够根据真实的链路状态来进行。

可选地,所述方法还包括:在检测到所述第一链路中的连接芯片修复不成功之后,发出所述第一链路中的连接芯片的故障维护通知。

具体地,所述对所述第一链路中的连接芯片进行故障修复,包括:重启所述第一存储控制器的连接芯片;或者,隔离所述第一存储控制器的连接芯片;或者,对所述第一存储控制器的连接芯片上的队列进行修复;或者,对所述第一存储控制器的连接芯片上的端口进行修复。

上述对链路的修复,注重对链路上的连接芯片的修复,从而彻查硬件问题,保证修复效率。

可选地,所述第一存储控制器监测到所述第一操作指令执行超时之后,所述方法还包括:所述第一存储控制器记录第一标记,所述第一标记指示所述第一操作指令通过所述第一链路的第一分支执行超时;所述根据所述操作成功响应统计操作异常的次数之前,还包括:所述第一存储控制器记录第二标记,所述第二标记指示所述第一操作指令通过所述第二链路的第一分支执行成功;确定所述第一操作指令是否同时具备所述第一标记与所述第二标记;如果所述第一操作指令同时具备所述第一标记与所述第二标记,确定出现操作异常。

第二方面,本申请提供一种存储系统,其特征在于,包括:至少一个存储盘和至少两个存储控制器;每个存储控制器包括连接芯片,所述每个控制器通过自身的连接芯片连接到每个存储盘;所述至少两个存储控制器互相连接;

第一存储控制器,用于接收第一数据操作请求,通过第一链路的第一分支向所述数据读写操作对应的第一存储盘发送第一操作指令,在监测到所述第一操作指令执行超时,通过第二链路的第一分支向所述第一存储盘转发所述第一操作指令,所述第一存储控制器为所述至少两个存储控制器中的任一存储控制器,所述第二存储控制器为与所述第一存储控制器连接的任一存储控制器,所述第一链路包含所述第一存储控制器的连接芯片的链路,所述第一链路的第一分支为所述第一链路中的目标端为所述第一存储盘的连接,所述第二链路为包含所述第二存储控制器的连接芯片的链路,所述第二链路的第一分支为所述第二链路的目标端为所述第一存储盘的连接;以及,所述第一存储控制器用于接收通过所述第二链路的第一分支传输的所述第一操作指令的操作成功响应,根据所述操作成功响应统计操作异常的次数,在预定时间内所述操作异常次数超过预定阈值后,对所述第一链路中的连接芯片进行故障修复,所述操作异常指示所述第一存储控制器接收到的操作指令通过所述第一链路执行超时,但通过所述第二链路执行成功。

上述存储系统中的第一存储控制器,还用于执行上述第一方面中第一存储控制器在故障处理方法中执行的相关功能。

第三方面,本申请提供一种存储控制器,包括:

存储处理模块,用于接收第一数据操作请求,通过第一链路的第一分支向所述第一数据读写操作对应的第一存储盘发送第一操作指令,所述第一链路为包含所述第一存储控制器的连接芯片的链路,所述第一链路的第一分支为所述第一链路中的目标端为所述第一存储盘的连接。

链路故障处理模块,用于在监测到所述第一操作指令执行超时后,通过第二链路的第一分支向所述第一存储盘转发所述第一操作指令,所述第二链路为包含所述第二存储控制器的连接芯片的链路,所述第二链路的第一分支为所述第二链路的目标端为所述第一存储盘的连接;以及接收通过所述第二链路的第一分支传输的所述第一操作指令的操作成功响应,根据所述操作成功响应统计操作异常的次数,在预定时间内所述操作异常的统计次数超过预定阈值后,对所述第一链路中的连接芯片进行故障修复,所述操作异常指示所述第一操作指令通过所述第一链路执行超时,但通过所述第二链路执行成功。

可选地,链路故障处理模块,执行操作异常统计具体包括:根据统计规则和所述操作成功响应,将操作异常的次数增加一次或者维持原统计的操作异常次数不变,其中,所述统计规则包括:对于所述第一链路的每条分支上出现的操作异常,只统计一次;相应地,所述预定阈值为所述存储系统中所述存储盘的数量n。

可选地,链路故障处理模块,还用于确定所述第一链路的第n分支上出现操作异常之后,设置所述第一链路的第n分支的故障标签,所述故障标签指示所述第一链路的第n分支不可用或者所述第一链路的第n分支的级别降低,n为自然数变量,n大于等于1,且小于等于n;

则存储处理模块,还用于在接收到针对第n存储盘的后续数据操作请求之后,根据所述第一链路的第n分支的故障标签,直接通过所述第二链路的第n分支向所述第n存储盘发送后续操作指令。

可选地,链路故障处理模块,还用于在对所述第一链路中的连接芯片进行故障修复之后,删除所述第一链路的每条分支的故障标签,或者设置所述第一链路的每条分支的正常标签,所述正常标签指示所述第一链路状态可用或者所述第一链路的级别正常;则存储处理模块后续数据操作请求之后,根据所述第一链路故障标签的状态或者第一链路的正常标签,切换回所述第一链路向所述后续数据操作请求所针对的存储盘发送操作指令。

第四方面,本申请提供一种存储控制器,包括:

存储设备,用于存储指令;以及

至少一台处理器,与所述存储设备耦合;

其中,当所述至少一台处理器执行所述指令时,所述指令致使所述处理器执行上述第一方面的所述的方法。上述本申请各方面提供的方法、存储系统和存储控制器,能够真正解决存储系统中链路故障引起的操作指令的执行时延问题,避免现有技术中切换路径来处理故障的方式所引起的操作虽然成功但效率不高的问题,进一步提高存储系统的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的存储系统的架构示意图;

图2为本申请提供的存储控制器组成的一种示意图;

图3为本申请提供的故障处理方法在存储系统中运行流程示意图;

图4为本申请提供的存储控制器组成的另一种示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

如图1所示,为本发明实施例提供的存储系统的架构图,该存储系统包括两个存储控制器(10,20)和三个存储盘(30、40、50),存储控制器10包括连接芯片60,存储控制器20包括连接芯片70,存储控制器10通过连接芯片60分别与存储盘30、40和50连接,存储控制器20通过连接芯片70分别与存储盘30、40和50连接;存储控制器10与存储控制器20之间还有链路连接,该链路连接方式可以是网络连接也可以是总线直连。存储控制器10有3条链路分别连接到3个存储盘,分别是存储控制器10通过连接芯片60连接到存储盘30的链路01,存储控制器10通过连接芯片60连接到存储盘40的链路02,存储控制器10通过连接芯片60连接到存储盘50的链路03,存储控制器20有3条链路分别连接到3个存储盘,分别是存储控制器20通过连接芯片70连接到存储盘30的链路04,存储控制器20通过连接芯片70连接到存储盘40的链路05,存储控制器20通过连接芯片70连接到存储盘50的链路06。

上述连接芯片(60、70)可以为高速外围组件互连总线(英文全称:peripheralcomponentinterconnectexpress,简称pcie)的芯片,也可以是小型计算机系统接口(英语:smallcomputersysteminterface;简写:scsi)芯片,本发明实施例中所称的连接芯片指存储控制器上用于连接存储盘的连接芯片。

上述图1的存储系统中的存储控制器和存储盘的数量都是举例形式的,本发明实施例提供的存储系统包括至少两个存储控制器以及至少一个存储盘。上述存储控制器与存储盘的硬件形态可以是灵活的,例如可以是存储控制器与存储控制器集中设置在一起形成控制框,多个存储盘集中在一起组成硬盘框这种盘控分离(盘指存储盘,控指存储控制器)的形态,还例如可以是存储控制器与存储盘集中设置在一起的盘控一体的形态。

上述图1中的存储盘可以是传统形式的磁盘,例如硬盘harddisk,也可以是固态存储硬盘(英文全称:solidstatedisk,简称:ssd),还可以是其它存储介质形态形成的存储盘。图1中的存储盘具体使用中,可以组成磁盘阵列(英文:redundantarraysofindependentdisks,简称:raid),通过组成磁盘阵列进行数据的存储,可以提供可靠性更高的存储系统。

上述图1中的存储控制器可以是硬件实体装置,如图2所示,该存储控制器200可以包括处理单元201和通信接口202,处理单元201用于执行存储控制器200的数据存储功能,通信接口202用于与其他设备进行通信交互,其他设备可以是访问主机或者其他的存储系统,例如处理单元201通过通信接口202接收访问主机发送的数据读请求或数据写请求,具体地,通信接口202可以是网络适配卡。可选地,该硬件形式的存储控制器200还可以包括输入输出接口203,输入/输出接口203连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出接口203可以为鼠标、键盘、显示器、或者光驱等。可选地,该硬件形式的存储控制器200还可以包括辅助存储器204,一般也称为外存,辅助存储器204的存储介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘)等。

处理单元201用于执行存储控制器200的数据存储功能,可以有多种具体实现形式,例如处理单元201可以包括处理器2011和内存2012,处理器2011根据内存2012中存储的程序单元执行相关的数据存储处理,处理器2011可以为中央处理器(cpu)或图像处理器(英文:graphicsprocessingunit,gpu),处理器2011可以是单核处理器或多核处理器。处理单元201也可以单独采用内置处理逻辑的逻辑器件来实现,例如现场可编程门阵列(英文全称:fieldprogrammablegatearray,缩写:fpga)或数字信号处理器(英文:digitalsignalprocessor,dsp)等。

上述图1中的存储控制器也可以是由存储控制器的处理逻辑组成,该处理逻辑具体可以通过驻留在内存的程序代码的形式实现,也可以分别采用逻辑电路实现,如图2中内存中的处理逻辑组成示意所示,该存储控制器的处理逻辑可以包括:存储处理逻辑与存储管理逻辑,其中存储处理逻辑用于在接收到访问主机发送的数据读或数据写请求之后,执行相关的数据存储操作;存储管理逻辑用于在存储处理逻辑的执行过程中,对存储控制器、存储盘以及数据的处理过程进行管理,监测设备的状态和/或流程故障并进行相应的故障处理。

在上述图1所示的存储系统中,对于每个存储盘而言,都有两条链路分别与两个存储控制器连接。其中,存储控制器中的存储管理逻辑可以用来管理所有存储盘,例如保存储盘的链路信息,通过检测存储盘的状态,及时发现异常并作出诊断,以尽可能地修复异常,保证数据存储的可靠性。现有技术中存储控制器中的存储管理逻辑进行故障处理方式如下:存储控制器10接收到存储操作请求,确定该存储操作请求需要读取存储盘30,通过自身的连接芯片60向存储盘30发送读指令,存储控制器10在确定发送的读指令处理超时后,确定出现了io超时,于是根据内部预定的故障处理策略将该读指令发送到存储控制器20,以使得存储控制器20通过连接芯片70向存储盘30再次发送读指令,存储控制器20处理成功后返回响应消息给存储控制器10。此种故障处理方式,虽然使得存储操作请求(io请求)最后能够通过更换链路获得成功处理,但是io链路长,时延大,会导致整体对外呈现业务中断现象。现有技术中,在业务出现较大时延或者中断的场景下,例如上述存储控制器10在确定发送到存储盘30的io超时的情况下,还可能对存储盘30进行修复,然而若io超时是因为存储控制器10和存储盘30之间的链路出现故障,则修复存储盘30是无用功。

本发明针对上述技术问题,提供一种存储系统的故障处理方法和装置,该方法和装置用于解决链路故障带来的io时延或业务中断。本发明在存储控制器中增加链路故障的处理模块,以识别因为链路故障(连接芯片故障)所引发的io处理异常,并对链路进行相应的修复,以使得后续的io请求能切换回到原始链路中进行处理,提高处理效率。

本发明实施例中的存储控制器提供的链路故障处理模块,可以是存储管理逻辑的功能增强,也可以是独立于存储管理逻辑的单独的处理逻辑,该链路故障处理模块用于识别链路故障以及处理链路故障的修复。具体的故障处理流程与细节将通过后续实施例具体说明。

在描述具体实施例之前,为了描述方便和清楚,在这里先对本发明实施例中的链路进行称谓上的统一。由于本发明实施例所在的存储系统中的每个存储控制器与每个存储盘之间可能有多条链路,对于每个存储盘而言,每个存储盘都有至少两条链路连接到不同的存储控制器,如图1所示的存储系统,由于存在两个存储控制器(10、20),则每个存储盘连接到每个存储控制器都对应有两条链路,例如存储盘30和存储控制器10之间包括两条链路,第一链路为存储控制器10通过连接芯片60连接到存储盘30的链路01,第二链路为存储控制器10通过存储控制器20的连接芯片70连接到存储盘30的链路04;对于存储盘40,其与存储控制器10之间也包括两条链路,第一链路为存储控制器10通过连接芯片60连接到存储盘40的链路02,第二链路为存储控制器10通过存储控制器20的连接芯片70连接到存储盘40的链路05;可见,每个存储盘和每个存储控制器之间包括n条链路,n=存储系统中存储控制器的数量。为了描述方便,本申请文件中,对于每个存储盘和每个存储控制器之间的链路进行了区分性描述,将包含第一存储控制器的连接芯片的链路称为第一链路(例如图1中包含存储控制器10的连接芯片60的链路01、02、03),将包含第二存储控制器的连接芯片的链路称为第二链路(例如图1中包含存储控制器20的连接芯片70的链路04、05、06),将包含第n存储控制器的连接芯片的链路称为第n链路。根据第一链路连接的目标端的不同来区分链路的分支,例如将第一链路的目标端为存储盘30的连接称为第一链路的第一分支(例如链路01),将第二链路的目标端为存储盘30的连接称为第二链路的第一分支(例如链路04),将第一链路的目标端为存储盘40的连接称为第一链路的第二分支(例如链路02),将第二链路的目标端为存储盘40的连接称为第二链路的第二分支(例如链路05)。

如图3所示,为本发明实施例提供的链路故障处理方法的具体实现过程,需要说明的是,图3所示的存储系统为图1所示存储系统的简化版本,图3中省略了存储控制器上的连接芯片、其它存储盘,以及存储盘与存储控制器的连接关系,主要用于说明流程处理关系。访问主机在步骤301向第一存储控制器发起第一数据操作请求,该第一数据操作请求用于对第一存储盘进行数据访问。在步骤302,第一存储控制器通过第一链路的第一分支向第一存储盘发起第一操作指令,请求对相应的数据进行读操作或者写操作,所述第一链路包含第一存储控制器的连接芯片;在步骤303,第一存储控制器监测到上述第一操作指令执行超时,该第一存储控制器切换链路,通过第一存储控制器与第二存储控制器之间的连接向第二存储控制器转发第一操作指令;在步骤304,第二存储控制器通过自身的连接芯片向第一存储盘发送第一操作指令;步骤303和步骤304,实现了第一存储控制器通过第二链路的第一分支向所述第一存储盘转发所述第一操作指令,所述第二链路包含第二存储控制器的连接芯片;在步骤305,第一存储盘执行完毕操作之后,向第二控制器发送第一操作指令的操作成功响应,在步骤306第二存储控制器向第一存储控制器转发该操作成功响应;在步骤307,第一存储控制器向主机发送访问响应。

在步骤308(步骤308与307实际执行无固定顺序,两者顺序可互换),第一存储控制器在通过第二链路的第一分支接收到第一操作指令的操作成功响应之后,统计操作异常的次数。根据预先确定的统计规则,在确定需要增加操作异常的次数时,可以将操作异常的次数增加一次,所述操作异常指示该第一存储控制器接收到的操作指令通过所述第一链路执行超时,但通过所述第二链路执行成功的操作;具体地,可以有如下两种统计规则,第一统计规则:对于每一链路的每条分支上出现的操作异常,只统计一次,也可以理解为:第一链路的每一分支上出现的首次操作异常,操作异常次数增加一次,第一链路的每一分支上出现的非首次操作异常,不进行统计;第二统计规则:只要出现操作异常,就进行操作异常次数的统计,无论是否该分支上的首次操作异常,即每出现一次操作异常,操作异常的次数即增加一次。在本实施例中,根据第一统计规则,确定所述第一链路的第一分支上出现首次操作异常,操作异常的统计次数由零更新为一。

对于如何识别操作异常,具体地,第一存储控制器可以在步骤303监测到上述第一操作指令执行超时后,记录第一标记,所述第一标记指示所述第一操作指令通过所述第一链路的第一分支执行超时;在步骤306,第一存储控制器接收到所述第二存储控制器转发的操作成功响应消息之后,记录第二标记,所述第二标记指示所述第一操作指令通过所述第二链路的第一分支执行成功;所述第一存储控制器确定第一操作指令是否同时具备第一标记与第二标记,如果所述第一操作指令同时对应有第一标记和第二标记,则可以判断所述第一操作指令的执行过程中出现操作异常。第一存储控制器在确定上述操作异常之后,再根据上述第一统计规则或第二统计规则,将操作异常的次数增加一次或者维持不变。第一存储控制器在步骤308确定第一链路的第一分支出现操作异常之后,还可以设置所述第一链路的第一分支的故障标签,所述故障标签指示所述第一链路的第一分支不可用或者所述第一链路的第一分支的级别降低;在设置所述第一链路的第一分支的故障标签之后,访问主机发起访问第一存储盘的第二数据操作请求,第一存储控制器在接收到后续要发往第一存储盘的第二数据操作请求之后,根据所述第一链路的第一分支的故障标签,可以进行链路的直接切换或者链路的分流,例如不再通过第一链路的第一分支进行后续操作指令的转发,而是直接通过第二链路的第一分支进行后续操作指令的转发,本实施例中,第一存储控制器根据第一链路的第一分支的故障标签,通过第二链路直接转发第二操作指令,并通过第二链路获得第二操作指令的响应,第一存储控制器向访问主机发送第二数据操作请求的响应(如步骤309到步骤314)。在第一链路故障没有修复之前,上述链路的直接切换或者链路的分流的故障处理方式,避免了后续操作指令的执行延时或者执行失败。

接着在下一个环节,访问主机在步骤315向第一存储控制器发起第三数据操作请求,该第三数据操作请求用于对第二存储盘进行数据访问。在步骤316,第一存储控制器通过第一链路的第二分支向第二存储盘发起第三操作指令,请求对相应的数据进行读操作或者写操作;在步骤317,第一存储控制器监测到上述第三操作指令执行超时,该第一存储控制器切换链路,通过第一存储控制器与第二存储控制器之间的连接向第二存储控制器转发第三操作指令;在步骤318,第二存储控制器通过自身的连接芯片向第二存储盘发送第三操作指令;步骤317和步骤318,实现了第一存储控制器通过第二链路的第二分支向所述第二存储盘转发所述第三操作指令,所述第二链路包含第二存储控制器的连接芯片;在步骤319,第二存储盘执行完毕操作之后,向第二控制器发送第三操作指令的操作成功响应,在步骤320第二存储控制器向第一存储控制器转发该第三操作指令的操作成功响应;在步骤321,第一存储控制器向主机发送对应的访问响应。

在步骤322,第一存储控制器在通过第二链路的第二分支接收到第三操作指令的操作成功响应之后,再次统计操作异常的次数。根据预先确定的统计规则,在确定需要增加操作异常的次数时,可以将操作异常的次数增加一次,所述操作异常指示该第一存储控制器接收到的操作指令通过所述第一链路执行超时,但通过所述第二链路执行成功的操作;本实施例中,根据第一统计规则,确定所述第一链路的第二分支上出现首次操作异常,操作异常的统计次数由一更新为二。在此步骤,第一存储控制器还可以进一步进行第一链路的第二分支的故障标签的标记。第一存储控制器在步骤322确定第一链路的第二分支出现操作异常之后,还可以设置所述第一链路的第二分支的故障标签,所述故障标签指示所述第一链路的第二分支不可用或者所述第一链路的第二分支的级别降低;在设置所述第一链路的第二分支的故障标签之后,访问主机发起访问第二存储盘的其它数据操作请求,第一存储控制器在接收到后续要发往第二存储盘的其它数据操作请求之后,根据所述第一链路的第二分支的故障标签,可以进行链路的直接切换或者链路的分流。

进一步,第一存储控制器还可以在步骤301之前,或者在步骤301-步骤322的任意时刻启动定时器来监控一段时间内的操作异常的统计次数,,当操作异常的统计次数在预定时间内达到预定阈值,该操作异常的统计次数还可以指示第一链路出现故障;此时,第一存储控制器可以进行第一链路的故障修复。例如,在步骤323,计时器超时,第一存储控制器确定操作异常的统计次数是否达到预定阈值,在操作异常的统计次数达到预定阈值后,第一存储控制器进行第一链路的故障修复。上述第一统计规则,只针对链路的各分支出现的首次操作异常进行统计,相应地,预定阈值设定为存储盘的数量,也就是链路的分支数量,当确定链路的每条分支都出现操作异常的情况(或者是发往每个存储盘的数据操作指令都出现操作异常),即满足预定阈值的情况,即可认定链路出现故障,此时,针对链路的连接芯片进行修复,即可解决故障。上述第二统计规则,只要链路上出现操作异常,无论是否该分支上出现的首次操作异常,都进行操作异常的统计,此种情况下,设定预定阈值为经验值,也可从一定概率上识别链路故障,并在识别出链路故障后进行链路的连接芯片的修复,即可解决故障。

上述第一统计规则的情况下,预定阈值也可以小于存储盘的数量,例如设定预定阈值为三分之二的存储盘的数量,当操作异常的统计次数达到三分之二的存储盘的数量,即三分之二的链路分支上出现操作异常,也可以识别出链路发生了故障。

另外,上述预定时间可以通过定时器来执行,也可以通过其他的方式来实现。在预定时间未达到时,操作异常的次数已经达到预定阈值,也可以认定出现链路故障。

具体地,由于第一链路中包含第一存储控制器的连接芯片,第一存储控制器对该连接芯片进行修复即可修复第一链路的故障。再具体地,第一存储控制器可以重启所述第一存储控制器的连接芯片;或者,隔离所述第一存储控制器的连接芯片;或者,对所述第一存储控制器的连接芯片上的队列进行修复;或者,对所述第一存储控制器的连接芯片上的端口进行修复。

本发明实施例在上述故障处理之后,还可以进行如下操作:第一存储控制器进行第一链路的故障修复之后,还可以将所述第一链路的故障标签删除,或者是设置所述第一链路的正常标签,所述正常标签指示所述第一链路状态可用或者所述第一链路的级别正常,以使得第一存储控制器在接收到后续要发往第一存储盘的其它数据操作请求之后,根据所述第一链路的状态(故障标签已经删除或者第一链路的正常标签),直接选择第一链路进行操作指令的发送,由于第一链路的路径比第二链路更短,因此后续的操作指令将会更快速地得到处理,这样的处理方式避免了后续操作指令通过第二链路执行所引起的时延,提高了操作指令的处理效率。本发明实施例,真正解决了存储系统中链路故障引起的操作指令的执行时延问题,避免现有技术中切换路径来处理故障的方式所引起的操作虽然成功但效率不高的问题,进一步提高存储系统的效率。

本发明实施例,在对第一链路进行修复之后,还可以进一步检测所述第一链路是否修复成功,在检测到所述第一链路修复成功之后,才进行第一链路的故障标签的删除或者第一链路的正常标签的标记。例如,检测第一链路中的连接芯片是否修复成功,再该连接芯片的状态正常之后,删除第一链路的故障标签或设置第一链路的正常标签。若检测到第一链路修复不成功,例如第一链路中的连接芯片修复不成功,所述第一存储控制器还可以发出所述第一链路的故障维护通知,例如具体地,可以发出第一链路中的连接芯片的故障维护或者更换通知,以彻底解决硬件故障问题。

下面对本发明实施例提供的存储控制器的功能模块进行介绍,如图4所示,存储控制器包括存储处理模块401和链路故障处理模块402,该链路故障处理模402可以是存储管理逻辑的功能增强,也可以是独立于存储管理逻辑的单独的处理逻辑,本领域技术人员可以根据本发明实施例的介绍进行灵活地实现。

存储处理模块401,用于接收第一数据操作请求,通过第一链路的第一分支向所述第一数据读写操作对应的第一存储盘发送第一操作指令,所述第一链路为包含所述第一存储控制器的连接芯片的链路,所述第一链路的第一分支为所述第一链路中的目标端为所述第一存储盘的连接。

链路故障处理模402,用于在监测到所述第一操作指令执行超时后,通过第二链路的第一分支向所述第一存储盘转发所述第一操作指令,所述第二链路为包含所述第二存储控制器的连接芯片的链路,所述第二链路的第一分支为所述第二链路的目标端为所述第一存储盘的连接;以及接收通过所述第二链路的第一分支传输的所述第一操作指令的操作成功响应,根据所述操作成功响应统计操作异常的次数,在预定时间内所述操作异常的统计次数超过预定阈值后,对所述第一链路中的连接芯片进行故障修复,所述操作异常指示所述第一操作指令通过所述第一链路执行超时,但通过所述第二链路执行成功。

链路故障处理模块402,执行操作异常统计具体包括:根据统计规则和所述操作成功响应,将操作异常的次数增加一次或者维持原统计的操作异常次数不变,其中,所述统计规则包括:对于所述第一链路的每条分支上出现的操作异常,只统计一次;相应地,所述预定阈值为所述存储系统中所述存储盘的数量n。

链路故障处理模402,还用于确定所述第一链路的第n分支上出现操作异常之后,设置所述第一链路的第n分支的故障标签,所述故障标签指示所述第一链路的第n分支不可用或者所述第一链路的第n分支的级别降低,n为自然数变量,n大于等于1,且小于等于n;则存储处理模块401在接收到针对第n存储盘的后续数据操作请求之后,根据所述第一链路的第n分支的故障标签,直接通过所述第二链路的第n分支向所述第n存储盘发送后续操作指令。

链路故障处理模402,还用于在对所述第一链路中的连接芯片进行故障修复之后,删除所述第一链路的每条分支的故障标签,或者设置所述第一链路的每条分支的正常标签,所述正常标签指示所述第一链路状态可用或者所述第一链路的级别正常;则存储处理模块后续数据操作请求之后,根据所述第一链路故障标签的状态或者第一链路的正常标签,切换回所述第一链路向所述后续数据操作请求所针对的存储盘发送操作指令。

各功能模块的具体功能,在上述图3所示实施例中亦有相关描述,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

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