一种多路径管理方法和系统的制作方法

文档序号:6508864阅读:316来源:国知局
一种多路径管理方法和系统的制作方法
【专利摘要】本发明公开了一种多路径管理方法和系统,用于管理从主机路由IO到存储系统的多个逻辑卷LUN的路径,其中存储系统的多个LUN被映射到主机上,该方法包括:将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组;以及对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。该方法和系统减少了路径管理的工作量和所需要的资源量。
【专利说明】一种多路径管理方法和系统

【技术领域】
[0001]本发明涉及存储系统,更具体地涉及一种多路径管理方法和系统。

【背景技术】
[0002]存储系统包括RAID阵列、RAID控制器、适配器、存储管理服务器组成。存储管理服务器和其它设备通过网络相连,管理整个存储系统的运行。图1示出了存储系统的结构框图。RAID (Redundant Array of Independent (or Inexpensive)Disks)阵列,是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果(additive effects)提升整个磁盘系统效能。存储系统通过RAID控制器在内部创建不同种类的RAID阵列。存储系统在RAID阵列再创建逻辑卷(logical volume),也称为LUN(logical unit number)。LUN再映射给主机(host),主机会把LUN当成本地硬盘来使用。
[0003]主机与存储系统之间通过光纤交换机(FC Switch)通信。主机端由主机总线适配器HBA (Host Bus Adapter)与光纤交换机相连,HBA在主机端称为主机总线适配器,在光纤交换机端也称为光纤接口卡(Fibre Channel interface card)或光纤适配器(FCadapter),存储系统端也有光纤接口卡或光纤适配器与光纤交换机相连。图2不出了主机、光纤交换机以及存储系统之间的连接关系。在图2中,王机I有4条路径可以访问到存储系统上的LUN,即主机I的HBAl端口到存储系统的光纤适配器端口 1,主机I的HBAl端口到存储系统的光纤适配器端口 2,主机I的HBA2端口到存储系统的光纤适配器端口 1,以及主机I的HBA2端口到存储系统的光纤适配器端口 2。同样,主机2有4条路径可以访问到存储系统上的LUN。
[0004]主机有多条路径通往存储系统,可以在主机上安装多路径软件,来管理主机到存储系统之间的多条路径。多路径软件能够均衡每条路径的输入和输出(10);当发现路径故障时,在路由10的时候规避故障路径;当路径的故障被排除时,主机和存储系统的LUN之间的通信回归到原来的路径等。多路径软件采用的路径选择算法包括:
[0005]Failover:只选择一条路径路由10,只有在该路径故障的情况下才会选择其它路径路由10 ;
[0006]Round Robin:在多条路径上轮流路由10 ;
[0007]Load Balance:选择负载较低的HBA上的路径来路由10 ;如果HBA负载都一样,就随机选择路径。
[0008]当存储系统具有很多个LUN映射到主机上,例如主机有1000个或者更多个LUN映射到该主机上,并且该主机有6条或者更多路径可以访问到存储系统,则多路径软件将会管理6000条甚至多的路径;另外,主机还需要开启1000个多路径选择进程来分别负责1000个LUN上的路径选择。多路径软件将会耗费大量的主机资源(CPU和内存)来管理这些路径,会使得主机的效率大大降低,因此,当前的多路径软件对每个LUN都不推荐配置很多路径。


【发明内容】

[0009]为了解决上述问题,本发明的一个目的是减少路径管理的工作量和多需要的资源量。
[0010]根据本发明的一个方面,提供了一种多路径管理方法,用于管理从主机路由1到存储系统的多个逻辑卷LUN的路径,其中存储系统的多个LUN被映射到主机上,该方法包括:将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组;以及对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。
[0011]据本发明的另一个方面,提供了一种多路径管理系统,用于管理从主机路由1到存储系统的多个逻辑卷LUN的路径,其中存储系统的多个LUN被映射到主机上,该系统包括:分组装置,被配置为将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组;以及路径选择装置,被配置为对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。

【专利附图】

【附图说明】
[0012]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0013]图1示出了存储系统的结构框图;
[0014]图2示出了主机、光纤交换机以及存储系统之间的连接关系;
[0015]图3示出了适于用来实现本发明实施方式的示例性计算机系统/服务器的框图;
[0016]图4示意性示出了多路径管理方法的方法流程图;
[0017]图5不出了获得在主机和存储系统之间具有相同路径的LUN的一种实施方式的具体流程;
[0018]图6示出了使用路径选择算法的【具体实施方式】流程;以及
[0019]图7示出了一种多路径管理系统的结构框图。

【具体实施方式】
[0020]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0021]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0022]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0023]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0024]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0025]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0026]下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种虚拟机,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0027]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruct1nmeans)的制造品(manufacture)。
[0028]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0029]图3示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图3显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0030]如图3所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0031]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0032]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可迁移的和不可迁移的介质。
[0033]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可迁移/不可迁移的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可迁移的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可迁移非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可迁移非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0034]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0035]计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(1)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0036]下面,将参照附图来描述本发明的实施例。
[0037]在本公开的一种实施方式中,提出了一种多路径管理方法,用于管理从主机路由1到存储系统的多个LUN时的路径,其中存储系统的多个LUN被映射到主机上。图4示意性示出了多路径管理方法的方法流程图,根据图4,在步骤S402,将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组;在步骤S403,对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。在一种实施方式中,还包括步骤S401,获得在主机和存储系统之间具有相同路径的LUN。步骤S401之所以是一种优选的实施方式,是因为某些时候,已经通过其它方式得到主机和存储系统之间具有相同路径的LUN,例如在映射LUN到主机时已经直接知道那些LUN属于哪个物理存储器,可以直接分组。
[0038]这样,根据前面的例子,原来主机有1000个LUN映射到该主机,主机有6条访问存储系统的路径,则主机上的多路径软件将会管理6000条路径,对应每个LUN,使用一个路径管理算法线程,则总共需要1000个路径管理算法线程。假设使用本发明方法,LUN1-500来自存储系统A,具有相同的存储路径;LUN501-1000来自存储系统B,也具有相同的存储路径;则在主机端有两个LUN组,LUN1-500被分为第一组,LUN501-1000被分为第二组。将一个LUN组的所有LUN绑定在该组所有LUN都使用的路径上的结果是:第一组LUN有6条路径;第二组LUN也有6条路径,由于路径是基于LUN组的中心管理,即对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径,则在第一组内只需要使用一个路径管理算法的线程管理这6条路径,路径管理线程在第一组内对所有的LUN都使用这6条路径,当有1需要路由到该组内的LUN时,该路径管理线程的线程在上述6条路径中选择一条可用的路径;在第二组亦然,则主机端只有两个路径管理算法的线程,每个线程只要管理6条路径,与现有技术相比,大大减少了路径管理的工作量和需要的资源量。
[0039]具体实施中,在步骤S401中需要获得在主机和存储系统之间具有相同路径的LUN,该步骤可以有多种实施方式,可以由主机直接获得具有相同路径的LUN,也可以由和主机之间耦接的其它设备获得具有相同路径的LUN。下面介绍一种最基本的实施方式。
[0040]图5不出了获得在主机和存储系统之间具有相同路径的LUN的一种实施方式的具体流程,根据图5,在步骤S501,扫描获得主机端映射的至少一部分LUN。该步骤可以通过命令触发(比如AIX操作系统的cfgmgr命令),也可以周期性地运行命令来触发,也可以通过重启主机来触发。在步骤S502,分别通过主机上的各总线适配器HBA端口向光纤交换机发送命令,来查询HBA端口能够访问的存储系统的光纤适配器(FC adapter )FC端口的端口 ID(Port ID);在步骤S503,分别接收光纤交换机返回的各HBA端口能够访问的各FC端口的端口 ID ;如果各HBA端口已经与返回的端口 ID对应的各FC端口建立了连接,在步骤S504,分别通过各HBA端口对能够访问的各FC端口发送命令,获得不同路径上的LUN ;其中,特定的HBA端口 ID到特定FC端口 ID为LUN的一条路径。在这种实施方式中,如果HBA端口没有与返回的端口 ID对应的FC端口建立了连接,则首先需要通过SCSI协议中的PL0GI/PRLI命令建立连接。发送的SCSI命令为INQUIRY和REPORT LUNS0在步骤S505,根据获得的主机端映射的至少一部分LUN以及不同路径上的LUN,获得在主机和存储系统之间具有相同路径的LUN。由于同一个LUN会从所有建立连接的存储系统的FC端口和主机端的HBA端口来上报(即从所有可用的多路径来上报),所以只要记录同一个LUN是从哪些存储端FC端口到哪些主机端HBA端口上报的,即记录下LUN上报的路径,然后在每个上报LUN之间进行上报路径的比对,即可知道哪些LUN拥有同样的路径。
[0041]在另外一种实施方式中,有些存储系统有这样一种功能:即将一个LUN映射给某个主机的时候,指定这个LUN只能通过特定的存储端FC端口来访问。对于不支持该功能的存储来说,主机到存储的多条路径也就是主机能够访问存储上LUN的多条路径,这也意味着主机上对来自同一存储的LUN的访问路径都是一样的。对于支持该功能的存储来说,只要不使用这个功能,那么在主机上来自同一存储的LUN的访问路径也就是一样的。只要满足以上条件,在判断主机上的LUN是否拥有相同路径的时候,只要判断LUN是否来自同一存储就可以了,因为来自同一存储的LUN拥有同样的路径。
[0042]这样就得到了在主机和存储系统之间具有相同路径的LUN,就可以执行步骤S402,将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组,并且对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。
[0043]路径选择算法可以使用现有的任何一种路径选择算法,既可以对不同的LUN组,使用同一种路径选择算法,也可以对不同的LUN组,使用不同的路径选择算法。例如某个LUN组使用Failover算法,只选择一条路径路由10,只有在该路径故障的情况下才会选择其它路径路由10,则该组中所有的LUN选择可用的路径后,都使用一条路径路由10,只有在该路径故障的情况下,才会选择其它路径路由10,则该组的全部LUN都切换到其它路径上。同样也可以使用Round Robin和Load Balance算法选择路径。
[0044]在使用路径选择算法线程管理多路径的过程中,在一种实施方式中,需要对每一条路径维护该路径的路径状态。路径状态可以有3种,一种是可用(Available),也就是该路径没有故障,能够路由10;—种是失败(Fail),也就是该路径有故障,不能路由10;另外一种是部分失败(Partly Fail),也就是该路径对部分LUN不能路由10。可以用不同的参数或者其它形式来表示,例如用O表示路径可用,I表示路径失败,2表示路径部分失败等等。路径状态的默认值是路径可用。
[0045]对于主机,图6示出了使用路径选择算法的【具体实施方式】流程,根据图6,在步骤S601,接收一个路由1到LUN的请求,通过该LUN所在的LUN组使用的路径选择线程在所述相同路径上选择一条路径状态为可用或者部分失败的路径,然后利用选择的路径路由该1到该LUN ;在步骤S602,判断1路由是否成功,如果1路由成功,则该路径的路径状态保持不变,即继续可用,返回步骤S601,继续接收路由1请求。如果1路由失败,在步骤S603,判断该路径是否为该LUN所在LUN组的最后一条路径状态为可用的路径;如果该路径是该LUN所在LUN组的最后一条路径状态为可用的路径,在步骤S604,不置该LUN组上的该路径的路径状态为失败(否则整个LUN组将没有可用路径),而是置该LUN组上的该路径状态为部分失败,同时在该LUN上置标志位,以表示该LUN不能使用该路径来路由10。这时,这个1就不能路由到相应的LUN,主机会收到系统报告的错误。然后返回步骤S601,继续接收路由1的请求。如果这条路径不是该LUN所在LUN组的最后一条路径状态为可用的路径,在步骤S605,置该LUN组上的这条路径的路径状态为失败,从而使LUN组内的所有LUN将不再使用该路径来路由10,以及使用该LUN所在的LUN组使用的路径选择线程在所述相同路径上重新选择另外一条可用路径,返回步骤S602,使用新选择的路径路由1后,继续判断1路由是否成功。
[0046]在一种优选的实施方式中,在步骤S605中在LUN组上的某条路径的路径状态被置为失败之后,继续在步骤S606,检查LUN组内的其它LUN是否能够使用该失败路径来访问。如果LUN组内所有其它LUN都不能够使用该失败路径来访问,则保持LUN组上的该路径的失败状态,返回步骤S602,使用新选择的路径路由1后,继续判断1路由是否成功。一般来说,此类情况为绝大多数,因为路径故障都是由主机端HBA端口故障、存储端PC端口故障、光纤交换机端口故障、或者各端口间光纤线连接故障导致的,这些故障导致的路径故障情况下,会导致某个LUN组内的所有LUN都不能够使用该路径来路由10。但是,如果LUN组内的其它LUN中有些LUN能给通过该失败路径访问,则在步骤S607,将LUN组上的该路径的路径状态置为部分失败,并在LUN组内的所有不能通过该路径访问到的LUN上置标志位,表示这些LUN不能够使用该路径来路由10。同样,此类情况为极少数,只有当存储对于自身内部的有些LUN能够访问,有些LUN不能够访问时才会出现。此时存储本身已经出了较大故障,但是本多路径管理方法能够很好地应对这种故障,使其不影响到其它能够正常访问到的LUN,然后返回步骤S602,使用新选择的路径路由1后,继续判断1路由是否成功。具体的检查的方法可以为:通过该路径向LUN发送SCSI协议中的INQUIRY命令;也可以为:通过该路径向LUN发送SCSI协议中的Mode Sense命令。
[0047]下面给出LUN上设置标志位的两种实现方法:
[0048]1.LUN组内的每个LUN的数据结构内部可以定义一个指针,默认指向空。当需要在LUN上置标志位说明某些路径不能使用时,就临时分配一个字节(8个比特,可以代表8条路径的状态)的内存,并且给这个字节赋值(比如00000001代表不能使用LUN组上的第一条路径,00001001代表不能使用LUN组上的第一和第四条路径),然后让前面提到的指针指向该内存空间。这样这个指针就起到了标志位的作用。如果LUN组上的路径较多,那就分配两个字节或者三个字节的内存来表示。
[0049]2.LUN组内的每个LUN的数据结构内部可以定义一个字节(8个比特,可以代表8条路径的状态;如果LUN组上的路径较多,就定义两个字节或三个字节),默认值为O。当需要在LUN上置标志位说明某些路径不能使用时,就给这个字节内部赋值,比如00000001代表不能使用LUN组上的第一条路径,00001001代表不能使用LUN组上的第一和第四条路径。这样这个字节就起到了标志位的作用。
[0050]上述方法可以选择可用路径路由10,同时也会发现故障路径,即路径状态为失败或者部分失败的路径。故障路径被排除后,还需要回收故障路径。因此,在一种优选的实施方式中,如果某个LUN组有故障路径,可以不定期或周期性地检查LUN组内是否所有的LUN都能够重新使用该路径访问。这里周期性检查的周期可以由用户配置。例如可以I分钟检查一次或半分钟检查一次等;检查的方法可以为:通过该路径向LUN发送SCSI协议中的INQUIRY命令,也可以通过该路径向LUN发送SCSI协议中的Mode Sense命令进行检查。如果LUN组内所有LUN都能通过该路径访问,则置LUN组上该路径的路径状态为可用,如果原来的路径状态为部分失败,还要删除LUN上的不能使用该路径的标志位;如果部分LUN能访问,部分LUN不能访问(这种情况极少),则置LUN组上该路径的路径状态为部分失败,在LUN组内的那些不能访问到的LUN上置标志位,表示这些LUN不能使用这条路径来路由1 ;如果LUN组内所有LUN都不能通过该路径访问,则继续不定期或周期性地检查。这样,修复故障路径后,就能够恢复路径的状态到可用,可以进一步减少1延迟。
[0051]现有技术中,多路径软件对每个LUN上的多路径分开处理。当在某个LUN的某条路径上路由1失败时,则置该路径状态为失败;如果其它LUN上也有相同的路径,那么这些路径还是可用状态。但是在绝大多数情况下,这些LUN上的相同路径实际上是有故障不能用来路由1的,不过多路径软件并不知道,还会使用这些实际上已经故障了的但状态仍是可用的路径来路由10,造成更多的1路由失败,导致1延迟增大以及系统开销的上升。采用本发明中的多路径管理方法,就能很好地规避上述问题。当在某个LUN的某条路径上路由1失败时,会在LUN组上置该路径状态为失败状态(只要该路径不是LUN组的最后一条路径状态为可用的路径),LUN组内所有的LUN都不在使用该路径。
[0052]在同一个发明构思下,本发明的实施方式还公开了一种多路径管理系统,用于管理从主机路由1到存储系统的多个逻辑卷LUN的路径,其中存储系统的多个LUN被映射到主机上,图7示出了一种多路径管理系统的结构框图,根据图7,该系统包括:分组装置702,被配置为将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组;以及路径选择装置703,被配置为对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。在一种优选的实施方式中,该系统还包括:获得装置701,被配置为获得在主机和存储系统之间具有相同路径的LUN。
[0053]在一种实施方式中,上述获得装置包括:扫描装置,被配置为扫描获得主机端映射的至少一部分LUN ;查询装置,被配置为分别通过主机上的各总线适配器HBA端口向光纤交换机发送命令,来查询HBA端口能够访问的存储系统的各光纤适配器FC端口的端口 ID ;接收装置,被配置为分别接收光纤交换机返回的各HBA端口能够访问的各FC端口的端口 ID ;不同路径LUN获得装置,被配置为如果各HBA端口已经与返回的端口 ID对应的各FC端口建立了连接,分别通过各HBA端口对能够访问的各FC端口发送命令,获得不同路径上的LUN,其中,特定的HBA端口 ID到特定FC端口 ID为LUN的一条路径。以及相同路径LUN获得装置,被配置为根据获得的主机端映射的至少一部分LUN以及不同路径上的LUN,获得在主机和存储系统之间具有相同路径的LUN。
[0054]在另一种实施方式中,路径选择装置包括:状态维护装置,被配置为对每一条路径维护该路径的路径状态,其中路径状态有3种:可用一表示该路径没有故障,能够路由1 ;失败一表示该路径有故障,不能路由1 ;以及部分失败一表示该路径对部分LUN不能路由10。
[0055]在又一种实施方式中,路径选择装置进一步被配置为:接收路由1到LUN的请求;通过该LUN所在的LUN组使用的路径选择线程在所述相同路径上选择一条路径状态为可用或者部分失败的路径;利用选择的路径路由该1到该LUN。在进一步的实施方式中,路径选择装置利用选择的路径路由该1到该LUN后进一步配置为:判断1路由是否成功;如果1路由失败,进一步判断该路径是否为该LUN所在LUN组的最后一条路径状态为可用的路径;如果该路径是该LUN所在LUN组的最后一条路径状态为可用的路径,则置该LUN组上的该路径状态为部分失败;并在该LUN上置标志位,表示该LUN不能使用该路径路由10。如果路径选择装置判断如果该路径不是该LUN所在LUN组的最后一条路径状态为可用的路径,则置该LUN组上的该路径的路径状态为失败从而使LUN组内的所有LUN不再使用该路径来路由10;以及应用该LUN所在的LUN组使用的路径选择线程在所述相同路径上重新选择另外一条可用路径。
[0056]在更进一步的实施方式中,路径选择装置置该LUN组上的该路径的路径状态为失败还被进一步配置为:检查LUN组内的其它LUN是否能够使用该失败路径来访问;如果LUN组内所有其它LUN都不能够使用该失败路径来访问,则保持LUN组上的该路径状态为失败;如果LUN组内的其它LUN中有些LUN能给通过该失败路径访问,则将LUN组上的该路径的路径状态置为部分失败,在LUN组内的所有不能通过该路径访问到的LUN上置标志位,表示这些LUN不能够使用该路径来路由10。
[0057]在又一个实施方式中,该系统还包括路径恢复装置,被配置为:对于路径状态为路径失败或者路径部分失败的路径,检查LUN组内是否所有的LUN都能够重新使用该路径访问;如果LUN组内所有LUN都能通过该路径访问,则置LUN组上该路径的路径状态为可用,并且如果原来的路径状态为部分失败,删除LUN上的不能使用该路径的标志位;如果部分LUN能访问,部分LUN不能访问,则置LUN组上该路径的路径状态为部分失败,在LUN组内的那些不能访问到的LUN上置标志位,表示这些LUN不能使用这条路径来路由1 ;以及如果LUN组内所有LUN都不能通过该路径访问,则继续检查。
[0058]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0059]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本【技术领域】的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本【技术领域】的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1.一种多路径管理方法,用于管理从主机路由1到存储系统的多个逻辑卷LUN的路径,其中存储系统的多个LUN被映射到主机上,该方法包括: 将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组;以及 对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。
2.如权利要求1所述的方法,该方法还包括:获得在主机和存储系统之间具有相同路径的LUN。
3.如权利要求2所述的方法,其中获得在主机和存储系统之间具有相同路径的LUN包括: 扫描获得主机端映射的至少一部分LUN ; 分别通过主机上的各总线适配器HBA端口向光纤交换机发送命令,来查询HBA端口能够访问的存储系统的各光纤适配器FC端口的端口 ID ; 分别接收光纤交换机返回的各HBA端口能够访问的各FC端口的端口 ID ; 如果各HBA端口已经与返回的端口 ID对应的各FC端口建立了连接,分别通过各HBA端口对能够访问的各FC端口发送命令,获得不同路径上的LUN,其中,特定的HBA端口 ID到特定FC端口 ID为LUN的一条路径; 根据获得的主机端映射的至少一部分LUN以及不同路径上的LUN,获得在主机和存储系统之间具有相同路径的LUN。
4.如权利要求1-3之一所述的方法,其中对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径包括:对每一条路径维护该路径的路径状态,其中路径状态有3种: 可用一表示该路径没有故障,能够路由1 ; 失败一表示该路径有故障,不能路由1 ; 部分失败一表示该路径对部分LUN不能路由10。
5.如权利要求4所述的方法,其中对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径包括: 接收路由1到LUN的请求; 通过该LUN所在的LUN组使用的路径选择线程在所述相同路径上选择一条状态为可用或者部分失败的路径; 利用选择的路径路由该1到该LUN。
6.如权利要求5所述的方法,其中利用选择的路径路由该1到该LUN后进一步包括: 判断1路由是否成功; 如果1路由失败,进一步判断该路径是否为该LUN所在LUN组的最后一条路径状态为可用的路径; 如果该路径是该LUN所在LUN组的最后一条路径状态为可用的路径,则 置该LUN组上的该路径状态为部分失败; 在该LUN上置标志位,表示该LUN不能使用该路径路由10。
7.如权利要求6所述的方法,其中如果该路径不是该LUN所在LUN组的最后一条路径状态为可用的路径,则 置该LUN组上的该路径的路径状态为失败从而使LUN组内的所有LUN不再使用该路径来路由1 ;以及 应用该LUN所在的LUN组使用的路径选择线程在所述相同路径上重新选择另外一条可用路径。
8.如权利要求7所述的方法,其中所述置该LUN组上的该路径的路径状态为失败还包括: 检查LUN组内的其它LUN是否能够使用该失败路径来访问; 如果LUN组内所有其它LUN都不能够使用该失败路径来访问,则保持LUN组上的该路径状态为失败; 如果LUN组内的其它LUN中有些LUN能给通过该失败路径访问,则将LUN组上的该路径的路径状态置为部分失败,在LUN组内的所有不能通过该路径访问的LUN上置标志位,表示这些LUN不能够使用该路径来路由10。
9.如权利要求4-8之一所述的方法,该方法还包括: 对于路径状态为路径失败或者路径部分失败的路径,检查LUN组内是否所有的LUN都能够重新使用该路径访问; 如果LUN组内所有LUN都能通过该路径访问,则置LUN组上该路径的路径状态为可用,并且如果原来的路径状态为部分失败,删除LUN上的不能使用该路径的标志位; 如果部分LUN能访问,部分LUN不能访问,则置LUN组上该路径的路径状态为部分失败,在LUN组内的那些不能访问的LUN上置标志位,表示这些LUN不能使用这条路径来路由1 ; 如果LUN组内所有LUN都不能通过该路径访问,则继续检查。
10.一种多路径管理系统,用于管理从主机路由1到存储系统的多个逻辑卷LUN的路径,其中存储系统的多个LUN被映射到主机上,该系统包括: 分组装置,被配置为将在主机和存储系统之间具有相同路径的LUN划分为一个LUN组; 路径选择装置,被配置为对一个LUN组中的所有LUN使用一个路径选择线程管理所述相同路径。
11.如权利要求10所述的系统,该系统还包括:获得装置,被配置为获得在主机和存储系统之间具有相同路径的LUN。
12.如权利要求11所述的系统,其中获得装置包括: 扫描装置,被配置为扫描获得主机端映射的至少一部分LUN ; 查询装置,被配置为分别通过主机上的各总线适配器HBA端口向光纤交换机发送命令,来查询HBA端口能够访问的存储系统的各光纤适配器FC端口的端口 ID ; 接收装置,被配置为分别接收光纤交换机返回的各HBA端口能够访问的各FC端口的端Π ID ; 不同路径LUN获得装置,被配置为如果各HBA端口已经与返回的端口 ID对应的各FC端口建立了连接,分别通过各HBA端口对能够访问的各FC端口发送命令,获得不同路径上的LUN,其中,特定的HBA端口 ID到特定FC端口 ID为LUN的一条路径; 相同路径LUN获得装置,被配置为根据获得的主机端映射的至少一部分LUN以及不同路径上的LUN,获得在主机和存储系统之间具有相同路径的LUN。
13.如权利要求10-12之一所述的系统,其中路径选择装置包括:状态维护装置,被配置为对每一条路径维护该路径的路径状态,其中路径状态有3种: 可用一表示该路径没有故障,能够路由1 ; 失败一表示该路径有故障,不能路由1 ; 部分失败一表示该路径对部分LUN不能路由10。
14.如权利要求13所述的系统,其中路径选择装置进一步被配置为: 接收路由1到LUN的请求; 通过该LUN所在的LUN组使用的路径选择线程在所述相同路径上选择一条路径状态为可用或者部分失败的路径; 利用选择的路径路由该1到该LUN。
15.如权利要求14所述的系统,其中路径选择装置利用选择的路径路由该1到该LUN后进一步配置为: 判断1路由是否成功; 如果1路由失败,进一步判断该路径是否为该LUN所在LUN组的最后一条路径状态为可用的路径; 如果该路径是该LUN所在LUN组的最后一条路径状态为可用的路径,则 置该LUN组上的该路径状态为部分失败; 在该LUN上置标志位,表示该LUN不能使用该路径路由10。
16.如权利要求15所述的系统,其中路径选择装置判断如果该路径不是该LUN所在LUN组的最后一条路径状态为可用的路径,则 置该LUN组上的该路径的路径状态为失败从而使LUN组内的所有LUN不再使用该路径来路由1 ;以及 应用该LUN所在的LUN组使用的路径选择线程在所述相同路径上重新选择另外一条可用路径。
17.如权利要求16所述的系统,其中路径选择装置置该LUN组上的该路径的路径状态为失败还被进一步配置为: 检查LUN组内的其它LUN是否能够使用该失败路径来访问; 如果LUN组内所有其它LUN都不能够使用该失败路径来访问,则保持LUN组上的该路径状态为失败; 如果LUN组内的其它LUN中有些LUN能给通过该失败路径访问,则将LUN组上的该路径的路径状态置为部分失败,在LUN组内的所有不能通过该路径访问的LUN上置标志位,表示这些LUN不能够使用该路径来路由10。
18.如权利要求13-17之一所述的系统,该系统还包括路径恢复装置,被配置为: 对于路径状态为路径失败或者路径部分失败的路径,检查LUN组内是否所有的LUN都能够重新使用该路径访问; 如果LUN组内所有LUN都能通过该路径访问,则置LUN组上该路径的路径状态为可用,并且如果原来的路径状态为部分失败,删除LUN上的不能使用该路径的标志位; 如果部分LUN能访问,部分LUN不能访问,则置LUN组上该路径的路径状态为部分失败,在LUN组内的那些不能访问的LUN上置标志位,表示这些LUN不能使用这条路径来路由
10;
如果LUN组内所有LUN都不能通过该路径访问,则继续检查。
【文档编号】G06F3/06GK104423889SQ201310375639
【公开日】2015年3月18日 申请日期:2013年8月26日 优先权日:2013年8月26日
【发明者】张耀东, 付晓飞, 胡家乐, 石鹏, 余志华 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1