主機沒有Login到存儲是一個比較常見的故障,故障多發於主機新上線,或者是重啟后。例如在Unisphere中,顯示Host狀態是”Registered: Yes; Logged In: No”。
當此狀況發生時,主機到存儲的部分路徑(Path)狀態會變為不可用,這對於性能以及可靠性都會有負面的影響。主機和存儲管理員在檢查配置后往往發現沒有任何設置錯誤。作為SAN網絡的數據傳輸基礎架構,FC交換機是否正確工作自然是一個需要重點檢查的對象。這篇文章將對FC交換機的配置進行重點講解。
首先讓我們來了解一下兩個設備通訊初始化的過程,這里借用博科BCFA官方培訓文檔中的流程圖:
*注:通常來說,末端設備(主機的HBA口,或存儲的前端口)端口類型是N_Port,交換機側的端口類型是F_Port。
從圖中可以看到,初始化過程可以分為5個階段,下面我們逐個階段進行講解。
Step 1 鏈路初始化
當設備連上交換機后,首先需要進行鏈路的初始化,同步信號,協商端口速率。
在這個階段,必須保證交換機接收到的光強度足夠。接受光強度就如交談時聽到的聲音音量,強度過低就會導致溝通出現問題。
可以通過登陸交換機命令行,執行以下命令確認:
博科交換機
sfpshow [slot/]port -f注1
思科交換機
show interface fc x/y transceiver details
(注1:-f參數需要FOS 6.3及更新固件來支持)
紅色部分請替換為實際的插槽/端口號,下同。
輸出結果中,RX即為交換機側的接收光功率,EMC推薦RX值不要低於-7dBm(注意是負值,所以數字小反而值大,一般應該在-2到-5之間),否則,請檢查光纖線、配線架和末端設備。
其次需要確定末端設備和交換機支持的速率匹配。對於交換機,一般來說自協商模式下支持的速率是SFP模塊/交換機端口最大速率及向下兩檔,以16G交換機16G SFP為例,自協商支持4/8/16Gbps三種端口速率,末端設備必須至少支持這些速率中的一種;如果手動設置了交換機端口速率,也需要確保末端設備能夠工作在此速率下。
同樣,通過上述兩條命令來顯示當前SFP支持的速率:
博科交換機
思科交換機
達成以上兩點后,一般鏈路就能夠起來了。
Step 2 FLOGI
接下來,末端設備會發起FLOGI(Fabric Login),這類似於IP網絡中的DHCP。設備向交換機Fabric Login Server(地址0xFFFFFE)發送申請,交換機回復一個24bit的FC地址給設備,用於路由,類似於IP地址。
在交換機命令行下,通過以下命令來確認:
博科交換機
portloginshow [slot/]port
Example:
DS-5100B:admin> portloginshow 5
Type PID World Wide Name credit df_sz cos
=====================================================
fe 010500 50:06:01:6c:3c:e0:32:e7 8 2048 8 scr=0x3
ff 010500 50:06:01:6c:3c:e0:32:e7 4 128 8 d_id=FFFFFC
思科交換機
show flogi database interface fc x/y details
Example:
`show flogi database details`
--------------------------------------------------------------------------------------------
INTERFACE VSAN FCID PORT NAME NODE NAME FLAGS
--------------------------------------------------------------------------------------------
fc2/20 700 0x290140 50:00:09:74:08:31:12:34 50:00:09:74:08:31:56:78 P
如果能夠返回末端設備的PWWN及FC地址,那么FLOGI就成功了。
Step 3 PLOGI到Name Server
隨后,末端設備會向交換機發起PLOGI(Port Login),交換機將設備的信息寫入Name Server(交換機上的服務,地址0xFFFFFC),這些信息包括PWWN,NWWN,FC4類型等等。
隨后末端設備會向Fabric Controller(同樣也是交換機上的服務,地址0xFFFFFD)發起SCR(State Change Registration),申請接收RSCN(Registered State Change Notification,注冊狀態更改通知。
之后,每當FC網絡拓撲發生改變或者設備上下線后,交換機會向已完成SCR的設備發出通知)。
在交換機命令行下,通過以下命令來確認PLOGI到Name Server是否成功:
博科交換機
nsshow -r
Example:
Type Pid COS PortName NodeName SCR
N 030000; 3;50:00:09:74:08:35:12:34;50:00:09:74:08:35:56:78; 0x00000003
FC4s: FCP
PortSymb: [94] "SYMMETRIX::000292601357::RAF- 7fA::FC::5875_286+::EMUL F80F0000 381AA71D 802DB0 07.02.13 14:26"
NodeSymb: [38] "SYMMETRIX::000292601357::FC::5875_286+"
Fabric Port Name: 20:00:00:05:33:7d:90:ab
Permanent Port Name: 50:00:09:74:08:35:12:34
Port Index: 0
Share Area: No
Device Shared in Other AD: No
Redirect: No
Partial: No
LSAN: No
思科交換機
show fcns database detail vsan x
Example:
------------------------
VSAN:100 FCID:0x290000
------------------------
port-wwn (vendor) :50:06:04:8c:4a:37:ab:cd (EMC)
node-wwn :50:06:04:8c:4a:37:ab:cd
class :3
node-ip-addr :0.0.0.0
ipa :ff ff ff ff ff ff ff ff
fc4-types:fc4_features :scsi-fcp 253
symbolic-port-name :EMC SYMMETRIX 000287892468 SAF- 4cB EMUL B61F0000 1294AB11 3D1900 2C97C4 04.20.10 12:24 5671_081
symbolic-node-name :EMC SYMMETRIX 000287892468 SAF- 4cB EMUL B61F0000 1294AB11 3D1900 2C97C4 04.20.10 12:24 5671_081
port-type :N
port-ip-addr :0.0.0.0
fabric-port-wwn :20:07:00:05:73:f0:98:76
hard-addr :0x000000
permanent-port-wwn (vendor) :50:06:04:8c:4a:37:ab:cd (EMC)
connected interface :fc1/9
switch name (IP address) :switch01 (1.2.3.4)
從Name Server的數據庫中,我們可以得到端口所連末端設備的PWWN/NWWN甚至廠商、設備類型、驅動等等信息。
在PLOGI到Name Server的過程中,末端設備Initiator(通常是主機)會發起查詢,Name Server根據Zoning的配置,回復該末端設備可以訪問的節點信息。只有在同一個Zone中的成員才可以相互通訊。如果Zoning已經開啟,而一個設備沒有在任何Zone中,那么它就不能和任何節點通訊。如果Zoning沒有開啟,那么所有的節點都在一個默認的大Zone中,節點是否可以與任意其他節點通訊就取決於默認Zone的策略。
在交換機命令行下,通過以下命令來檢查Zoning信息:
博科交換機
cfgactvshow
Example:
Effective configuration: //已經激活的cfg信息
cfg: Brocade //cfg名字為Brocade
zone: VER093046 //cfg包含名為VER093046的Zone,其成員如下
10:00:00:05:33:90:ab:7e
10:00:00:05:33:90:ab:7f
50:06:01:67:3e:a0:04:4a
50:06:01:6e:3e:a0:04:4a
思科交換機
show zoneset active vsan x
Example:
`show zoneset active vsan 100`
zoneset name Fabric_A vsan 100 //Zoneset名為Fabric_A
zone name Mercury_A_VNX1408_SPA0_SPB1 vsan 100 //Zone名為Mercury_A_VNX1408_SPA0_SPB1
* fcid 0x370000 [pwwn 50:06:01:60:47:20:12:34] //Zone成員的fcid及PWWN
* fcid 0x370100 [pwwn 50:06:01:69:47:20:12:34] //*表示FLOGI成功
* fcid 0x370200 [pwwn 10:00:8c:7c:ff:21:ab:cd]
做Zone時,EMC推薦使用PWWN作為成員,並且每個Zone只包含一個Initator(通常情況下理解為一個HBA端口),以避免不同Initiator之間互相干擾。
Step 4&5 端到端PLOGI與PRIL
當末端設備完成FLOGI/PLOGI/SCR到交換機,並且Zoning的配置也正確后,Initiator(主機)和Target(存儲)之間在FC Layer2層面上已經可以互相通訊。
Initiator需要再次發起PLOGI到Target,成功后再發起PRIL(Process Login),為上層協議(Upper Layer Protocol)搭建環境,FC 的ULP一般為SCSI。在此階段,交換機只是轉發FC幀,對端到端的PLOGI/PRIL不做任何干預。
綜上:
交換機參與了端到端通訊初始化過程的1至3階段。當發現主機沒有Login到存儲時,在FC交換機上要檢查的內容為:
1. 末端設備是否分配到了FC地址(FLOGI成功)
2. 末端設備是否已經注冊到Name Server(PLOGI到Name Server成功)
3. Zoning是否配置正確並且已經激活生效
4. 交換機端口是否看到丟幀
如果以上4項都沒有問題,那么基本可以排除交換機的問題,需要在主機、存儲上繼續查找原因(驅動、固件、兼容性等等)。