具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
为了实现FC Fabric网络互通,本发明利用光纤通道网络地址转换(FC NAT)设备连接多个FC Fabric网络,其中FC NAT设备上连接到FC Fabric网络的端口配置为N_Port,FC NAT设备为自身连接到FC Fabric网络的端口申请FCID,具体可以通过向该端口连接的FC Fabric网络中的FC交换机进行申请。FC NAT设备在自身的连接每个FC Fabric网络的端口搜索物理逻辑单元号(logical unit number,LUN),为搜索到的每个物理LUN分配逻辑LUN并挂接到FC NAT设备上连接其它FC Fabric网络的端口,从而使得其它FC Fabric网络的服务器可以通过FC NAT设备上连接所述其它FC Fabric网络的端口访问该FC Fabric网络中的物理LUN。
根据FC NAT设备上连接各FC Fabric网络的端口的个数的不同,至少有四种实施方式可以实现多个FC Fabric网络互通,以下进行详细说明:
第一种实施方式、
FC NAT设备上连接同一FC Fabric网络的端口只有一个。
参见图2,图2是本发明实施例一利用FC NAT设备连通多个FC Fabric网络的组网示意图,包括三个FC Fabric网络:Fabric1、Fabric2、Fabric3,FC NAT设备分别通过端口N_Port21、N_Port22、N_Port23连接Fabric1、Fabric2和Fabric3,其中,Fabric1中有服务器1(服务器1的FCID为1)和存储设备1(存储设备1的FCID为2,且存储设备1包括物理LUN11、物理LUN12);Fabric2中有服务器2(服务器2的FCID为3)和存储设备2(存储设备2的FCID为4,且存储设备2包括物理LUN21);Fabric3中有服务器3(服务器3的FCID为5)和存储设备3(存储设备31的FCID为6,且存储设备3包括物理LUN31)。
为了实现图2中所示的Fabric1、Fabric2、Fabric3之间的互通,Fabric1中的每个存储设备需要将N_Port21绑定到自身的所有物理LUN;Fabric2中的每个存储设备需要将N_Port22绑定到自身的所有物理LUN;Fabric3中的每个存储设备需要将N_Port23绑定到自身的所有物理LUN。另外,FC NAT设备需要为N_Port21、N_Port22、N_Port23分别申请FCID,具体申请方法为:FC NAT设备通过N_Port21端口向Fabric1中的FC交换机注册,从而获得Fabric1中的FC交换机为其分配的FCID(假设为FCID21);通过N_Port22端口向Fabric2中的FC交换机注册,从而获得Fabric2中的FC交换机为其分配的FCID(假设为FCID22);通过N_Port23端口向Fabric3中的FC交换机注 册,从而获得Fabric3中的FC交换机为其分配的FCID(假设为FCID23)。
FC NAT设备为N_Port21申请FCID后,就可以在N_Port21搜索到Fabric1中所有绑定了N_Port21的物理LUN,然后为每个物理LUN分配一个逻辑LUN并建立LUN映射表项,将LUN映射表项挂接到对应的挂接端口,对该LUN映射表项来说,对应的挂接端口为N_Port22和N_Port23。
FC NAT设备为N_Port22申请FCID后,就可以在N_Port22搜索到Fabric2中所有绑定了N_Port22的物理LUN,然后为每个物理LUN分配一个逻辑LUN并建立LUN映射表项,将LUN映射表项挂接到对应的挂接端口,对该LUN映射表项来说,对应的挂接端口为N_Port21和N_Port23。
FC NAT设备为N_Port23申请FCID后,就可以在N_Port23搜索到Fabric2中所有绑定了N_Port23的物理LUN,然后为每个物理LUN分配一个逻辑LUN并建立LUN映射表项,将LUN映射表项挂接到对应的挂接端口,对该LUN映射表项来说,对应的挂接端口为N_Port21和N_Port22。
在执行上述挂接LUN映射表项到对应的挂接端口后,FC NAT设备的N_Port21就模拟成了Fabric1中的一个存储设备,该存储设备的FCID就是N_Port21的FCID:FCID21,该存储设备中的物理LUN就是挂接到N_Port21的所有LUN映射表项中的逻辑LUN,从而使得Fabric1中的服务器可以发起对该存储设备中的逻辑LUN的访问。FC NAT设备的N_Port22就模拟成了Fabric2中的一个存储设备,该存储设备的FCID就是N_Port22的FCID:FCID22,该存储设备中的物理LUN就是挂接到N_Port22的所有LUN映射表项中的逻辑LUN,从而使得Fabric2中的服务器可以发起对该存储设备中的逻辑LUN的访问。FC NAT设备的N_Port23就模拟成了Fabric3中的一个存储设备,该存储设备的FCID就是N_Port3的FCID:FCID23,该存储设备中的物理LUN就是挂接到N_Port23的所有LUN映射表项中的逻辑LUN,从而使得Fabric3中的服务器可以发起对该存储设备中的逻辑LUN的访问。
上述N_Port21、N_Port22、N_Port23挂接的LUN映射表项可以存储在LUN映射表中,每个LUN映射表项可以包括以下内容:逻辑LUN的挂接端口的FCID、逻辑LUN、物理LUN、物理LUN所在存储设备的FCID、物理LUN发现端口的FCID。N_Port21、N_Port22、N_Port23挂接的LUN映射表项可以共用一个LUN映射表,也可以各自使用一个LUN映射表。
如果N_Port21、N_Port22、N_Port23分别使用一个LUN映射表,则N_Port21对应的LUN映射表可能如表一所示:
逻辑LUN的挂 |
逻辑LUN |
物理LUN |
物理LUN所在存 |
物理LUN发现 |
接端口的FCID |
|
|
储设备的FCID |
端口的FCID |
FCID21 |
3 |
21 |
FCID4 |
FCID22 |
FCID21 |
4 |
31 |
FCID6 |
FCID23 |
表一
根据表一,Fabric1中的服务器可以发起对N_Port1的逻辑LUN3和逻辑LUN4的访问,进而实现对Fabric2中的物理LUN21的访问以及对Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。
N_Port22对应的LUN映射表如表二所示:
表二
根据表二,Fabric2中的服务器可以发起对N_Port22的逻辑LUN1、逻辑LUN2和逻辑LUN4的访问,进而实现对Fabric1中的物理LUN11和物理LUN12的访问以及对Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FCNAT表项。
N_Port23对应的LUN映射表如表三所示:
表三
根据表三,Fabric3中的服务器可以发起对N_Port23的逻辑LUN1、逻辑LUN2和逻辑LUN3的访问,进而实现对Fabric1中的物理LUN11和物理LUN12的访问以及对Fabric2中的物理LUN21的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。
下面以Fabric1中的服务器1发起一个访问N_Port21的逻辑LUN3的访问过程为例,对FC NAT表项的建立以及FC报文的转发进行说明:
当Fabric1中的服务器1发起一个访问N_Port21的逻辑LUN3的访问时,向FC NAT设备发送的FC报文中,源ID(S_ID)为FCID1,目的ID(D_ID)为FCID21,目的LUN为逻辑LUN3,另外,还携带服务器1为该访问分配的交换ID(OX_ID),假设为1111。当FC NAT设备在N_Port21端口接收到该FC报文后,可以先查找是否存在 以FC报文的标识信息对应的FC NAT表项,其中,FC报文的标识信息包括FC报文的S_ID、D_ID和OX_ID,如果不存在FC报文的标识信息对应的FC NAT表项(首次发起访问的情况下,不存在对应的FC NAT表项),则查找FC报文的目的LUN对应的LUN映射表项,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,然后转发修改后的FC报文,如果存在FC报文的标识信息对应的FC NAT表项(非首次发起访问的情况下,FC报文中不再携带目的LUN),则根据FC报文的标识信息对应的FC NAT表项修改FC报文的标识信息,然后转发修改后的FC报文。
上述FC NAT表项包括表项索引和表项内容,其中表项索引包括S_ID、D_ID、OX_ID,表项内容也包括S_ID、D_ID、OX_ID。
上述查找是否存在FC报文的标识信息对应的FC NAT表项的方法为:将FC报文的S_ID、D_ID、OX_ID分别作为表项索引中的S_ID、D_ID、OX_ID,查找该表项索引对应的FC NAT表项,如果查找到,则确定存在FC报文的标识信息对应的FC NAT表项,如果未查找到,则确定不存在FC报文的标识信息对应的FC NAT表项。
上述查找FC报文的目的LUN对应的LUN映射表项的方法为:在N_Port21挂接的所有LUN映射表项中查找逻辑LUN3对应的LUN映射表项,可以确定表一的第一个LUN映射表项为逻辑LUN3对应的LUN映射表项。
FC NAT设备在N_Port21接收到FC报文后,还需要为FC报文重新分配OX_ID,在修改FC报文时,以重新分配的OX_ID替换FC报文中原有的OX_ID。
查找到FC报文的目的LUN对应的LUN映射表项后,可以根据查找到的LUN映射表项建立两个FC NAT表项,首先建立第一个FC NAT表项,将FC报文的S_ID、D_ID、以及OX_ID分别作为第一个FC NAT表项的表项索引中的S_ID、D_ID、OX_ID,将查找到的LUN映射表项中的物理LUN的发现端口的FCID、物理LUN所在物理设备的FCID、以及为FC报文重新分配的OX_ID分别作为该第一个FC NAT表项的表项内容中的源ID、目的ID、交换ID;其次建立第二个FC NAT表项,将查找到的LUN映射表项中的物理LUN所在物理设备的FCID、物理LUN的发现端口的FCID、为FC报文重新分配的OX_ID分别作为该第二个FC NAT表项的表项索引中的S_ID、D_ID、OX_ID,将FC报文的D_ID、S_ID、以及OX_ID分别作为该第二个FC NAT表项的表项索引中的S_ID、D_ID、OX_ID。
具体到上述在N_Port21接收到的FC报文,假设为FC报文重新分配的OX_ID为2222,则根据FC报文的目的LUN对应的LUN映射表项建立的FC NAT映射如表四所示:
表四
查找到FC报文的目的LUN对应的LUN映射表项后,还可以根据查找到的LUN映射表项修改FC报文的标识信息和目的LUN,将FC报文的S_ID、D_ID、OX_ID、目的LUN分别替换为查找到的LUN映射表项中的物理LUN发现端口的FCID、物理LUN所在存储设备的FCID、为FC报文重新分配的OX_ID、物理LUN,然后将修改后的FC报文从修改后的FC报文的S_ID对应的端口转发。
具体到上述在N_Port21接收到的FC报文,即是将FC报文的S_ID、D_ID、OX_ID、目的LUN分别替换为FCID22、FCID4、2222、LUN21,然后将修改后的FC报文从N_Port22转发,这样,Fabric2中的存储设备2就能够接收到该FC报文并进行回应,回应的FC报文的S_ID、D_ID、OX_ID分别为FCID4、FCID22、2222,回应的FC报文通过N_Port22到达FC NAT设备后,FC NAT设备将根据表四中的第二个FC NAT表项将回应的FC报文的S_ID、D_ID、OX_ID替换为FCID21、FCID1、1111,然后从N_Port11转发,并最终到达服务器1。此后,Fabric1中的服务器1访问N_Port1的逻辑LUN3时,均根据表四的第一个FC NAT表项执行FC报文的修改和转发,而Fabric2中的存储设备2接收到相应的FC报文后进行回应时,均根据表四的第二个FC NAT表项执行回应的FC报文的修改和转发。
第二种实施方式、
FC NAT设备上连接同一FC Fabric网络的端口的个数为所述FC NAT设备连接的FC Fabric网络的个数减去1。
参见图3,图3为本发明实施例二利用FC NAT设备连通多个FC Fabric网络的组网示意图,与图2相同,包括三个FC Fabric网络:Fabric1、Fabric2、Fabric3以及连接Fabric1、Fabric2、Fabric3的FC NAT设备,且Fabric1、Fabric2、Fabric3与图2中的Fabric1、Fabric2、Fabric3完全相同(其中的服务器和存储设备等设备完全相同),不再赘述,不同之处在于,FC NAT设备连接同一FC Fabric网络的端口有两个,其中,FC NAT设备通过端口N_Port31和N_Port32连接到Fabric1,通过端口N_Port33和N_Port34连接到Fabric2,通过端口N_Port35和N_Port36连接到Fabric3。
为了实现图3中所示的Fabric1、Fabric2、Fabric3之间的互通,可以采用为FC NAT设备连接的任意两个FC Fabric网络配置专用的连通通道的方法,具体地,FC NAT设备预先为自身连接的任意两个FC Fabric网络分配用于连通该两个FC Fabric网络的端 口对,端口对中的两个端口互为关联端口,该两个FC Fabric网络之间的访问流量均通过端口对中的两个端口转发,其它访问流量则不允许流经端口对中的任一端口。如图3所示,可以将N_Port31和N_Port36配置为用于连通Fabric1和Fabric3的端口对,将N_Port32和N_Port33配置为用于连通Fabric1和Fabric2的端口对,将N_Port34和N_Port35配置为用于连通Fabric2和Fabric3的端口对。
此外,Fabric1中的每个存储设备需要将N_Port31和N_Port32绑定到自身的所有物理LUN;Fabric2中的每个存储设备需要将N_Port33和N_Port34绑定到自身的所有物理LUN;Fabric3中的每个存储设备需要将N_Port35和N_Port36绑定到自身的所有物理LUN。另外,FC NAT设备需要为自身的连接FC Fabric网络的各端口申请FCID,具体申请方法与图2中FC NAT设备为连接FC Fabric网络的各端口申请FCID的方法相同,这里,假设FC NAT设备为N_Port31、N_Port32、N_Port33、N_Port34、N_Port35、N_Port36申请到的FCID分别为FCID31、FCID32、FCID33、FCID34、FCID35、FCID36。
FC NAT设备为自身的连接FC Fabric网络的各端口申请FCID后,就可以在该端口搜索到该端口连接到的FC Fabric网络中所有绑定了该端口的物理LUN,然后为每个物理LUN分配一个逻辑LUN并建立LUN映射表项,将LUN映射表项挂接到对应的挂接端口,对该LUN映射表项来说,对应的挂接端口为该端口的关联端口,例如,对于在N_Port31搜索到的物理LUN,在为每个物理LUN分配逻辑LUN,逻辑LUN的挂接端口为N_Port36。
在执行上述挂接逻辑LUN映射表项到对应的挂接端口后,FC NAT设备上连接FC Fabric网络的各端口均模拟成了该端口连接的FC Fabric网络中的一个存储设备,该存储设备的FCID就是该端口的FCID,该存储设备中的物理LUN就是挂接到该端口的所有LUN映射表项中的逻辑LUN,从而使得该端口连接的FC Fabric网络中的服务器可以发起对该存储设备的逻辑LUN的访问。例如,N_Port31模拟成为Fabric1的一个存储设备,N_Port32模拟成Fabric1的另一个存储设备,Fabric1中的服务器1可以发起这两个存储设备的逻辑LUN的访问。
在执行上述挂接LUN映射表项到对应的挂接端口后,N_Port31、N_Port32、N_Port33、N_Port34、N_Port35、N_Port36上均对应一个包含一个或多个LUN映射表项的LUN映射表,以N_Port31和N_Port36为例,N_Port31和N_Port36对应的LUN映射表分别如表五、表六所示:
表五
根据表五,Fabric1中的服务器可以发起对N_Port31的逻辑LUN4的访问,进而实现对Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。
表六
根据表六,Fabric3中的服务器可以发起对N_Port36的逻辑LUN1和逻辑LUN2的访问,进而实现对Fabric1中的物理LUN11和物理LUN12的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。
下面以Fabric1中的服务器1发起一个访问N_Port31的逻辑LUN4的访问过程为例,对FC NAT表项的建立以及FC报文的转发进行说明:
当Fabric1中的服务器1发起一个访问N_Port31的逻辑LUN4的访问时,服务器1向FC NAT设备发送的FC报文中,S_ID为FCID1,D_ID为FCID31,目的LUN为逻辑LUN4,另外,还携带服务器1为该访问分配的OX_ID,假设为3333。当FC NAT设备在N_Port31端口接收到该FC报文后,可以先查找是否存在以FC报文的标识信息对应的FC NAT表项,如果不存在FC报文的标识信息对应的FC NAT表项(首次发起访问的情况下,不存在对应的FC NAT表项),则查找FC报文的目的LUN对应的LUN映射表项,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,然后转发修改后的FC报文,如果存在FC报文的标识信息对应的FC NAT表项(非首次发起访问的情况下,FC报文中不再携带目的LUN),则根据FC报文的标识信息对应的FC NAT表项修改FC报文的标识信息,然后转发修改后的FC报文。
假设FC NAT设备在N_Port31端口接收到的FC报文后,确定不存在FC报文的标识信息对应的FC NAT表项,则在N_Port31挂接的所有LUN映射表项中查找逻辑LUN4对应的LUN映射表项,表五中的LUN映射表项即为逻辑LUN4对应的LUN映射表项。
可以根据表五中LUN映射表项建立FC NAT表项,假设为FC重新分配的OX_ID为4444,则建立的FC NAT表项如表七所示:
表七
可以根据表五中LUN映射表项对FC报文进行修改,将FC报文中的S_ID、D_ID、OX_ID、目的LUN分别替换为FCID36、FCID6、4444、LUN31,然后将修改后的FC报文从FCID36对应的端口:N_Port36转发,并最终到达Fabric3中的存储设备3,存储设备3对FC报文进行处理和回应,回应的FC报文的S_ID、D_ID、OX_ID分别为FCID6、FCID36、4444,回应的FC报文到达FC NAT设备后,FC NAT设备将回应的FC报文的S_ID、D_ID、OX_ID分别替换为FCID31、FCID1、3333,然后从N_Port31端口转发,最终到达Fabric1中的服务器1。此后,Fabric1中的服务器1访问N_Port31的逻辑LUN4时,均根据表七的第一个FC NAT表项执行FC报文的修改和转发,而Fabric3中的存储设备3接收到FC报文后进行回应时,均根据表七的第二个FC NAT表项执行回应报文的修改和转发。
第三种实施方式、
FC NAT设备上连接同一FC Fabric网络的端口的个数为一个或多个,且至少存在一个FC Fabric网络,所述FC NAT设备上连接该FC Fabric网络的端口的个数为多个。
参见图4,图4为本发明实施例三利用FC NAT设备连通多个FC Fabric网络的组网示意图,与图2相同,包括三个FC Fabric网络:Fabric1、Fabric2、Fabric3以及连接Fabric1、Fabric2、Fabric3的FC NAT设备,且Fabric1、Fabric2、Fabric3与图2中的Fabric1、Fabric2、Fabric3完全相同(其中的服务器和存储设备等设备完全相同),不再赘述,不同之处在于:FC NAT设备上连接Fabric1的端口有两个,分别为N_Port41和N_Port42,另外,FC NAT上连接Fabric2和Fabric3的端口分别为N_Port43、N_Port44。
为了实现图4中所示的Fabric1、Fabric2、Fabric3之间的互通,可以采用将同一FC Fabric网络中的每个物理LUN只绑定FC NAT设备上连接该FC Fabric网络的所有端口中的一个端口的方法,实现流量分担,例如,在图4中,可以将Fabric1中的LUN11绑定N_Port41,将Fabric1中的LUN12绑定N_Port42。而对于Fabric2和Fabric3,由于FC NAT设备上连接这两个FC Fabric网络的端口均只有一个,因此Fabric2中的每个存储设备需要自身的物理LUN绑定N_Port43;Fabric3中的每个存储设备需要自身的物理LUN绑定N_Port44。另外,FC NAT设备需要为自身的连接FC Fabric网络的各端口申请FCID,具体申请方法与图2中FC NAT设备为连接FC Fabric网络的各端口申请FCID的方法相同,这里,假设FC NAT设备为N_Port41、N_Port42、N_Port43、N_Port44申请到的FCID分别为FCID41、FCID42、FCID43、FCID44。
FC NAT设备为自身的连接FC Fabric网络的各端口申请FCID后,就可以在该端口搜索到该端口连接到的FC Fabric网络中所有绑定了该端口的物理LUN,然后为每个物理LUN分配一个逻辑LUN并建立LUN映射表项,将LUN映射表项挂接到对应的挂接端口,对该LUN映射表项来说,需要针对FC NAT连接其它每个FC Fabric网络,在FC NAT上连接该其它FC网络的所有端口中选择一个作为该LUN映射表项对应的挂接端口,然后将该LUN映射表项挂接到该LUN映射表项对应的挂接端口。例如,对于在N_Port43搜索到的物理LUN,在为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,针对Fabric1,可以在N_Port41和N_Port42中随机选择一个作为该LUN映射表项对应的挂接端口,针对Fabric3,由于只有一个端口N_Port44,因此将N_Port44作为该LUN映射表项对应的挂接端口,确定了该LUN映射表项对应的两个挂接端口之后,就可以将该LUN映射表项挂接到确定的两个挂接端口。
在执行上述挂接逻辑LUN映射表项到对应的挂接端口后,FC NAT设备上连接FC Fabric网络的各端口均模拟成了该端口连接的FC Fabric网络中的一个存储设备,该存储设备的FCID就是该端口的FCID,该存储设备中的物理LUN就是挂接到该端口的所有LUN映射表项中的逻辑LUN,从而使得该端口连接的FC Fabric网络中的服务器可以发起对该存储设备的逻辑LUN的访问。例如,N_Port41模拟成为Fabric1的一个存储设备,N_Port42模拟成Fabric1的另一个存储设备,Fabric1中的服务器1可以发起这两个存储设备的逻辑LUN的访问。
在执行上述挂接LUN映射表项到对应的挂接端口后,N_Port41、N_Port42、N_Port43、N_Port44上均对应一个包含一个或多个LUN映射表项的LUN映射表,以N_Port41和N_Port42为例,假设FC NAT设备在N_Port 43搜索到LUN21之后,为LUN21分配的逻辑LUN为LUN3,且针对Fabric1选择的挂接端口为N_Port41,而FC NAT设备在N_Port44搜索到LUN31之后,为LUN31分配的逻辑LUN为LUN4,且针对Fabric1选择的挂接端口为N_Port42,则N_Port41和N_Port42对应的LUN映射表分别如表八、表九所示:
表八
根据表八,Fabric1中的服务器可以发起对N_Port41的逻辑LUN3的访问,进而实现对Fabric2中的物理LUN21的访问,并在发起访问的过程中建立和维护相应的FCNAT表项。
逻辑LUN的挂 |
逻辑LUN |
物理LUN |
物理LUN所在存 |
物理LUN发现 |
接端口的FCID |
|
|
储设备的FCID |
端口的FCID |
FCID42 |
4 |
31 |
FCID6 |
FCID44 |
表九
根据表九,Fabric1中的服务器可以发起对N_Port42的逻辑LUN4的访问,进而实现对Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FCNAT表项。
下面以Fabric1中的服务器1发起一个访问N_Port41的逻辑LUN4的访问过程为例,对FC NAT表项的建立以及FC报文的转发进行说明:
当Fabric1中的服务器1发起一个访问N_Port41的逻辑LUN3的访问时,服务器1向FC NAT设备发送的FC报文中,S_ID为FCID1,D_ID为FCID41,目的LUN为逻辑LUN3,另外,还携带服务器1为该访问分配的OX_ID,假设为5555。当FC NAT设备在N_Port41端口接收到该FC报文后,可以先查找是否存在以FC报文的标识信息对应的FC NAT表项,如果不存在FC报文的标识信息对应的FC NAT表项(首次发起访问的情况下,不存在对应的FC NAT表项),则查找FC报文的目的LUN对应的LUN映射表项,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,然后转发修改后的FC报文,如果存在FC报文的标识信息对应的FC NAT表项(非首次发起访问的情况下,FC报文中不再携带目的LUN),则根据FC报文的标识信息对应的FC NAT表项修改FC报文的标识信息,然后转发修改后的FC报文。
假设FC NAT设备在N_Port41端口接收到的FC报文后,确定不存在FC报文的标识信息对应的FC NAT表项,则在N_Port41挂接的所有LUN映射表项中查找逻辑LUN3对应的LUN映射表项,表八中的LUN映射表项即为逻辑LUN3对应的LUN映射表项。
可以根据表八中LUN映射表项建立FC NAT表项,假设为FC重新分配的OX_ID为6666,则建立的FC NAT表项如表十所示:
表十
可以根据表十中LUN映射表项对FC报文进行修改,将FC报文中的S_ID、D_ID、OX_ID、目的LUN分别替换为FCID43、FCID4、6666、LUN21,然后将修改后的FC报文从FCID43对应的端口:N_Port43转发,并最终到达Fabric2中的存储设备2,存 储设备2对FC报文进行处理和回应,回应的FC报文的S_ID、D_ID、OX_ID分别为FCID4、FCID43、6666,回应的FC报文到达FC NAT设备后,FC NAT设备将回应的FC报文的S_ID、D_ID、OX_ID分别替换为FCID41、FCID1、5555,然后从N_Port41端口转发,最终到达Fabric1中的服务器1。此后,Fabric1中的服务器1访问N_Port41的逻辑LUN3时,均根据表十的第一个FC NAT表项执行FC报文的修改和转发,而Fabric2中的存储设备2接收到FC报文后进行回应时,均根据表十的第二个FC NAT表项执行回应报文的修改和转发。
第四种实施方式、
对图4所示组网,还可以采用另外一种实施方式实现Fabric1、Fabric2、Fabric3之间的互通,该种实施方式下,对于FC NAT设备上连接同一FC Fabric网络的每个端口,该FC Fabric网络中的所有物理LUN均需绑定该端口,例如,在图4中,需要将Fabric1中的LUN11和LUN12均绑定N_Port41,同时将Fabric1中的LUN11和LUN12均绑定N_Port42;将Fabric2中的LUN21绑定N_Port43;将Fabric3中的LUN31绑定N_Port44。另外,FC NAT设备需要为自身的连接FC Fabric网络的各端口申请FCID,这里,假设FC NAT设备为N_Port41、N_Port42、N_Port43、N_Port44申请到的FCID分别为FCID41、FCID42、FCID43、FCID44。
FC NAT设备为自身的连接FC Fabric网络的各端口申请FCID后,就可以在该端口搜索到该端口连接到的FC Fabric网络中所有绑定了该端口的物理LUN,然后为每个物理LUN分配一个逻辑LUN并建立相应的LUN映射表项,将LUN映射表项挂接到对应的挂接端口,对该LUN映射表项来说,FC NAT设备上连接其它所有FC Fabric网络的端口均为该LUN映射表项对应的挂接端口,然后将该LUN映射表项挂接到该LUN映射表项对应的挂接端口。例如,对于在N_Port43搜索到的物理LUN,在为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,LUN映射表项对应的挂接端口包括N_Port41、N_Port42和N_Port44。
本实施方式下,在不同端口搜索到的同一物理LUN,在分配逻辑LUN时,需要分配不同的逻辑LUN,例如,在N_Port41和N_Port42均能搜索到LUN11和LUN12,当在N_Port41搜索到LUN11时,为LUN11分配的逻辑LUN为LUN1,在N_Port41搜索到LUN12时,为LUN12分配的逻辑LUN为LUN5,而在N_Port42搜索到LUN11时,为LUN11分配的逻辑LUN为LUN3,在N_Port42搜索到LUN12时,为LUN12分配的逻辑LUN为LUN6。
在执行上述挂接逻辑LUN映射表项到对应的挂接端口后,FC NAT设备上连接FC Fabric网络的各端口均模拟成了该端口连接的FC Fabric网络中的一个存储设备,该存 储设备的FCID就是该端口的FCID,该存储设备中的物理LUN就是挂接到该端口的所有LUN映射表项中的逻辑LUN,从而使得该端口连接的FC Fabric网络中的服务器可以发起对该存储设备的逻辑LUN的访问。例如,N_Port41模拟成为Fabric1的一个存储设备,N_Port42模拟成Fabric1的另一个存储设备,Fabric1中的服务器1可以发起这两个存储设备的逻辑LUN的访问。
在执行上述挂接LUN映射表项到对应的挂接端口后,N_Port41、N_Port42、N_Port43、N_Port44上均对应一个包含一个或多个LUN映射表项的LUN映射表,其中,N_Port41对应的LUN映射表如表十一所示:
表十一
根据表十一,Fabric1中的服务器可以发起对N_Port41的逻辑LUN3和逻辑LUN4的访问,进而实现对Fabric2中的物理LUN21以及Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。
N_Port42对应的LUN映射表如表十二所示:
表十二
根据表十二,Fabric1中的服务器可以发起对N_Port42的逻辑LUN3和逻辑LUN4的访问,进而实现对Fabric2中的物理LUN21以及Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。
从表十一和表十二可以看出,Fabric1中的服务器可以发起对N_Port41的逻辑LUN3和逻辑LUN4的访问,也可以发起对N_Port42的逻辑LUN3和逻辑LUN4的访问,均可以实现对Fabric2中的物理LUN21以及Fabric3中的物理LUN31的访问,并在发起访问的过程中建立和维护相应的FC NAT表项。由此可见,本实施方式下,当FC NAT设备上连接同一FC Fabric网络的端口有多个时,可以通过任一端口访问其它FC Fabric网络中的物理LUN,如果出现端口故障,只要不是所有端口都故障,则就可以通过非故障的端口访问其它FC Fabric网络中的物理LUN。
N_Port43对应的LUN映射表如表十三所示:
逻辑LUN的挂 |
逻辑LUN |
物理LUN |
物理LUN所在存 |
物理LUN发现 |
接端口的FCID |
|
|
储设备的FCID |
端口的FCID |
FCID43 |
1 |
11 |
FCID2 |
FCID41 |
FCID43 |
2 |
12 |
FCID2 |
FCID42 |
FCID43 |
4 |
31 |
FCID6 |
FCID44 |
FCID43 |
5 |
11 |
FCID2 |
FCID41 |
FCID43 |
6 |
12 |
FCID2 |
FCID42 |
表十三
根据表十三,Fabric2中的服务器可以发起对N_Port43的逻辑LUN1或LUN5的访问,实现对Fabric1中的物理LUN11的访问;可以发起对N_Port43的逻辑LUN2或LUN6的访问,实现对Fabric1中的物理LUN12的访问;可以发起对N_Port43的逻辑LUN4的访问,实现对Fabric3中的物理LUN31的访问。在发起访问的过程中可以建立和维护相应的FC NAT表项。
N_Port44对应的LUN映射表如表十四所示:
表十四
根据表十四,Fabric3中的服务器可以发起对N_Port44的逻辑LUN1或LUN5的访问,实现对Fabric1中的物理LUN11的访问;可以发起对N_Port44的逻辑LUN2或LUN6的访问,实现对Fabric1中的物理LUN12的访问;可以发起对N_Port44的逻辑LUN3的访问,实现对Fabric2中的物理LUN21的访问。在发起访问的过程中可以建立和维护相应的FC NAT表项。
由表十三和表十四可以看出,当FC NAT设备上连接同一FC Fabric网络的端口有多个时,FC NAT设备会根据同一物理LUN的发现端口的不同,为该物理LUN分配多个不同的逻辑LUN,从而使得FC NAT设备连接的其它各FC Fabric网络可以通过访问FC NAT设备上连接该其它FC Fabric网络的同一端口的不同LUN,实现对该FC Fabric网络中的同一物理LUN的访问。
下面以Fabric1中的服务器1发起一个访问N_Port41的逻辑LUN3的访问过程为例,对FC NAT表项的建立以及FC报文的转发进行说明:
当Fabric1中的服务器1发起一个访问N_Port41的逻辑LUN3的访问时,服务器1向FC NAT设备发送的FC报文中,S_ID为FCID1,D_ID为FCID41,目的LUN 为逻辑LUN3,另外,还携带服务器1为该访问分配的OX_ID,假设为7777。当FC NAT设备在N_Port41端口接收到该FC报文后,可以先查找是否存在以FC报文的标识信息对应的FC NAT表项,如果不存在FC报文的标识信息对应的FC NAT表项(首次发起访问的情况下,不存在对应的FC NAT表项),则查找FC报文的目的LUN对应的LUN映射表项,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,然后转发修改后的FC报文,如果存在FC报文的标识信息对应的FC NAT表项(非首次发起访问的情况下,FC报文中不再携带目的LUN),则根据FC报文的标识信息对应的FC NAT表项修改FC报文的标识信息,然后转发修改后的FC报文。
假设FC NAT设备在N_Port41端口接收到的FC报文后,确定不存在FC报文的标识信息对应的FC NAT表项,则在N_Port41挂接的所有LUN映射表项中查找逻辑LUN3对应的LUN映射表项,表十一中的第一个LUN映射表项即为逻辑LUN3对应的LUN映射表项。
可以根据表十一中第一个LUN映射表项建立FC NAT表项,假设为FC重新分配的OX_ID为8888,则建立的FC NAT表项如表十五所示:
表十五
可以根据表十一中第一个LUN映射表项对FC报文进行修改,将FC报文中的S_ID、D_ID、OX_ID、目的LUN分别替换为FCID43、FCID4、8888、LUN21,然后将修改后的FC报文从FCID43对应的端口:N_Port43转发,并最终到达Fabric2中的存储设备2,存储设备2对FC报文进行处理和回应,回应的FC报文的S_ID、D_ID、OX_ID分别为FCID4、FCID43、8888,回应的FC报文到达FC NAT设备后,FC NAT设备将回应的FC报文的S_ID、D_ID、OX_ID分别替换为FCID41、FCID1、7777,然后从N_Port41端口转发,最终到达Fabric1中的服务器1。此后,Fabric1中的服务器1访问N_Port41的逻辑LUN3时,均根据表十五的第一个FC NAT表项执行FC报文的修改和转发,而Fabric2中的存储设备2接收到FC报文后进行回应时,均根据表十五的第二个FC NAT表项执行回应报文的修改和转发。
需要说明的是,第三种实施方式和第四种实施方式同样适用于图3所示组网。
上述四种实施方式中,对于某一FC Fabric网络中的某个物理LUN,可以预先设定哪些FC Fabric网络中的哪些服务器允许访问该物理LUN。例如,当采用第四种实 施方式时,在图4所示组网中,假设Fabric网络中还有其它服务器,例如服务器2(服务器2的FCID假设为FCID7),对于Fabric1中的LUN11和LUN12,可以设定允许Fabric2中的服务器1访问LUN11,设定允许访问Fabric2中的服务器2访问LUN12,对于Fabric2中的LUN31,可以设定允许Fabric2中的服务器1及服务器2可以访问LUN31,则N_Port43对应的LUN映射表将由表十三转变为如表十六所示:
表十六
当FC NAT设备连接的多个FC Fabric网络中包括多个分区(Zone)时,需要将FC NAT设备上连接同一FC Fabric网络的各端口加入到该FC Fabric网络的所有Zone中,物理LUN所在存储设备以及允许访问该物理LUN的所有服务器应该位于同一Zone。
上述四种实施方式中,FC NAT设备都需要在自身的连接FC Fabric网络的各端口检测已经在该端口搜索到的物理LUN的访问状态,物理LUN的访问状态包括可访问和不可访问两种,当物理LUN的状态变为不可访问时,FC NAT设备需要将在该端口发现该物理LUN后建立的LUN映射表项删除。例如,在上述第四种实施方式中,当FC NAT设备在N_Port41检测发现物理LUN11不可访问时,需要将表表十三以及表十四中的第一个LUN映射表项删除,同时,FC NAT设备还会在N_Port42检测发现物理LUN11不可访问,进而将表十三以及表十四中的第四个LUN映射表项删除。
上述四种实施方式中,FC NAT设备都需要在自身的连接FC Fabric网络的各端口检测是否有新的物理LUN出现(包括FC Fabric网络中新增的物理LUN,或FC Fabric网络中由不可访问转变为可访问的物理LUN),当FC NAT设备在某一端口发现新的物理LUN时,需要为新发现的物理LUN分配逻辑LUN并建立相应的LUN映射表项,并根据具体实施方式确定LUN映射表项对应的挂接端口,将LUN映射表项挂接到对应的挂接端口。
以上通过四种实施方式对本发明实现FC Fabric网络互通的方法进行了原理性说明,基于上述原理性说明,本发明提供了一种FC Fabric网络互通的方法,下面结合图5进行说明。
图5是本发明实施例实现FC Fabric网络互通的方法流程图,包括以下步骤:
步骤501、FC NAT设备为自身的连接每个FC Fabric网络的各端口申请FCID,在该端口搜索该FC Fabric网络中已绑定该端口的物理LUN,为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项,确定该LUN映射表项对应的挂接端口,将该LUN映射表项挂接到该LUN映射表项对应的挂接端口,该LUN映射表项对应的挂接端口为所述FC NAT设备上连接其它FC Fabric网络的端口;
步骤502、FC NAT设备在自身的连接任一FC Fabric的端口接收到FC报文时,如果不存在FC报文的标识信息对应的FC NAT表项,则在接收端口挂接的所有LUN映射表项中查找FC报文的目的LUN对应LUN映射表项,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息,从修改后的FC报文的源ID对应的端口转发修改后的FC报文,否则,根据FC报文的标识信息对应的FC NAT表项修改FC报文的标识信息,从修改后的FC报文的源ID对应的端口转发修改后的FC报文;所述报文的标识信息包括:报文的源ID、目的ID及交换ID。
其中,当FC NAT设备上连接同一FC Fabric网络的端口只有一个时,可以将该FC Fabric网络中的所有物理LUN均绑定该端口。这种情况下,步骤501中,FC NAT设备在自身的连接每个FC Fabric网络的端口搜索物理LUN,为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,确定该LUN映射表项对应的挂接端口的方法为:将所述FC NAT设备上连接其它所有FC Fabric网络的端口确定为该LUN映射表项的挂接端口。
当FC NAT设备上连接同一FC Fabric网络的端口的个数为所述FC NAT设备连接的FC Fabric网络的个数减去1时,对其中的每个端口,可以将该FC Fabric网络中的所有物理LUN均绑定该端口,且该端口在FC NAT设备上配置有一关联端口,该关联端口为FC NAT设备上连接其它FC Fabric网络的端口;FC NAT设备上连接同一FCFabric网络的各端口的关联端口连接的FC Fabric网络互不相同。这种情况下,步骤501中,FC NAT设备在自身的连接每个FC Fabric网络的各端口搜索物理LUN,为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,确定该LUN映射表项对应的挂接端口的方法为:将该端口的关联端口确定为该LUN映射表项的挂接端口。
当FC NAT设备上连接同一FC Fabric网络的端口的个数为一个或多个,且至少存在一个FC Fabric网络,FC NAT设备上连接该FC Fabric网络的端口的个数为多个时,可以将该FC Fabric网络中的每个物理LUN只绑定其中的一个端口。这种情况下,步骤501中,FC NAT设备在自身的连接每个FC Fabric网络的各端口搜索物理LUN,为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,确定该LUN映射表项 对应的挂接端口的方法为:针对所述FC NAT设备连接的其它各FC Fabric网络,在所述FC NAT设备上连接该其它FC Fabric网络的端口中选择一个端口,将选择的端口确定为该LUN映射表项的挂接端口。
当FC NAT设备上连接同一FC Fabric网络的端口的个数为一个或多个,至少存在一个FC Fabric网络,所述FC NAT设备连接该FC Fabric网络的端口的个数为多个时,还可以对FC NAT设备上连接该FC Fabric网络的每个端口,将该FC Fabric网络中的所有物理LUN均绑定该端口。这种情况下,步骤501中,FC NAT设备在自身的连接每个FC Fabric网络的各端口搜索到物理LUN,为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,确定该LUN映射表项对应的挂接端口的方法为:针对所述FC NAT设备连接的其它各FC Fabric网络,将所述FC NAT设备上连接该其它FCFabric网络的所有端口均确定为该LUN映射表项的挂接端口。
图5所示本发明实施例中,所述LUN映射表项可以包括如下内容:逻辑LUN的挂接断口的FCID、逻辑LUN、物理LUN、物理LUN所在存储设备的FCID、物理LUN的发现端口的FCID。所述FC NAT表项可以包括表项索引和表项内容两项,其中,表项索引包括S_ID、D_ID、OX_ID;表项内容包括:S_ID、D_ID、OX_ID;
步骤502中,FC NAT设备在接收端口挂接的所有LUN映射表项中查找FC报文的目的LUN对应LUN映射表项的方法为:在接收端口挂接的所有LUN映射表项中查找逻辑LUN为FC报文的目的LUN的LUN映射表项;
步骤502中,FC NAT设备在接收端口挂接的所有LUN映射表项中查找到FC报文的目的LUN对应LUN映射表项后,根据查找到的LUN映射表项建立FC NAT表项前,需要为FC报文重新分配OX_ID;
步骤502中,FC NAT设备在接收端口挂接的所有LUN映射表项中查找FC报文的目的LUN对应LUN映射表项后,根据查找到的LUN映射表项建立FC NAT表项的方法为:建立第一个FC NAT表项,将FC报文的S_ID、D_ID、以及OX_ID分别作为第一个FC NAT表项的表项索引中的S_ID、D_ID、OX_ID,将查找到的LUN映射表项中的物理LUN的发现端口的FCID、物理LUN所在物理设备的FCID、以及为FC报文重新分配的交换ID作为FC NAT表项分别作为该第一个FC NAT表项的表项内容中的S_ID、D_ID、以及OX_ID;建立第二个FC NAT表项,将查找到的LUN映射表项中的物理LUN所在物理设备的FCID、物理LUN的发现端口的FCID、为FC报文重新分配的交换ID分别作为该第二个FC NAT表项的表项索引中的S_ID、D_ID、以及OX_ID,将FC报文的D_ID、S_ID、以及OX_ID分别作为该第二个FC NAT表项的表项索引中的S_ID、D_ID、以及OX_ID;
步骤502中,FC NAT设备在接收端口挂接的所有LUN映射表项中查找到FC报文的目的LUN对应LUN映射表项后,根据查找到的LUN映射表项修改FC报文的标识信息的方法为:将FC报文的S_ID、D_ID、OX_ID分别替换为查找到的LUN映射表项中的物理LUN的发现端口的FCID、物理LUN所在物理设备的FCID、为FC报文重新分配的OX_ID。
图5所示本发明实施例中,当FC NAT设备连接的多个FC Fabric网络包括多个Zone时,需要将FC NAT设备上的每个端口加入到该端口连接的FC Fabric网络的所有Zone中。
图5所示本发明实施例中,LUN映射表项还可以包括如下内容:允许访问物理LUN的所有服务器的FCID。
步骤502中,FC NAT设备在接收端口挂接的所有LUN映射表中查找FC报文的目的LUN对应LUN映射表项之后,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息,从修改后的FC报文的源ID对应的端口转发修改后的FC报文之前,还需要判断查找到的LUN映射表项中允许访问物理LUN的所有服务器的FCID中是否存在FC报文的源ID,如果判断结果为是,则根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息,从修改后的FC报文的源ID对应的端口转发修改后的FC报文,否则,需要丢弃FC报文。
图5所示本发明实施例中,还可以针对每个FC Fabric网络,检测所述FC NAT设备上连接该FC Fabric网络的端口搜索到的各物理LUN的访问状态,当该物理LUN的访问状态转变为不可访问时,需要在所述FC NAT设备上连接其它每个FC Fabric网络的各端口挂接的所有LUN映射表项中查找物理LUN为该不可访问的物理LUN的LUN映射表项,并删除查找到的LUN映射表项。
图5所示本发明实施例中,还可以针对每个FC Fabric网络,当所述NAT设备在自身的连接该FC Fabric网络的任一端口搜索到的新的物理LUN时,为该物理LUN分配逻辑LUN并建立相应的LUN映射表项,确定该LUN映射表项对应的挂接端口(确定LUN映射表项对应的挂接端口的方法由采用的具体的实施方式确定,已在前面进行说明,不再赘述),将该LUN映射表项挂接到该LUN映射表项对应的挂接端口。
本发明还提供了一种实现FC Fabric网络互通的设备:FC NAT设备,该FC NAT设备能够解决FC Fabric网络互通时的兼容性问题。
参见图6,图6是本发明实施例提供的FC NAT设备的结构示意图,该FC NAT设备连接至少两个FC Fabric网络,该FC NAT设备包括:申请单元601、搜索单元602、第一建表单元603、挂接单元604、接收单元605、转发单元606、第二建表单元607; 其中,
申请单元601,用于为所述FC NAT设备的连接每个FC Fabric网络的各端口申请FCID;
搜索单元602,用于申请单元601为所述FC NAT设备的连接每个FC Fabric网络的各端口申请FCID后,在该端口搜索该FC Fabric网络中已绑定该端口的物理LUN;
第一建表单元603,用于搜索单元602在所述FC NAT设备的连接每个FC Fabric网络的各端口搜索到该FC Fabric网络中已绑定该端口的物理LUN后,为每个物理LUN分配逻辑LUN并建立相应的LUN映射表项;
挂接单元604,用于确定第一建表单元603建立的每个LUN映射表项对应的挂接端口,将该LUN映射表项挂接到该LUN映射表项对应的挂接端口,该LUN映射表项对应的挂接端口为所述FC NAT设备上连接其它FC Fabric网络的端口;
接收单元605,用于在所述FC NAT设备的连接FC Fabric网络的各端口接收FC报文;
转发单元606,用于接收单元605在所述FC NAT设备的连接任一FC Fabric的端口接收到FC报文后,如果不存在FC报文的标识信息对应的FC NAT表项,则在接收端口挂接的所有LUN映射表项中查找FC报文的目的LUN对应LUN映射表项,通知第二建表单元607根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,从修改后的FC报文的源ID对应的端口转发修改后的FC报文,否则,根据FC报文的标识信息对应的FC NAT表项修改FC报文的标识信息,从修改后的FC报文的源ID对应的端口转发修改后的FC报文;所述报文的标识信息包括:报文的源ID、目的ID及交换ID;
第二建表单元607,用于根据转发单元606查找到FC报文的目的LUN对应的LUN映射表项建立FC NAT表项。
上述FC NAT设备中,所述FC NAT设备上连接同一FC Fabric网络的端口只有一个,该FC Fabric网络中的所有物理LUN均绑定该端口;
第一建表单元603为搜索单元602在所述FC NAT设备的连接每个FC Fabric网络的各端口搜索到的该FC Fabric网络中已绑定该端口的每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,所述挂接单元604在确定该LUN映射表项对应的挂接端口时,用于:将所述FC NAT设备上连接其它所有FC Fabric网络的端口确定为该LUN映射表项的挂接端口。
或者,
所述FC NAT设备上连接同一FC Fabric网络的端口的个数为所述FC NAT设备连 接的FC Fabric网络的个数减去1,对其中的每个端口,该FC Fabric网络中的所有物理LUN均绑定该端口,且该端口在所述FC NAT设备上具有一关联端口,该关联端口为所述FC NAT设备上连接其它FC Fabric网络的端口;所述FC NAT设备上连接同一FC Fabric网络的各端口的关联端口连接的FC Fabric网络互不相同;
第一建表单元603为搜索单元602在所述FC NAT设备的连接每个FC Fabric网络的各端口搜索到的该FC Fabric网络中已绑定该端口的每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,所述挂接单元604在确定该LUN映射表项对应的挂接端口时,用于:将该端口的关联端口确定为该LUN映射表项的挂接端口。
或者,
所述FC NAT设备上连接同一FC Fabric网络的端口的个数为一个或多个,该FCFabric网络中的每个物理LUN只绑定其中的一个端口;至少存在一个FC Fabric网络,所述FC NAT设备上连接该FC Fabric网络的端口的个数为多个;
第一建表单元603为搜索单元602在所述FC NAT设备的连接每个FC Fabric网络的各端口搜索到的该FC Fabric网络中已绑定该端口的每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,所述挂接单元604在确定该LUN映射表项对应的挂接端口时,用于:针对所述FC NAT设备连接的其它各FC Fabric网络,在所述FC NAT设备上连接该其它FC Fabric网络的端口中选择一个端口,将选择的端口确定为该LUN映射表项的挂接端口。
或者,
所述FC NAT设备上连接同一FC Fabric网络的端口的个数为一个或多个,对其中的每个端口,该FC Fabric网络中的所有物理LUN均绑定该端口;至少存在一个FCFabric网络,所述FC NAT设备连接该FC Fabric网络的端口的个数为多个;
第一建表单元603为搜索单元602在所述FC NAT设备的连接每个FC Fabric网络的各端口搜索到的该FC Fabric网络中已绑定该端口的每个物理LUN分配逻辑LUN并建立相应的LUN映射表项后,所述挂接单元604在确定该LUN映射表项对应的挂接端口时,用于:针对所述FC NAT设备连接的其它各FC Fabric网络,将所述FC NAT设备上连接该其它FC Fabric网络的所有端口均确定为该LUN映射表项的挂接端口。
该FC NAT设备还包括配置单元608,用于当所述FC NAT设备连接的多个FCFabric网络包括多个分区Zone时,将FC NAT设备上的每个端口加入到该端口连接的FC Fabric网络的所有Zone中。
上述FC NAT设备中,
所述LUN映射表项包括逻辑LUN、物理LUN、物理LUN所在存储设备的FCID、 物理LUN的发现端口的FCID;
所述FC NAT表项包括表项索引和表项内容,所述表项索引包括源ID、目的ID、交换ID;所述表项内容包括:源ID、目的ID、交换ID;
所述转发单元606在接收端口挂接的所有LUN映射表项中查找FC报文的目的LUN对应LUN映射表项时,用于:在接收端口挂接的LUN映射表中查找逻辑LUN为FC报文的目的LUN的LUN映射表项;
所述转发单元606在接收端口挂接的所有LUN映射表项中查找到FC报文的目的LUN对应LUN映射表项后,根据查找到的LUN映射表项建立FC NAT表项前,进一步用于:为FC报文重新分配交换ID;
所述第二建表单元607在根据转发单元606查找到FC报文的目的LUN对应的LUN映射表项建立FC NAT表项时,用于:建立第一个FC NAT表项,将FC报文的源ID、目的ID、以及交换ID分别作为第一个FC NAT表项的表项索引中的源ID、目的ID、交换ID,将查找到的LUN映射表项中的物理LUN的发现端口的FCID、物理LUN所在物理设备的FCID、以及为FC报文重新分配的交换ID作为FC NAT表项分别作为该第一个FC NAT表项的表项内容中的源ID、目的ID、交换ID;建立第二个FC NAT表项,将查找到的LUN映射表项中的物理LUN所在物理设备的FCID、物理LUN的发现端口的FCID、为FC报文重新分配的交换ID分别作为该第二个FC NAT表项的表项索引中的源ID、目的ID、交换ID,将FC报文的目的ID、源ID、以及交换ID分别作为该第二个FC NAT表项的表项索引中的源ID、目的ID、交换ID;
所述转发单元606在接收端口挂接的所有LUN映射表项中查找到FC报文的目的LUN对应LUN映射表项后,根据查找到的LUN映射表项修改FC报文的标识信息时,用于:将FC报文的源ID、目的ID、交换ID分别替换为查找到的LUN映射表项中的物理LUN的发现端口的FCID、物理LUN所在物理设备的FCID、为FC报文重新分配的交换ID。
所述LUN映射表项还包括以及允许访问物理LUN的所有服务器的FCID;物理LUN所在存储设备和允许访问该物理LUN的所有服务器位于同一Zone;
所述转发单元606在接收端口挂接的所有LUN映射表项中查找FC报文的目的LUN对应LUN映射表项之后,根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,从修改后的FC报文的源ID对应的端口转发修改后的FC报文之前,进一步用于:如果查找到的LUN映射表项中允许访问物理LUN的所有服务器的FCID中存在FC报文的S_ID,则根据查找到的LUN映射表项建立FC NAT表项并修改FC报文的标识信息和目的LUN,从修改后的FC报文的源ID对应的 端口转发修改后的FC报文,否则,丢弃FC报文。
该FC NAT设备还包括状态检测单元609,用于针对所述FC NAT连接的每个FC Fabric网络,检测所述FC NAT设备上连接该FC Fabric网络的端口搜索到的各物理LUN的访问状态,所述访问状态包括可访问和不可访问,当该物理LUN的访问状态转变为不可访问时,在所述FC NAT设备上连接其它每个FC Fabric网络的各端口挂接的所有LUN映射表项中查找物理LUN为该物理LUN的LUN映射表项,并删除查找到的LUN映射表项。
上述FC NAT设备中,所述搜索单元602,进一步用于针对所述FC NAT设备连接的每个FC Fabric网络,当在所述NAT设备上连接该FC Fabric网络的任一端口搜索到的新的物理LUN时,为该物理LUN分配逻辑LUN并建立相应的LUN映射表项,确定该LUN映射表项对应的挂接端口,将该LUN映射表项挂接到该LUN映射表项对应的挂接端口。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。