NPIV的全稱為“N Port ID Virtualization”。在SAN當中凡是非SAN交換機的端口,即所有的主機HBA端口,磁盤陣列控制端口,磁帶庫光纖接口等統(tǒng)稱為“N Port”。所有這些N Port如果想要在Fabric(俗稱:SAN網(wǎng))內(nèi)進行數(shù)據(jù)通訊,就必須在聯(lián)入SAN交換機時通過Fabric Login的動作提交自己的WWWN來獲得一個合法的ID,這個動作就像是你去拜訪一個客戶在進入別人公司的時候需要用你自己的身份證/工作證來換取一個內(nèi)部臨時通行證一樣。
這個ID是由與該外設相連的SAN交換機來控制分配的,其形式為“XX:YY:ZZ”的24位16進制地址,其中XX表示 Domain ID,即是代表哪臺交換機;YY表示Port ID,即交換機上的端口位置;而ZZ傳統(tǒng)上只在早期LOOP類型的Fabric內(nèi)來標識N Port的地址,在目前主流的全交換型的Fabric內(nèi)被保留了起來,一般情況下不使用,在博科交換機上ZZ的值一般為00。這就是關于NPI的意義,在下一個帖子內(nèi)我們來解釋“V”的含義以及如果在SAN環(huán)境當中應用。
在開始解釋V的含義前,先羅嗦兩句。NPIV這種技術并不新鮮,60年代后期就已經(jīng)出現(xiàn)在Mainframe的環(huán)境當中了,只是現(xiàn)在隨著大雞的衰敗和開放系統(tǒng)的盛行,這種技術才逐漸被移植到了大家所熟知的環(huán)境當中。因此從某種意義上來說NPIV現(xiàn)在無論在主機還是在SAN交換機上應用都只能算是對舊技術的改良而讓其發(fā)揮余熱,不能算是嚴格意義上的新技術。
回到正題,先解釋一下V的含義。V既然代表虛擬化,那我們就來分析一下這其中的意義,虛擬化的一般的定義我個人的理解是讓大量的私有資源通過少量的公有渠道來進行無障礙的互相通訊。基于這樣一個解釋,那我們再回過頭來看看SAN當中的私有資源、公有渠道分別是什么。在大家一般比較熟悉的 VMware/HyperV的虛擬主機訪問存儲的應用模式當中,在主機層面,我們可以把虛機的宿主——物理服務器上的HBA卡看作是少量的公有渠道,而操作系統(tǒng)利用物理HBA的WWWN為每個虛擬主機所生成的虛擬HBA則可以看作是大量的私有資源。
在來看SAN交換機/Fabric的層面,由于一般情況下一個WWWN只能在Fabric內(nèi)換得一個合法的FCID/NPID,因此一般情況下一個物理的HBA接入Fabric后也就只能獲得一個格式為 “XX:YY:ZZ”即“XX:YY:00”的ID。但是物理主機所承載的多個虛擬主機在事實上是各自作為獨立應用系統(tǒng)而存在的,這樣一來就需要這些虛擬主機利用他們那些虛擬出來的WWWN通過物理主機上的HBA聯(lián)入Fabric的端口——這個公共渠道來獲得在Fabric內(nèi)合法的FCID。乍看起來這個需求似乎不可能,但是在我們仔細想一下FCID的結(jié)構,就會發(fā)現(xiàn)其中還是有辦法可以進行迂回的。
前面提到了FCID的結(jié)構,在SAN交換機發(fā)展早期只有Loop交換模式的時候,其表示FCID的有效格式僅為兩個十六進制數(shù)字“ZZ”,在這種情況下最多的地址個數(shù)為256個,但是考慮到SAN架構的基礎服務以及一些保留地址的占用,實際上有效的地址只有126個。隨著SAN技術的不斷發(fā)展,在目前這種全交換型的網(wǎng)絡架構中FCID格式已經(jīng)變?yōu)橐?ldquo;DomainID:PortID:Loop地址保留位”三段共計24位的形式來實現(xiàn)了,在一般使用環(huán)境中由于通過DomainID+PortID即可將實現(xiàn)對SAN網(wǎng)內(nèi)任意端口的定位(尋址),因此最后兩位的Loop地址保留位一直是用00來代替的(其他廠商可能用不同的數(shù)字來表示),沒有什么實際意義。
但是隨著SAN交換機越做越大,端口密度越來越高,這時候就出現(xiàn)了一個新問題:在XX:YY:ZZ的格式當中,大家不難想象一下Domain ID最多是256種變化,這個到還沒什么問題,現(xiàn)在一個標準SAN網(wǎng)最多也只能運行56個Domain,但再往下到Port ID的時候問題就來了,根據(jù)現(xiàn)有的格式PortID最多也是只有256種變化,這就不能滿足現(xiàn)在某些新型導向器的配置了,比如博科的48xxx導向器,如果都配48口刀片,則一臺導向器的端口總數(shù)就會達到384,那多出來這128口的地址從那里來呢?各位聰明的XDJM,相信你們已經(jīng)隱隱的覺察出要怎么處理這個矛盾了。
利用Loop地址保留位。大家想象一下,如果把Loop位的這256種變化與PortID單純的256種變化進行組合,那就將產(chǎn)生65536種變化!一個導向器可以提供65536個地址這一事實就讓我們大家不得不多動些腦筋來去想想如何在更高的層面上發(fā)揮這一巨大的資源,而不僅僅只是把它限定在支持高密度導向器板卡這一個地方。好,現(xiàn)在我們回憶一下在上一回書中我們所提到到“需要這些虛擬主機利用他們那些虛擬出來的WWWN通過物理主機上的HBA 聯(lián)入Fabric的端口——這個公共渠道來獲得在Fabric內(nèi)合法的FCID”,根據(jù)這樣一種需求,結(jié)合剛才我們對地址組合的變換運用,現(xiàn)在我們就可以來解決這個問題了。
假設我們現(xiàn)在有一臺物理主機,上面安裝了一個單口的HBA,這臺主機通過一臺SAN交換機(Domain ID 為3)連到一臺存儲上,主機和存儲連到SAN交換機的端口分別為1口和15口,在該主機上運行了5個虛機。根據(jù)這一環(huán)境我們可以知道此時物理主機的HBA 在和存儲在SAN交換機(此處即為SAN網(wǎng))內(nèi)獲得的FCID分別為“030100”和“030F00”。
由于在物理主機上同時運行了5個虛擬主機,這5 個虛機借助物理HBA的NPIV功能再配合母體操作系統(tǒng),其結(jié)果就是虛擬出來了各自的HBA,即各自的WWWN,我們姑且稱之為V-WWWN吧。這些V- WWWN會透過物理HBA提交給SAN交換機,由于這些V-WWWN都是合法且真實存在,SAN交換機必須要對其作出恰當?shù)姆磻杏诂F(xiàn)在的SAN交換機微碼當中都內(nèi)嵌了NPIV共能,所以其在接到這些V-WWWN的登錄需求時自然也會做出相應的回應:這就是根據(jù)物理HBA所連端口的地址基礎上,啟用 Loop保留地址位來為這些V-WWWN分配各自合法的地址。
這樣一來這五個V-WWWN就能很順利的拿到各自合法的地址:030101、030102、 030103、030104、030105。由于擁有了屬于自己的通行證,這五個虛擬就能完全獨立的去訪問存儲上預留給自己的完全獨立的空間了,看起來就好像是5個完全不同的主機在各自獨立運作一般。