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


