专利名称:传输未知scsi i/o指点的制作方法
技术领域:
本发明涉及通过块存储协议访问的网络存储领域,特别是涉及一种通过小型计算 机系统接口(SCSI)输入/输出指点(referral)实现多路径的系统和方法,其中多路径在 启动器系统和块存储群集之间,块存储群集在由多个网络传输协议实现的网络之上。
背景技术:
提供块存储群集与启动器之间的通信的当前可用的系统/方法可能不能提供期 望的性能级别。因此,可能需要提供块存储群集与启动器之间的通信的系统/方法,该系统/方法 目的是提供所述提到问题的当前可获得的解决方案
发明内容
相应的,本发明的一个实施例涉及一种方法,该方法通过小型计算机系统接口输 入/输出(SCSI I/O)指点(referral)提供启动器与通过网络通信连接的存储群集之间的 多路径,所述存储群集包括至少一第一目标设备和一第二目标设备,所述方法包括通过网 路在所述第一目标设备接收来自所述启动器的一输入/输出(I/O);所述I/O包括为数据 的第一部分和数据的第二部分的请求;以及当所述数据的第一部分而不是数据的第二部分 被存储在所述第一目标设备上而所述数据的第二部分被存储在所述第二目标设备上时,启 动所述数据的第一部分到所述启动器的传输并将SCSI I/O指点列表传输给所述启动器, 其中所述指点列表包括用于标识所述第二目标设备的第一端口的第一端口标识符和用于 标识所述第二目标设备的第二端口的第二端口标识符,所述第一端口和第二端口被确定为 用于访问所述数据的第二部分的访问端口,其中所述第一端口标识符和第二端口标识符是 SCSI相关端口标识符。本发明的一个另外的实施例提供了一种具有计算机可执行指令的计算机可读介 质,所述计算机可执行指令用于执行通过小型计算机系统接口输入/输出(SCSI I/O)指点 提供在启动器与通过网络通信连接的存储群集之间的多路径的方法,所述存储群集包括至 少一第一目标设备和一第二目标设备,所述方法包括通过网路在所述第一目标设备接收 来自所述启动器的一输入/输出(I/O);所述I/O包括用于数据的第一部分和数据的第二 部分的请求;以及当所述数据的第一部分而不是所述数据的第二部分被存储在所述第一目 标设备上而所述数据的第二部分被存储在所述第二目标设备上时,启动所述数据的第一部 分到启动器的传输并将SCSI I/O指点列表传输给所述启动器,其中所述指点列表包括用于 标识所述第二目标设备的第一端口的第一端口标识符和用于标识所述第二目标设备的第 二端口的第二端口标识符,所述第一端口和第二端口被确定为用于访问所述数据的第二部 分的访问端口,其中所述第一端口标识符和第二端口标识符是SCSI相关端口标识符。本发明的进一步实施例包括一种具有计算机可执行指令的计算机可读存储介质, 该计算机可执行指令用于执行通过小型计算机系统接口输入输出(SCSI I/O)指点提供在启动器与通过网络通信连接的存储群集之间的多路径的方法,所述存储群集包括至少一第 一目标设备和一第二目标设备,所述方法包括通过网路在所述第一目标设备接收来自所 述启动器的一输入/输出(I/O);所述I/O包括一数据请求;当包括在所述数据请求中的数 据未被存储在所述第一目标设备上而是被存储在所述第二目标设备上时,将一SCSI I/O指 点列表传输给所述启动器,其中所述指点列表包括用于标识所述第二目标设备的第一端口 的第一端口标识符和用于标识所述第二目标设备的第二端口的第二端口标识符,所述第一 端口和第二端口被确定为用于访问所述数据的访问端口 ;通过网络在所述第二目标设备接 收来自所述启动器的一指点1/0,所述指点I/O响应于所述SCSI I/O列表并且所述指点I/ 0通过下列之一请求对所述数据的访问所述启动器指引的所述第一端口和第二端口 ;以 及启动所述数据到所述启动器的传输,其中所述第一端口标识符和第二端口标识符是SCSI 相关端口标识符。应该理解的 是,不管是所述概括的描述还是后面详细的描述都仅仅是示例性和说 明性的,并且不仅限于当前发明要求的内容。包括并组成说明书一部分的附图揭示了本发 明的实施例。同时,说明书和附图用来解释本发明的原理。
通过参考附图,当前发明的众多优点可以被本领域的技术人员更好地理解图1是本发明的一个示例性实施例所述的经由块存储协议可访问的网络存储应 用/系统的方框图;图2是本发明的一个示例性实施例实施/所述的通过指点进行SCSI命令/响应 远程过程调用的示意性方框图;图3是本发明的一个示例性实施例所述的在启动器系统和群集存储阵列之间进 行通信的方法的流程图;图4是本发明示例性实施例所述的一 SCSI指点格式的图表;图5是本发明的进一步的示例性实施例所述的具有到虚拟卷的多个部分的多路 径的网络存储应用的拓扑结构的方框图;图6是本发明进一步的实施例所述的具有多路径的SCSI I/O指点格式图表;图7是本发明可选的进一步的示例性实施例所述的具有多路径的SCSI I/O指点 的格式图表;图8是本发明的进一步示例性实施例所述的具有优先的多路径的SCSI I/O指点 格式图表;图9是说明本发明的示例性实施例所述的一个方法流程图,该方法通过小型计算 机系统接口输入/输出(SCSI I/O)指点在启动器与通过网络通信连接的存储群集之间提 供多路径;图10是说明与本发明的可选的示例性实施例所述的一个方法流程图,该方法通 过小型计算机系统接口输入/输出(SCSI I/O)指点在启动器与通过网络通信连接的存储 群集之间提供多路径;图11是与本发明的进一步实施例所述的具有从多传输协议到虚拟卷的多个部分 的多路径的网络存储应用的拓扑结构的方框图。具体实施方案 参照相关附图中所描述的内容将详细揭示本发明优选实施例的内容。
参考图1,与本发明示意性实施例所述的通过块存储协议可访问的网络存储应用 /系统被展示。例如,所述块存储协议可以是在例如光纤通道、iSCSI、或串联SCSI (SAS)的 网络传输介质上应用的小型计算机系统接口(SCSI)协议。此外本发明可以在其它块存储 协议上应用,例如SCSI RDMA协议(SRP)。本发明的所述系统/方法扩展了块存储协议以允 许数据在组成块存储群集的多个、分立、合作存储系统中的通用逻辑块地址空间上分布。在示例性的实施例中(如图1所示),网络存储实现/系统/存储结构100包括 应用系统/服务器102。所述应用系统102可以运行一个或多个应用程序104。在应用系 统102上运行的应用程序104可以通过/经由/利用存储区域网络(SAN) 110来访问存储 在一个或多个存储系统(106,108)上的存储资源。所述应用程序可以利用所述服务器(不 失一般性)的操作系统114的块存储协议堆栈(例如小型计算机系统接口(SCSI)协议堆 栈)112来访问所述存储资源/网络存储资源。所述服务器102的操作系统114可以直接 运行在服务器硬件上或者运行在不失一般性的虚拟环境的虚拟机中。在本发明的当前实施例中,所述服务器102的SCSI协议堆栈112可以呈现本地 (例如在服务器上)和远程(例如在网络上)的资源给所述应用程序104以作为块存储 设备/逻辑单元/SCSI逻辑单元。每一个逻辑单元/SCSI逻辑单元可以具有一个唯一的逻 辑块地址空间。所述远程存储资源/远程存储设备(106,108)可以被服务器102和/或存 储系统(106,108)的一个或多个SAN适配器116访问,其中所述适配器可以运行与块存储 协议被映射的网络媒介传输协议。例如,SCSI协议可以被映射到各种类型的可实现的网络 传输上。不失一般性的,所述SAN适配器116和它们的传输协议层可以是物理或者虚拟网 络适配器。在本发明的示例性实施例中,存储区域网络110可以被来自任何网络媒介(例如, 光纤通道、以太网、无限频带(InfiniBand)、以及串联SCSI (SAS))和允许端口级寻址的传 输协议来实现。媒介传输层协议可以处理协议数据包在网络结构110上的从终点到终点端 口的所有路由。不失一般性的,所述网络110可以被实现为一个单一结构或多个冗余结构。 网络110可以是由单一网络媒介和传输协议实现的单一网络或由多个网络媒介和传输协 议的组合实现的多个网络。优选地,在应用系统/服务器102上的网络端口能够物理地到 达存储系统(106,108)上的网络端口。在本发明的进一步的实 施例中,存储系统(106,108)可以是网络连接存储设备。 例如,所述存储系统(106,108)可以是通用计算机、专用存储阵列或网络磁盘驱动器,这使 得它们的本地设备在SAN 110上可见。存储系统的存储资源可以通过SAN端口被访问,SAN 端口运行媒介传输协议层。SCSI层可以利用所述SAN端口作为存储端口与存储网络进行 通信。每一个存储系统106,108可以包括一个应用数据保护或者块提取到其物理存储设备 的本地块虚拟化层(118,120)。例如,数据保护例如廉价磁盘冗余阵列(RAID)可以被用在 专用网络存储系统上。每一个存储系统106,108可以进一步包括一个可以访问输出到网络 110的实际连接的物理存储设备126的内部块协议堆栈(122,124)。应用服务器/应用系统/服务器102可获得的存储容量可以通过增加多个存储设备126到单个存储系统(106,108)中或通过增加额外的存储系统(106,108)到存储区域网 络上被扩展。当额外的存储设备被增加到单个存储系统(106,108)上时,存储系统(106, 108)中的本地块虚拟化层(118,120)可以被用来从多个物理磁盘(126)中创建更大的虚拟 块存储设备(128,130)。这可以保留虚拟卷(128,130)的单一逻辑块地址空间,但是,在某 些位置,单个存储系统(106,108)上的物理连接的数量可能被用尽,这样在整体能力的扩 展上提供了限制。当存储系统被增加到存储区域网络时,可用的应用的整体存储容量可以 被增加到超出单一存储系统的限制。不过,由多存储系统(106,108)提供的存储容量可能 需要被合并到一个通用逻辑块地址空间以被应用服务器(102)使用。许多技术被用来从多个网络连接存储系统(106,108)上的存储资源126创建一个 单一名字空间/通用逻辑地址空间。例如,所述技术可以使用不同的网络协议,例如群集文 件系统或对象存储协议。块存储群集聚合可以被增加到所述存储网络110,这样块存储聚合 可以通过多个冗余SAN结构110中的每一个中的群集块虚拟化设备提供。群集块虚拟化设 备可以在网络存储系统和应用系统之间。群集块虚拟化设备可以输入由网络存储系统/存 储系统输出的块存储逻辑单元,以及可以通过创建虚拟卷来创建附加的块虚拟化层。群集 块虚拟化设备然后可以输出作为逻辑单元的虚拟卷到应用系统。应用系统没有看到或访问 存储系统输出的逻辑单元,而是仅看到虚拟卷/群集虚拟卷。群集物理结构发现、虚拟化映 射和管理可以通过群集虚拟化管理器提供。群集虚拟化管理器可以驻留在分离的一对冗余 设备中,该冗余设备在SAN的边缘或其上任何地方。不失一般性的,块存储群集聚合功能可 以被分布在整个群集块虚拟化设备/块群集虚拟化设备中。可选地,块存储群集聚合/块群集聚合可以被增加到应用系统102 (应用系统聚 合)。例如,块群集聚合可通过增加到应用系统的块存储协议堆栈的附加提取层提供。可实 施多个选项以将所述提取层放置到应用系统。块虚拟化层可掩蔽或隐藏存储系统输出的逻 辑单元并可以呈现虚拟卷给块存储协议堆栈中的块虚拟化层之上的层。与块存储群集聚合 被增加到存储区域网络(网络聚合)不同的是,当增加块存储群集聚合到应用系统时,存储 系统输出的逻辑单元对应用系统/服务器是可访问的。块虚拟化层可以隐藏从运行在应用 系统/服务器上的应用到所述逻辑单元的访问。与网络聚合相似,当块群集聚合被增加到 应用系统时,群集虚拟化管理器功能可以出现以发现位于群集中的存储资源和跨越应用服 务器分布虚拟化映射。这种管理方式的一个变形可以包括在每一服务器中具有独立的群集 虚拟化配置,这可以防止虚拟卷被应用服务器共享。可选地,为提供虚拟卷的共享,一个群 集范围的虚拟机管理器可能被需要。在本发明示例的实施例中(如图1所示),块存储群集聚合可以被增加到存储系 统(106,108)(存储系统聚合)上。块群集聚合可以通过增加到一个或两个存储系统(106, 108)的块协议堆栈(122,124)的群集块虚拟化层132来提供。群集块虚拟化层132可以将 本地或远程存储系统上的存储设备126组成虚拟卷(128,130)。群集中每一存储系统(106, 108)上的存储设备126对一个或多个其它存储系统是可检测/可见的(例如,存储系统106 的存储设备对存储系统108是可见的并且存储系统108的存储设备对存储系统106是可见 的),以允许通过群集虚拟化层132的虚拟卷(128,130)的创建。在多个存储系统聚合的 应用中,只有虚拟卷(128,130)通过群集块虚拟化层132输出到存储区域网络上的应用系 统102。在一些网络存储应用中,从一个或多个不同存储系统请求数据的到达一个存储系统(106或108)的输入/输出(I/O)请求被发送到正确的存储系统以满足所述I/O请求。许 多技术被应用以实现I/O的重新定向,例如代理I/O和命令转发。正如上面描述的其它块 存储群集技术,在存储系统聚合中,一个单独群集虚拟化管理功能134可能被需要在存储 结构中的至少一个存储系统(106,108)中存在。不失一般性的,所述群集虚拟化管理器功 能134可以被分布到群集中的存储系统(106,108)上,因此提供一个低成本低侵袭性的存 储管理功能的应用。为创建块存储群集的所述方法/应用提供很多有用的特性。例如,块存储群集可 以被扩展到多个存储系统(106,108)上。同时,应用系统102可以访问来自群集中的任何 存储系统的数据。更进一步,虚拟卷(128,130)可以在所有存储节点/存储系统(106,108) 上提供通用块地址空间。然而,每一个所述方法/应用(网络聚合,存储系统聚合,应用系 统聚合)都具有不同的缺点。在网络110 (网络聚合)中的存储聚合可能具有如下缺点,它可能需要网络110中 的额外的特殊目的组件。所述特殊目的组件可能增加网络结构的成本并且可能在从单一存 储系统转移到多系统群集时强加一高成本。此外,当网络结构被创建以最小化总成本时,如 果存储聚合设备并没有包括在该网络结构中,所述网络可能需要重新布置以将所述聚合设 备和群集虚拟化管理器包括进去。更进一步,从单一存储系统转移到存储群集需要整个应 用系统的重配置以利用虚拟卷而不是利用来自存储系统的原始卷。在应用服务器102(应用系统聚合)上的存储聚合可能具有如下缺点,它可能需要 额外的组件增加到服务器块存储堆栈112。所述组件可能需要掩蔽所有非虚拟逻辑单元以 防止运行在系统上的应用程序104的访问。如果对所有访问群集的操作系统114掩蔽不彻 底,由于对非虚拟逻辑单元的不规则访问,可能发生数据中断或丢失。应用系统中的群集块 虚拟化层可能也需要为应用程序提供块虚拟化。唯一的块虚拟化组件可能为每一个操作系 统所需要。这些唯一的群集块虚拟化组件可以被强制使用系统存储堆栈中的非正式接口来 完成它们的功能,这样可能产生需要被维持和验证的配置的展开。此外,群集虚拟化管理器 可能依然需要与应用系统分离的外部系统。如果群集虚拟化管理器放置在应用系统上,它 可能会消耗可以被应用程序使用的资源,所述群集虚拟化管理器可能依然被需要与所有其 它位于结构中的应用系统通信。不论存储虚拟化管理器的位置在哪里,可能需要独立的协 议以分布和升级由群集虚拟化管理器维持并由应用系统中群集块虚拟化层使用的块存储 映射。存储系统(106,108)(存储系统聚合)中的存储聚合可以消除额外网络组件的成 本。存储系统聚合可以进一步消除存储堆栈112中的额外组件的应用服务器102上的影响 并且也可以消除运行在应用服务器102上的存储虚拟化管理器的影响。存储系统聚合可以 允许所有为块存储群集/块存储聚类需要的组件被定位在存储系统(106,108)上。当I/O 请求被发送到错误的存储系统时,存储系统聚合可以要求I/O请求被重定向。如前所述,代 理I/O和/或命令转发可以用来重定向,然而,所述两者具有它们的缺点。当代理I/O被使 用时,这可能会增加一个额外的存储和转发延迟来通过接收原始的错误定向的请求的存储 系统路由数据。在一个私有存储互连群集上的命令转发可能会增加额外成本到存储群集并 且会限制群集的最大容量。本发明通过提供用于网络存储应用/系统使用的SCSI指点技术/方法克服了所述提到的块存储群集技术的缺点,例如所述应用系统/系统如图1所示。本发明的所述技 术/方法被设计成允许创建块存储群集,而不需要在应用系统块存储堆栈112中增加非标 准的组件或者在存储网络110中增加额外的专用群集设备。参考图3,表示本发明示例性实施例所述的通过网络存储实现(例如,在启动器系 统/启动器和群集存储阵列/块存储群集阵列之间通信的方法)的为数据传输的方法。例 如,所述方法可以为块存储聚类实施利用如下所述(如图2和图3所示)的存储协议命令 和应答顺序(例如,SCSI命令/应答远程过程调用模型)的技术。在本发明的当前实施例 中,方法300包括在第一存储系统中接收一个指令的步骤302,其中第一存储系统包括在群 集存储阵列的多个存储系统中。例如,块存储群集可以包括各通信地耦合/包括物理存储 设备126的两个或多个存储系统(106,108)。此外,所述命令可以通过存储区域网络110被 一个启动器/启动器系统/主机/服务器102传输到第一存储系统106 (例如,目标系统/ 目标)。在示例性实施例中,所述命令可以是一 I/O请求,例如数据请求(例如,读请求)。 在进一步的实施例中,所述目标设备可以是群集阵列中的任何存储系统并且所述命令可以 利用任何端口(例如,主端口,如图2所示)被发送到群集/群集存储阵列中的任何预期的 目标存储系统上。更进一步,所述命令可以是一 SCSI命令,所述启动器/启动器系统102 可以是一 SCSI启动器,并且所述目标设备(例如,第一存储系统106)可以是一 SCSI目标 设备。在其它实施例中,当命令通过存储区域网络110/网络传输发送时,所述命令可以 被传送到已建立的启动器和目标关联上(例如,一 Ι_τ连接(Nexus))。在SCSI协议中,所 述位于启动器和目标设备之间I_T连接可以被建立在启动器上的SCSI端口(例如,服务器 /应用系统102的SCSI端口)和目标设备上的SCSI端口(例如,第一存储系统106的SCSI 端口)之间。具有多个端口的目标设备可以为每一端口提供唯一的SCSI端口标识符。具 有多个存储系统的块存储群集(例如,块存储群集的目标设备)可以为群集中所有存储系 统上的每一端口提供唯一的端口标识符。SCSI端口标识符可以是被定义在SCSI结构模型 说明中的SCSI相关端口标识符。在另一个实施例中,每一 SCSI命令可以指定数据根据在 所述卷的逻辑块地址空间中的所述数据的起始地址和长度被传输。在一个示例性实施例中,方法300进一步包括通过存储区域网络将在数据请求中 请求的数据传输到启动器系统的步骤304,其中所述数据请求被存储在第一存储系统中。在 本发明的当前实施例中,被存储/驻留在接收指令的存储系统(例如,目标存储系统)中的 被请求数据的任何部分可以被移动/传输到启动器中。例如,通过在所述提到/相同I_T 连接(例如,存储在第一存储系统106上的数据可以被传输到应用系统/启动器系统102 上)上的一系列的SCSI数据传输步骤,数据可以在目标设备106和启动器102之间被移 动。在本发明的当前实施例中,数据可以根据特定SCSI命令的要求在启动器和目标设备之 间的一个或者两个方向之间流动。在本发明的进一步实施例中,方法300可以进一步的包括当数据请求中被请求的 数据的一部分没有被存储/没有驻留在第一存储系统而是被存储/驻留在包括多个存储系 统的存储群集/群集存储阵列306的第二存储系统中时,将一指点应答从第一存储系统传 输到启动器系统的步骤。在示例性的实施例中,指点应答可以提供一不是所有的在原始数 据请求中被请求的数据都已经被传输的指点到启动器,所述指点应答可以为定向启动器系统到第二存储系统提供信息,和/或所述指点应答可以指示/提供群集的一个或多个其它 存储系统(例如,第二存储系统108)存储所述部分/剩余部分的数据的指示符到启动器系 统。例如,指点应答可以包括到所述群集的一个或多个其它存储系统/群集节点(例如,第 二存储系统108)的指点列表,其中被请求数据的剩余部分(例如,在步骤302接收的原始 数据请求的被请求数据的剩余部分)存储/驻留在所述存储系统/群集节点中。如上所述,为每一额外的群集节点/存储系统有一指点,其中为满足原始的数据 请求数据必须通过启动器来得到。在本发明的当前实施例中,提交给启动器的指点列表的 每一指点可以为每一存储系统/节点包括如下的信息(如图4所示)端口标识符(例如, 与包括至少一些在原始数据请求中的数据的剩余部分的群集节点/存储系统相关联的端 口),偏移量(例如,在其关联的存储系统/存储节点上第一比特数据的逻辑块地址);以及 长度(例如,为所述指点被传输的数据量)。端口标识符可以遵照定义在SCSI结构模型说 明中的SCSI相关端口标识符的定义。为完成一个指点需要的其它信息,例如容量、逻辑单 元以及目标设备从生成SCSI指点的命令的上下文是可得到的。 在本发明的示例性实施例中,方法300进一步包括在第二存储系统308接收一第 二命令。例如,为了响应接收指点列表,启动器102可以将所述第二命令传输(例如,通过 存储区域网络)到群集的其它存储系统中的一个,其中其它存储系统在指点列表中被标识 为存储所述数据剩余部分的至少一部分。例如,启动器可以将第二命令(例如,可以基于指 点应答)传输到被标识在指点列表中的一端口上,所述端口与所述第二系统关联。在进一 步的实施例中,块存储协议启动器102可以发送独立的命令到群集的所有其它存储系统, 其中所有其它存储系统通过使用标识在指点列表中的端口(例如,二级端口)来保留在原 始请求中被请求的数据。在本发明的进一步实施例中,方法300进一步包括通过存储区域网络310将所 述被请求数据的被存储部分从第二存储系统传输到启动器系统的步骤310。例如,启动器 102,如上所述,可以发送指令到群集中的所有其它存储系统(例如,存储系统108),其中所 有其它存储系统通过使用被标识在指点列表中的端口(例如,二级端口)以保留原始请求 中被请求的数据,所述存储系统将它们的本地数据连同指示本地数据已被传送的状态发回 到启动器。当响应于基于所述指点发布的命令的所有数据的传输已经被完成之后,块存储 协议可以通过返回其调用者来完成操作。在本发明的可选实施例中,其中所有在原始数据请求中被请求的数据(步骤302) 已经被第一存储系统存储并被传输,方法300进一步包括将一个传输完成的应答从第一存 储系统传输到启动器系统的步骤312,所述传输完成应答指点所有数据请求中被请求的数 据已经被传输。在进一步的实施例中,当响应于一指令的所有数据已经被传输或如果一错 误条件发生在命令或数据传输中,SCSI目标设备可以通过返回/发送包括命令状态的SCSI 应答到启动器来完成操作(方法步骤314)。为支持本发明,存储阵列群集技术可以被要求来提供许多特性。例如,块存储协议 目标设备可以被要求跨越群集中的所有存储系统(106,108)分布。此外,群集中所有存储 系统上的所有端口被要求各具有唯一端口标识符。所述端口标识符可以被要求是定义在 SCSI结构模型说明中的SCSI相关端口标识符。更进一步,虚拟卷的逻辑块地址空间可以 被要求是跨越虚拟卷存在的所有存储系统的公用空间。此外,可以被要求在所有存储系统(106,108)上的群集块虚拟化功能(134)应该能够确定群集中哪个存储系统保留其地址范 围的数据在虚拟卷(128,130)内。如上所讨论的,本发明的方法可以被实现在块存储群集中,所述方法提供在存储 系统(106,108)上的块虚拟化。在示例性实施例中,本发明的系统/方法不是利用命令转 发或者代理1/0,而是通过完成具有包含SCSI检查条件和SCSI读出数据中的指点列表的状 态信息的其本地数据传输来实现群集块虚拟化(132,134),其指示数据驻留在其它群集节
点ο 在进一步实施例中,SCSI启动器102可以被配置用以检测一新的检查条件,为每 一指点发出新的SCSI命令,并且追踪何时所有指点被完成。启动器102可以被进一步被配 置用以累积数据,所述数据通过跨越多个启动器_目标设备连接的指点重新得到。本发明的系统/方法在当前块存储群集方法上提供了很多优点。首先,为了支持 群集在存储结构中不需要额外的硬件。在主机代理和存储系统常驻块虚拟化的情况下,没 有硬件需要被增加到SAN 110上。此外,目标设备和逻辑单元的发现对启动器102可以是 不变的,在存取群集的所有节点上所述目标设备可见,并且存储群集的所有节点被配置用 以判断通过目标设备中的哪个逻辑单元可用。更进一步,不需要从启动器中隐藏非虚拟卷 并且只有虚拟卷被从群集中的存储系统中输出。此外,启动器不需要保留关于群集中数据 分布的信息。本发明的启动器/主机102被配置用以确定数据驻留在群集中地方。数据可 以被从群集中任何节点上的任何端口所请求。所述指点定向启动器到保留数据的群集节点 上。此外,存储系统(106,108)上的数据可以在不通知启动器的情况下被移动,因为,如果 启动器试图通过一个错误群集节点上的端口访问数据的话,启动器仅需要简单的被重定向 (通过指点)到包括数据的群集节点上的端口。更进一步的,本发明的方法可以被应用在任 何数量的存储设备上,与SAN 110上的限制增加到SAN上的硬件容量存储虚拟化形成对照。 此外,本发明的方法可以被应用到群集节点上具有多个端口的存储群集。如果数据通过多 于一个路径是可访问的,那么指点仅需要包括单一端口,通过该端口数据可以被访问。在标 准存储协议中实现本发明可具有如下优势,启动器上的块存储协议堆栈中的不需要独特的 软件安装。为提供SCSI I/O指点的所述系统/方法可以允许启动器访问逻辑单元号(LUNs) 上的数据,其中逻辑单元号跨越多个目标设备传播。目标设备可以是磁盘、存储阵列、磁带 库、或任何其它类型的存储设备。在本发明的进一步示例性实施例中,我们可以提供一种系 统/方法,其允许启动器通过多于一个目标端口来访问虚拟卷的一部分(例如,所述部分 是数据片段,所述部分可以由物理盘、虚拟盘或者任何其它目标设备上的可用数据片段组 成)。例如,如果具有访问数据片段的目标设备具有多于一个连接到存储区域网络(SAN)的 目标端口,所述情况就可能发生。在这种情况下,本发明的系统/方法可以提供允许目标设 备(可以利用所述SCSI I/O指点的方法)通知启动器关于数据片段可用的多个路径的每 一个。参考图5,表示本发明示例性实施例所述的通过SCSI I/O指点配置为提供多路径 的系统(例如拓扑结构)。系统500可以包括启动器502(例如,应用服务器)。所述启动 器502可以被配置用以通过存储区域网络504通信与多个目标/目标设备/存储设备通信 连接。在本发明的当前实施例中,系统500可以进一步包括多个数据片段(514,516,518,
12520),所述数据片段组成/是部分的/被包括在虚拟卷522。启动器502可以被配置用以通 过目标设备的一个或多个端口(如图5中所示端口 0到7)访问虚拟卷522的一部分(例 如,所述部分是数据片段514,516,518,520的一个或多个)。例如,利用所述的SCSI I/O指 点的方法的启动器502可以具有到组成虚拟卷522的数据片段的每一个的多个路径。在本发明的一个示例性实施例中,为了通知启动器502数据片段(514,516,518或 520)通过多个目标端口可用,目标设备(506,508,510,512)可以返回列出不同端口的多个 SCSI I/O指点,但是其相关的不同端口 /指示的所述不同端口与相同数据片段相关联。所 述数据片段可以在SCSI指点列表中通过它们的数据偏移量和数据长度唯一地标识。例如, 启动器502可以通过目标设备506的端口 0或端口 1联系/发送一 I/O到目标设备中的一 个(例如,目标设备506)来请求数据,所述数据跨越数据片段(514,516,518,520)传播并 通过多个端口可访问。例如,I/O可以请求存储/传播跨越数据片段514、516,518,520的 每一个的数据。目标设备506然后可以为数据被保留在本地启动数据传输(例如,数据片 段514上的数据)。进一步,目标设备506可以返回包括如下指点的SCSI I/O指点列表端口 2标识符,数据片段516数据偏移量,数据片段516数据长度 端口 3标识符,数据片段516数据偏移量,数据片段516数据长度端口 4标识符,数据片段518数据偏移量,数据片段518数据长度端口 5标识符,数据片段518数据偏移量,数据片段518数据长度端口 6标识符,数据片段520数据偏移量,数据片段520数据长度端口 7标识符,数据片段520数据偏移量,数据片段520数据长度在本发明的当前实施例中,启动器502,为了响应接收所述I/O指点列表,可以然 后被配置为发送指点I/O到标识在SCSI I/O指点列表中每一个数据片段。例如,为了找到 由启动器502发出在原始I/O中的被请求的数据的剩余部分,启动器502可以发送I/O指点 到数据片段516,518,520。在本发明的一个示例性实施例中,启动器502可以选择性地决定 通过哪个端口来访问每一个数据片段。由于本发明前面所述的I/O指点多路径列表方法, 基于所述I/O指点列表启动器502能够为访问一个相同的数据片段决定可能的可选路径/ 多路径。例如,基于所述的SCSI I/O指点列表,为通过指点I/O访问数据片段516,启动器 502可以选择端口 2或者端口 3。进一步,如果指定的指点I/O遇到问题,启动器502能够 在其它能够访问相同数据片段的端口上选择重试。例如,如果启动器502通过端口 2发送 一指点I/O到访问/请求访问数据片段516并且所述指点I/O遇到问题,启动器可以替代 的通过端口 3重新尝试发送指点1/0(例如,当到数据片段的一指定路径变得不可用时,启 动器可以切换到可选的路径)。图6展示了一个由上面提到的拓扑结构中的一目标设备提 供的示例性SCSI I/O指点列表,当原始I/O被发送到目标设备514的端口 0时,原始I/O 的大小是400块(blocks),并且每一个数据片段(514,516,518,520)保留所述原始I/O请 求中被请求数据的100块。如上所述的I/O指点多路径方法/功能可以允许启动器在任何时候利用新的/可 选的到数据片段的路径。所述功能的可能使用可以是为系统500达到负载平衡,例如通过 轮叫调度(Round Robin Scheduling).根据启动器的性态,上述的I/O指点多路径方法/ 功能可以允许目标设备基于SCSI指点列表中的指点的顺序来分布负载。这样的顺序可以 通过轮叫调度由当前负载分发等决定。
在本发明的一个可选实施例中,SCSI I/O指点列表可以直接的分组多个端口到相 同的数据片段,而不是执行如前所述的隐性的端口分组。所述直接分组可以通过增加额外 的结构到SCSI I/O指点列表中来被达到。参考图7,一个可选的示例性SCSII/0指点列表 (如图6所示)可以被如上所述的与本发明的一个进一步实施例所述的拓扑结构中的目标 设备提供。端口标识符可以遵照定义在SCSI结构模型说明中的SCSI相关端口标识符的定 义。在数据片段通过多端口是通常可访问的配置中,图7所 示的直接端口分组/可选SCSI I/O指点列表的可选方法可以这样提高性能,通过消除/避免不得不为每一可用端口重复/ 重列表数据片段偏移量和数据片段长度的需要。在本发明的进一步实施例中,尽管允许进一步附加次序被包含本发明中,允许目 标设备指定主要和可选的路径是有利的。参考图8,可选的示例性SCSI I/O指点列表可以 由所述拓扑结构中的目标设备提供,所述列表实现如前所述的与本发明的进一步示例性实 施例所述的主要和可选路径的指定。端口标识符可以遵照定义在SCSI结构模型说明中的 SCSI相关端口标识符的定义。参考图9,表示本发明的一个示例性实施例所述的方法900,该方法通过小型计算 机系统接口输入输出(SCSI I/O)指点提供启动器与通过网络通信连接的存储群集之间的 多路径。在示例性实施例中,所述方法900可以通过上述系统500实现。在本发明的当前 实施例中,存储群集包括至少一第一目标设备和一第二目标设备。例如,所述第一目标设备 和/或第二目标设备可以是磁盘、存储阵列、磁带库、和/或存储设备。在本发明的一个示 例性实施例中,方法900包括通过网络在第一目标设备从启动器接收输入/输出(1/0)902。 例如,所述I/O可以包括用于数据的第一部分和数据的第二部分的请求(例如,读请求)。 在本发明的当前实施例中,数据的第一部分位于第一数据片段上而数据的第二部分位于第 二数据片段上。进一步,第一数据片段和第二数据片段可以被包括在一虚拟卷中。在进一步的实施例中,当数据的第一部分而不是数据的第二部分存储在所述第一 目标设备时,以及当数据的第二部分存储在所述第二目标设备时,方法900可以进一步的 包括如下步骤启动数据的第一部分到启动器的传输904 ;以及将SCSI I/O指点列表传输 到启动器906。在示例性实施例中,指点列表可以包括用来标识第二目标设备的第一端口的 第一端口标识符和用来标识第二目标设备的第二端口的第二端口标识符。第一端口和第二 端口可以被标识在指点列表中作为访问数据的第二部分的访问端口(例如,第二目标设备 的访问端口,通过该访问端口启动器可访问数据的第二部分)。在进一步的实施例中,指点 列表可以通过第二数据片段的数据偏移量和/或第二数据片段的数据长度来确定第二数 据片段。进一步的,指点列表可以将第一端口标识符和第二端口标识符与第二数据片段相 关联。第一端口标识符和第二端口标识符可以遵照定义在SCSI结构模型说明中的SCSI相 关端口标识符的定义。在进一步的实施例中,方法900可以进一步包括通过网络在第二目标设备从启动 器接收指点I/O 908。例如,指点I/O可以响应于SCSI I/O指点列表。同时,所述指点I/ 0可以通过下列之一来请求到数据的第二部分的访问由启动器指引的第一端口和第二端 口。在进一步的实施例中,方法900可以进一步包括启动数据的第二部分到启动器的传输 910。参考图10,表示本发明的一个示例性实施例所述的方法1000,该方法通过小型计算机系统接口输入输出(SCSI I/O)指点提供启动器与通过网络通信连接的存储群集之间 的多路径。在示例性实施例中,所述方法1000可以通过如上所述系统500实现。存储群集 可以包括至少一第一目标设备和一第二目标设备。方法1000可以包括通过网络(例如, I/O包括一数据请求)在第一目标设备从启动器接收输入/输出(I/O)的步骤1002。方法 1000可以进一步包括,当包含数据请求中的数据不是存储在第一目标设备而是存储在第二 目标设备时,将SCSI I/O指点列表传输到启动器1004。指点列表包括用来标识第二目标设 备的第一端口的第一端口标识符和用来标识第二目标设备的第二端口的第二端口标识符, 第一端口和第二端口被标识为访问所述数据的访问端口。第一端口标识符和第二端口标识 符可以遵照定义在SCSI结构模型说明中的SCSI相关端口标识符的定义。方法1000可以 包括通过网络在第二目标设备从启动器接收指点I/O的步骤1006。指点I/O可以响应于所 述SCSI I/O指点列表,并且所述指点I/O可以请求通过由启动器指引的第一或第二端口访 问数据。方法1000可以进一步包括启动数据到启动器的传输1008。参考图11,表示本发明的示例性实施例所述的被配置用以通过SCSI I/O指点提 供多路径的系统(例如,拓扑结构)。系统1100可以包括启动器1102(例如,应用服务器)。 启动器1102可以被配置用以通过存储区域网络(1104,1106)通信连接多个目标/目标设 备/存储设备(1108,1110)。如图11所示,存储区域网络1104 (光纤通道)和1106 (iSCSI) 可以由来自不同的媒介传输层协议实现。在本发明的当前实施例中,系统1100可以进一步 包括多个数据片段(1112,1114),所述数据片段组成虚拟卷1122或是虚拟卷1122的部分或 被包括在虚拟卷1122中。目标设备、数据片段以及虚拟卷可以组成存储群集1116。启动器 1102可以被配置用以通过目标设备的一个或多个端口(如图11中的端口 1到端口 4)访问 虚拟卷1122的一部分,所述部分是数据片段(1112,1114)的一个或多个,例如,利用上述方 法的SCSI I/O指点的启动器1102可以具有到组成虚拟卷1122的数据片段的每一个的多 路径。在本发明的一个示例性实施例中,为了通知启动器1102数据片段(1112,1114)通 过多目标端口是可用的,目标设备(1108,1110)可以返回列出不同端口的多个SCSI I/O指 点,但是其关联不同的端口/指点所述不同端口与相同数据片段相关联。数据片段可以通 过它们的逻辑块地址(LBA)和数据长度被唯一标识在SCSI指点列表中。例如,启动器1102 可以通过目标设备1110的端口 3或者端口 4联系/发送I/O到目标设备中的一个(例如, 目标设备1110),请求跨越数据片段(1112,1114)分布的数据并通过多个端口可访问。例 如,下面的I/O可请求存储在数据片段112和数据片段1114的每一个上/跨越数据片段 112和数据片段1114的每一个分布的数据端口 4,逻辑块地址(LBA) 0,长度2OO目标设备1110然后可以为数据保留在本地启动数据传输(例如,数据片段1114 上的数据)。进一步,假定数据片段1112和数据片段1114的长度都是100块,目标设备 1110然后可以返回包含下列指点列表的SCSI I/O指点列表,下列指点列表包含一个条目LBA 0,长度100,端口 1相关端口 ID,端口 2相关端口 ID在本发明的当前实施例中,响应接收I/O指点列表,启动器1102可以然后被配置 用以发送指点I/O到标识在SCSI I/O指点列表中的数据片段的每一个。例如,启动器1102 可以发送I/O指点到数据片段1112和1114以找回由启动器1102发送的原始I/O的数据
15请求中的剩余部分。在本发明的示例性实施例中,启动器1102可以选择性判断通过哪个端 口去访问每一数据片段。由于如上描述的本发明的I/O指点多路径列表方法,启动器1102 能够基于所述I/O指点列表判定为访问相同数据片段的可能的可选路径/多路径。例如, 基于上面的SCSI I/O指点列表,启动器1102可以为通过指点I/O访问数据片段1112而选 择端口 1或者端口 2。更进一步,如果给定的指点I/O遇到问题,启动器可以尝试选择其它 端口去访问所述相同的数据片段。例如,如果启动器1102通过端口 2发送指点I/O以访问 /请求访问数据片段1112并且所述指点I/O遇到问题,启动器可通过替代的端口 1重试发 送指点1/0(例如,当到数据片段的指定路径变得不利时,启动器可以切换到其它路径)。所述I/O指点方法/功能可以允许多个媒介传输协议并存在一 SCSI指点存储系 统中。所述方法/功能可以允许SCSI指点存储系统中的端口标识符有固定的大小。除此 之外,为不同媒介传输层协议的SCSI端口的端口标识符可以共存在由本发明的方法/功能 发出的指点或指点列表中。进一步,发送到一个媒介传输协议的I/O可以被重新定向到第 二媒介传输协议的端口上。例如,被定向到SAS端口的I/O可以被重定向到光纤通道端口。应该注意的是,根据本发明的所述实施例可以使用传统的通用数字计算机容易地 实现,其中所述计算机根据本说明书所教导的内容被编程,说明书中的内容对计算机领域 的技术人员来说是显而易见的。基于当前公开的教导,适合的软件代码可已被熟练的编程 员准备好,所述实现对软件领域的技术人员来说也是显而易见的。应该理解本发明可以以软件包的形式来方便地实现。这样一个软件包可以是利用 计算机可读媒介的计算机程序产品,该计算机可读媒介包括储存的用于编程计算机以实现 本发明已公开的功能和过程的计算机代码。所述计算机可读媒介可以包括但不限于任何 类型的传统软盘、光盘、CD-ROM、磁盘、硬盘驱动器、磁光盘、R0M、RAM、EPR0M、EEPR0M、磁或光 卡、或者其它任何合适用来存储电子指令的媒介。应该理解所述方法公开的步骤的特定顺序或层次是示例方法的例子。应当理解, 基于设计偏好,所述方法中的步骤的特定顺序或层次可以重新排列,而仍在本发明的主题 精神内。所附方法权利要求以样本顺序呈现了不同步骤的要素,并不必意味着仅限于所呈 现的特定次序或层次。应当相信,通过前述将理解本发明和许多其伴随的优点,显而易见,其组成的形 式、结构和布置可以进行不同的变化,而不脱离本发明的范围和精神或不牺牲所有其物质 优点。这里以前所述的形式只是示例说明,下列权利要求的目的是包含和包括此类变化。
权利要求
1.一种通过小型计算机系统接口输入/输出(SCSI I/O)指点提供启动器与通过网络 通信连接的存储群集之间的多路径的方法,所述存储群集包括至少一第一目标设备和一第 二目标设备,所述方法包括通过所述网络在所述第一目标设备接收来自所述启动器的一输入/输出(I/O),所述 I/O包括一用于数据的第一部分和数据的第二部分的请求;当所述数据的第一部分而不是数据的第二部分存储在所述第一目标设备上,而所述数 据的第二部分存储在所述第二目标设备上时,启动所述数据的第一部分到所述启动器的传 输并将一 SCSI I/O指点列表传输给所述启动器;其中所述指点列表包括用于标识所述第二目标设备的一第一端口的一第一 SCSI相关 端口标识符和标识所述第二目标设备的一第二端口的一第二 SCSI相关端口标识符,所述 第一端口和第二端口被标识为用于访问所述数据的第二部分的访问端口。
2.如权利要求1所述的方法,进一步包括通过所述网络在所述第二目标设备接收来自所述启动器的一指点1/0,所述指点I/O 响应于所述SCSI I/O指点列表,所述指点I/O通过以下之一请求访问所述数据的第二部 分由所述启动器指弓I的所述第一端口和所述第二端口。
3.如权利要求2所述的方法,进一步包括启动所述数据的第二部分到所述启动器的传输。
4.如权利要求3所述的方法,其中所述数据的第一部分位于一第一数据片段上以及所 述数据的第二部分位于一第二数据片段上。
5.如权利要求4所述的方法,其中所述第一数据片段和所述第二数据片段被包含在一 虚拟卷中。
6.如权利要求5所述的方法,其中所述第一目标设备和所述第二目标设备是下列之 一磁盘、存储阵列、磁带库和存储设备。
7.如权利要求5所述的方法,其中所述指点列表通过所述第二数据片段的一数据偏移 值标识所述第二数据片段。
8.如权利要求7所述的方法,其中所述指点列表通过所述第二数据片段的一数据长度 值标识所述第二数据片段。
9.如权利要求8所述的方法,其中指点列表将所述第一数据标识符和所述第二数据标 识符与所述第二数据片段、所述第二数据片段的所述数据偏移值以及所述第二数据片段的 所述长度值相关联。
10.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于执行 通过小型计算机系统接口输入/输出(SCSI I/O)指点提供启动器与通过网络通信连接的 存储群集之间的多路径的方法,所述存储群集包括至少一第一目标设备和一第二目标设 备,所述方法包括通过所述网络在所述第一目标设备接收来自所述启动器的一输入/输出(I/O),所述 I/O包括一用于数据的第一部分和数据的第二部分的请求;当所述数据的第一部分而不是所述数据的第二部分存储在所述第一目标设备上,而所 述数据的第二部分存储在所述第二目标设备时,启动所述数据的第一部分到所述启动器的 传输并将一 SCSI I/O指点列表传输给所述启动器;其中所述指点列表包括标识所述第二目标设备的一第一端口的一第一 SCSI相关端口 标识符和标识所述第二目标设备的一第二端口的一第二 SCSI相关端口标识符,所述第一 端口和第二端口被标识为用于访问所述数据的第二部分的访问端口。
11.如权利要求10所述的计算机可读存储介质,所述方法进一步包括通过所述网络在所述第二目标设备接收来自所述启动器的一指点1/0,所述指点I/O 响应于所述SCSI I/O指点列表,所述指点I/O通过由所述启动器指引的所述第一端口和所 述第二端口之一请求访问所述数据的第二部分。
12.如权利要求11所述的计算机可读存储介质,所述方法进一步包括启动所述数据的第二部分到所述启动器的传输。
13.如权利要求12所述的计算机可读存储介质,其中所述数据的第一部分位于一第一 数据片段上以及所述数据的第二部分位于一第二数据片段上。
14.如权利要求13所述的计算机可读存储介质,其中,其中所述第一数据片段和所述 第二数据片段被包含在一虚拟卷中。
15.如权利要求14所述的计算机可读存储介质,其中,其中所述第一目标设备和所述 第二目标设备是下列之一磁盘、存储阵列、磁带库和存储设备。
16.如权利要求14所述的计算机可读存储介质,其中所述指点列表通过所述第二数据 片段的一数据偏移值标识所述第二数据片段。
17.如权利要求16所述的计算机可读存储介质,其中所述指点列表通过所述第二数据 片段的一数据长度值标识所述第二数据片段。
18.如权利要求17所述的计算机可读存储介质,其中指点列表将所述第一数据标识符 和所述第二数据标识符与所述第二数据片段、所述第二数据片段的所述数据偏移值和所述 第二数据片段的所述长度值相关联。
19.一种系统,包括用于在一第一目标设备接收来自一启动器的一输入/输出(I/O)的装置,所述I/O包 括一用于数据的第一部分和数据第二部分的请求;以及当所述数据的第一部分而不是数据的第二部分存储在所述第一目标设备上,而所述数 据的第二部分存储在所述第二目标设备时,启动所述数据第一部分到所述启动器的传输的 装置和将一 SCSI I/O指点传输给所述启动器的装置;其中所述指点列表包括用来标识所述第二目标设备的第一端口的第一相关端口标识 符和用来标识所述第二目标设备的第二端口的第二相关端口标识符,所述第一端口和所述 第二端口被标识为用于访问所述数据的第二部分的访问端口。
20.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于执行 通过小型计算机系统接口输入/输出(SCSI I/O)指点提供启动器与通过网络通信连接的 存储群集之间的多路径的方法,所述存储群集包括至少一第一目标设备和一第二目标设 备,所述方法包括通过所述网络在所述第一目标设备接收来自所述启动器的一输入/输出(I/O),所述 I/O包括一数据请求;当包括在所述数据请求中的数据未存储在所述第一目标设备上而是存储在所述第二 目标设备上时,将一 SCSI I/O指点列表传输给所述启动器,其中所述指点列表包括用来标识所述第二目标设备的一第一端口的一第一相关端口标识符和用来标识第二目标设备的 一第二端口的一第二相关端口标识符,所述第一端口和第二端口被标识为用于访问所述数 据的第二部分的访问端口;通过网络在所述第二目标设备接收来自所述启动器的一指点1/0,所述指点I/O响应 于所述SCSI I/O指点列表并且所述指点I/O请求通过下列之一访问数据由所述启动器指 引的所述第一端口和所述第二端口; 启动所述数据到所述启动器的传输。
全文摘要
传输未知SCSI I/O指点。本发明涉及一种通过SCSI I/O指点提供启动器与通过网络通信连接的存储群集之间多路径的方法,存储群集包括至少第一目标设备和第二目标设备。该方法包括通过网络在所述第一目标设备接收来自启动器的I/O。I/O包括数据请求。当包含在数据请求中的数据未存储在第一目标设备上而是存储在第二目标设备上时,该方法进一步包括将SCSI I/O指点列表传输给启动器。指点列表包括为第二目标设备的第一端口和第二端口各自标识的第一端口标识符和第二端口标识符。第一端口标识符和第二端口标识符是SCSI相关端口标识符。目标设备的第一端口和第二端口被标识为用于访问数据请求中被请求的数据的访问端口。
文档编号H04L29/08GK102006316SQ20101020019
公开日2011年4月6日 申请日期2010年6月13日 优先权日2009年9月1日
发明者安德鲁·J·斯派瑞, 杰拉尔德·J·弗瑞丁, 罗伯特·L·设菲尔德, 罗斯·E·威斯勒, 肯尼思·J·吉布森 申请人:Lsi公司