天天看點

NPIV - 連接配接虛拟機與存儲的橋梁

最近工作的項目和NPIV相關,于是花了點時間學習了一下NPIV,簡單總結了一下,望高手指正。

解決什麼問題

我們知道在存儲區域網絡(SAN:storage area network),主機(Host)能夠通路後端存儲(比如CLARiiON,VNX)必備的一個前提是主機必須配備HBA卡(Host Bus Adapter)。在沒有虛拟化之前,每台實體主機自己配備HBA卡是無可厚非的事情。但是,在虛拟化流行的今天,怎麼在不添加新的HBA卡的前提下把後端存儲配置設定給運作在實體主機上的虛拟機呢?

目前一般的做法是實體主機配備了HBA卡後,具備了通路後端存儲的能力。後端存儲把LUN配置設定給實體主機(在實體主機上表現為一塊新的硬碟),實體主機再把空間配置設定給運作在上面的虛拟機。從後端存儲的角度來看,它隻知道哪些LUN配置設定給了實體主機(比如ESXServer或者Hyper-V Server),它并不知道哪些LUN是配置設定給了虛拟機。是以,從存儲管理的角度來看,其管理粒度就隻能到實體主機,無法到虛拟主機了。

我們需要解決的問題是,如何把後端存儲的LUN通過FC的方式直接配置設定給虛拟機,使得後端存儲知道哪些LUN是給哪個虛拟機。本文介紹的NPIV就是其中的一個解決方案。

注:本文隻讨論如何把LUN通過FC配置設定給虛拟機。目前,通過iSCSI是可以把LUN直接配置設定給虛拟機了,隻是iSCSI的性能不如FC。

如何解決

解決這個問題,我們得先了解FC是如何工作的。在資料中心裡,主機通常是通過FC交換機與後端存儲連接配接,這樣後端存儲就能同時為很多主機服務了。

組建FC網絡有兩種方式:

FC-AL,類似于以太網裡面的令牌環網絡,總線是被連接配接在網絡中的裝置共享的。

Fabric,類似于以太網裡面的全交換網絡。

這裡我們隻讨論Fabric結構的網絡。

如何了解Fabric網絡

可以把Fabric網絡認為是一個有很多FC交換機互聯在一起的網絡,每個交換機上除了用來與其它交換機級聯的口之外,其它口都是用來連接配接主機或者後端儲存設備(這裡做了簡化,有些口是做别的用途的)。在這個網絡中,任意交換機的任意兩個端口都能直接通信,是以如果某個裝置想與網絡中另外一個裝置通信,隻要知道目标裝置位于哪個交換機的哪個端口。

當然,實際的情況是,每個連接配接在Fabric網絡中的裝置都将獲得一個有FC交換機配置設定給該裝置的Fabric  ID,用來表示該裝置在Fabric網絡的位置。Fabric ID長度為24位,可以分成3段,長度分别為8位,分别是DomainID,Area ID和PortID。

Domain ID 是用來區分Fabric網絡中的交換機。是以,一個交換機上所有的端口的DomainID都是一樣的。

Area ID是用來區分同一交換機上的不同端口組。每個FC接口都會由一塊晶片來管理,處于同一塊晶片管理的端口唯一同一Area,是以具有同樣的AreaID。

Port ID 就是端口的ID。

如何獲得FabricID

連接配接在Fabric網絡中的裝置是通過FabricID來尋址目标裝置的。那麼連接配接在Fabric網絡的裝置是如何獲得一個FabricID呢?

在主機與交換機的連接配接中,主機方的口叫做N口(Node),位于主機的HBA卡上,一個HBA卡可以有1個或者多個端口。交換機上的口叫做F口(Fabric)。

FC協定是通過WWN(WorldWide Name)來唯一标示裝置和端口的。具體到HBA卡上,HBA卡上有兩種WWN,分别是:WWNN(WorldWide Node Name)和WWPN(WorldWide Port Name)。通常來講一個HBA卡隻有一個WWNN,HBA卡上每個端口都有WWPN來唯一标示該端口。

當某個端口接入到Fabric網絡中,該端口會發起一個登入到Fabric網絡中的動作,其中包含該端口的WWPN,FC交換機會傳回一個FabricID 給該端口,這個動作叫做FLOGIN。一旦該裝置獲得了FabricID後,它就相當于在Fabric網絡中有了個座位,以後别的裝置要發送消息給該裝置,隻要告訴FC交換機其FabricID就行了。

NPIV 終于出場了

做了那麼多鋪墊,現在來回顧一下我們要解決的問題,“如何把後端存儲上的LUN配置設定給虛拟機”。根據上面關于Fabric的介紹,一個裝置要想連接配接到Fabric網絡中,首先要通過FLOGIN(其中包含自己的WWPN)注冊到Fabric網絡中,然後FC交換機将一個可用的FabricID配置設定給該裝置。

為了實作把LUN配置設定給虛拟機,虛拟機必須要有自己的FabricID,是以必須要實作下面兩點:

虛拟機上得有個”虛拟HBA卡”,提供WWNN和WWPN,這樣才能登入到Fabric網絡。

FC交換機得為通過同一個HBA卡連接配接到的Fabric網絡的這些虛拟HBA卡提供不同的Fabric ID。

NPIV的全稱是N-PortID Virtualization, N-Port ID也就是N端口登入到Fabric網絡後獲得的FabricID。NPIV一種在主機端的技術,使得主機端的實體HBA卡上N端口可以虛拟出多個WWPN,這樣主機上實體的HBA卡能在把自己的WWPN注冊到Fabric網絡中以後,再把虛拟的WWPN也注冊到網絡中(注冊的動作是FDISC,功能與FLOGI一樣,隻是名字不一樣。),進而一個N端口上獲得多個N-PortID,是以這個技術叫做NPIV。它解決了上述兩點中的第一點。

上述第二點說明NPIV需要交換機的支援。

Windows 8 Server 中的NPIV配置

在即将釋出的Windows8 Server的Hyper-V中已經提供了對NPIV的支援。使用者可以在通過Hyper-V建立為虛拟機建立虛拟HBA卡,并為其配置設定WWNN和WWPN。具體步驟為:

1. 建立Virtual SAN 

假設運作Windows8的實體機器有兩塊HBA卡,分别連接配接在兩個不同的SAN,比如HBA1連接配接到用于生産的ProductionSAN,HBA2連接配接到用于測試的TestSAN。運作在Windows8 Hyper-V上的虛拟機通路SAN的範圍不能超過實體HBA卡通路SAN的範圍。 

建立VirtualSAN是對實體HBA的SAN的通路範圍的細分,進而讓某些虛拟機隻能通路ProductionSAN,某些虛拟機隻能通路TestSAN。 

如下圖,我們定義了一個NPIVtest SAN  (2E),其中指定了WWPN以2E結尾的實體HBA卡,這樣連接配接到這個虛拟SAN的虛拟機就隻能通路到VirtualSAN裡面指定的HBA卡能通路到的那些SAN。

2. 為虛拟機建立Virtual FC Adapter,一個虛拟機可以最多建立4個虛拟的VirtualFC Adapter,每個Adapter可以與一個VirtualSAN相連接配接。

3. 在Virtual FC Adapter上建立虛拟的WWPN。目前Hyper-V中所有預設的Virtual FC Adapter的WWNN都是一樣的,當然也可以修改,這也說明WWNN不是那麼重要。

上述配置都是在虛拟機處于關機的狀态下配置,配置好後開機,把對應的WWPN與後端存儲放到一個Zone裡面,然後就可以像實體機器一樣,為之配置設定LUN了。

注意:NPIV需要作業系統,HBA卡,光纖交換機都提供對NPIV的支援,環境配置相對複雜。這裡隻是展示了在NPIV環境搭建好的基礎上,如何為虛拟機建立虛拟的HBA卡和配置設定WWPN。

小結

本文簡要介紹了一下FCFabric網絡的一些基礎知識,然後分析了實作把LUN配置設定給虛拟機所需要的條件,簡要介紹了NPIV,并以即将釋出的Windows8 Server為例子,展示了如何配置為虛拟機配置NPIV。

參考資料

大話存儲

Understanding NPIV and NPV: http://blog.scottlowe.org/2009/11/27/understanding-npiv-and-npv/

<a href="http://www.datacentersky.com/detailed-parsing-of-the-role-of-the-fc-fcoe-agreement-npiv.html">http://www.datacentersky.com/detailed-parsing-of-the-role-of-the-fc-fcoe-agreement-npiv.html</a>

本文轉自 taojin1240 51CTO部落格,原文連結:http://blog.51cto.com/taotao1240/917261,如需轉載請自行聯系原作者

繼續閱讀