业务输入输出IO处理方法和装置与流程

文档序号:14719026发布日期:2018-06-17 00:21阅读:310来源:国知局

本发明实施例涉及计算机技术,尤其涉及一种业务输入输出IO处理方法和装置。



背景技术:

在信息技术(InformationTechnology,简称IT)领域,在应用服务器与存储阵列组成的应用环境中,为了避免单点故障造成的数据传输故障,提高数据传输的可靠性,一般采用多条链路相连的多条路径方式,应用服务器中的多路径软件层就负责管理多条路径,多路径软件层的主要功能就是和存储阵列一起配合实现故障切换和恢复、输入输出(Input/Output,简称IO)流量的负载均衡以及磁盘的虚拟化。

当应用服务器与存储阵列之间的一条路径发生故障时,多路径软件层可以把业务IO切换到其他路径,以保证业务不中断,具体的,一链路故障后,多路径软件层的下层驱动层识别故障,做IO重试或悬挂等处理,而此时多路径软件层等待该下层驱动层完成重试或悬挂等处理后返回IO,IO返回给多路径软件层后,多路径软件层根据返回的IO错误码识别路径故障,将IO倒换到其它链路正常的路径,这样的保证数据数据传输的可靠性的方式被称之为业务倒换(failover),业务倒换也是多路径软件层最基本的功能。

然而,随着应用业务要求的不断变化,对业务连续性和实时性提出了更高的要求,对多路径倒换时间要求也越来越高,而使用上述业务倒换方式会存在如下问题,多路径软件层的下层驱动层无法感知是否存在多条路径,该下层驱动层有自己的IO重试及悬挂等机制,这样就会导致当路径发生故障后,业务IO在多路径软件层的下层驱动层被重试或悬挂等,耗时较长,多路径软件层必须等待该下层驱动层将IO返回后,才能将IO倒换到其它链路正常的路径下发,从而导致IO倒换时间长,无法满足实时性要求很高的应用业务。



技术实现要素:

本发明实施例提供一种业务输入输出IO处理方法和装置,以解决现有技术中路径故障时IO倒换时间长,无法满足实时性要求很高的应用业务。

第一方面,本发明实施例提供一种业务输入输出IO处理方法,包括:

多路径软件层接收应用层发送的业务IO;

所述多路径软件层复制所述业务IO,获取第一子IO;

所述多路径软件层将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阈值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO获取第二子IO,并通过第二路径将所述第二子IO发送给所述存储阵列。

结合第一方面,在第一方面的第一种可能的实现方式中,所述复制所述业务IO获取第二子IO,并通过第二路径将所述第二子IO发送给所述存储阵列之前,所述方法还包括:

所述多路径软件层确定所述第一路径发生故障;

所述多路径软件层通过所述第二路径向所述存储阵列发送所述第一路径的快速倒换脏标记FFDF消息,所述第一路径的FFDF消息用于所述存储阵列将所述存储阵列中所述第一路径对应的标记信息置为FFDF;

并且,所述多路径软件层将所述多路径软件层中所述第一路径对应的标记信息置为FFDF。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述多路径软件层确定所述第一路径发生故障,具体包括:

所述多路径软件层获取至少一个倒换目标路径,在所述至少一个倒换目标路径中确定所述第二路径,通过所述第二路径向所述存储阵列发送故障问询消息,所述故障问询消息包括所述第一路径是否发生故障的信息;

接收所述存储阵列返回的第一路径故障消息,根据所述第一路径故障消息确定所述第一路径发生故障;

其中,所述第一路径故障消息为所述存储阵列获取所述第一路径发生故障根据所述故障问询消息生成的。

结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:

所述多路径软件层对所述第一路径进行周期性检测,判断所述第一路径是否恢复正常,若是,则清除所述多路径软件层中所述第一路径对应的FFDF。

结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述清除所述多路径软件层中所述第一路径对应的FFDF,具体包括:

所述多路径软件层判断是否接收到所述存储阵列通过标记信息为FFDF的第一路径返回的所述第一子IO,若是,则所述多路径软件层对所述第一子IO做丢弃处理,并且清除所述多路径软件层中所述第一路径对应的FFDF。

第二方面,本发明实施例提供一种业务输入输出IO处理方法,包括:

存储阵列获取第一路径故障,向多路径软件层返回第一路径故障消息;

所述存储阵列通过第二路径接收所述多路径软件层根据所述第一路径故障消息发送的第一路径的快速倒换脏标记FFDF消息;

所述存储阵列根据所述第一路径的快速倒换脏标记FFDF消息将所述存储阵列中所述第一路径对应的标记信息置为FFDF;

所述存储阵列通过第二路径接收所述多路径软件层发送的第二子IO,所述第二子IO为所述多路径软件层复制业务IO获取第一子IO,将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阀值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO而获取的IO。

结合第二方面,在第二方面的第一种可能的实现方式中,所述存储阵列获取第一路径故障,向多路径软件层返回第一路径故障消息,具体包括:

所述存储阵列接收所述多路径软件层通过所述第二路径发送的故障问询消息,所述故障问询消息包括所述第一路径是否发送故障的信息;

所述存储阵列获取所述第一路径发生故障,根据所述故障问询消息向所述多路径软件层返回第一路径故障消息。

结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述方法还包括:

若所述第一路径恢复正常,则所述存储阵列清除所述存储阵列中所述第一路径对应的FFDF。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述存储阵列清除所述存储阵列中所述第一路径对应的FFDF之前,所述方法还包括:

所述存储阵列接收通过标记信息为FFDF的第一路径发送的第一子IO,并对所述第一子IO进行失败处理;

所述存储阵列将携带有失败处理信息的返回的所述第一子IO通过标记信息为FFDF的第一路径发送给所述多路径软件层。

第三方面,本发明实施例提供一种多路径软件层装置,包括:

接收模块,用于接收应用层发送的业务IO;

获取模块,用于复制所述业务IO,获取第一子IO;

处理模块,用于将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阈值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO获取第二子IO;

发送模块,用于通过第二路径将所述第二子IO发送给所述存储阵列。

结合第三方面,在第三方面的第一种可能的实现方式中,所述处理模块还用于:

确定所述第一路径发生故障;

通过所述第二路径向所述存储阵列发送所述第一路径的快速倒换脏标记FFDF消息,所述第一路径的FFDF消息用于所述存储阵列将所述存储阵列中所述第一路径对应的标记信息置为FFDF;

并且,将所述多路径软件层装置中所述第一路径对应的标记信息置为FFDF。

结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述处理模块用于确定所述第一路径发生故障,具体包括:

获取至少一个倒换目标路径,在所述至少一个倒换目标路径中确定所述第二路径,通过所述第二路径向所述存储阵列发送故障问询消息,所述故障问询消息包括所述第一路径是否发生故障的信息;

接收所述存储阵列返回的第一路径故障消息,根据所述第一路径故障消息确定所述第一路径发生故障;

其中,所述第一路径故障消息为所述存储阵列获取所述第一路径发生故障根据所述故障问询消息生成的。

结合第三方面的第一种或第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理模块还用于:

对所述第一路径进行周期性检测,判断所述第一路径是否恢复正常,若是,则清除所述多路径软件层中所述第一路径对应的FFDF。

结合第三方面的第三种可能的实现方式,在第三方面的第四中可能的实现方式中,所述处理模块用于清除所述多路径软件层中所述第一路径对应的FFDF,具体包括:

判断是否接收到所述存储阵列通过标记信息为FFDF的第一路径返回的所述第一子IO,若是,则所述多路径软件层对所述第一子IO做丢弃处理,并且清除所述多路径软件层中所述第一路径对应的FFDF。

第四方面,本发明实施例提供一种存储阵列,包括:

发送模块,用于获取第一路径故障,向多路径软件层返回第一路径故障消息;

接收模块,用于通过第二路径接收所述多路径软件层根据所述第一路径故障消息发送的第一路径的快速倒换脏标记FFDF消息;

根据所述第一路径的快速倒换脏标记FFDF消息将所述存储阵列中所述第一路径对应的标记信息置为FFDF;

通过第二路径接收所述多路径软件层发送的第二子IO,所述第二子IO为所述多路径软件层复制业务IO获取第一子IO,将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阀值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO而获取的IO。

结合第四方面,在第四方面的第一种可能的实现方式中,所述发送模块,具体用于:

接收所述多路径软件层通过所述第二路径发送的故障问询消息,所述故障问询消息包括所述第一路径是否发送故障的信息;

获取所述第一路径发生故障,根据所述故障问询消息向所述多路径软件层返回第一路径故障消息。

结合第四方面或者第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述接收模块还用于:

若所述第一路径恢复正常,则清除所述存储阵列中所述第一路径对应的FFDF。

结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述接收模块用于清除所述存储阵列中所述第一路径对应的FFDF,之前还用于:

接收通过标记信息为FFDF的第一路径发送的第一子IO,并对所述第一子IO进行失败处理;

将携带有失败处理信息的返回的所述第一子IO通过标记信息为FFDF的第一路径发送给所述多路径软件层。

本发明实施例业务输入输出IO处理方法和装置,通过第一路径向存储阵列发送复制业务IO而获取的第一子IO,在发送该第一子IO的同时,启动定时器,如果该定时器的时间超过倒换时间阀值,则复制业务IO获取第二子IO,并通过第二路径向存储阵列发送该第二子IO,由于多路径软件层在通过第一路径发送第一子IO时同时对存储阵列返回该第一子IO的时间进行监测,在超出该倒换时间阀值时,该多路径软件层将不再等待存储阵列返回该第一子IO或者下层驱动层做重试后返回该第一子IO,而是通过另一条路径发送复制业务IO而获取的第二子IO,并接收存储阵列返回的该第二子IO,从而实现IO倒换时间可控,可以快速倒换到其他路径进行IO的下发,进而可以满足实时性要求较高的应用业务。

附图说明

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

图1为实施本发明业务IO处理方法的各实体设备示意图;

图2为本发明业务IO处理方法实施例一的流程图;

图3为本发明业务IO处理方法实施例二的流程图;

图4为本发明业务IO处理方法实施例三的流程图;

图5为本发明业务IO处理方法实施例四的流程图;

图6为本发明业务IO处理方法实施例五的流程图;

图7为本发明业务IO处理方法实施例六的流程图;

图8为本发明多路径软件层装置实施例一的结构示意图;

图9为本发明存储阵列实施例一的结构示意图;

图10为本发明业务IO处理系统实施例的结构示意图。

具体实施方式

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

本发明各实施例涉及的执行主体分别为应用服务器中的多路径软件层和存储阵列,其中,图1为实施本发明业务IO处理方法的各实体设备示意图,如图1所示,实施本发明业务IO处理方法的实体设备可以为应用服务器或者存储阵列,其中,应用服务器可以包括应用层(Application)、多路径软件层(MultiPathSoftware)和主机总线适配器层(HostBusAdapter,简称HBA)。

图2为本发明业务IO处理方法实施例一的流程图,本实施例的执行主体可以为图1所示的多路径软件层,如图2示,本实施例的方法可以包括:

步骤101、多路径软件层接收应用层发送的业务IO。

具体的,多路径软件层接收应用层发送的业务IO,该业务IO可以是读IO也可以是写IO。

步骤102、所述多路径软件层复制所述业务IO获取第一子IO。

具体的,现有技术中多路径软件层在接收到应用层发送的业务IO后,会将该业务IO直接透传给多路径软件层的下层驱动层,该下层驱动层具体指图1中HBA层,例如该HBA层中包括小型计算机系统接口(SmallComputerSystemInterface,简称SCSI)中间层驱动、串行连接SCSI接口(SerialAttachedSCSI,简称SAS)驱动/网状通道(FibreChannel,简称FC)驱动/网卡驱动,与现有技术不同,本实施的多路径软件层不会直接透传该业务IO,而是复制该业务IO获取第一子IO,该第一子IO与业务IO内容相同。

步骤103、所述多路径软件层将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阈值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO获取第二子IO,并通过第二路径将所述第二子IO发送给所述存储阵列。

其中,存储阵列返回的所述第一子IO具体是指根据多路径软件层发送的第一子IO,该第一子IO携带有读或写请求,将读请求的数据承载到返回的该第一子IO中,或者将请求写入的数据写入存储阵列中,返回该第一子IO,除此之外,返回的该第一子IO中还可以携带存储阵列成功处理等状态信息。

具体的,多路径软件层将第一子IO通过第一路径发送给存储阵列,同时设置一定时器,若该定时器的时间超过该倒换时间阀值,该倒换时间阀值可以根据需求进行灵活设定,还未接收到存储阵列返回的该第一子IO,则说明该第一路径发生故障,则多路径软件层复制业务IO获取第二子IO,该第二子IO与业务IO内容相同,可以理解的该第二子IO与第一子IO内容也是相同的,通过另一条路径即第二路径,该第二路径为有效路径(链路正常),向存储阵列发送该第二子IO,由于第二路径为有效路径,那么在通过第二路径发送该第二子IO后,存储阵列会在正常IO时间内向多路径软件层所在的应用服务器返回该第二子IO。

需要说明的是,倒换时间阀值可以根据需求灵活设定,可以理解的,该倒换时间阀值是接近于正常链路情况下的IO时间,该正常链路情况下的IO时间具体指多路径软件层向存储阵列发送IO后存储阵列返回该IO的总时间,该正常链路情况下的IO时间一般均在毫秒级,而下层驱动层在链路故障时不断进行IO重试及悬挂等操作后返回给多路径软件层所使用的时间一般在秒级,所以本发明实施例中可以将该倒换时间阀值设置为与正常链路情况下的IO时间略微大一些而远小于链路故障时下层驱动层所述耗费的时间,从而利用该倒换时间阀值可以实现快速倒换到其他路径进行IO的下发,进而可以满足实时性要求较高的应用业务。

另外需要说明的是,本实施中所提及的多路径软件层向存储阵列发送均指多路径软件层通过HBA层透传向存储阵列发送。

本实施例,多路径软件层通过第一路径向存储阵列发送复制业务IO而获取的第一子IO,在发送该第一子IO的同时,启动定时器,如果该定时器的时间超过倒换时间阀值,则复制业务IO获取第二子IO,并通过第二路径向存储阵列发送该第二子IO,由于多路径软件层在通过第一路径发送第一子IO时同时对存储阵列返回该第一子IO的时间进行监测,在超出该倒换时间阀值时,该多路径软件层将不再等待存储阵列返回该第一子IO或者下层驱动层做重试后返回该第一子IO,而是通过另一条路径发送复制业务IO而获取的第二子IO,并接收存储阵列返回的该第二子IO,从而实现IO倒换时间可控,可以快速倒换到其他路径进行IO的下发,进而可以满足实时性要求较高的应用业务。

图3为本发明业务IO处理方法实施例二的流程图,如图3所示,本实施例的方法可以包括:

步骤201、多路径软件层接收应用层发送的业务IO。

步骤202、所述多路径软件层复制所述业务IO获取第一子IO。

步骤203、所述多路径软件层将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阈值内,未接收到所述存储阵列返回的所述第一子IO。

具体的,多路径软件层收到应用层发送的业务IO,并不直接透传给下层驱动层后发送给存储阵列,而是复制一个第一子IO,然后将该第一子IO透传给该下层驱动层后发送给存储阵列,同时启动定时器,即对该存储阵列返回该第一子IO的时间进行监测,若该时间超过倒换时间阀值,则多路径软件层启动快速倒换机制,该快速倒换机制具体步骤如下述各步骤。

步骤204、所述多路径软件层获取至少一个倒换目标路径,在所述至少一个倒换目标路径中确定所述第二路径,通过所述第二路径向所述存储阵列发送故障问询消息,所述故障问询消息包括所述第一路径是否发生故障的信息。

具体的,多路径软件层启动快速倒换机制后,首先需要进行步骤204,以计算出一个最优倒换目标路径或者路径集,该倒换目标路径或者路径集均为链路正常的路径,在链路正常的路径中确定一个路径作为第二路径。多路径软件层主动通过该链路正常的路径向存储阵列询问第一路径是否发生故障。

步骤205、所述多路径软件层接收所述存储阵列返回的第一路径故障消息,根据所述第一路径故障消息确定所述第一路径发生故障。

其中,所述第一路径故障消息为所述存储阵列获取所述第一路径发生故障根据所述故障问询消息生成的,具体的,由于存储阵列通过硬件可以实时感知到各链路是否故障,则存储阵列可以准确确定该第一路径是否发生故障,第一路径发生故障时,多路径软件层可以接收到存储阵列根据故障问询消息而返回的第一路径故障消息。

步骤206、所述多路径软件层通过所述第二路径向所述存储阵列发送所述第一路径的快速倒换脏标记FFDF消息,所述第一路径的FFDF消息用于所述存储阵列将所述存储阵列中所述第一路径对应的标记信息置为FFDF;并且,将所述多路径软件层中所述第一路径对应的标记信息置为FFDF。

具体的,经过上述步骤后,多路径软件层可以确认第一路径已经发生故障,为保证数据的一致性,多路径软件层需要通过第二路径向存储阵列发送第一路径的FFDF消息,该第一路径的FFDF消息可以是一个管理IO请求,以请求存储阵列将存储阵列中该第一路径对应的标记信息置为FFDF,同时该多路径软件层同步对该第一路径对应的标记信息置相同的FFDF,具有该FFDF的标记信息的第一路径,多路径软件层不再通过该第一路径进行IO发送,对于从该第一路径返回的数据,多路径软件层会做丢弃处理,而不需要往上层应用层透传,这样便可以保证第一路径被完全隔离,阻隔数据不一致的场景发生,可以理解的,多路径软件层是在存储阵列和多路径软件层自身都设置该第一路径的FFDF标记后,才执行下述步骤207,这样可以有效保护存储阵列中数据的一致性。

由此可以理解,设置第一路径的FFDF标记是为了保证第一路径被完全隔离,以保证第一路径恢复后返回该第一子IO导致数据不一致的场景发生。

步骤207、所述多路径软件层复制所述业务IO获取第二子IO,并通过第二路径将所述第二子IO发送给所述存储阵列。

具体的,对第一路径设置FFDF后,多路径软件层会再创建一个业务IO的一个第二子IO,通过其他好的路径(第二路径)往存储阵列下发,从而可以实现在路径故障时,可以不等待下层驱动层不断进行重试或悬挂操作后返回IO,快速将业务IO倒换到其他好的路径,新复制的业务IO则直接在好的路径上透传,避免了IO耗时长的问题。

进一步的,所述多路径软件层对所述第一路径进行周期性检测,判断所述第一路径是否恢复正常,若是,则清除所述多路径软件层中所述第一路径对应的FFDF。

具体的,多路径软件层需要对第一路径进行周期性检测,以及时判断该第一路径的故障是否排除,如果第一路径故障排除,则多路径软件层向存储阵列发送管理IO,用以清除存储阵列上该第一路径的FFDF,同时,多路径软件层清除自身的该第一路径对应的FFDF,清除FFDF的第一路径恢复正常状态可以完成后续IO的传输。

可选的,所述清除所述多路径软件层中所述第一路径对应的FFDF,具体可以为:所述多路径软件层判断是否接收到所述存储阵列通过标记信息为FFDF的第一路径返回的所述第一子IO,若是,则所述多路径软件层对所述第一子IO做丢弃处理,并且清除所述多路径软件层中所述第一路径对应的FFDF。

可以理解的,对于第一路径故障后又很快恢复的,由于该第一路径有FFDF标记,则多路径软件层对通过恢复后的第一路径返回的第一子IO做丢弃处理;除了这种情况外,还有另一种情况,即第一路径没有恢复正常,在这种情况下,下层驱动层进行不断重试或悬挂操作后,该下层驱动层会向多路径软件层返回该第一子IO,对于这种情况,多路径软件层同样会对该返回的第一子IO做丢弃处理。

具体的,多路径软件层需要检测通过带有FFDF的路径发送给存储阵列的IO是否返回。

上述内容即为本发明的业务IO处理方法,需要说明的是,利用本发明实施例的上述方法可以实现在不等待下层驱动返回IO的情况下,直接倒换业务IO到其他路径,以实现快速倒换,那么必然会存在数据不一致的问题:1)新IO通过新路径下发后,故障的路径恢复,下层驱动层对原IO重试,导致覆写,2)原IO成功返回后,上层应用层时序混乱,IO数据区被覆写。而利用本发明实施例的上述方法可以解决数据不一致的问题,具体对上述方法的各个特征如何解决数据不一致的问题进行逐一分析说明:

首先,在本发明实施例中多路径软件层在收到上层应用层发送的业务IO,不是直接选路透传给下层驱动层,而是复制一个子IO,将子IO选路透传给下层驱动层,通过这样的方式将应用层的业务IO与多路径软件层下层的IO分离,这样多路径软件层才可以在不等待下层驱动层返回该子IO的数据的情况下,重新复制一个业务IO的新子IO下发,这样便可以解决同一业务IO被覆写多次的不一致问题;

其次,多路径软件层对于有FFDF的路径的所有业务IO直接丢弃,这样的设置FFDF之后可以保证故障路径被完全隔离,阻隔了数据不一致的场景发送。

最后,多路径软件层是在存储阵列和多路径软件层自身同时设置故障路径的FFDF后,才重新复制业务IO的一个新子IO,通过好的路径下发,这样可以保护存储阵列数据一致性。

图4为本发明业务IO处理方法实施例三的流程图,如图4所示,本实施的执行主体为存储阵列,本实施例的方法可以包括:

步骤301、存储阵列获取第一路径故障,向多路径软件层返回第一路径故障消息。

步骤302、所述存储阵列通过第二路径接收所述多路径软件层根据所述第一路径故障消息发送的第一路径的快速倒换脏标记FFDF消息。

步骤303、所述存储阵列根据所述第一路径的快速倒换脏标记FFDF消息将所述存储阵列中所述第一路径对应的标记信息置为FFDF。

步骤304、所述存储阵列通过第二路径接收所述多路径软件层发送的第二子IO。

其中,所述第二子IO为所述多路径软件层复制业务IO获取第一子IO,将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阀值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO而获取的IO。并且,通过该第二路径向多路径软件层发送返回的所述第二子IO。该返回的所述第二子IO为存储阵列根据第二子IO中携带的读写请求而返回携带有返回数据或者状态信息的IO。

本实施例,通过接收多路径软件层根据第一路径故障消息发送的第一路径的FFDF消息,根据该FFDF消息将存储阵列中第一路径对应的标记信息置为FFDF,利用该标记信息FFDF可以实现该第一路径的有效隔离,并通过第二路径接收多路径软件层发送的第二子IO,通过第二路径返回所述第二子IO,从而可以实现将故障路径隔离,进而实现在保证数据一致性的前提下,快速快速业务倒换,进而可以满足实时性要求较高的应用业务。

图5为本发明业务IO处理方法实施例四的流程图,如图5所示,本实施例与图3所示实施例的区别在于本实施例的执行主体为存储阵列,本实施例的方法可以包括:

步骤401、存储阵列接收所述多路径软件层通过所述第二路径发送的故障问询消息,所述故障问询消息包括所述第一路径是否发送故障的信息。

步骤402、存储阵列获取所述第一路径发生故障,根据所述故障问询消息向所述多路径软件层返回第一路径故障消息。

步骤403、存储阵列通过所述第二路径接收所述多路径软件层根据所述第一路径故障消息发送的所述第一路径的快速倒换脏标记FFDF消息。

步骤404、存储阵列根据所述第一路径的快速倒换脏标记FFDF消息将所述存储阵列中所述第一路径对应的标记信息置为FFDF。

步骤405、所述存储阵列通过第二路径接收多路径软件层发送的第二子IO。

需要说明的是,存储阵列通过有效路径(第二路径)接收多路径软件层发送的第二子IO,会在正常IO时间范围内向多路径软件层所在的应用服务器返回该第二子IO。

步骤406、若所述第一路径恢复正常,所述存储阵列接收通过标记信息为FFDF的第一路径发送的第一子IO,并对所述第一子IO进行失败处理。

步骤407、所述存储阵列将携带有失败处理信息的返回的所述第一子IO通过标记信息为FFDF的第一路径发送给所述多路径软件层,所述存储阵列清除所述存储阵列中所述第一路径对应的FFDF。

具体的,存储阵列对标记为FFDF的路径发送的第一子IO进行失败处理,并向多路径软件层发送携带有失败处理信息的返回的所述第一子IO,多路径软件层对该返回的第一子IO做丢弃处理,同时存储阵列和多路径软件层都清除该第一路径对应的FFDF。

其中,所述第二子IO为所述多路径软件复制业务IO获取第一子IO,将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阀值内,未接收到所述存储阵列发送的所述第一子IO的返回数据,则复制所述业务IO而获取的IO。

本实施例,通过接收多路径软件层通过第二路径发送的故障问询消息,在获取第一路径发生故障时,向该多路径软件层返回根据该故障问询消息而生成的第一路径故障消息,通过第二路径接收多路径软件层根据该第一路径故障消息发送的第一路径的FFDF消息,将存储阵列中该第一路径对应的标记信息置为FFDF,通过第二路径接收多路径软件层发送的第二子IO,并通过该第二路径向多路径软件层返回该第二子IO,从而实现在保证数据一致性的前提下,快速快速业务倒换,进而可以满足实时性要求较高的应用业务。

需要说明的是,本发明上述实施例可以进行并行处理,具体的,多路径软件层可以在同一时间通过第一路径并行向存储阵列发送多个IO,当第一路径故障时,多路径软件层可以分别复制多个IO,并通过第二路径并行下发,当第一路径恢复正常时,多路径软件层在接收到所有并行通过有FFDF标记的第一路径下发的IO的返回IO时,清除该第一路径的FFDF,即,本发明的上述实施例对于并行业务IO的处理同样适用。

下面采用两个具体的实施例,对图2至图4所示方法实施例的技术方案进行详细说明。

图6为本发明业务IO处理方法实施例五的流程图,如图6所示,本实施包括应用层、多路径软件层和存储阵列,本实施例的方法主要涉及快速倒换多路径处理流程,本实施例的方法可以包括:

S501、应用层向多路径软件层发送业务IO。

其中,该业务IO可以记为MainIO。

S502、多路径软件层复制一个业务IO的子IO通过路径1下发给存储阵列。

其中,S502中的子IO可以计为IO_1。

S503、路径1发生故障。

S504、多路径软件层主动监测到IO_1在下层驱动耗时超过预设置的倒换时间阈值,启动快速倒换机制。

S505、多路径软件层计算选择链路正常的路径。

其中,这里假设选择的好路径为Path2。

S506、多路径软件层通过Path2下发一条SCSI管理命令,向存储阵列确认Path1是否真的出现故障。

S507、存储阵列判断到Path1已经故障,回复给多路径软件层。

S508、多路径软件层确认Path1故障后,通过Path2下发一条SCSI管理命令。

此处的SCSI管理命令用于让存储阵列将Path1设置为FFDF脏标记。

存储阵列对带有FFDF脏标记的路径上的IO都处理为失败

S509、存储阵列设置FFDF成功后,回复给多路径软件层。

S510、多路径软件层同步将Path1设置为FFDF脏标记,之后多路径软件层对Path1下层驱动返回的IO都做丢弃处理。

S512、多路径软件层重新复制MainIO的一个子IO。

其中,S512复制的子IO可以记为IO_2。

S513、多路径软件层通过Path2下发IO_2。

这样应用业务就可以正常运转起来,完成了应用层的业务IO快速从故障路径Path1倒换到其它好的路径Path2,而不必等待故障路径Path1下层驱动返回IO后才能进行倒换。

图7为本发明业务IO处理方法实施例六的流程图,如图7所示,本实施包括应用层、多路径软件层和存储阵列,本实施例是在图6所示实施例的基础上,本实施例的方法主要涉及路径恢复多路径处理流程,本实施例的方法可以包括:

S601、多路径软件层通过路径周期检测,探测到故障路径Path1已经恢复。

其中,恢复具体指该故障路径的物理故障排除。

S602、多路径软件层对标记有FFDF脏标记的路径,在启用路径前,需要检测路径上已经下发的脏IO是否全部返回,返回的脏IO直接丢弃。

在通过标记有FFDF的路径上下发的IO都称之为脏IO(DirtyIO)。

S603、多路径软件层下发一条SCSI管理命令通知存储阵列清除Path1的FFDF脏标记。

具体的,如果所有脏IO都返回后,多路径下发一条SCSI管理命令通知存储阵列清除Path1的FFDF脏标记。

S604、存储阵列清除FFDF脏标记后返回给多路径软件层。

S605、多路径软件层同步清除Path1的FFDF脏标记,并将Path1恢复到正常可用状态。

图8为本发明多路径软件层装置实施例一的结构示意图,如图8所示,本实施例的装置可以包括:接收模块11、获取模块12、处理模块13和发送模块14,其中,接收模块11用于接收应用层发送的业务IO,获取模块12用于复制所述业务IO,获取第一子IO,处理模块13用于将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阈值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO获取第二子IO,发送模块14用于通过第二路径将所述第二子IO发送给所述存储阵列。

本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

可选的,所述处理模块13还用于:确定所述第一路径发生故障;通过所述第二路径向所述存储阵列发送所述第一路径的快速倒换脏标记FFDF消息,所述第一路径的FFDF消息用于所述存储阵列将所述存储阵列中所述第一路径对应的标记信息置为FFDF;并且,将所述多路径软件层装置中所述第一路径对应的标记信息置为FFDF。

进一步的,所述处理模块13用于确定所述第一路径发生故障,具体包括:获取至少一个倒换目标路径,在所述至少一个倒换目标路径中确定所述第二路径,通过所述第二路径向所述存储阵列发送故障问询消息,所述故障问询消息包括所述第一路径是否发生故障的信息;接收所述存储阵列返回的第一路径故障消息,根据所述第一路径故障消息确定所述第一路径发生故障;其中,所述第一路径故障消息为所述存储阵列获取所述第一路径发生故障根据所述故障问询消息生成的。

可选的,所述处理模块13还用于:对所述第一路径进行周期性检测,判断所述第一路径是否恢复正常,若是,则清除所述多路径软件层中所述第一路径对应的FFDF。

进一步的,所述处理模块13用于清除所述多路径软件层中所述第一路径对应的FFDF,具体包括:判断是否接收到所述存储阵列通过标记信息为FFDF的第一路径返回的所述第一子IO,若是,则所述多路径软件层对所述第一子IO做丢弃处理,并且清除所述多路径软件层中所述第一路径对应的FFDF。

本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图9为本发明存储阵列实施例一的结构示意图,如图9所示,本实施例的装置可以包括:发送模块21和接收模块22,其中,该发送模块21用于获取第一路径故障,向多路径软件层返回第一路径故障消息,接收模块22用于通过第二路径接收所述多路径软件层根据所述第一路径故障消息发送的第一路径的快速倒换脏标记FFDF消息;根据所述第一路径的快速倒换脏标记FFDF消息将所述存储阵列中所述第一路径对应的标记信息置为FFDF;通过第二路径接收所述多路径软件层发送的第二子IO,所述第二子IO为所述多路径软件层复制业务IO获取第一子IO,将所述第一子IO通过第一路径发送给存储阵列,若在倒换时间阀值内,未接收到所述存储阵列返回的所述第一子IO,则复制所述业务IO而获取的IO。

本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

可选的,所述发送模块21,具体用于:接收所述多路径软件层通过所述第二路径发送的故障问询消息,所述故障问询消息包括所述第一路径是否发送故障的信息;获取所述第一路径发生故障,根据所述故障问询消息向所述多路径软件层返回第一路径故障消息。

进一步的,所述接收模块22还用于:若所述第一路径恢复正常,则清除所述存储阵列中所述第一路径对应的FFDF。

进一步的,所述接收模块22用于清除所述存储阵列中所述第一路径对应的FFDF,之前还用于:接收通过标记信息为FFDF的第一路径发送的第一子IO,并对所述第一子IO进行失败处理;将携带有失败处理信息的返回的所述第一子IO通过标记信息为FFDF的第一路径发送给所述多路径软件层。

本实施例的装置,可以用于执行图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图10为本发明业务IO处理系统实施例的结构示意图,如图10所示,本实施例的系统包括:应用服务器101和存储阵列102,其中,应用服务器中的多路径软件层模块可以采用图8装置实施例的结构,其对应地,可以执行图2或图3方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述,存储阵列102可以采用图9装置实施例的结构,其对应地,可以执行图4或图5方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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