在线初始镜像同步及存储区域网络中的镜像同步验证的制作方法

文档序号:6655688阅读:325来源:国知局
专利名称:在线初始镜像同步及存储区域网络中的镜像同步验证的制作方法
技术领域
本发明总体上涉及存储区域网络。
背景技术
在今天数据密集型工业和应用环境中,信息管理正日益变成使人畏缩的任务。更具体地,由于更多的公司和个人面临越来越大的数据量,这些数据必须被有力地、有效地、及可靠地保存,从而原始数据存储的管理正变得日益麻烦和困难。实体继续面对添加更多存储器、服务更多用户、及为更大量用户提供对更多数据的存取的需要。
存储区域网络或SAN的概念在近些年非常盛行以满足这些日益增长的需求。尽管SAN存在不同的定义,但SAN通常被视为网络,其主要目的是在计算机系统和存储元件之间及存储元件与存储元件之间传输数据。SAN形成实质上独立的网络,其不具有与其直连对应物一样的带宽限制,例如,所述对应物包括直接连到服务器的存储设备(如使用SCSI连接)及使用传统以太网接口直接添加到局域网(LAN)的存储设备。
在SAN环境中,目标器,其可包括存储设备(如磁带机和RAID阵列)及其它能够保存数据的设备,及启动器,其可包括服务器、个人计算设备、和其它能够提供写指令和请求的设备,通常经不同的开关和/或设备互连。到开关和设备的连接通常为光纤通路。这种结构通常使SAN上的任何启动器均可与任何目标器通信,反之亦然。其还提供另外的从启动器到目标器的路径。换言之,如果特定启动器很慢或完全不可用,SAN上的另一启动器可提供对目标器的存取。SAN还使可镜像数据,制作多份可用拷贝,因而在数据可用性方面提供更高的可靠性。当需要更多的存储器时,另外的存储设备可被添加到SAN中,而无须连接到特殊的启动器;而是,新设备可被简单地添加到存储网络并可从任何点进行存取。
一些SAN利用设备执行SAN的存储管理。典型设备可接收并在设备内保存数据,之后,例如使用内部处理器,为将数据转发给适当的目标器而分析和运算数据。这样的保存-转发处理可减慢数据存取,包括从存储设备读数据的时间和将数据写到存储设备的时间。
在设备可执行交换操作的同时,开关经常用于使启动器与设备连接,假定在许多设备中包括大量启动器和少量端口。在更当前的SAN实施例中,开关已代替先前由设备执行的某些功能,使得该设备不是必须的并可从系统中删除。
SAN通常通过开关和/或设备执行虚拟化功能以将一个或多个物理目标器的空间分配给不知道物理空间剩余的特定用户。例如,公司可使用SAN提供雇员存取数据存储器并检索的数据存储。例如,工程部可具有分配为“工程存储空间”的存储器。当雇员看见或与物理存储设备如所连接的硬盘驱动器相互作用时,雇员可看见并与虚拟看见相互作用。但是,空间实际上可跨多个物理存储设备进行再分,甚至是单一存储设备内的碎片。开关或设备可接收请求虚拟空间和块数的请求,并确定物理上与所请求的虚拟空间关联的设备及其部分,以控制数据。
新近的存储区域网络开关能够在启动器和目标器之间发送数据,而无须像先前SAN中使用的设备那样要求缓冲数据。例如,相较典型的网络开关,一些存储开关可没有引起更多等待时间地发送数据包。启动器和目标器之间的这种无缓冲数据传送必须由执行互连的开关可靠且有效地处理。存储开关的一个例子可在2002年1月18日申请的、题为“存储系统中的虚拟化”的未决美国专利申请10/051,396中找到。
例如,SAN的重要特征在于通过所谓的镜像或使用镜像的虚拟目标器在多个目标器中或一个或多个目标器的多个逻辑单元内可靠且有效地保存数据的能力。一些网络可包括存储区(或虚拟目标器),其在一个或多个物理位置保存数据的多个拷贝以增加数据存储的可靠性。因此,这样的网络中的开关可响应于向存储区写数据的请求将数据发送给两个或多个存储设备。
为建立镜像的虚拟目标器,镜像的虚拟目标器成员中的每一个必须同步。通常,一目标器的数据被指定为源数据,其被写入形成镜像的虚拟目标器的其它设备。在缓冲实施方式中,数据可从源目标器读出,然后缓存,然后当其它目标器可用于接收数据时将数据写入其它目标器。
然而,为实现无缓存的实施方式,源数据不应被保持在开关中等待直到目的地目标器可用于接收其为止。因此,需要以帮助将数据从源目标器传送到一个或多个目的地目标器而不用缓存在开关中的方式同步镜像的虚拟目标器的系统和方法。另外,需要在执行初始镜像同步并从启动设备接收对镜像的虚拟目标器的指令的同时保持镜像的虚拟目标器的完整性和同步性的系统和方法。

发明内容
根据各个实施例,提供管理镜像的虚拟目标器的系统和方法。在一实施例中,存储开关执行镜像的虚拟目标器的初始镜像同步以在虚拟目标器各成员间同步数据。
一实施例包括提供对应于被同步的镜像目标器的各成员的内部虚拟目标器(IVT)。可建立第一内部虚拟逻辑单元(IVLU)用于镜像目标器成员之一,其中已为该镜像目标器指定将要同步的数据的源目标器。可为镜像目标器的其余成员、或目的地目标器中的每一个建立一个或多个另外的IVLU。在提供IVT之后,写指令可经IVT及相应的IVLU提供给每一目的地目标器成员。一旦每一目的地目标器返回传送就绪信号,读指令可经源目标器的相应IVLU提供给源目标器。通过在向源目标器发出读指令之前等待每一目的地目标器的传送就绪信号,根据实施例的存储开关可在接收将要同步的数据之前建立内部数据通路。因此,数据可被从源目标器读出、转换为写数据、并以线路速度提供给每一目的地目标器,而不用将数据缓存在存储开关中。
在一实施例中,在第一处理单元提供IVT。第二处理单元包括复制服务管理器,其可向IVT提供读和写指令。写指令可在第一处理单元接收并使用为IVT提供的信息而被发送给适当的目的地目标器成员。
在一实施例中,存储开关执行镜像同步验证以验证镜像的虚拟目标器的成员均被同步。类似于初始镜像同步,可提供IVT且经该IVT向每一目的地目标器提供读指令。一旦从每一目的地目标器返回传送就绪信号,向源目标器提供读指令。从源目标器接收到的数据可被转换以验证数据并以线路速度提供给目的地目标器进行验证,而没有缓冲。
在一实施例中,在镜像的虚拟目标器正被同步或验证的同时存储开关管理输入镜像的虚拟目标器的指令。所接收的针对镜像目标器的指令不被立即提供给镜像目标器。在开关完成任何未决同步或验证指令的同时,这些指令可被暂时排队。在同步或验证指令完成之后,开关可解除队列并将指令从启动器提供给镜像的虚拟目标器。
根据一实施例,提供管理镜像目标器的方法,其包括确定至少一目的地目标器接收数据的可用性,仅在至少一目的地目标器被确定可用于接收数据时向源目标器提供读指令。在一实施例中,所述方法还包括从源目标器接收读出数据,将所读出数据转换为写或验证数据,并将该写或验证数据提供给至少一目的地目标器。
根据一实施例,提供管理镜像目标器的装置,其包括与至少一目的地目标器和源目标器通信的至少一端口及与至少一端口通信的至少一处理单元。至少一处理单元仅在至少一目的地目标器可用于接收数据时向源目标器提供读指令。
本发明可使用硬件、软件、或硬件和软件的结合实现。用于本发明的软件保存在一个或多个处理器可读存储介质上,包括硬盘驱动器、CD-ROM、DVD、光盘、软盘、磁带机、RAM、ROM、闪存或其它适当的存储设备。在另一实施例中,部分或所有软件可用专用硬件代替,包括常规集成电路、门阵列、FPGA、PLD、及专用处理器。在一实施例中,实现本发明的软件用于编程一个或多个处理器。一个或多个处理器可与一个或多个存储设备(硬盘驱动器、CD-ROM、DVD、光盘、软盘、磁带机、RAM、ROM、闪存或其它适当的存储设备)、外设(打印机、显示器、键盘、点击设备)和/或通信接口(如网卡、无线发送器/接收器等)通信。
本发明的其它特征、方面及目标可通过读阅下面的说明书、附图和权利要求获得。


图1为根据一实施例的存储区域网络的一般原理框图;图2为根据一实施例的存储开关的一般原理框图;图3为根据一实施例的用于存储开关中的线路卡的一般原理框图;图4为图示启动设备看见的虚拟目标器的一般原理框图;图5a-5c为存储区域网络的一般原理框图,其示出了虚拟目标器的示例性提供;图6为根据一实施例,在指令信息包或帧的输入方向中的虚拟化进程的流程图;图7为根据一实施例,在指令信息包或帧的输出方向中的虚拟化进程的流程图;图8为根据一实施例,R2T或XFER_RDY信息包或帧的输入方向中的虚拟化进程的流程图;图9为根据一实施例,R2T或XFER_RDY信息包或帧的输出方向中的虚拟化进程的流程图;图10为根据一实施例,写数据包或帧的输入方向中的虚拟化进程的流程图;图11为根据一实施例,写数据包或帧的输出方向中的虚拟化进程的流程图;图12为根据一实施例,初始镜像同步过程的流程图;图13为根据一实施例,包括可用于同步镜像的虚拟目标器各成员的存储开关和指令流的一般原理框图;
图14为根据一实施例,包括可用于同步镜像的虚拟目标器各成员的存储开关和指令流的一般原理框图;图15为根据一实施例,验证镜像的虚拟目标器的各成员均被同步的流程图;图16为包括验证镜像的虚拟目标器被同步的存储开关和指令流的一般原理框图;及图17为根据一实施例,在执行虚拟目标器的初始镜像同步或镜像同步验证的同时处理输入镜像的虚拟目标器的指令的流程图。
具体实施例方式
图1所示为包括根据一实施例的存储开关的示例性系统100。系统100包括多个启动设备如服务器102。应该意识到的是,可以使用更多或更少的服务器,且除了服务器102之外或用以代替服务器102,实施例可包括任何适当的物理启动器。尽管没有示出,服务器还可连到LAN。如图所示,每一服务器102被连到存储开关104。然而,在其它实施例中,每一服务器102可连到比所呈现的所有存储开关104少的存储开关。尽管在一实施例中,连接是光纤通路或吉比特以太网(根据iSCSI协议携载信息包),在服务器和开关之间形成的连接可使用任何协议。其它实施例可使用Intel公司定义的Infiniband协议或其它协议或连接。
在一些实施例中,一个或多个开关104中的每一个连到城域网(MAN)或宽域网(WAN)108,如因特网。在大多数实施例中,存储开关104和WAN108之间形成的连接通常使用因特网协议(IP)。尽管在图中示出为直接连到MAN/WAN108,其它实施例可使用路由器(未示出)作为开关104和MAN/WAN108之间的媒介。
另外,各自的管理站110连到每一存储开关104、每一服务器102、和每一存储设备106。尽管管理站被图示为不同的计算机,应该理解的是,管理每一类设备的软件可全部都在同一计算机上。
这样的存储开关104,除了其开关功能以外,还可提供虚拟化和存储服务(如镜像)。这样的服务可包括那些通常由传统体系结构中的设备提供的服务。
此外,根据本发明实施例的存储开关的智能被分布给每一开关端口。这种分布式智能虑及系统可扩缩性和可用性。分布式智能使根据实施例的开关能够以“网速”处理数据,也就是说,与典型的网络开关相比,存储开关104不会引起更多的数据包等待时间。因此,该开关的“网速”通过连接到特定端口进行测量。因而,在一具有OC-48连接的实施例中,存储开关可跟上OC-48速度(2.5位每毫微秒)。以OC-48速度移动的两千字节信息包(10位每字节)仅需8毫秒即可输入开关。一千字节的信息包仅需4毫秒。100字节的最小信息包仅需400毫微秒。
不同存储区域网络包括图1所示的网络的更多信息可在下述专利申请中找到2002年1月18日申请的、题为“存储系统中的虚拟化”的美国专利申请10/051,396;2002年1月18日申请的、题为“用于存储区域网络的存储开关”的美国专利申请10/051,321。
“虚拟化”通常指将用户预订的虚拟目标器空间映射到一个或多个物理存储目标器设备上的空间。术语“虚拟的”和“虚拟目标器”源于下述事实每一预订分配的存储空间可在连到存储开关104的一个或多个物理存储目标器设备上的任何地方。物理空间可被提供为“虚拟目标器”,其可包括一个或多个“逻辑单元”(LU),在此也被称为“虚拟逻辑单元”(VLU)。每一虚拟目标器由用一个或多个LU号(LUN)标识的一个或多个LU组成,LU频繁使用于iSCSI和FC协议中。每一逻辑单元通常由一个或多个盘区组成,盘区即为物理设备上的存储空间的连续片。因而,虚拟目标器可占用整个存储设备(一个盘区)、单一存储设备的一部分(一个或多个盘区)、或多个存储设备的一部分(多个盘区)。物理设备、LU、盘区数量、及它们的准确位置对订户而言均是非实质的和不可见的。
存储空间可来自多个不同的物理设备,在不同的实施例中,每一虚拟目标器可属于一个或多个“池”,在此有时称为“域”。在一实施例中,只有同一域的用户才被允许共享他们域中的虚拟目标器。还可形成域系,其包括几个域作为成员。使用域系可使多个域的用户的管理容易,例如,如果一个公司具有五个域但选择停止服务,只需采取一个行动即可停用整个域系。域系的成员也可以是其它域的成员。
图2所示为根据本发明实施例的存储开关104的原理框图。关于存储开关如存储开关104及其运行的详细情况的更多信息可在2002年1月18申请的、题为“用于存储区域网络的存储开关”的美国专利申请10/051,321中找到。在一实施例中,存储开关104包括多个线路卡302、304和306、多个矩阵卡(fabric card)308、和两个系统控制卡310,每一卡均将在下面详细描述。尽管示出了示例性的存储开关,应该意识到的是,根据不同的实施例,也可使用多种其它实施方式和构造。
系统控制卡。两个系统控制卡(SCC)310中的每一个连到每一线路卡302、304、306。在一实施例中,这样的连接由I2C信号形成,其在本领域是公知的,并通过以太网与SCC连接。SCC控制加电并监视各个线路卡及矩阵卡和I2C连接。在以太网连接上使用卡间通信,SCC还启动各个存储设备如快照和复制。
此外,SCC维护数据库312,其跟踪存储开关及连接到开关的所有虚拟目标器和物理设备如服务器和存储设备的配置信息。另外,数据库保留关于使用、错误及存取数据的信息以及关于虚拟目标器和用户的不同域及域系的信息。数据库的记录在此可被称为“对象”。每一启动器(如服务器)和目标器(如存储设备)具有全球唯一标识符(WWUI),这在本领域中是公知的。数据库被保存在SCC内的存储设备中,在一实施例中,所述存储设备由闪存构成,尽管在各个实施例中也可使用其它存储设备。
存储开关104可由管理站110通过SCC310使用以太网连接到达。因而,SCC还包括另外的以太网端口以用于连接到管理站。管理站的管理员可发现存储设备或虚拟目标器的添加或去除,以及查询和虚拟地更新保存在SCC数据库312中的任何对象。
矩阵卡。在开关104的一实施例中,有三个矩阵卡308,尽管其它实施例可具有更多或更少的矩阵卡。在一实施例中,每一矩阵卡308连到线路卡302、304、306中的每一个并用于将所有线路卡连在一起。在一实施例中,当所有线路卡均被填充时,每一矩阵卡308可处理最大流量。在一实施例中,由每一线路卡处理的这样的流量负载高达160Gbps,尽管其它实施例可处理更高或更低的最大流量。如果一个矩阵卡308失效,其余两个卡依然具有足够的带宽用于最大可能开关流量在一实施例中,每一线路卡产生20Gbps的流量,10Gbps输入和10Gbps输出。然而,在正常情况下,所有三个矩阵卡同时使用。数据流量将从每一线路卡发送给三个矩阵卡中可容纳该数据的任一矩阵卡。
线路卡。线路卡构成到服务器和存储设备的连接。在一实施例中,存储开关104支持高达16个线路卡,尽管其它实施例可支持不同数量的线路卡。另外,在一实施例中,使用了三种不同类型的线路卡吉比特以太网(GigE)卡302、光纤通路(FC)卡304、和WAN卡306。其它实施例可包括更多或更少类型的线路卡。GigE卡302用于以太网连接,在一实施例中连接到或iSCSI服务器或iSCSI存储设备(或其它基于以太网的设备)。FC卡304用于光纤通路连接,连接到或光纤通路协议(FCP)服务器或FCP存储设备。WAN卡306用于连到MAN或WAN。
图3所示为用于根据一实施例的存储开关104中的一般线路卡400的原理框图。线路卡400仅为示例的目的进行呈现。根据各实施例,也可使用其它线路卡和设计。图中示出了所有类型的线路卡如GigE302、FC304或WAN306均具有的那些元件。在其它实施例中,可使用其它类型的线路卡使用其它协议如Infiniband连接到设备。
端口。每一线路卡400包括多个端口402。端口构成线路卡连接到或服务器或存储设备的连接。在图示的实施例中示出了8个端口,但在其它实施例中可使用更多或更少的端口。例如,在一实施例中,每一GigE卡可支持高达8个1Gb以太网端口,每一FC卡可支持高达或8个1Gb FC端口或4个2Gb FC端口,每一WAN卡可支持高达4个OC-48端口或两个OC-192端口。因此,在一实施例中,最大可能连接为每开关(104)128个端口。在一实施例中,每一线路卡的端口均为全双工通信制,并连接到或服务器或其它客户和/或连到存储设备或子系统。
此外,每一端口402具有相关联的存储器403。尽管只示出了一个存储设备连到一个端口,应该理解的是,每一端口可具有其自己的存储设备,或者所有端口均被连接到同一存储设备。在此示出只有一个存储设备连接到一个端口是为了清楚起见。
存储处理器单元。在一实施例中,每一端口与存储处理器单元(SPU)401关联。在一实施例中,SPU快速处理数据流量以允许网速运行。在一实施例中,每一SPU包括几个元件信息包聚集和分类引擎(PACE)404、信息包处理单元(PPU)406、SRAM405、CAM407。同样,其它实施例可使用更多或更少的元件或可结合元件以获得相同的功能。例如,一些实施例可在SPU中包括PACE和PPU,但SPU可与其它SPU共享存储元件。
PACE。每一端口连到信息包聚集和分类引擎(PACE)404。如图所示,PACE404将两个端口聚集为单一数据通路,由此其具有两倍的带宽。例如,PACE404将两个1Gb端口聚集为一个2Gb数据通路。PACE可将每一接收到的信息包分类为控制信息包或数据包。控制信息包经网桥416发送给CPU414进行处理。如下所述,数据包被发送给包处理单元(PPU)406,并添加了本地首部。在一实施例中,本地首部为导致64字节(16字节首部和48字节净荷)的数据“存储单元”的16字节。本地首部用于携带信息并由开关104内部使用。在信息包离开开关之前删除本地首部。因而,“存储单元”可以是开关中本地使用的传输单位,其包括本地首部和原始信息包(在一些实施例中,原始TCP/IP首部也被从原始信息包剥离)。但是,不是本发明的所有实施例均将产生本地首部或具有不同于外部信息包的“内部信息包”(单元)。因此,在此使用的术语“信息包”可指“内部”或“外部”信息包。
分类功能有助于使开关能够以网速执行存储虚拟化和协议变换功能,而不用使用传统系统的保存-转发模式。每一PACE具有专门的到PPU如PPU 4061的通路,同时在图示实施例中所有四个PACE共享到CPU414的通路,在一实施例中其为104MHz/32(3.2Gbps)比特数据通路。
包处理单元(PPU)。每一PPU如PPU4061在传输过程中执行虚拟化和协议变换,即存储单元不被缓冲而进行这样的处理。其还实现其它基于开关的存储服务功能,将在随后描述。在一实施例中,PPU能够以OC-48速度或2.5Gbps的速度移动输入和输出双向的存储单元,在其它实施例中,其可以OC-192或10Gbps的速度移动存储单元。在一实施例中,PPU包括输入PPU4061i和输出PPU4061e,二者同时运行。输入PPU4061i从PACE4041接收输入数据并将数据发送给流量管理器408i,输出PPU4061e从流量管理器408e接收数据并将数据发送给PACE4041。尽管在图3中只有一个PPU4061具有输入PPU4061i和输出PPU4061e,应该理解的是,在一实施例中,所有PPU406均将包括输入PPU和输出PPU,图3中仅示出只有一个PPU具有输入和输出PPU是为了清楚起见。
在每一端口可同时建立大量存储连接(如服务器到虚拟目标器的连接)。但是,每一连接对虚拟目标器是唯一的并可由TCP控制块索引(在iSCSI连接的情况下)和端口号唯一地确定。当建立连接时,线路卡400的CPU414通过向PPU406发送虚拟目标器描述符(VTD)以进行连接而将使用中的虚拟目标器通知给PPU406。VTD包括关于连接和虚拟目标器的所有有关信息,即PPU将需要对数据进行适当地运算,如执行虚拟化、变换及各种存储服务。VTD源自SCC数据库中的对象并通常包含保存在SCC数据库中的相关对象中的信息子集。
类似地,在本发明的一实施例中,使用物理目标器描述符(PTD)。PTD描述实际的物理设备、其各个LU、或其各个盘区(LU的连续部分或整个LU),并将包括类似于用于VTD那样的信息。同样,与VTD相似,PTD源自SCC数据库中的对象。
在一实施例中,为保存VTD和PTD并能快速访问它们,PPU如PPU4061被连接到SRAM4051和CAM4071。SRAM4051可保存VTD和PTD数据库。VTD标识符(VTDID)的列表或地址及PTD标识符(PTD ID)也可被保存在PPU CAM4071中以能快速访问VTD。VTD ID使用TCP控制块索引和LUN进行索引。PTD ID使用VTD ID进行索引。此外,对于IP路由服务,CAM4071包含路由表,当添加或去除路由时其由CPU进行更新。
在不同的实施例中,每一PPU将按如图所示那样与其自己的CAM和SRAM设备连接,或者所有PPU均将被连到同一CAM和/或SRAM(未示出)。
对于每一给PPU的未完成的请求(如读或写),在PPU SRAM407中建立任务控制块以跟踪请求的状态。有输入任务控制块(ITCB)和输出任务控制块(ETCB),ITCB跟踪由输入PPU上的存储开关接收的请求的状态,ETCB跟踪由输出PPU上的存储开关发出的请求的状态。对于每一虚拟的目标器连接,可有大量同时发生的请求,因而有许多任务控制块。当请求开始时分配任务控制块,当请求结束时释放任务控制块。
流量管理器。在每一线路卡400上有两个流量管理器(TM)408其中一个TM408i用于输入流量,另一TM408e用于输出流量。在一实施例中,输入TM从所有4个SPU接收存储单元,其为64字节数据单元形式。在这样的实施例中,每一数据单元具有16字节的本地首部和48字节的净荷。首部包含FlowID,其告诉TM存储单元的目的端口。在一些实施例中,在将存储单元转发给TM之前,SPU还可将TM首部附加到存储单元。在一些实施例中,或TM或SPU还可将存储单元再分为更小的存储单元以通过矩阵卡传输。
在一实施例中,输入TM经128位104Mhz接口410将数据单元发送给矩阵卡。其它实施例可以125Mhz或其它速度运行。输出TM从矩阵卡接收数据单元并将它们传送给四个SPU。
输入和输出TM均具有大缓冲器412以排队需传送的存储单元。输入和输出TM的缓冲器412为64MB,其可为开关内的内部流控制而排队大量信息包。存储单元不被缓存在高速缓存或缓冲的开关设备中。因为在这些系统中,没有传送级确认。存储单元仅被暂时缓冲以保持开关内的流控制。存储单元保持其原始顺序且在TM没有存储单元的高级处理。当矩阵卡的输出流与输入流一样快时,SPU通常快速地将存储单元发送给输入TM。因此,存储单元快速移到输出TM。另一方面,由于输出端口被塞满或正被多个输入线路卡馈送,输出TM可被备份。在这种情况下,在输出存储单元的首部中设置标志以通知输出SPU快速采取行动。输出TM还发送请求给输入SPU以启动在提供存储器存取服务质量中使用的流控制功能。值得注意的是,与因特网上的通信流量不同,对于存储流量,丢失信息包或存储单元是不可接受的。因此,只要缓冲器中的存储单元数量超出指定的阈值,SPU可启动其流控制功能以减慢输入流量从而避免缓冲器溢出。
网络连接(Fabric Connection)。网络连接410将TM的256位并行信号(128位输入和128位输出)以160Gbps转换到底板的16位串行接口中(8位输入和8位输出)。因而,底板在插脚的16分之一运行,但速度上快16倍。这种转换使能以合理的成本构造高可用性底板,且不用成千上万的连接插脚和导线。此外,在一实施例中,由于有三个矩阵卡,在一实施例中,每一线路卡上有三个高速连接器,其中每一连接器分别将8位信号连到三个矩阵卡中的相应矩阵卡。当然,其它实施例可能不需要三个网络连接410。
CPU。在每一线路卡上有处理器(CPU)614,在一实施例中其为PowerPC 750 Cxe。在一实施例中,CPU414用3.2Gb总线经总线控制器415和网桥416连到每一PACE。此外,CPU414还连到每一PPU、CAM和TM,然而,在一些实施例中,该连接是40Mbps的较慢速度。3.2Gb和40Mb通路均允许CPU与线路卡中的大多数设备通信并读和写线路卡上每一设备的内部寄存器、下载微码、及发送和接收控制信息包。
每一线路卡上的CPU负责在加电时初始化每一芯片并在无论哪里需要微码时将微码下载到SPU及每一端口。一旦线路卡在运行状态,CPU处理控制流量。对于建立虚拟目标器连接需要的信息,CPU从SCC请求信息,其继而从SCC数据库中的适当对象获得信息。
线路卡中的区别—端口。在一实施例中,每一类线路卡如GigE、FC或WAN中的端口均是不同的,因为每一线路卡支持一种类型的端口。在其它实施例中,其它线路卡端口可被设计为支持其它协议如Infiniband。
GigE端口。吉比特以太网端口连到iSCSI服务器和存储设备。当GigE端口携载所有类型的以太网流量时,根据本发明的一实施例,通常将由存储开关104以网速处理的唯一网络流量是TCP/IP包内的iSCSI信息包数据单元(PDU)。但是,在其它实施例中,在以太网连接上传送的根据其它协议(如网络文件系统(NFS))的信息包可在GigE端口进行接收并由SPU和/或CPU处理。
GigE端口接收和传送TCP/IP段以用于虚拟目标器或iSCSI设备。为建立对虚拟目标器的TCP连接,线路卡CPU414和SCC310均被涉及。当接收TCP信息包时,在执行初始联络之后,TCP控制块被产生并保存在GigE端口存储器403中。VTD也被从SCC数据库的对象取回并保存在CPU SDRAM405中以用于验证连接并理解虚拟目标器的配置。TCP控制块确定特定TCP会话或信息包属于其的iSCSI连接,在一实施例中,还包含TCP段数量、状态、窗口大小、及关于连接的其它可能信息。此外,TCP控制块通过索引进行识别,其在此称为“TCP控制块索引”。该连接的VTD可被产生并保存在SPU SRAM405中。CPU通过取回保存在其SDRAM中且最初从SCC数据库获得的VTD信息而产生VTD。VTD ID被建立在SPU CAM407中的VTD ID列表中,以便快速定位到VTD。VTD ID与TCP控制块索引有关系并由其进行索引。
当端口接收iSCSI PDU时,其实际上用作连接的端头,但其后开关启动与目标器的新连接。在输入侧接收信息包之后,端口使用TCP控制块索引将iSCSI PDU传送给PACE,其确定特殊的TCP连接。对于非TCP信息包或TCP信息包不包含iSCSI PDU,端口接收和传送信息包,但不充作连接端头。通常,端口402与PACE404通信,通过使用TCP控制块索引接收或发送iSCSI信息包。当信息包的TCP控制块索引是-1时,其标识非iSCSI信息包。
FC端口。FC端口连到服务器和FC存储设备。FC端口表现为连接服务器的光纤通路存储子系统(即目标器),也就是说,如本领域所理解的,其呈现大量允许启动器(如服务器)执行进程登入(PLOGI或PRLI)从而建立连接的虚拟目标器设备的池。FC端口接受GID扩展链路服务(ELS)并返回可为该启动器(如服务器)存取的目标器设备列表。
当连到光纤通路存储设备时,端口表现为光纤通路F端口,意为如本领域所公知的,其接受来自存储设备的交换机登录并通过接受和处理GID请求而提供名服务功能,换言之,端口将表现为存储设备的启动器。
此外,FC端口可连到另一现有的SAN网络,在这种情况下,其表现为具有许多到另一网络的LU的目标器。
在端口初始化时,线路卡CPU可经历发送交换机登录、进程登入、GID及接收它们。SCC支持将FC ELS转换为iSNS请求和响应的应用。因此,在SCC中的同一数据库可跟踪FC启动器(如服务器)和目标器(如存储设备),只要它们是iSCSI启动器和目标器即可。
当建立FC连接时,与GigE端口不同,FC端口不需要创建TCP控制块或其等价物。所有必须的信息均可从FC首部获得。但是,VTD(通过确定帧的目的地的D_ID索引)仍需以类似于在GigE端口处描述的方式建立。
FC端口可被配置为1Gb或2Gb。当为1Gb端口时,两个端口均被连到同一PACE,如图3中所示;但在一实施例中,当配置为2Gb端口时,端口流量和可被SPU容纳的流量应匹配以避免SPU拥塞。在一实施例中,端口使用POS/PHY接口连到PACE。每一端口可被单独配置,即一个PACE可具有两个1Gb端口,另一PACE具有一个2Gb端口。
WAN端口。在包括WAN线路卡的实施例中,在一实施例中,WAN线路卡支持OC-48和OC-192连接。因而,有两种类型的WAN端口OC-48和OC-192。对于OC-48,每一SPU有一个端口。尽管还有分类功能,但在PACE中没有聚集功能。WAN端口连到SONET并像GigE端口那样工作,其传送和接收网络信息包如ICMP、RIP、BPG、IP和TCP。在一实施例中,WAN端口用VPN和IPSec支持网络安全性,其需要另外的硬件构件。
由于OC-192导致更快的网速,在支持OC-192的实施例中将要求更快的SPU。
基于开关的存储操作本领域一般技术人员均具有iSCSI和FC协议的一般知识。然而,对于关于iSCSI的更多信息,指2003年1月19日因特网工程任务组(IETF)的因特网草案(见www.ietf.org)及进行中的工作一“draft-ietf-ips-iSCSI-20.txt”,其通过引用组合于此。对于关于光纤通路(FC)的更多信息,指2002年11月23日的“SCSI光纤通路协议-2(FCP-2)”,修订08(见www.t10.org),其通过引用组合于此。此外,二者还在2002年1月18日申请的、题为“存储区域网络的存储开关”的美国专利申请10/051,321中有所描述。
存储池如图1所示,在其物理结构中,根据本发明实施例的系统包括连到一个或多个服务器102和一个或多个物理设备106即存储设备或子系统的开关104。每一物理目标器由一个或多个逻辑单元(LU)107组成。虚拟目标器或VLU将最终由这些LU形成。
然而,在虚拟目标器可被产生或“提供”之前,开关需要“意识到”所连接的和/或可由其存取的物理存储设备及这些物理存储设备的特性。因而,在本发明的一实施例中,当存储设备或启动器设备连接到开关或向开关登记时,开关必须知道新设备的性能特征。一旦设备被“发现”,不同的询问被发送给设备以收集关于性能特征的信息。例如,可发送读/写指令以测量传送率或检查存取时间。另外,在一些实施例中,性能特征的获得可通过使管理员在管理站110输入性能特征而实现,其中,这些特征将继而被提供给开关104。
根据所收集的关于设备的信息,通常所有这些设备终端用户均看不见,在本发明的一实施例中,开关根据政策对设备进行分类。一旦用于存储设备的政策已被确定,设备的LU被分配到存储池802,在此有时称为“域”。由于每一存储设备由一个或多个LU组成,特定存储设备的所有LU被分配到同一池。然而,在一实施例中,每一LU被开关视为单独的存储节点且每一LU由SCC数据库中的LU对象描述。因而,每一池具有LU作为组成部分。在一实施例中,分配到池独立于物理存储设备在其下运行的协议如iSCSI或光纤通路完成。如本领域那些技术人员将理解的,每一池由分配给该池的LU的列表在开关中确定,在一实施例中,该列表保存在SCC数据库中。这样的列表可由指向LU对象的指针组成。
通常,每一池将仅可由具有特定特征的用户存取。例如,存储池可为那些位于建筑物1中的用户建立,其中池被命名为“建筑物1共享的金存储池”。另一示例性的池可被命名为“工程独占银存储池”并仅可由特定公司的工程队存取。当然,无限变化的池均可被建立,且所述及所示的池仅是示例性的。
此外,在一实施例中,有两个特殊池“默认池”和“非池”。默认池允许任何访问存储网络的人存取。相反,“非池”通常不可由用户存取,而仅可由开关自身或系统管理员存取。一旦分配到池,LU可由开关自身或系统管理员重新分配给不同的池。例如,LU在起初可被放在非池中,之后可移到默认池或其它池。
提供虚拟目标器一旦物理设备的LU在可存取池中(即不是“非池”),则可从那些LU创建虚拟目标器或VLU。如图4中所示,一旦创建,服务器(及其相应的用户)将“看见”一个或多个虚拟目标器或VLU152,每一虚拟目标器由一个或多个盘区154组成,但它们将不必须“看见”物理设备106。盘区是来自物理设备的连续部分或整个LU。如图4的例子中所示,在虚拟目标器152例子中每一盘区由来自几个物理设备的完整LU构成。“盘区”还可被来自启动器如服务器的LUN引用,其并不了解目标器是“虚拟的”。虚拟目标器的组成包括LU使用的协议与服务器无关。然而,如图4中所示,每一虚拟目标器由映射到物理设备106的LU的盘区组成。
为提供虚拟目标器,在一实施例中,用户为虚拟目标器选择几个特征,包括-大小(如按吉字节计算);-存储池,尽管在一实施例中用户可仅从用户被允许存取的存储池选择;-希望的可用性,如始终可用(数据关键且必须未曾被接受)、通常可用等;-虚拟目标器的WWUI;-备份池;-用户鉴别数据;-镜像成员的数量;-镜像成员的位置(如本地或远程)。
在本发明的其它实施例中,也可选择不同的、另外的或较少的特征。
之后,开关分析所选池的可用资源以确定是否可形成虚拟目标器,具体地,开关确定满足虚拟目标器的大小要求的多个LU(或LU的部分)是否可用。如果是,则用一个或多个盘区创建虚拟目标器,且虚拟目标器对象被形成在确定虚拟目标器、其盘区及其特征的SCC数据库中。用户为多个虚拟目标器选择的特征的例子可在2002年1月18日申请的、题为“存储系统中的虚拟化”的美国专利申请10/051,396中找到。
提供启动器连接当服务器或其它启动器连到开关且启动器支持iSNS或SLP时,在一实施例中,启动器将其向开关登记,使得启动器对象保存在SCC数据库中。然而,在其它实施例中,开关将包括存取提供功能,其创建、更新或删除启动器连接。
在创建存取连接-开关和启动器(如服务器)之间的连接时,用户将指定多个参数如服务器WWUI、连接详细资料如协议(如GigE或光纤通路)、独占或共享、源及目的地IP地址、带宽的最小和最大百分比、服务器要求的连接数、存取安全性、只读或读/写、及VPN使能等。
用户指定的一些或所有信息保存在存于SCC数据库中的启动器对象中。当消除连接时,启动器对象将被删除。
之后,开关、管理站或其它网络管理为特定连接创建存储池,指明可用于启动器的LU以形成虚拟目标器。
用户域与物理设备类似,虚拟目标器可被分配给仅可由那些具有指定特征的虚拟目标器存取的池。因此,与物理设备类似,虚拟目标器可被分配给用户专用域(在此有时称为用户域)、默认域(任何人均可存取)、或非域。在一实施例中,每一域将由SCC数据库中的对象确定,所述数据库包括分配给该域的所有虚拟目标器的列表。对于虚拟目标器,非域可包括备用虚拟目标器、镜像的虚拟目标器的成员、或来自另一开关的远程虚拟目标器。实际上,虚拟目标器非域是某些类型的虚拟目标器的停放地。为使描述简单,当提及虚拟目标器时,池在此将被称为“域”,但当提及物理设备时,池将继续被称为“池”。然而,应当理解的是,概念上地“池”和“域”实质上相同。
一旦启动器连接被提供,如上所述,提供满足启动器要求的虚拟目标器并放在启动器可存取的池中,或使得先前提供的虚拟目标器可存取启动器,例如通过将虚拟目标器从另一域如非域或默认域移到启动器的用户域实现。(应注意,或虚拟目标器或启动器连接可被首先提供-对它们以特定顺序进行提供没有要求)。之后,一旦启动器请求存取虚拟目标器如通过发送读或写请求,从SCC数据库读出虚拟目标器对象和启动器对象,且关于启动器连接和虚拟目标器的信息被传给相应的线路卡以用于处理请求。
图5a-5c示出了在存储区域网络中提供虚拟目标器的一个例子。图5a-5c的系统包括三个物理设备1061、1062和1063,总共具有六个LU-LU1、LU2、LU3、LU4、LU5、LU6。在图5a中,每一物理设备连到开关并放置在可由两个启动器X和Y存取的池中,即“X-Y用户池”。
如果启动器X和启动器Y中的每一个均要求一个虚拟目标器,则在一实施例中,提供LU以形成虚拟目标器VT1和VT2,其中VT1包括盘区LU1-3,VT2包括盘区LU4-6,如图5b所示。VT1被放置在服务器X用户域中,VT2放在服务器Y用户域中。启动器X将可以使用VT1,但不能使用VT2;同理,启动器Y可使用VT2,但不可使用VT1。
例如,如果启动器Y要求具有所有6个LU的镜像虚拟目标器M,则VT1和VT2可被生成为虚拟目标器M的组成部分。VT1和VT2可被放在开关的非域中(物理目标器不可由用户直接访问的域),同时M可被使得可由Y存取,如图2c所示。作为M的组成部分,VT1和VT2将不可被单独存取。VT1由LU1-3组成(物理设备1061),VT2由LU4-6组成(物理设备1062和1063)。当接收到向虚拟目标器M写数据的请求时,开关104将发送输入数据给VT1(物理设备1061)和VT2(物理设备1062和/或1063),因而在至少两个物理位置保存数据。
对象如上所述,每一虚拟目标器、每一启动器连接、和每一物理设备均用包括在相应实体的对象中的信息在SCC数据库中进行标识。每一虚拟目标器对象和物理目标器对象将包括包含其的盘区或LU的列表。在本发明的一实施例中,虚拟目标器对象的例子包括下述信息-实体类型-实体标识符-管理IP地址
-时间戳和标志-端口-域信息-SCN位图-容量及查询信息-盘区数量-盘区列表-盘区定位器-虚拟方式页-服务质量政策(如表4的前三项)-统计—使用、错误、及性能数据-SLA标识符物理目标器(或LU)对象可包括类似的信息。关于VTD信息的更多信息可在2002年1月18日申请的、题为“存储系统中的虚拟化”的美国专利申请10/051,396中找到。
虚拟化对不同信息包类型的示例性的输入和输出进程进行描述仅是为了阐述目的。应该理解的是,根据不同的实施方式,可使用很多用于不同信息包类型的进程。在一实施例中,在输入的信息包被PPU分类为数据或控制流量之后,PPU可在没有数据缓冲的情况下执行数据包的虚拟化。对于每一接收到的信息包,PPU确定信息包的类型(如指令、R2T/XFER_RDY、写数据、读数据、响应、任务管理/异常中止),其后执行或输入(信息包进入开关的情况)或输出(信息包离开开关的情况)算法以将虚拟目标器变换为物理目标器,反之亦然。因而,虚拟化功能分布在输入和输出端口之间。为还使能网速处理,虚拟描述符被与CAM结合使用以将请求位置映射到存取位置。此外,对于每一信息包,可以有特殊的考虑。例如,信息包去往的虚拟目标器可被间隔几个不连续的盘区,可被镜像,或者同时进行前述两个操作。
指令信息包—输入为开始去往或来自虚拟目标器的传送任务,由iSCSI或FC启动器分别在iSCSI PDU或FCP IU中发送SCSI指令。参考图6,在步骤502,当在PPU接收到这样的信息包时(在分类之后),接下来在步骤504,PPU CAM被检查以确定是否存在有效的VTD ID,在iSCSI启动器的情况下其使用TCP控制块索引和逻辑单元号(LUN),在FC启动器的情况下其使用S_ID(帧源的标识)和LUN。在每种情况下,LUN均可在各自的iSCSI PDU或FCP IU中找到。在步骤506,如果没有发现有效的VTD ID,则响应信息包被发送回启动器。在步骤508,如果发现有效的VTD,则检查无效参数。如果存在无效参数,则在步骤506,响应信息包被发送回到iSCSI或FC启动器。
步骤510,任务索引(Task Index)连同输入任务控制块(ITCB)一起分配。任务索引指向或确定ITCB。ITCB保存FlowID(从VTD获得)、VTD ID、指令序号或CmdSN(来自iSCSI信息包本身)、以及启动器(始发者)标识(如在iSCSI PDU中发送的initiator_task_tag或FCP帧首部中的OX_ID)。OX_ID是交换机的始发者(启动器)标识。ITCB保存在PPU SRAM中。当然,在任何给定时间可以有许多进行中的指令,这样,PPU可在任何特定时间保存多个ITCB。每一ITCB将由其各自的任务索引引用。
步骤512,VTD跟踪到特定虚拟目标器的未完成指令的数量,这样,当建立ITCB时,其递增未完成指令的数量。在一些实施例中,VTD建立任一特定虚拟目标器允许的未完成指令的最大数。步骤514,FlowID、VTD ID和任务索引均被复制到本地首部。FlowID告诉流量管理器目的地线路卡和端口。之后,任务索引将由输出端口返回以确定特定的信息包任务。最后,步骤516,信息包被发送给流量管理器继而路由交换机,从而其最终到达输出PPU。
当虚拟目标器由多个盘区组成时,有多个FlowID标识在VTD中,每一个用于一个盘区。PPU检查信息包的块地址并选择正确的FlowID。例如,如果虚拟目标器具有两个1Gb盘区,及指令的块地址在第二盘区中,则PPU选择第二盘区的FlowID。换言之,FlowID确定目的地/输出端口。如果读指令跨盘区边界,意为指令指明开始块地址在第一盘区中,结束块地址在第二盘区中,则在从第一盘区读适当的数据之后,PPU向第二盘区重复该指令以读剩余的块。对于跨盘区边界的写指令,PPU将指令复制给两个盘区并管理写数据的顺序。当读指令跨盘区边界时,将有两个读指令给两个盘区。第二读指令仅在完成第一读指令之后发送以确保数据循序返回给启动器。
指令信息包—输出参考图7,步骤602,在指令PDU或IU已通过交换结构之后,其将到达PPU,去往输出端口。步骤604,PPU试图确定信息包所去往的物理设备。为此,来自本地首部的VTD ID被用于搜索PTD ID(物理目标器描述符标识符)的PPU CAM。VTD ID与同特定输出PPU相关的特定PTD ID有关系并对其索引。与VTD类似,PTD保存在PPU SRAM中,且还包含类似于在VTD中发现的信息。如果搜索不成功,则假设这是由CPU直接发送的指令信息包,不需要PPU进行另外的处理,从而使得PPU根据本地首部中的FlowID将该信息包传给适当的输出端口。如果搜索成功,PTD ID将确定虚拟目标器将被映射到其的物理目标器(包括盘区),且其与当前处理该信息包的特定输出线路卡通信。
之后,步骤606,PPU分配任务索引和输出任务控制块(ETCB)。在实施例中,用于输出的任务索引与用于输入的相同。任务索引还确定ETCB。此外,ETCB还保存指令所需的任何其它控制信息,包括iSCSIPDU的CmdSN或FCP IU的交换序列。
步骤608,使用PTD的内容,PPU将来自虚拟目标器的SCSI块地址转换为物理设备的块地址。将虚拟目标器的块地址增加到盘区的开始块偏移量可提供这种转换。例如,如果寻求存取的虚拟目标器块为1990,且对应第一盘区的开始偏移量为3000,则将被存取的盘区的块地址为4990。之后,步骤610,PPU产生适当的iSCSI CmdSN或FCP序列ID,并将它们放在iSCSI PDU或FCP帧首部中。如果需要(在一些实施例中,在输入PPU从FCP首部读必要的信息之后,其将删除那些信息,尽管其它实施例将其完整的留下并在该步骤仅更新或改变必要的字段)或为了发送给iSCSI目标器的信息包,PPU可构建FCP帧首部,在步骤612,TCP控制块索引被从PTD复制到本地首部中。此外,PPU提供iSCSI或FCP首部需要的任何标记或其它变量。之后,步骤614,完成的iSCSI PDU或FCP帧被发送给PACE,其继而去除本地首部(步骤616)并将信息包传给适当的端口,步骤618。
R2T或XFER RDY—输入参考图8,步骤702,在指令已按如上所述发送给目标器存储设备之后,指令是写指令,当存储设备准备好接受写数据时,将从存储设备接收R2T PDU或XFER_RDY IU。步骤704,PPU通过使用信息包内的initiator_task_tag或OX_ID确定相应的ETCB。在一些实施例中,信息包的initiator_task_tag或OX_ID与任务索引一样,其确定ETCB。如果由于无效的initiator_task_tag或OX_ID而使PPU不能确定有效的ETCB,则丢弃信息包。否则,一旦ETCB被确定,PPU从ETCB取回输入任务索引(如果不同于输出任务索引)和VTD ID,步骤706。PPU还从PTD取回FlowID,其也由PTD ID在ETCB中确定。FlowID向流量管理器指示原始启动器(输入)端口的线路卡。FlowID、VTD ID和任务索引被复制到信息包的本地首部,步骤708。最后,在步骤710,信息包被发送给流量管理器和交换结构。
R2T或XFER RDY—输出参考图9,在R2T或XFER_RDY信息包从交换结构出现之后,其由PPU在其被传回启动器(发起特定任务的原始指令的设备)的途中接收,步骤802。步骤804,任务索引确定对应于PPU的ITCB,从该ITCB可获得原始initiator_task_tag和VTD ID。步骤806,R2T/XFER_RDY希望的数据传送长度或BURST_LEN字段保存在ITCB中。步骤808,本地首部被FCP D_ID或TCP连接的TCP控制块索引更新。应注意,所保存的来自原始信息包的S_ID,其保存在ITCB中,变为D_ID。步骤810,如果需要,构建FCP帧首部或更新其字段。步骤812,目的地端口号在本地首部中指明,其代替FlowID并与initiator_task_tag一起放在SCSI PDU中,或对于FC连接,RX_ID和OX_ID放在FCP帧中。RX_ID字段是交换机的应答者(目标器)标识。PPU还放置需要放在PDU或FCP首部中的任何其它标记或变量。步骤814,信息包被转发给PACE,其从本地首部确定输出端口。之后,步骤816,本地首部被去除,并在步骤818转发给适当的端口进行传送。
如果指令被拆分到两个或更多个盘区,如指令在一盘区开始并在另一盘区结束,则PPU必须保存第二盘区的R2T或XFER_RDY,直到第一盘区的数据传送结束为止,因而确保从启动器连续传送数据。此外,第二盘区的R2T或XFER_RDY的数据偏移量将需要进行修改,其通过增加传送给第一盘区的数据量实现。
写数据包—输入在启动器接收R2T或XFER_RDY信息包之后,其返回写入数据信息包。参考图10,在步骤902,当从启动器接收到写入数据iSCSI PDU或FC IU时,在步骤904,信息包属于其的ITCB必须被确定。通常,ITCB可使用RX_ID或target_task_tag进行确定,在一些实施例中,其与任务索引相同。SPU还确定所接收的信息包状况良好。然而,在一些情况下,启动器将传送主动提供的数据在接收R2T或XFER_RDY之前发送的数据。在这种情况下,PPU必须通过搜索特定虚拟目标器的所有未完成任务而发现ITCB。但如果未发现ITCB,则丢弃信息包。在步骤906,如果发现ITCB,将被传送的总数据量在ITCB中更新。步骤908,FlowID和任务索引被添加到信息包的本地首部。之后,在步骤910,信息包被转发给流量管理器并最终转发给交换结构。
写数据包—输出参考图11,在步骤1002,当从交换结构(经流量管理器)接收到写入数据信息包时,在步骤1004需要确定信息包的ETCB。通常,ETCB可使用本地首部中的任务索引进行确定。步骤1006,一旦发现ETCB,通过使用ETCB内的信息,PPU产生适当的iSCSI DataSN或FCP序列ID,以及PDU或FCP帧首部的任何其它标记或变量如数据偏移量。在步骤1008,本地首部用来自PTD的TCP控制块索引或FCP D_ID更新。端口号也被添加到本地首部。在步骤1010,完成的iSCSI PDU或FCP帧被发送给PACE,在步骤1012,其去掉本地首部并在步骤1014将信息包转发给适当的端口。
初始镜像同步镜像的虚拟目标器(或镜像的VLU)将数据保存在两个或多个物理位置以提高数据存储的可靠性。在开始提供镜像的虚拟目标器时,保存在虚拟目标器的每一成员中的数据必须被同步。因而,可执行初始镜像同步操作以在镜像的虚拟目标器的每一物理目标器成员之间同步数据。在一实施例中,可通过将一目标器成员建立为主(源)目标器而同步数据。之后,主目标器的数据可被写入镜像的虚拟目标器的其它目标器成员中的每一个。在主源目标器的数据被写入每一目的地目标器之后,建立虚拟目标器的初始状态,且虚拟目标器可以说成将被镜像的目标器,每一目标器成员保存相同的镜像虚拟目标器的数据集。
尽管本说明书经常提及初始镜像同步在初始提供镜像的虚拟目标器时执行,但不必须如此。初始镜像同步可在任何时间执行。例如,在确定镜像的虚拟目标器中的一个或多个目标器因某些原因已变得不同步时,可执行初始镜像同步。在另一例子中,可在需要时执行初始镜像同步以确保镜像的虚拟目标器的同步。
根据一实施例,镜像的虚拟目标器的初始镜像同步将结合图12和图13进行描述。图12为根据一实施例的初始镜像同步过程的流程图,图13为简化的框图,其包括可用于同步镜像的虚拟目标器的成员的存储开关1300和指令流。为了清晰描述,存储开关1300的许多构件已从图13中省略,这些构件的运行在此之前已进行描述。根据图13所示的实施例,存储开关可包括中央处理单元1302。在一实施例中,CPU1302可包括复制服务管理器(CSM)1304以管理初始镜像同步。在各个实施例中,CSM1304可包括一个或多个实质上可执行如在此所述的功能的软件模块、组成部分、或指令集。CSM1304可包括专用硬件和/或包括由保存在一个或多个存储设备如非易失性存储器(如闪存、EEPROM等)或其它存储器设备上的软件编程的硬件。
在图12的步骤1202,例如,虚拟目标器的初始镜像同步响应于用户如先前所述提供镜像的虚拟目标器而开始。例如,用户可提供如图13中所示的虚拟逻辑单元1306,其具有物理目标器M0和M1作为成员。物理目标器M0和M1可以是一个或多个物理设备的物理LU。作为虚拟目标器的成员在此给出两个物理目标器仅为示例性的目的。根据实施例,虚拟目标器可包括任何数量的物理目标器成员。
为开始对应于所提供VLU1306的物理目标器的初始同步,在步骤1204,创建内部虚拟目标器(IVT)。例如,CSM1304可创建IVT1308,其保存在存储器1310中并可由PPU1312存取。IVT1308可被提供为包括第一内部虚拟逻辑单元(IVLU),其对应于被指定为操作源的镜像目标器1306的成员。一个或多个第二IVLU可被提供,其对应于镜像目标器1306的其余成员。例如,在图13给出的例子中,源IVLU(0)1320提供给源目标器M0,目的地IVLU(1)提供给目的地目标器M1。在一实施例中,如果VLU1306包括3个或更多个成员目标器,可为镜像目标器的每一对应目标器(目的地)成员提供单独的IVLU。在另一实施例中,每一目的地目标器可被提供为同一IVLU的个别成员。在一实施例中,内部虚拟逻辑单元可以是为初始镜像同步操作创建或提供的临时对象。在同步操作结束后,IVLU可被丢弃。CPU1302和CSM1304在同步期间可用作内部启动器以向IVLU(0)1320和IVLU(1)1322提供读和写指令。
在同步物理目标器之前,IVT的一个成员被指定为主成员,其成为源目标器,其数据将被写入VLU的每一其余成员。在一实施例中,用户提供VLU1306可指定VLU的哪一物理目标器是主成员。在其它实施例中,存储开关可指定成员之一作为默认成员。
根据不同的实施例,IVT可在存储开关的任何PPU处提供。在图13给出的例子中,在不与初始镜像同步操作关联的PPU1312提供IVT1308。PPU1312不与连到物理目标器M0或M1的端口关联。此外,PPU A12不与初始提供VLU1306的端口关联。在一实施例中,CSM1304包括确定提供IVT的最佳PPU的算法。在一实施例中,该算法最好在与VLU的主成员关联的PPU处提供IVT。如果主成员的PPU正处理预定数量或超过预定数量的任务,IVT可被分配给另一PPU(例如,其余虚拟目标器成员之一的PPU或与主成员关联的PPU的线路卡上的另一PPU)。在另一实施例中,CSM1304选择存储开关的正处理最少任务数的那一PPU。
在提供IVT1308之后,在步骤1206,CSM1304向镜像的虚拟逻辑单元的目的地目标器发出写指令。在图13的例子中,VLU1306的镜像成员M0为主成员。因而,写指令被首先发给目的地目标器M1。写指令的指令流在图13中被标为1。如图所示,CSM1304首先将写指令发给IVLU(1)1322,其被保存在SRAM1310中并与PPU1312关联。如果有多个目的地目标器,CSM1304可向为每一目的地目标器提供的各个IVLU发出多个写指令,或向为目的地目标器提供的一个或多个IVLU的各个成员发出一个或多个写指令。写指令在输入PPU13121接收。PPU1312可从为IVLU(1)1322保存的VTD对象确定目的地目标器M1的位置(如线路卡和端口位置)。在确定M1的位置之后,写指令通过交换结构转发给PPU1314(与目的地目标器M1相关联的PPU)。例如,PPU1312可更新写指令的首部信息以指明适当的目的地线路卡和端口。如果VLU1306包括两个以上的镜像成员,PPU1312确定镜像的VLU的每一目的地目标器的位置并将写指令转发给那些目的地目标器中的每一个。
写指令首先从PPU1312的入口发送给交换结构。为了清晰起见,组件如流量管理器和接口均从图13中省略。写指令通过交换结构,在那里其被发送给PPU1314。写指令在输出PPU13142接收并转发给PACE1316。PACE1316将指令转发给目标器M1,其将确定对于写指令是否有传送就绪信号可用。如果目标器M1具有可用传送就绪信号,在步骤1208,传送就绪信号(如XFER_RDY信息单元或R2T信息包单元)被返回给PACE1316。传送就绪信号的指令流在图13所示的指令流中被标为2。传送就绪信号从PACE1316发送给PPU13141并进入交换结构,在那里其被送回到PPU13122。PPU13122将传送就绪信号返回给CSM1304。
CSM1304在向源目标器发出读指令之前将等待以从每一目的地目标器接收传送就绪信号。通过首先向目的地目标器发出写指令,根据一实施例,存储开关在接收数据之前可建立将被同步的数据的内部流。这样,可确保从源到目的地以线路速度成功发送数据,而没有缓冲。存储开关在向源目标器发出读指令之前等待从每一目的地目标器接收传送就绪信号,使得每一目的地目标器一旦被读即可用于从源目标器接收数据。这样,在等待一个或多个目的地目标器返回传送就绪信号的同时,存储开关将不必缓存从源目标器读的数据。
在从每一目的地目标器接收传送就绪信号之后,在步骤1210,CSM1304向源目标器发出读指令。读指令在图13的指令流中被标为3,其首先发送给PPU13121。PPU13121将读指令转发给交换结构,在那里其将被发送给连到源目标器M0的PPU1318。在步骤1212,源目标器M0从PACE1320接收读指令并返回所读的数据。在一实施例中,在步骤1212,根据在步骤1208由目的地目标器返回的传送就绪信号指明的最小数据大小(如突发长度或所需数据长度字段),返回一个或多个读出数据包。
读出数据在图13所示的指令流中被标为4,其从源目标器M0通过PACE1320和PPU13181转发给交换结构。之后,读出数据被从交换结构发送给PPU1312。在输出PPU13122接收读出数据。在步骤1214,PPU13122将读出数据包转换为写数据包。在一实施例中,PPU1312更新信息包的本地首部信息以指明其是写数据包。在一实施例中,当从源目标器M0接收到读出的信息包时,PPU1318将从所分配的ETCB取回VTD ID、任务索引、及FlowID并将它们复制到本地首部中。当在PPU13122接收到读出数据时,引用分配给写请求的ITCB以用对应于所分配ITCB的值更新读出数据首部信息。例如,在FCP-SCSI中,读出的帧首部字段包括OX_ID、RX_ID、SEQ_ID、SEQ_CNT、和PARAM被转换为对应于写指令ITCB和数据流的值。
在将读出数据转换为写数据之后,在步骤1216,PPU13122将写数据转发给目的地目标器。写数据,在图13的指令流中被标为5,被首先从PPU13122发送给PACE1322。PACE1322能够将从输出PPU13122接收到的数据发送给输入PPU13121。这使PPU1312能够将写数据转发给交换结构,在那里其将被发送给与目的地目标器相关联的PPU。PPU1314从交换结构接收写数据并将该数据经PACE1316转发给目的地目标器M1。
本领域一般技术人员应该意识到的是,如果在步骤1208从目的地目标器返回传送就绪信号,其指明小于发给目的地目标器的写指令的整个大小的所需数据长度或突发字段长度,则步骤1210-1216可被重复,直到写指令的所有数据被提供给目的地目标器为止。根据从目的地目标器接收到的传送就绪信号中指明的突发大小,CSM1304可向源目标器发出多个读指令,直到满足写指令为止。另外,多个写指令可被发给目的地目标器以同步整个VLU。例如,发出的每一写指令可以是有限的传送大小如128K。因而,为同步一个VLU,步骤1206-1216可重复许多次。
如先前所述,在步骤1204,IVT可在存储开关的任何PPU提供以执行初始镜像同步。图14为包括存储开关1400和描绘指令流的简化框图,所述指令流为用在与主目标器成员(源目标器)相关联的PPU提供的IVT实施的指令流。为开始同步镜像的目标器成员的数据,CSM1404首先向目的地目标器M1发出写指令,在图14的指令流中被标为1。写指令被首先提供给与源目标器M0关联的输入PPU14121。PPU14121将指令转发给交换结构,在那里其通过输出PPU14142和PACE1416发送给目的地目标器M1。当目的地目标器M1可用于接收写数据时,其将向存储开关1400返回传送就绪信号。传送就绪信号,在图14的指令流中被标为2,通过输出PPU14122从PPU14141发送回CSM1404。当传送就绪信号已从镜像的目标器的每一目的地目标器返回时,CSM1404向源成员发出读指令。CSM1404提供读指令给输入PPU14121,其在图14的指令流中标为3,输入PPU14121将指令转发给交换结构。读指令的目的地(其可在复制到读指令的本地首部的FlowID中指明)将指示流量管理器向PPU1412与其关联的线路卡和端口发送指令。之后,读指令将从交换结构通过输出PPU14122发送给源目标器M0。之后,源目标器M0将向PACE1422返回一个或多个读出数据包,在图14的指令流中标为4,PACE将数据包转发给输入PPU14121。读出数据通过交换结构传过输入PPU14121到达输出PPU14122。在输出PPU14122,读出数据被转换为写数据,在图14的指令流中标为5,之后其被转回PACE1422。如先前所述,PACE1422可向PPU14121返回写数据包,在那里其被转发给交换结构,并通过输出PPU14142和PACE1416而到目的地目标器成员M1。
镜像同步验证除同步镜像的虚拟目标器的成员之外,根据多个实施例,存储开关可验证镜像的虚拟目标器的成员均已被同步。为验证镜像的虚拟目标器的成员已被同步,读一成员目标器的数据并将其与其它成员目标器的数据比较。根据一实施例,存储开关可以线路速度验证镜像的虚拟目标器的成员已被同步,而不用缓存从源目标器读出并与其它成员目标器的数据进行比较的数据。
图15所示为根据一实施例用于验证镜像的虚拟目标器的成员已被同步的流程图,图16所示为包括存储开关1500和验证镜像的虚拟目标器已被同步的指令流的简化框图。虚拟目标器1606包括物理目标器M0和M1作为成员,其同步将被验证。在步骤1502,响应于从管理站接收到的用户请求开始验证操作以验证虚拟目标器1606的成员已被同步。在一实施例中,CPU1602包括验证服务管理器(VSM)1604以管理镜像目标器验证。在步骤1504,VSM1604首先提供IVT,其包括对应于物理目标器M0的IVLU(0)1620和对应于物理目标器M1的IVLU(1)1622。VSM1604将M0指定为主成员(如响应于开始验证时接收到的用户指定)。与初始镜像同步一样,IVT可在存储开关1600内的任何PPU处提供。在图16的例子中,IVT1608在与源目标器M0相关联的PPU处提供。如果镜像的目标器包括3个或更多个目的地目标器,则可提供一个包括每一目的地目标器作为成员的IVLU或多个具有一个或多个目的地目标器作为成员的IVLU。在提供包括多个目标器作为成员的单一IVLU的实施例中,验证操作可仅返回成员目标器之一未同步的状态,而不用确定特定的目标器。在这样的实施例中,不成功的同步验证可通过向单一IVLU写正确的数据而进行纠正,其将使得数据被写入每一目的地目标器。
在提供IVT1608之后,在步骤1506,VSM1604向目的地目标器发出写或验证指令,在图16的指令流中标为1。写或验证指令可如先前结合图14所述的那样进行发送。在步骤1508,如果目标器M0具有可用传送就绪信号,在图16的指令流中标为2,传送就绪信号将被返回给VSM1604。传送就绪信号可指明目的地目标器可接收的最大突发或数据长度。在从每一目的地目标器接收传送就绪信号之后,在步骤1510,VSM1604向主目标器成员发出读指令,在图16的指令流中标为3。如果读数据将相对多个目标器进行验证,读指令可指明从每一成员目标器接收到的最小突发或数据长度。响应于读指令,在步骤1512,目标器M0将向PPU1612返回一个或多个数据包。读出数据在输入PPU16121接收并发送给交换结构,在那里其被发送回输出PPU16122。在步骤1514,在输出PPU16122,读出数据被转换以验证数据。例如,每一读出数据包的首部信息可被更新以指明数据是验证数据(如首部信息可被改为具有字节检验请求的SCSI验证)并指明被验证的成员目标器的目的地标识。当在PPU16122接收到读出数据时,引用分配给写请求的ITCB以用对应于所分配ITCB的值更新读出数据首部信息。例如,在FCP-SCSI中,读出的帧首部字段包括OX_ID、RX_ID、SEQ_ID、SEQ_CNT、和PARAM被转换为对应于写或验证指令ITCB和数据流的值。在一实施例中,PPU16122以线路速度将读出数据转换为验证数据,而不用缓存数据。在将读出数据转换为验证数据之后,验证数据被发送给PACE1622并发送回PPU16121。在步骤1516,验证数据包可被发送给交换结构并发送给与目的地目标器M1关联的16141。之后,验证数据被提供给目的地目标器,其将对验证数据及其保存的数据进行比较以确定数据是否匹配,因而确定目的地目标器是否与源目标器同步。
本领域一般技术人员应该意识到的是,如果在步骤1508从目的地目标器返回传送就绪信号,其指明小于所发出验证指令的整个大小的数据或突发字段长度,则步骤1510-1516可被重复,直到验证指令的所有数据被提供给目的地目标器进行验证为止。根据从目的地目标器接收到的传送就绪信号中指明的突发大小,CSM1604可向源目标器发出多个读指令,直到满足验证指令为止。另外,多个验证指令可被发给目的地目标器以验证整个VLU的同步。例如,发出的每一验证指令可以是有限的传送大小如128K。因而,为验证一个VLU,步骤1506-1516可重复许多次。
在一实施例中,线路卡CPU可执行初始镜像同步并将从源目标器读的数据转换为每一目的地目标器的写数据。另外,线路卡CPU可执行镜像同步验证并将读出数据转换为验证数据。写指令依然被发给镜像的VLU的目的地目标器成员以确保在读指令发给源目标器之前每一目标器可用于接收数据。开关内的内部数据路径可在向源目标器发出读指令之前建立以避免在开关内缓存数据,同时等待目的地目标器变得可用。
例如,参考图14的框图(但不参考指令流),CPU1410可通过向每一目的地物理目标器提供写指令而开始初始镜像同步或镜像验证。在一实施例中,每一写指令被直接从CPU1410发送给物理目标器,而不是通过各自的PPU发送。在另一实施例中,写指令可被提供给如先前所述提供IVT的PPU(包括对应于镜像的VLU的成员的一个或多个IVLU)。在这样的实施例中,写指令将从提供IVT的PPU发送给每一目的地物理目标器,其分别通过与其关联的PPU发送。在从每一物理目标器接收传送就绪信号之后,CPU1410发给源目标器读指令。在一实施例中,与写指令一样,读指令通过提供IVT的PPU并继而通过与源目标器相关联的PPU发送。在另一实施例中,读指令通过其相关联的PACE直接发送给源目标器,而不通过提供IVT的PPU。源目标器将根据提供给其的传送就绪信号中指明的数据传送长度或突发长度而响应以一个或多个数据包(其长度可以是所有目的地成员目标器指明的最小长度)。相比于结合图13、14和15描述的过程,读出数据将不被发送给提供IVT的PPU。而是,读出数据被从与源目标器相关联的PACE直接发送给CPU414。CPU414可更新读出数据包首部信息以在执行初始同步时将读出数据转换为写数据,及在执行镜像验证时将读出数据转换为验证数据。之后,写或验证数据可被提供给目的地目标器。在一实施例中,写数据被直接发送给与目的地目标器相关的PACE并继而发送给目的地目标器。在另一实施例中,写或验证数据被转发给提供IVT的PPU并继而经与目的地目标器相关的PPU发送给目的地目标器。
由于写指令被发给每一目的地目标器,CPU在向源目标器发出读指令之前等待来自每一目的地目标器成员的传送就绪信号,在等待目的地目标器变得可用从而接收数据时数据将不被缓存在CPU中。然而,应该注意的是,在离开与源目标器相关的PACE时,读和写数据将进入去往和来自CPU1410的一般指令通路。因而,在读数据之前CPU处理进入CPU指令流的其它任务或请求时,数据可被缓存在CPU1410。
根据一实施例的存储开关在虚拟目标器的初始镜像同步或镜像同步验证期间可接受来引自启动设备的指令。在初始化或验证过程期间为保持镜像的虚拟目标器的完整性和同步性,指令可被接收和处理。根据一实施例,在镜像同步或验证期间镜像的虚拟目标器可保持“在线”,使得包括忙碌和任务集满状态信号的失效响应不被返回给向虚拟目标器发出指令的启动设备。这样,启动器未完成指令可与初始镜像同步或镜像验证一起发生,启动器不会经受任何服务损失。图17示出了根据一实施例的流程图,其在执行虚拟目标器的初始镜像同步或镜像同步验证的同时处理输入的镜像的虚拟目标器或VLU的指令。
在步骤1700,如先前所述那样,开始镜像的VLU的初始镜像同步或验证。在步骤1702,用于同步或验证操作的第一写或验证指令被发给目的地目标器。在步骤1704,在步骤1702发出的指令还未完成时,确定是否接收到对于正被同步或验证的虚拟目标器的写、读或其它指令。如果接收到指令,所接收的指令不被立即从输入PPU发送给VLU的每一目标器成员。而是,输入的指令可被发送给VLU的管理同步的CSM或管理验证的VSM。在步骤1706,由CSM或VSM对输入的指令进行排队。在一实施例中,输入的指令可在先进/先出缓冲器中进行排队(如保存在本地存储器中如图3的SRAM418),使得它们将以接收它们的顺序出队并进行处理。如果在步骤1704确定尚未接收到指令,则处理直接进行到步骤1708。
在步骤1708,确定在步骤1702发出的指令是否已被处理。如果指令的处理没有结束,则流程图进行到步骤1704以确定是否已从启动器接收到另外的给镜像的VLU的指令。
如在步骤1708确定在步骤1702发出的指令已被处理,在处理于步骤1702发出的指令时对于镜像的VLU的任何指令可在步骤1710出队并在步骤1712进行处理。在一实施例中,FIFO的表头被存取,在步骤1710和1712,在表头的指令出队并被处理。在步骤1714,确定在队列中是否有另外的指令。如果还有指令,则另一指令可在步骤1710出队并在步骤1712进行处理。在所有排队的指令已被处理之后,过程进行到步骤1716,确定为执行同步或验证是否需要发出和处理另外的指令。如果不需要发出和处理另外的指令(如所有源目标器数据已被写入目的地目标器或所有源目标器数据均已相对目的地目标器的数据进行验证),过程在步骤1718结束。然而,如果需要发出和处理另外的指令以同步或验证镜像的目标器,操作进行到步骤1702以发出下一指令。
通过排队输入的、用于正被同步或验证的镜像的目标器的指令,在从启动设备接收指令的同时,同步或验证可被同时执行。这可提供提高的性能,因为镜像的目标器在过程期间可保持在线。启动设备将不会经受来自镜像的目标器的任何服务损失。输入的指令将在同步或验证指令之间进行处理,使得启动设备“看见”镜像的目标器连续可用。
前述关于本发明的详细描述均为说明和描述的目的而给出。在此的描述并不是穷尽的,也不是将本发明限定为在此公开的准确形式。根据上面的示教,可进行许多修改和改变。选择所描述的实施例是为了最佳阐释本发明的原理及其实际应用从而使本领域的其它技术人员能在不同的实施情况下使用适于预期特定用途的各种修改最好地使用本发明。本发明的范围由所附权利要求及其等价物确定。
权利要求
1.管理镜像的目标器的方法,包括确定至少一目的地目标器接收数据的可用性;及只在至少一目的地目标器被确定可用于接收数据时向源目标器提供读指令。
2.根据权利要求1的方法,其中所述确定可用性的步骤包括提供第一指令给所述至少一目的地目标器;及确定所述至少一目的地目标器是否返回传送就绪信号。
3.根据权利要求2的方法,其中所述第一指令为写指令和验证指令中的至少之一。
4.根据权利要求1的方法,还包括提供对应于所述至少一目的地目标器的第一内部虚拟逻辑单元和对应于所述源目标器的第二内部虚拟逻辑单元。
5.根据权利要求4的方法,其中所述提供第一内部虚拟逻辑单元的步骤包括提供对应于第一目的地目标器的第一内部虚拟逻辑单元;所述方法还包括提供对应于第二目的地目标器的第三内部虚拟逻辑单元。
6.根据权利要求4的方法,其中所述提供第一内部虚拟逻辑单元的步骤包括提供所述第一内部虚拟逻辑单元的对应于第一目的地目标器的第一成员及对应于第二目的地目标器的第二成员。
7.根据权利要求4的方法,其中所述确定可用性的步骤包括向与所述第一内部虚拟逻辑单元相关联的处理单元提供第一指令;从所述第一内部虚拟逻辑单元提供的信息确定所述至少一目的地目标器的位置;从所述处理单元向所述至少一目的地目标器提供第一指令;及确定所述至少一目的地目标器是否返回传送就绪信号。
8.根据权利要求7的方法,其中所述处理单元为第一处理单元;第二处理单元将所述第一指令提供给所述第一处理单元并确定所述至少一目的地目标器是否返回传送就绪信号。
9.根据权利要求8的方法,其中所述提供读指令的步骤包括当至少一目标器返回所述传送就绪信号时,从所述第二处理单元提供读指令给所述第二内部虚拟逻辑单元;及使用提供给所述第二内部虚拟逻辑单元的信息将所述读指令从所述第一处理单元发送给所述源目标器。
10.根据权利要求9的方法,其中所述第一指令是写指令,所述方法还包括从所述源目标器接收读出数据;将所述读出数据转换为写数据;及将所述写数据提供给所述至少一目的地目标器。
11.根据权利要求10的方法,其中转换所述读出数据包括在所述第一处理单元的输出部分接收所述读出数据;在所述第一处理单元的所述输出部分将所述读出数据转换为所述写数据;将所述写数据从所述输出部分发送到所述第一处理单元的输入部分;及将所述写数据从所述输入部分发送给所述至少一目的地目标器。
12.根据权利要求11的方法,其中所述读出数据是一个或多个读出数据包;所述在所述第一处理单元的所述输出部分将所述读出数据转换为写数据的步骤包括更新所述一个或多个读出数据包的首部信息以表明所述一个或多个读出数据包是一个或多个写数据包。
13.根据权利要求9的方法,其中所述第一指令是验证指令,所述方法还包括从所述源目标器接收读出数据;将所述读出数据转换为验证数据;及将所述验证数据提供给所述至少一目的地目标器。
14.根据权利要求13的方法,其中转换所述读出数据包括在所述第一处理单元的输出部分接收所述读出数据;在所述第一处理单元的所述输出部分将所述读出数据转换为所述验证数据;将所述验证数据从所述输出部分发送到所述第一处理单元的输入部分;及将所述验证数据从所述输入部分发送给所述至少一目的地目标器。
15.根据权利要求14的方法,其中所述读出数据是一个或多个读出数据包;所述在所述第一处理单元的所述输出部分将所述读出数据转换为验证数据的步骤包括更新所述一个或多个读出数据包的首部信息以表明所述一个或多个读出数据包是一个或多个验证数据包。
16.根据权利要求7的方法,其中所述处理单元是第一处理单元;及所述提供所述第一指令给所述至少一目的地目标器的步骤包括将所述写指令提供给与所述至少一目的地目标器通信的第二处理单元。
17.根据权利要求1的方法,还包括在所述镜像的目标器的同步或验证指令未完成时,接收启动器提供给所述镜像的目标器的指令;排队所述启动器提供的指令;当完成所述同步或所述验证指令时,解除队列并将所述启动器提供的指令提供给所述镜像的目标器。
18.根据权利要求17的方法,其中所述接收、排队和解除队列的步骤在所述启动器不经受所述镜像的目标器的任何服务损失的情况下执行。
19.根据权利要求10的方法,其中所述将读出数据转换为写数据的步骤以线路速度执行。
20.根据权利要求10的方法,其中所述将读出数据转换为写数据的步骤在不缓存所述读出数据或所述写数据的情况下进行。
21.根据权利要求13的方法,其中所述将读出数据转换为验证数据的步骤以线路速度执行。
22.根据权利要求13的方法,其中所述将读出数据转换为验证数据的步骤在不缓存所述读出数据或所述验证数据的情况下进行。
23.管理镜像的目标器的装置,所述镜像的目标器包括至少一目的地目标器和源目标器,该装置包括至少一与所述至少一目的地目标器和所述源目标器通信的端口;至少一与所述至少一端口通信的处理单元,所述至少一处理单元只在所述至少一目的地目标器可用于接收数据时才向所述源目标器提供读指令。
24.根据权利要求23的装置,其中所述至少一处理单元通过向所述至少一目的地目标器提供第一指令并确定所述至少一目的地目标器是否返回传送就绪信号而确定所述至少一目的地目标器是否可用于接收数据。
25.根据权利要求24的装置,其中所述指令为写指令和验证指令中的至少之一。
26.根据权利要求23的装置,还包括与所述至少一处理单元通信的存储器,所述存储器包括对应于所述至少一目的地目标器的第一内部虚拟逻辑单元和对应于所述源目标器的第二内部虚拟逻辑单元。
27.根据权利要求26的装置,其中所述第一内部虚拟逻辑单元对应于第一目的地目标器;所述存储器还包括对应于第二目的地目标器的第三内部虚拟逻辑单元。
28.根据权利要求26的装置,其中所述第一内部虚拟逻辑单元包括对应于第一目的地目标器的第一成员及对应于第二目的地目标器的第二成员。
29.根据权利要求26的装置,其中所述至少一处理单元包括第一处理单元和第二处理单元,所述第一处理单元与所述第一和第二内部虚拟逻辑单元相关联。
30.根据权利要求29的装置,其中所述第二处理单元向所述第一处理单元提供所述第一指令,所述第一指令用于所述第一内部虚拟逻辑单元;所述第一处理单元从所述存储器中提供给所述第一内部虚拟逻辑单元的信息确定所述至少一目的地目标器的位置;在确定所述位置之后,所述第一处理单元将所述第一指令提供给所述至少一目的地目标器;及所述第二处理单元确定所述至少一目的地目标器是否返回所述传送就绪信号。
31.根据权利要求30的装置,其中当所述至少一目的地目标器返回所述传送就绪信号时,所述第二处理单元将所述读指令提供给所述第一处理单元,所述读指令用于所述第二内部虚拟逻辑单元;及所述第一处理单元使用提供给所述第二内部虚拟逻辑单元的信息将所述读指令发送给所述源目标器。
32.根据权利要求31的装置,其中所述信息是所述目的地目标器与其相连的线路卡或端口。
33.根据权利要求31的装置,其中所述第一指令是写指令;在提供所述读指令之后,所述第一处理单元从所述源目标器接收读出数据,所述第一处理单元将所述读出数据转换为写数据并将所述写数据提供给所述至少一目的地目标器。
34.根据权利要求33的装置,其中所述第一处理单元包括输入部分和输出部分,所述第一处理单元在所述输出部分接收所述读出数据并将所述读出数据转换为所述写数据,所述写数据被从所述输出部分发送到所述输入部分,所述写数据被从所述输入部分发送给所述至少一目的地目标器。
35.根据权利要求34的装置,其中所述读出数据是一个或多个读出数据包;及所述第一处理单元通过更新所述一个或多个读出数据包的首部信息而将所述读出数据转换为所述写数据,以表明所述一个或多个读出数据包是一个或多个写数据包。
36.根据权利要求31的装置,其中所述第一指令是验证指令;在提供所述读指令之后,所述第一处理单元从所述源目标器接收读出数据,所述第一处理单元将所述读出数据转换为验证数据并将所述验证数据提供给所述至少一目的地目标器。
37.根据权利要求36的装置,其中所述第一处理单元包括输入部分和输出部分,所述第一处理单元在所述输出部分接收所述读出数据并将所述读出数据转换为所述验证数据,所述验证数据被从所述输出部分发送到所述输入部分,所述验证数据被从所述输入部分发送给所述至少一目的地目标器。
38.根据权利要求37的装置,其中所述读出数据是一个或多个读出数据包;及所述第一处理单元通过更新所述一个或多个读出数据包的首部信息而将所述读出数据转换为所述验证数据,以表明所述一个或多个读出数据包是一个或多个验证数据包。
39.根据权利要求30的装置,其中所述第一处理单元通过向与所述至少一目的地目标器通信的第三处理单元提供所述第一指令而将所述第一指令提供给所述至少一目的地目标器,所述第三处理单元将所述第一指令发送给所述至少一目的地目标器。
40.根据权利要求33的装置,其中所述第一处理单元能够以线路速度将所述读出数据转换为所述写数据。
41.根据权利要求33的装置,其中所述第一处理单元能够将所述读出数据转换为所述写数据而不缓存所述读出数据或所述写数据。
42.根据权利要求36的装置,其中所述第一处理单元能够以线路速度将所述读出数据转换为所述验证数据。
43.根据权利要求36的装置,其中所述第一处理单元能够将所述读出数据转换为所述验证数据而不缓存所述读出数据或所述验证数据。
44.根据权利要求29的装置,其中所述第一处理单元与所述至少一目的地目标器通信。
45.根据权利要求29的装置,其中所述第一处理单元与所述源目标器通信。
46.根据权利要求29的装置,其中所述第一处理单元不是用于与所述至少一目的地目标器或所述源目标器通信的端口的处理单元。
47.根据权利要求23的装置,还包括存储器,在所述装置正处理所述镜像的目标器的同步或验证指令时,所述至少一处理单元在所述存储器中对输入给所述镜像的目标器的指令进行排队,当所述同步或验证指令完成时,所述至少一处理单元解除队列并将所述输入的指令提供给所述镜像的目标器。
48.根据权利要求47的装置,其中所述输入的指令从至少一启动器接收;及所述至少一处理单元排队所述输入的指令,所述装置不会向所述至少一启动器提供失效响应。
49.根据权利要求48的装置,其中所述失效响应包括忙碌响应和任务集满响应。
50.根据权利要求48的装置,其中所述至少一处理单元排队、解除队列并提供所述输入的指令是在所述至少一处理单元不经受所述镜像的目标器的服务损失的情况下进行。
51.根据权利要求23的装置,其中所述镜像的目标器是镜像的虚拟逻辑单元。
52.管理镜像的目标器的方法,包括提供对应于所述镜像的目标器的至少一目的地目标器的第一内部虚拟逻辑单元(IVLU)和对应于所述镜像的目标器的源目标器的第二IVLU;将用于所述至少一目的地目标器的第一指令提供给所述第一IVLU;将所述第一指令发送给所述至少一目的地目标器;及当从所述源目标器接收到传送就绪信号时,将用于所述源目标器的读指令提供给所述第二IVLU。
53.根据权利要求52的方法,其中所述第一IVLU对应于第一目的地目标器;及所述提供步骤包括提供对应于第二目的地目标器的第三IVLU。
54.根据权利要求52的方法,其中所述提供步骤包括在第一处理单元提供所述第一和第二IVLU。
55.根据权利要求54的方法,其中所述提供第一指令的步骤包括从内部启动器提供所述第一指令给所述第一处理单元;及所述提供读指令的步骤包括从所述内部启动器提供读指令给所述第一处理单元。
56.根据权利要求55的方法,其中所述内部启动器为中央处理单元;及所述第一处理单元为包处理单元。
57.根据权利要求56的方法,其中所述中央处理单元包括复制服务管理器和验证服务管理器中至少之一。
58.根据权利要求56的方法,其中所述第一指令为写指令,所述方法还包括响应于所述读指令从所述源目标器接收读出数据;在所述第一处理单元将所述读出数据转换为写数据;及将所述写数据提供给所述至少一目的地目标器。
59.根据权利要求58的方法,其中所述转换步骤不涉及所述中央处理单元。
60.根据权利要求58的方法,其中所述转换步骤以线路速度执行,而不缓存所述读出数据或所述写数据。
61.根据权利要求56的方法,其中所述第一指令为验证指令,所述方法还包括响应于所述读指令从所述源目标器接收读出数据;在所述第一处理单元将所述读出数据转换为验证数据;及将所述验证数据提供给所述至少一目的地目标器。
62.根据权利要求61的方法,其中所述转换步骤不涉及所述中央处理单元。
63.根据权利要求62的方法,其中所述转换步骤以线路速度执行,而不缓存所述读出数据或所述验证数据。
64.管理镜像的目标器的装置,包括第一处理单元;与所述第一处理单元通信的存储器,所述存储器在同步或验证所述镜像的目标器的同步时维护至少第一内部虚拟逻辑单元(IVLU)和第二IVLU,所述第一IVLU对应于所述镜像的目标器的至少一目的地目标器,所述第二IVLU对应于所述镜像的目标器的源目标器;及内部启动器,所述内部启动器将用于所述至少一目的地目标器的第一指令提供给所述第一IVLU,当从所述源目标器接收到传送就绪信号时,所述内部启动器将用于所述源目标器的读指令提供给所述第二IVLU。
65.根据权利要求64的装置,其中所述内部启动器通过将所述第一指令提供给所述第一处理单元而将用于所述至少一目的地目标器的第一指令提供给所述第一IVLU;及所述第一处理单元使用保存在所述存储器中的、用于所述第一IVLU的信息将所述第一指令发送给所述至少一目的地目标器。
66.根据权利要求64的装置,其中所述第一指令是写指令;及在所述读指令被提供给所述源目标器之后,所述第一处理单元从所述源目标器接收读出数据,所述第一处理单元将所述读出数据转换为写数据并将所述写数据发送给所述至少一目的地目标器。
67.根据权利要求66的装置,其中所述读出数据和所述写数据不由所述内部启动器接收。
68.根据权利要求64的装置,其中所述第一指令是验证指令;及在所述读指令被提供给所述源目标器之后,所述第一处理单元从所述源目标器接收读出数据,所述第一处理单元将所述读出数据转换为验证数据并将所述验证数据发送给所述至少一目的地目标器。
69.根据权利要求68的装置,其中所述读出数据和所述验证数据不由所述内部启动器接收。
70.根据权利要求69的装置,其中所述内部启动器是中央处理单元。
71.一个或多个处理器可读存储设备,其具有体现在所述一个或多个处理器可读存储设备上的处理器可读代码,所述处理器可读代码用于编程一个或多个处理器以执行下述方法,包括确定至少一目的地目标器接收数据的可用性;及只在所述至少一目的地目标器被确定可用于接收数据时向源目标器提供读指令。
72.根据权利要求71的一个或多个处理器可读存储设备,其中所述方法还包括提供对应于所述至少一目的地目标器的第一内部虚拟逻辑单元和对应于所述第二源目标器的第二内部虚拟逻辑单元;从所述源目标器接收读出数据;将所述读出数据转换为写数据;及将所述写数据提供给所述至少一目的地目标器。
73.根据权利要求72的一个或多个处理器可读存储设备,其中所述将所述读出数据转换为写数据的步骤以线路速度执行,而不缓存所述读出数据或所述写数据。
74.根据权利要求71的一个或多个处理器可读存储设备,其中所述方法还包括提供对应于所述至少一目的地目标器的第一内部虚拟逻辑单元和对应于所述第二源目标器的第二内部虚拟逻辑单元;从所述源目标器接收读出数据;将所述读出数据转换为验证数据;及将所述验证数据提供给所述至少一目的地目标器。
75.根据权利要求74的一个或多个处理器可读存储设备,其中所述将所述读出数据转换为验证数据的步骤以线路速度执行,而不缓存所述读出数据或所述验证数据。
全文摘要
根据各个实施例的系统和方法可管理镜像的虚拟目标器以使虚拟目标器的成员同步和/或验证虚拟目标器的成员已被同步。在一实施例中,通过首先提供至少一对应于镜像的目标器的至少一目的地目标器的第一内部虚拟逻辑单元(IVLU)和对应于镜像的目标器的源目标器的第二IVLU而同步镜像的虚拟目标器。写指令被首先经一个或多个内部虚拟逻辑单元发给镜像的目标器的每一目的地目标器成员。当每一目的地目标器可用于接收数据时,是否可接收数据由返回的传送就绪信号指示,读指令经第二内部虚拟逻辑单元提供给源目标器。这样,在从源目标器读数据之前已在源和目的地目标器之间建立数据通路。因而,数据可以线路速度从源目标器读出、转换为写数据、并发送给目的地目标器,而不用缓存数据。提供类似的过程以验证镜像的目标器的成员已被同步。在一实施例中,提供在同步或验证镜像的目标器的同步时管理输入镜像的目标器的指令的系统和方法。当接收到输入的指令时可对其排队并在未完成的同步或验证指令完成时提供给镜像的目标器。
文档编号G06F11/20GK101061476SQ200580013831
公开日2007年10月24日 申请日期2005年4月26日 优先权日2004年4月30日
发明者罗伯特·托尔·弗雷, 张超, 普洛·库里科塞, 拉杰什·阿南塔阿拉亚南, 霍金斯·姚 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1