一种访问异步逻辑单元的方法及系统与流程

文档序号:12905862阅读:261来源:国知局
一种访问异步逻辑单元的方法及系统与流程

本发明涉及存储管理领域,特别涉及一种访问异步逻辑单元的方法及系统。



背景技术:

存储设备是一种承载大量数据的设备,因此会有大量的用户对存储设备进行访问。在一些对存储数据依赖性很高的行业中,一旦存储设备出现故障,会带来巨大的影响。为了解决该问题,通常来讲,很多存储设备的各种组件都做了冗余的考虑,可以消除控制器的单点故障。当控制器出现冗余后,选择哪一个控制器、使用哪一条路径涉及到了如何制定前端控制器多路径策略。

在现有技术中,有aa,ap和alua三种前端控制器策略。其中,aa(symmetricactive/active)对称active模式,所有控制器都处于活动状态,并能同时访问存储逻辑单元。ap(active/passive)模式,只有一个控制器处于active状态,其他控制器处于passive状态。但是,上述两种方法中aa模式实现较为困难,只有极少存储厂商实现aa模式控制;ap模式不能够最大限度地发挥硬件设备的效能,都不是制定前端控制器多路径策略的可选方式。alua(asymmetricactive/active)模式,所有控制器都处于活动状态,只有一个控制器能对目标逻辑单元进行访问,alua是目前比较主流的前端控制策略,但是通过alua进行逻辑单元访问的具体实现方式也不尽相同。

因此,如何可以制定一种前端控制器多路径策略可以在访问逻辑单元时最大限度地发挥硬件设备的效能,是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种访问异步逻辑单元的方法及系统,可以制定一种前端控制器多路径策略可以在访问逻辑单元时最大限度地发挥硬件设备的效能。

为解决上述技术问题,本申请提供一种访问异步逻辑单元的方法及系统,该方法包括:

客户端向存储端查询访问所述逻辑单元的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路径作为新的优先路径,直至反馈切换成功。

可选的,所述系统还包括:

优先路径存储单元,用于将所述优先路径存储至优先路径链表或优先路径搜索树中。

本发明提供了一种访问异步逻辑单元的方法,客户端向存储端查询访问所述逻辑单元的io路径的路径信息;其中,所述路径信息包括所述io路径的优先级信息;根据所述优先级信息,将优先级最高的所述io路径设置为优先路径;通过所述优先路径发送io数据;监控所述io数据的发送状况,并根据所述发送状况对所述优先路径进行修正。

本方法对所有能够访问目标逻辑单元的io路径的路径信息都进行了查询,由于每条路径的优先级不同,优先级越高访问逻辑单元的io路径也就越优化,其中通过主控访问逻辑单元的io路径的优先级最高。对所有路径的优先级进行排序将优先级最高的io路径设置为优先路径,也就是说将通过主控访问逻辑单元的路径设置为优先路径。通过优先路径实现对逻辑单元的访问,可以最大限度地发挥硬件设备的效能。由于每一条io路径的访问状况都不是一成不变的,优先路径的发送状况可能会变得十分恶劣,本方法中对优先路径的发送状况进行监控,如果优先路径出现问题,则对优先路径进行修正,保证优先路径的优先级是各路径中最高的,以实现在访问过程中,一直保持最大限度地发挥硬件设备效能,实现io性能的优化。本申请同时还提供了一种访问异步逻辑单元的系统,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本申请中提供的一种访问异步逻辑单元的方法所处于的硬件环境示意图;

图2为一种典型的主机存储链接拓扑结构图;

图3为本申请实施例所提供的一种访问异步逻辑单元的方法的流程图;

图4为图3所示实施例中客户端与存储端的交互示意图;

图5为本申请实施例所提供的另一种访问异步逻辑单元的方法的流程图;

图6为本申请实施例提供的一种访问异步逻辑单元的系统结构示意图;

图7为本申请实施例提供的另一种访问异步逻辑单元的系统的结构示意图。

具体实施方式

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

本申请所提供的一种访问异步逻辑单元的方法及系统,可以应用于以下硬件场景中:

请参考图1,图1为本申请中提供的一种访问异步逻辑单元的方法所处于的硬件环境示意图,包括客户端101、存储端102。

其中,客户端101也叫主机端,是用户选择优先路径并发送io数据的终端装置,一般安装在普通的客户机上,需要与存储端102互相配合运行。客户端101只要是能够选择优先路径并发送io数据的终端装置即可,此处并不对客户端101做具体的限制。存储端102是客户端101的访问对象,存储端102向客户端101提供各条访问路径的路径信息,以便客户端101选择一条最优的路径进行访问。存储端102下辖多个功能模块,如缓存管理子模块、io转发子模块等。

下面请参见图2,图2为一种典型的主机存储链接拓扑结构图。p1,p2是双控存储控制器sp0上的fc端口,p1和p2构成端口组pg0,1、2、3、4、是以sp0为主控的逻辑卷,这些逻辑卷构成逻辑卷组lg0,同样p3,p4是控制器上的fc端口,p3和p4构成pg1,5、6、7、8构成逻辑卷组lg1。根据图2中的拓扑结构,主机访问逻辑卷1可以有8种路径,分别为:

path1:a-1-p1-lv1;

path2:a-2-p2-lv1;

path3:a-3-p3-lv1;

path4:a-4-p4-lv1;

path5:b-1-p1-lv1;

path6:b-2-p2-lv1;

path7:b-3-p3-lv1;

path8:b-4-p4-lv1;

其中后面4种和前面4中的路径访问具有对称关系,因此可以考虑前面4中,在这4种访问路径(path1-path4)中,path1和path2的性能相同且优于path3和path4。从alua的角度来看,path1和path2的路径端口组状态是优先,而path3和path4的端口组状态是非优先。对于端口组状态出现的优先和非优先,其主要根据是控制器相对与逻辑卷组来说存在主控和非主控。

下面请参见图3、图4,图3为本申请实施例所提供的一种访问异步逻辑单元的方法的流程图;图4为图3所示实施例中客户端与存储端的交互示意图,其中,图4中标出的的客户端多路径模块即客户端,存储端alua模块即存储端。

具体步骤可以包括:

步骤s201:客户端向存储端查询访问所述逻辑单元的io路径的路径信息;其中,所述路径信息包括所述io路径的优先级信息;

其中,客户端先向存储端发送查询指令,例如“inqury”或“reporttargetgroup”。此处并不对查询指令的具体内容进行限定,只要是能够让存储端将io路径的路径信息发送到客户端的查询指令即可。在某种情况下,客户端不是直接向存储端发送查询指令,而是间接地通过第三方装置(如交换机)发送查询指令,此处也不对查询指令是否经过第三方装置转发进行限定。

当存储端接收到查询命令后,则按照客户端要求报告路径状态的命令进行相关处理,如:构建客户端指定的逻辑单元的路径状况信息,包括逻辑单元的主控是哪个端口,该逻辑单元对应的优先端口组各个端口的io情况及繁忙程度,非优先端口组各个端口的io情况及繁忙程度,并将上述路径状况信息发送给客户端,以便客户端进行优先路径的选择。可以理解的是,客户端发送的路况信息中包含优先级信息,优先级信息是上述路况信息中部分信息的共同决定的,如各个端口的io情况及繁忙程度。

当客户端接收到存储端上报的路径信息,对路径信息进行相关处理,如创建相关数据结构,保存相关路径信息(端口组状态和优先信息),形成逻辑单元的io路径链表。可以理解的是,在实际操作中客户端不仅仅会访问一个逻辑单元,而是会访问诸多逻辑单元,存在多次查询的状况,所以最终会形成多个逻辑单元io路径链表。

步骤s202:根据所述优先级信息,将优先级最高的所述io路径设置为优先路径;

其中,每条io路径的优先级信息代表该路径发送io数据性能的优劣,可以理解的是,io路径的优先级越高其发送io数据的性能就越好。因此本步骤将优先级最高的io路径设置为优先路径,也就是说,将发送io数据性能最佳的io路径设置为优先路径。

客户端确定优先路径的步骤是,先遍历所有逻辑单元io路径链表,找出优先级为1的路径,并把该路径设置为优先路径。可以理解的是优先级为1路径是优先级最高的路径,随着优先级的级数增大,优先级的级别逐渐降低。当然,优先级的级别是一个相对的数字,是按照优先级从高到低依次排序得到的,相同优先级不同路径的发送io数据的性能也不尽相同。

可以理解的是,所有逻辑单元的优先路径存储在存储局域网内,当逻辑单元的数量较少时可以存储在优先路径链表中,当逻辑单元数量较多时可以存储在优先路径搜索树中。当然,若存在链表较长且不经常访问的逻辑单元的路径,可以删除该路径,以节省空间,提升工作效率。

当然,此处并不对选择优先路径的方法进行限定,但是要保证客户端尽可能通过一条优先级较高的路径访问异步逻辑单元,也就是说尽可能选择主控制器进行io处理,减少副控制器io转发带来的性能衰减,提高io传输的性能。

步骤s203:通过所述优先路径发送io数据;

其中,由于客户端访问的不只是一个逻辑单元,因此客户端内存储了访问多个逻辑单元的优先路径,在通过优先路径发送io数据之前,需要遍历所有逻辑单元的优先路径,以确定io路径。在确定了io路径后,将多路径软件策略设定为“固定路径策略”,也就是说,以后io数据都由这一优先路径进行发送。可以理解的是,上述“固定路径策略”并不是指io路径一成不变,而是说在优先路径的路径状态不变恶劣的前提下一直使用该io路径,当路径状况出现问题时,可以改变优先路径。

步骤s204:监控所述io数据的发送状况,并根据所述发送状况对所述优先路径进行修正;

其中,由于优先路径上的访问量很大,会造成io路径性能变差,导致客户端访问逻辑单元的路径不是最优的一条路径,因此需要对io数据的发送状况进行监控。可以理解的是,每次监控的时间间隔不宜过大,也不宜过小。时间间隔过大会导致路径切换不及时,时间间隔太小会导致操作繁琐资源浪费,因此每次监控需要在一个适宜的时间间隔,该时间间隔可以通过实验、计算等方式得出,此处并不对时间间隔的长度和获得方式进行限定。

对优先路径进行修正的方法有许多,根据出现故障的端口及其数量来决定。修正的具体过程是:当客户端监测到优先路径的io性能变差,构建设置目标端口组的命令帧进行路径状态设定。存储端接收到设置目标状态命令帧后根据命令帧中的信息对逻辑单元的主、副控进切换。在切换过程中,先暂停该逻辑单元的io访问,对于已经写入缓存的数据,根据原来的主副控设置进行刷写或转发,切换完成后通知客户端新的优先路径。

可以理解的是,主、副控是相对而言的,io路径性能相对较好的端口为主控,相对较差的为副控,当主控出现故障其io路径性能就会变弱,从而使得副控代替原来的主控构成优先路径,也就是使io尽可能由性能较好的控制器进行io处理。

下面请参见图5,图5为本申请实施例所提供的另一种访问异步逻辑单元的方法的流程图。

此实施例是在上述实施例的基础上,对监控的方法与对优先路径的修正进行了相关限定。

具体步骤可以包括:

步骤s301:客户端向存储端查询访问所述逻辑单元的io路径的路径信息;其中,所述路径信息包括所述io路径的优先级信息。

步骤s302:根据所述优先级信息,将优先级最高的所述io路径设置为优先路径。

步骤s303:通过所述优先路径发送io数据。

步骤s304:按预定周期监控所述io数据的发送状况,获得状况信息;

其中,每次监控的时间间隔不宜过大,也不宜过小。时间间隔过大会导致路径切换不及时,时间间隔太小会导致操作繁琐资源浪费,因此每次监控需要在一个适宜的时间间隔。作为一种优选的方案,可以设置按预定周期对发送状况进行监控,以保证io数据通过优先路径进行发送。

步骤s305:根据所述状况信息,判断所述优先路径的io性能是否变差,若是,进入步骤s306;若否,则进入s303。

其中,判断io性能变差并不是优先路径的性能变差一点就判断io性能变差,可以允许优先路径的性能在一定范围内波动,当波动的幅度大于一定的参数时,再判断优先路径的io性能变差。可以理解的是,io性能变差的原因有很多,例如,线路故障、大量客户端都选择该优选路径等。

当然,对于该步骤可能会出现这样的情况:优先路径出现故障后,经过短暂的时间后故障消失,优先路径继续以高性能传输io数据。因此,当优先路径出现短暂的故障就更换路径并没有做到尽可能选择发送io数据性能较好的路径作为优先路径。针对这种特殊情况,可以在发现路径出现一次故障后,缩短监控的周期,对故障进行更为严密的监控。在进行更为严密的监控后,若发现优先路径的故障消除,则不判定优先路径出现故障;若发现优先路径的故障持续存在,则判定优先路径出现故障,需要更换新的优先路径,并将监控的周期恢复正常状态,对新的优先路径进行监控。可以理解的是,实施更加严密的监控的具体监控周期视实际情况而定,此处并不对该周期的具体数值进行限定。

步骤s306:更新所述路径信息,并删除出现io性能变差的优先路径;

其中,当优先路径io性能变差后,说明所有路径中的端口状况都有可能出现问题,也就是说,各条访问异步逻辑单元的路径的状况都有可能发生改变。因此需要重新获取各条路径的路径信息,以便重新选择一条优先路径进行访问。

可以理解的是,优先路径都存储在优先路径链表或优先路径搜索树中,由于原来的优先路径的io性能变差后,就不再需要原来的优先路径,故需要将其删除,以节省存储空间。

步骤s307:根据更新后的所述路径信息,在所述io路径中选择一条优先级最高的所述io路径作为新的优先路径;

其中,为了使io数据传输的路径的性能达到最佳,所以在选择新的优先路径时也尽量选择一条优先级较高的io路径。也就是说,当主控制器出现故障时,选择副控制器组成io路径。此处并不对选择优先路径的方法进行限定,只要是保证客户端尽可能通过一条优先级较高的路径访问异步逻辑单元即可。

步骤s308:判断存储端反馈切换是否成功,若是,则进入步骤s303,若否则进入步骤s309;

其中,检测出io路径的io性能变差后重新选择优先路径进行传输是需要进行切换的,但是切换的路径可能会出现路径较为的情况,因此如果切换成功则可以通过新的优先路径进行访问,如果切换不成功则需要重新选择优先路径。

步骤s309:按照优先级从高到低的顺序依次选择其他所述io路径作为新的优先路径,直至反馈切换成功。

其中,原有的优先级最高的io路径的io性能变差,需要重新选择一条io路径作为新的优先路径。io路径的优先级越高发送io数据的性能就越好,也就是说,要按照优先级降序的顺序选择优先路径。也就是说尽可能在可用路径中选择一条优先级最高的io路径作为优先路径。优先级从高到低的顺序为优先级为1、2、3……的顺序。可以理解的是,新的优先路径的选择规则与原有的优先路径选择规则一致,具体上面的步骤的s202容大致一致,此处不再赘述。

由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

下面请参见图6,图6为本申请提供的一种访问异步逻辑单元的系统结构示意图,该系统可以包括:

查询模块100,用于客户端向存储端查询访问所述逻辑单元的io路径的路径信息;其中,所述路径信息包括所述io路径的优先级信息;

路径选择模块200,用于根据所述优先级信息,将优先级最高的所述io路径设置为优先路径;

io处理模块300,用于通过所述优先路径发送io数据;

监控模块400,用于监控所述io数据的发送状况,并根据所述发送状况对所述优先路径进行修正。

请参阅图7,图7为本申请实施例提供的另一种访问异步逻辑单元的系统的结构示意图。

在上述实施例的基础上,本实施例进一步的,所述监控模块400包括:

监控单元410,用于按预定周期监控所述io数据的发送状况,获得状况信息;

判断单元420,用于根据所述状况信息,判断所述优先路径的io性能是否变差;

修正单元430,用于当所述优先路径的io性能变差,更新所述路径信息,并在可用的所述io路径中重新选择一条所述优先级最高的所述io路径作为新的优先路径。

进一步的,所述修正单元430包括:

删除子单元431,用于删除出现io性能变差的优先路径;

路径重选子单元432,用于根据更新后的所述路径信息,在所述io路径中选择一条优先级最高的所述io路径作为新的优先路径;

切换判断子单元433,用于判断存储端反馈切换是否成功;

路径再选子单元434,用于当存储端反馈切换失败,按照优先级从高到低的顺序依次选择其他所述io路径作为新的优先路径,直至反馈切换成功。

以上对本申请所提供的一种访问异步逻辑单元的方法及系统进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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