專利名稱:通過虛擬包封在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的方法和裝置的制作方法
技術領域:
本發(fā)明涉及網(wǎng)絡技術。更具體地說,本發(fā)明涉及支持存儲區(qū)域網(wǎng)絡內的存儲虛擬化的方法和裝置。
背景技術:
近年來,存儲設備的容量的增長速度未能趕上對存儲的需求的增長。因此,一個給定的服務器或其他主機必須訪問多個物理上不同的存儲節(jié)點(一般是磁盤)。為了解決這些存儲限制,開發(fā)了存儲區(qū)域網(wǎng)絡(SAN)。一般地說,存儲區(qū)域網(wǎng)絡是一種高速專用網(wǎng)絡,其代表一個更大的用戶網(wǎng)絡而互連不同的數(shù)據(jù)存儲設備和關聯(lián)數(shù)據(jù)主機。然而,盡管SAN使得存儲設備可被配置為供網(wǎng)絡內的不同網(wǎng)絡設備和/或實體使用,但是數(shù)據(jù)存儲需求卻經常是動態(tài)而非靜態(tài)的。
圖1A示出了一種示例性的傳統(tǒng)存儲區(qū)域網(wǎng)絡。更具體地說,在存儲區(qū)域網(wǎng)絡102內,可以將一組主機(例如服務器或工作站)104、106、108耦合到存儲設備(例如磁盤)池。按SCSI的話說,主機可被看作為“發(fā)起者”,而存儲設備可看作為“目標”。例如,可通過一組存儲陣列或磁盤陣列110、112、114來實現(xiàn)存儲池。每個磁盤陣列110、112、114還對應于一組磁盤。在這一示例中,第一磁盤陣列110對應于磁盤116、118,第二磁盤陣列112對應于磁盤120,而第三磁盤陣列114對應于磁盤122、124。不是讓所有主機104-108都可訪問所有磁盤116-124,而是需要通過磁盤陣列110、112、114而對每個主機104-108實現(xiàn)存儲(例如磁盤)的動態(tài)和不可見的分配。也就是說,可通過虛擬存儲器(例如虛擬磁盤)的概念來分配物理存儲器(例如物理磁盤)。這使得可將異構的發(fā)起者連接到分布式的異構目標組(存儲池),其連接方式可實現(xiàn)存儲的動態(tài)和透明分配。
虛擬存儲器的概念傳統(tǒng)上已被用于通過在物理存儲器中的物理地址和虛擬存儲器中的虛擬地址之間的翻譯來實現(xiàn)物理存儲器的虛擬化。近來,“虛擬化”的概念已通過各種機制而實現(xiàn)在存儲區(qū)域網(wǎng)絡中。虛擬化在存儲網(wǎng)絡上實現(xiàn)物理存儲和虛擬存儲的相互轉換。主機(發(fā)起者)將虛擬磁盤視為目標。虛擬磁盤以已定義但具有一定靈活性的方式來表示可用的物理存儲。虛擬化向主機提供了可用物理存儲的一種表示,其不受限于存儲的特定物理設置/分配。
一種早期技術即獨立磁盤冗余陣列(RAID)提供了虛擬化的一些受限特征。已實現(xiàn)若干RAID子類型。在RAID1中,一個虛擬磁盤可對應于兩個存儲了相同數(shù)據(jù)(或支持相同數(shù)據(jù)的恢復)的物理磁盤116、118,從而可在存儲區(qū)域網(wǎng)絡內支持冗余。在RAID0中,單個虛擬磁盤分片在多個物理磁盤上。一些其他的虛擬化包括級聯(lián)(concatenation)、備用(sparing)等等。虛擬化的一些方面近來已通過在存儲區(qū)域網(wǎng)絡內的各種位置內的虛擬化功能而實現(xiàn)了。三種這樣的位置已獲得一定程度的接受主機(例如104-108)中的虛擬化、磁盤陣列或存儲陣列(例如110-114)中的虛擬化以及獨立于主機和存儲池的存儲用具126中的虛擬化。不幸地是,這些實現(xiàn)方案中的每一種都具有一些不期望的性能限制。
存儲陣列中的虛擬化是如今所使用的最常見的存儲虛擬化方案之一。通過這一方法,可以在特定存儲子系統(tǒng)(例如磁盤陣列)的存儲空間上創(chuàng)建多個虛擬卷。在存儲子系統(tǒng)級上創(chuàng)建虛擬卷提供了主機獨立性,這是因為存儲池的虛擬化對主機來說是不可見的。另外,存儲系統(tǒng)級的虛擬化可實現(xiàn)存儲器訪問的優(yōu)化,因而可獲得高性能。然而,這一虛擬化方案一般只可對同構存儲環(huán)境實現(xiàn)統(tǒng)一的管理結構,甚至只具有有限的靈活度。而且,由于虛擬化是在存儲子系統(tǒng)層級上執(zhí)行的,因此在存儲子系統(tǒng)級上設置的物理-虛擬限制被強加到存儲區(qū)域網(wǎng)絡中的所有主機上。而且,每個存儲子系統(tǒng)(或磁盤陣列)是獨立地進行管理。因此,存儲級的虛擬化很少使得虛擬卷可跨越多個存儲子系統(tǒng)(例如磁盤陣列),因此限制了基于存儲的方法的可擴展性。
當在每個主機上實現(xiàn)虛擬化時,可以跨越多個存儲子系統(tǒng)(例如磁盤陣列)?;谥鳈C的方法具有一個額外的優(yōu)點,即對一個主機的限制不影響存儲區(qū)域網(wǎng)絡中其他主機的運行。然而,主機級的虛擬化需要有一個運行在每個主機(例如服務器)上來實現(xiàn)虛擬化功能的軟件層。因此,這一軟件的運行影響了運行這一軟件的主機的性能。這一方法的另一主要難點在于它將可用的存儲提前劃分給不同的主機。由于這一劃分是在主機級上支持的,并且每個主機的虛擬化功能獨立于存儲區(qū)域網(wǎng)絡內其他主機地執(zhí)行,因此難于在各主機之間協(xié)調存儲訪問。因此,基于主機的方法不能提供足夠程度的安全性。由于這一安全性限制,難于實現(xiàn)多種冗余方案例如RAID,這些冗余方案需要在讀和寫操作期間對存儲器進行“鎖定”。另外,當進行鏡像時,主機必須多次復制數(shù)據(jù),增加了其輸入輸出和CPU負載,并增加了SAN上的流量。
在位于主機和存儲設備之間的存儲區(qū)域網(wǎng)絡用具中進行虛擬化,這可以解決基于主機和基于存儲的方法中的一些難題。所述存儲用具全局地管理物理存儲到虛擬卷地映射和分配。一般地,存儲用具管理一個中心表,該表提供物理到虛擬的當前映射。這樣,基于存儲用具的方法使得可在存儲區(qū)域網(wǎng)絡上實現(xiàn)同時獨立于主機和存儲子系統(tǒng)的虛擬卷,因而提供了更高程度的安全性。而且,這一方法支持跨越多個存儲子系統(tǒng)的虛擬化。這一體系結構的許多實現(xiàn)的主要缺點在于每個主機的每次輸入/輸出(I/O)都要發(fā)送通過該存儲區(qū)域網(wǎng)絡用具,造成了明顯的性能降低和存儲區(qū)域網(wǎng)絡瓶頸。這在支持諸如RAID等冗余方案的系統(tǒng)中尤其不利,因為數(shù)據(jù)必須被映射為跨越多個磁盤。在另一種基于存儲用具的方法中,所述用具確保所有主機都接收到所述表的當前版本。因此,為了使得主機可從所述用具接收到該表,需要一種從該用具到主機的軟件“墊片(shim)”,這增加了系統(tǒng)的復雜度。而且,由于所述軟件層實現(xiàn)在主機上,也就出現(xiàn)了許多基于主機的方法的缺點。
考慮到上述內容,如果網(wǎng)絡內各種存儲設備或其一些部分可在邏輯上動態(tài)分配到各種設備和/或實體,這將是非??扇〉?。而且,如果可以實現(xiàn)這樣一種機制來在SAN內支持存儲虛擬化而又沒有傳統(tǒng)虛擬化方法的缺點,那將是很有益的。
發(fā)明內容
在此公開了用于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的方法和裝置。這是通過使用一個或多個能被置于主機和存儲設備之間的數(shù)據(jù)路徑中的網(wǎng)絡設備來實現(xiàn)的。結果,存儲設備和主機都不需要額外的軟件或硬件來支持存儲虛擬化。因此,本發(fā)明優(yōu)于基于主機的方法,后者要求每個主機都需要額外的軟件來實現(xiàn)虛擬化功能。而且,本發(fā)明使得多個網(wǎng)絡設備可同時管理各存儲設備的虛擬化。重要的是,基于交換機的虛擬化可逐個端口地實現(xiàn)。交換機上任意數(shù)量的端口都可管理它自己的流量的虛擬化。這使得網(wǎng)絡的虛擬化能力可隨著端口數(shù)量而擴展。由于在任何網(wǎng)絡系統(tǒng)中都存在大量端口,因此幾乎總是會有足夠的帶寬來用于虛擬化。因此,可以實現(xiàn)存儲虛擬化而又不出現(xiàn)傳統(tǒng)虛擬化方案中的許多缺點。
根據(jù)本發(fā)明的一個方面,創(chuàng)建一種虛擬包封(virtual enclosure),其具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元。也就是說,所述虛擬包封用來“包封”所選擇的虛擬存儲單元,這些單元可通過虛擬包封端口來訪問。每個虛擬存儲單元都表示存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置。另外,虛擬包封的每個虛擬包封端口都與存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)。然后,將一個地址或標識符分配給每個虛擬包封端口。例如,所述地址或標識符可以是光纖信道標識符(FCID)。這樣,指向虛擬包封端口(或其所分配的地址/標識符)的消息(例如分組或幀)可由與該虛擬包封端口相關聯(lián)的端口來處理。
根據(jù)本發(fā)明的各個實施例,虛擬包封實現(xiàn)在光纖信道網(wǎng)絡內部。因此,一個節(jié)點全球范圍名稱(Node World Wide Name,NWWN)與該虛擬包封相關聯(lián)。另外,一個端口全球范圍名稱(Port World Wide Name,PWWN)與每個虛擬包封端口相關聯(lián)。
根據(jù)本發(fā)明的另一個方面,指示存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口代表虛擬包封端口來處理消息。這可以兩種方式實現(xiàn)。第一,可指示該端口將它自己“綁定”到該虛擬包封端口。也就是說,該端口起到虛擬包封端口的作用,并且所有指向該虛擬包封端口并且被該端口接收的消息都由該端口處理。第二,可指示所述端口起到“陷入端口(trapping port)”的作用。更具體地說,除了綁定到虛擬包封端口的端口之外,一個或多個其它端口也可處理它們所接收的指向所述虛擬包封端口的消息。陷入端口優(yōu)選地是與主機直接相連的端口,因此可以跟蹤它所接收的請求以及與這些請求相關聯(lián)的響應。在多個端口之間代表單個虛擬包封端口進行的綁定和陷入優(yōu)選地是在一個中心位置例如虛擬包封服務器處進行協(xié)調。
各種網(wǎng)絡設備可被配置或改裝成用于執(zhí)行所公開的虛擬化處理。這些網(wǎng)絡設備包括但不局限于服務器(例如主機)、路由器和交換機。而且,用于上述虛擬化處理的功能可用軟件及硬件來實現(xiàn)。
本發(fā)明的另一個方面涉及包括機器可讀介質的計算機程序產品,該介質上提供了程序指令來整體或部分地實現(xiàn)上述方法和技術。本發(fā)明的任何方法都可整體或局部地表示為可在這種機器可讀介質上提供的程序指令。另外,本發(fā)明涉及在此描述的所生成和/或使用的數(shù)據(jù)的各種組合和/或設置。例如,具有在此描述的格式并在合適的介質上提供的分組或幀是本發(fā)明的一部分。
在下面對本發(fā)明的詳細描述中,將結合下述附圖描述本發(fā)明的這些以及其他特征。
圖1A的框圖示出了能夠實現(xiàn)現(xiàn)有虛擬化功能的若干實施例的示例性傳統(tǒng)存儲區(qū)域網(wǎng)絡。
圖1B的框圖示出了可在其中實現(xiàn)本發(fā)明的若干實施例的示例性存儲區(qū)域網(wǎng)絡。
圖2的框圖示出了可根據(jù)本發(fā)明的若干實施例來實現(xiàn)的虛擬化模型。
圖3A的框圖示出了可在其中實現(xiàn)本發(fā)明的若干實施例的示例性虛擬化交換機。
圖3B的框圖示出了可在其中實現(xiàn)本發(fā)明的若干實施例的示例性標準交換機。
圖4的事務流程圖示出了對每個SCSI目標端口實現(xiàn)節(jié)點全球范圍名稱(NWWN)和端口全球范圍名稱(PWWN)的傳統(tǒng)方法。
圖5的框圖示出了根據(jù)本發(fā)明一個實施例的示例性虛擬包封。
圖6示出了一種示例性系統(tǒng),其中通過根據(jù)本發(fā)明的若干實施例,將虛擬包封端口綁定到若干虛擬化端口,從而實現(xiàn)虛擬包封。
圖7的處理流程圖示出了根據(jù)本發(fā)明的若干實施例,創(chuàng)建虛擬包封的方法。
圖8示出了根據(jù)本發(fā)明的若干實施例,可與虛擬包封端口相關聯(lián)的傳統(tǒng)光纖信道標識符(FCID)。
圖9的事務流程圖示出了根據(jù)本發(fā)明的若干實施例,協(xié)調虛擬化端口的虛擬包封綁定和陷入功能的一種方法。
圖10示出了根據(jù)本發(fā)明的若干實施例,可由虛擬化端口維護的一個示例性表,該表表示由該虛擬化端口處理的FCID。
圖11的事務流程圖示出了根據(jù)本發(fā)明的若干實施例,在主機和一個或多個虛擬化端口(例如虛擬包封端口、陷入端口)之間建立通信,以使得該主機可訪問一個或多個LUN的一種方法。
圖12示出了一種示例性LUN映射表,該表可用于在圖11的步驟1128處執(zhí)行LUN映射。
圖13示出了對應于圖12的LUN映射表的虛擬包封。
具體實施例方式
在下面的描述中,給出了大量具體細節(jié)以透徹地理解本發(fā)明。然而,對本領域內的技術人員來說很明顯沒有這些具體細節(jié)中的一些或全部也可實施本發(fā)明。在其他情形下,未詳細示出一些公知處理步驟以免不必要地混淆本發(fā)明。
根據(jù)本發(fā)明的若干實施例,存儲區(qū)域網(wǎng)絡內的存儲虛擬化可通過創(chuàng)建具有一個或多個虛擬包封端口的虛擬包封來實現(xiàn)。所述虛擬包封部分是通過一個或多個網(wǎng)絡設備實現(xiàn)的,所述網(wǎng)絡設備在此稱為虛擬化交換機。更具體地說,虛擬化交換機(或更具體地說是虛擬化交換機內的虛擬化端口)可代表虛擬包封端口之一來處理消息如分組或幀。因此,本發(fā)明的實施例可被應用于指向虛擬包封端口的分組或幀,下面將更詳細地描述。為了方便起見,下面的討論將針對于幀來描述本發(fā)明的實施例。交換機對幀進行操作,并使用關于SAN的信息來進行交換決策。
注意,虛擬化交換機所接收和發(fā)送的幀具有對于標準協(xié)議例如以太網(wǎng)或光纖信道而指定的幀格式。因此,傳統(tǒng)上用來生成這些幀的軟件和硬件可與本發(fā)明一起使用。根據(jù)本發(fā)明,還采用了附加的硬件和/或軟件來修改和/或生成與所述標準協(xié)議兼容的幀。本領域內的技術人員將會理解如何開發(fā)必需的硬件和軟件來實現(xiàn)下述虛擬化。
很明顯,所述合適的網(wǎng)絡設備應該用合適的軟件和/或硬件來配置,以執(zhí)行虛擬化功能。當然,不是存儲區(qū)域網(wǎng)絡內的所有網(wǎng)絡設備都需要配置有虛擬化功能。相反地,可選擇一些交換機和/或端口進行虛擬化功能的配置,或將其改裝成適于該功能。類似地,在各實施例中,可以通過選擇不同模式來啟用或禁止這一虛擬化功能。而且,將網(wǎng)絡設備所選擇的端口配置為能夠執(zhí)行虛擬化(或者是持續(xù)地,或者只是在處于啟用虛擬化的狀態(tài)中時)是所期望的。
存儲區(qū)域網(wǎng)絡內采用的標準協(xié)議(即用于使數(shù)據(jù)成幀的協(xié)議)一般(但非必然)與網(wǎng)絡所攜帶的“流量類型”同義。如下所述,按照某些封裝格式來定義流量類型。流量類型的例子一般是層2或對應的層格式,例如以太網(wǎng)、光纖信道和InfiniBand。
如上所述,存儲區(qū)域網(wǎng)絡(SAN)是一種代表一個更大的用戶網(wǎng)絡,互連具有關聯(lián)網(wǎng)絡主機(例如數(shù)據(jù)服務器或終端用戶機器)的不同數(shù)據(jù)存儲設備的高速專用網(wǎng)絡。SAN由系統(tǒng)的物理配置所定義。也就是說,SAN中的這些設備必須在物理上互連。
在如圖1B中所示的存儲區(qū)域網(wǎng)絡131內,可以實現(xiàn)多個存儲設備132、134、136、138、140和142,它們可以是同構的(例如相同的設備類型、大小或配置)或異構的(例如不同的設備類型、大小或配置)。可響應于主機144和146發(fā)送的命令而從存儲設備132-142的各個部分讀數(shù)據(jù)或對之寫數(shù)據(jù)。這些存儲設備和主機之間的通信是通過將存儲設備與主機耦合在一起而實現(xiàn)的,所述耦合通過一個或多個交換機、路由器或其他配置來執(zhí)行交換功能的網(wǎng)絡節(jié)點來實現(xiàn)。在這一示例中,交換機148、150和152通過交換機間鏈路154和156來相互通信。
如上所述,本發(fā)明涉及存儲網(wǎng)絡中的“虛擬化”。與現(xiàn)有方法不同,本發(fā)明中的虛擬化是通過創(chuàng)建并實現(xiàn)虛擬包封來實現(xiàn)的。這部分地是通過使用存儲區(qū)域網(wǎng)絡的交換機或其他“內部”網(wǎng)絡節(jié)點來實現(xiàn)所述虛擬包封來完成的。而且,本發(fā)明的虛擬化一般是逐個端口地實現(xiàn)。也就是說,多端口虛擬化交換機將具有獨立地實現(xiàn)在其一個或多個端口上的虛擬化。各端口具有若干專用邏輯,以用于處理該端口所處理的分組或幀的虛擬化功能。這使得虛擬化處理可隨著端口數(shù)量而擴展,并且,與基于主機或基于存儲的虛擬化方案相比,可提供多得多的帶寬來用于虛擬化。在這些現(xiàn)有的方法中,主機和網(wǎng)絡結構(network fabric)之間或存儲節(jié)點和網(wǎng)絡結構之間的連接數(shù)量是受限的——至少與網(wǎng)絡結構中的端口數(shù)量相比是這樣的。
在本發(fā)明的一個特定且優(yōu)選的實施例中,虛擬化邏輯分別實現(xiàn)在給定交換機的各端口處——而非集中式地處理交換機的所有端口。這使得虛擬化處理能力可逐個端口地與交換機的準確需求緊密地匹配。如果對(服務于大量端口的)整個交換機采用中央處理器,則該處理器必須被設計/選擇來處理所有端口處的最大流量。對于許多應用而言,這意味著極高的處理需求和非常巨大/昂貴的處理器。如果該中央處理器太小,則交換機將經常不能跟上網(wǎng)絡的交換/虛擬化需求。
虛擬化可采用許多形式。一般地,它可被定義為對存儲網(wǎng)絡上的物理存儲和虛擬存儲進行相互關聯(lián)的邏輯或過程。主機可以獲得可用物理存儲的一種表示,其不受限于該存儲設備所固有的物理設置或分配。被虛擬化所克服的物理限制的一個示例包括構成性物理存儲塊的大小和位置。例如,小型計算機系統(tǒng)接口(SCSI)標準所定義的邏輯單元具有精確的物理大小(例如36Gb和72GB)。虛擬化以比物理邏輯單元的規(guī)定大小更小或更大的虛擬邏輯單元來表示存儲。而且,虛擬化可以提供一種虛擬邏輯單元,其包括來自兩個或更多不同物理邏輯單元的區(qū)域,它們有時是來自不同供應商的設備。優(yōu)選地,虛擬化操作至少對一些網(wǎng)絡實體(例如主機)是透明的。
按照一些通常意義,存儲區(qū)域網(wǎng)絡上的虛擬化與典型計算機系統(tǒng)的虛擬存儲器類似。然而,網(wǎng)絡上的虛擬化產生了大得多的復雜度并帶來了大得多的靈活性。所述復雜度直接來源于下述事實,即存在多個分別互連的網(wǎng)絡節(jié)點。虛擬化必須跨越這些節(jié)點。所述節(jié)點包括主機、存儲子系統(tǒng)和交換機(或相當?shù)木W(wǎng)絡流量控制設備例如路由器)。所述主機和/或存儲子系統(tǒng)經常是異構的,由不同供應商提供。供應商可能采用了截然不同的協(xié)議(標準協(xié)議或專有協(xié)議)。因此,在許多情形下,虛擬化提供了將異構的發(fā)起者(例如主機或服務器)連接到分布式的異構目標(存儲子系統(tǒng))組的能力,實現(xiàn)了動態(tài)且透明的存儲分配。
網(wǎng)絡專用的虛擬化操作的例子包括下述操作RAID 0到RAID 5、來自物理存儲器的兩個或更多不同邏輯單元的存儲器的級聯(lián)、備用(失效物理介質的自替換)、物理存儲器的遠程鏡像、信息(例如錯誤和/或統(tǒng)計)寫日志、多個物理存儲器系統(tǒng)間的負載平衡、條帶化(例如RAID 0)、安全性措施例如用于訪問物理存儲器的訪問控制算法、虛擬存儲器塊的大小重新設置、使得任意邏輯單元(LUN)可作為引導設備的LUN映射、物理存儲器的備份(時間點(point in time)拷貝)等等。這些僅僅是虛擬化功能的示例。本發(fā)明并不限制于這一全集或其任何特定子集。
在此的一些討論中,本發(fā)明的虛擬化交換機的功能是按照SCSI協(xié)議來描述的。這是因為許多商用存儲區(qū)域網(wǎng)絡運行SCSI協(xié)議來訪問存儲站點。存儲區(qū)域網(wǎng)絡經常采用光纖信道(FC-PH(ANSI X3.230-1994,光纖信道—物理和信令接口)作為更低層的協(xié)議,并在光纖信道之上運行IP和SCSI。注意,本發(fā)明并不局限于這些協(xié)議中的任何一個。例如,可用以太網(wǎng)、InfiniBand等來替換光纖信道。而且,更高層的協(xié)議不一定包括SCSI。例如,這可包括FC上的SCSI、iSCSI(IP上的SCSI)、并行SCSI(并行纜線上的SCSI)、串行SCSI(串行纜線上的SCSI)以及SCSI的所有其他變體。
由于SCSI非常普遍地使用在存儲區(qū)域網(wǎng)絡中,因此在此使用的許多術語都是SCSI術語。使用SCSI術語(例如“發(fā)起者”和“目標”)并不意味著所描述的過程或裝置必須采用SCSI。在做進一步描述之前,有必要對這一討論中將要使用的若干SCSI術語進行解釋。首先,“發(fā)起者”是請求另一個設備執(zhí)行一項操作的設備(通常是主機系統(tǒng))。一般地,在本文獻的上下文中,主機發(fā)起者將請求對虛擬或物理存儲器的一個區(qū)域進行讀或寫操作。其次,“目標”是執(zhí)行發(fā)起者所請求的操作的設備。例如,目標物理存儲器磁盤將獲得或寫下主機發(fā)起者一開始所請求的數(shù)據(jù)。注意,盡管主機發(fā)起者可提供對具有虛擬地址的“虛擬”目標進行讀或對之寫的指令,但是本發(fā)明的虛擬化交換機在對該目標發(fā)出指令前必須首先將這些指令轉換成物理目標地址。
目標可被劃分成物理或虛擬“邏輯單元”。這些是通過該目標可以尋址的特定設備。例如,物理存儲子系統(tǒng)可被組織為具有多個不同邏輯單元。在本文獻中,主機將虛擬存儲器視為不同的虛擬邏輯單元。在此有時將邏輯單元稱為“LUN”。在SCSI標準中,LUN表示邏輯單元號。但在通常的術語中,LUN也表示邏輯單元本身。
虛擬化的中心概念是“虛擬化模型”。這是存儲子系統(tǒng)(例如磁盤陣列)上提供的物理存儲借以與網(wǎng)絡上的主機或其他發(fā)起者所看到的虛擬存儲建立關系的方式。盡管所述關系可以具有許多形式,也可由不同術語給出其特征,但在此將使用基于SCSI的術語,如上所述。因此,存儲區(qū)域網(wǎng)絡的物理側將被描述為物理LUN。反過來,主機側可看到一個或多個作為物理LUN的虛擬表示的虛擬LUN。物理LUN到虛擬LUN的映射邏輯上可能發(fā)生在一個、兩個或更多的層級上。最后,存在一種可由本發(fā)明的交換機使用來在物理LUN地址和虛擬LUN地址之間進行相互轉換的映射功能。
圖2的框圖示出了根據(jù)本發(fā)明的若干實施例,可在存儲區(qū)域網(wǎng)絡內實現(xiàn)的虛擬化模型的一個示例。如圖所示,存儲區(qū)域網(wǎng)絡的物理存儲由一個或多個物理LUN構成,在此示出為物理磁盤202。每個物理LUN是能夠包含存儲成一個或多個連續(xù)塊的數(shù)據(jù),所述塊可分別被直接訪問。例如,物理LUN內的存儲器的每個塊可被表示為塊204,可稱為磁盤單元(DUnit)。
通過映射功能206,可以將與物理LUN 202相關聯(lián)的物理LUN地址轉換成虛擬LUN地址,反之亦然。更具體地說,如上所述,所述虛擬化以及映射功能可在一個或多個層級上發(fā)生。例如,如圖所示,在第一虛擬化層級處,一個或多個虛擬LUN 208中的每一個都表示一個或多個物理LUN 202或其一些部分。一起構成單個虛擬LUN 208的物理LUN 202不一定是連續(xù)的。類似地,被映射為虛擬LUN 208的物理LUN 202不一定位于單個目標內。因此,通過虛擬化,可創(chuàng)建表示位于物理上不同的目標內的物理存儲器的虛擬LUN 208,這些目標可來自不同的供應商,因此,可支持不同協(xié)議和流量類型。
盡管可用單個層級來實現(xiàn)所述虛擬化模型,但是本發(fā)明的不同實施例也可支持具有任意數(shù)量的層級的層次設置。例如,如圖所示,圖2的虛擬模型內的第二虛擬化層級稱為高級VLUN或卷210。一般地,發(fā)起者設備在訪問數(shù)據(jù)時只“看到”VLUN 210。根據(jù)本發(fā)明的若干實施例,多個VLUN被“包封”在一個虛擬包封內,以使得只有該虛擬包封可被發(fā)起者“看到”。也就是說,虛擬包封所包封的VLUN對發(fā)起者來說是不可見的。
在這一示例中,VLUN 210被實現(xiàn)為虛擬LUN 208的“邏輯”RAID陣列。而且,還可以例如通過使用條帶化和/或鏡像來進一步實現(xiàn)這一虛擬化層級。另外需要注意,不必指定虛擬化層級的數(shù)量來支持映射功能206。相反地,可以例如通過遞歸映射功能來實現(xiàn)任意數(shù)量的層級的虛擬化。例如,不同層級的節(jié)點可被構建或維護在樹型數(shù)據(jù)結構、鏈接表或其他可被遍歷的合適的數(shù)據(jù)結構中。
因此,每個發(fā)起者可通過位于該層次虛擬化模型的任意層級中的節(jié)點來訪問物理LUN。實現(xiàn)在給定存儲區(qū)域網(wǎng)絡內的層次模型的給定虛擬化層級內的節(jié)點對于一個被許可的發(fā)起者組(未示出)來說既可見又可訪問。然而,根據(jù)本發(fā)明的若干實施例,這些節(jié)點包封在虛擬包封中,因此對于被許可的發(fā)起者組來說不再可見。在可對特定虛擬化層級內的節(jié)點(例如VLUN)執(zhí)行某些功能(例如讀、寫)之前,需要創(chuàng)建所述節(jié)點。這例如可通過特定發(fā)起者的主引導記錄來實現(xiàn)。另外,可針對特定虛擬化層級內的特定節(jié)點(例如VLUN),向不同發(fā)起者分配讀和/或寫特權。按照這種方式,特定虛擬化層級內的節(jié)點可被所選擇的發(fā)起者訪問。
如上所述,存儲區(qū)域網(wǎng)絡內的各交換機可以是支持虛擬化功能的虛擬化交換機。圖3A的框圖示出了可在其中實現(xiàn)本發(fā)明的若干實施例的示例性虛擬化交換機。如圖所示,智能虛擬化端口通過雙向連接器302接收數(shù)據(jù)或消息。另外,虛擬化端口適于代表虛擬包封端口來處理消息,下面將更詳細地描述。與進入端口相關聯(lián),提供了介質訪問控制(MAC)模塊304,其使得可接收各種協(xié)議例如以太網(wǎng)或光纖信道的幀。另外,虛擬化攔截交換機306確定一個進入分組中指定的地址是否與對某個虛擬存儲單元的虛擬存儲位置的訪問有關,該虛擬存儲單元表示存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置。例如,所述虛擬存儲單元可以是包封在虛擬包封內的虛擬存儲單元(例如VLUN)。
當虛擬化攔截交換機306確定進入幀中指定的地址涉及對虛擬存儲位置而非物理存儲位置的訪問時,該幀由能夠執(zhí)行上述映射功能的虛擬化處理器308處理。更具體地說,虛擬化處理器308獲得一個或多個物理存儲位置和虛擬存儲位置之間的虛擬-物理映射。按照這種方式,虛擬化處理器308可查找物理或虛擬地址,視情況而定。例如,可能需要執(zhí)行從物理地址到虛擬地址的映射,或者需要執(zhí)行從虛擬地址到一個或多個物理地址的映射。
獲得虛擬-物理映射后,虛擬化處理器308然后可利用所獲得的映射來生成新的幀或修改現(xiàn)有的幀,從而可將該幀發(fā)送到所述虛擬-物理映射指定的發(fā)起者或目標。映射功能還可指定該幀需要被復制多次,例如在鏡像寫的情況下。更具體地說,視情況而定地修改源地址和/或目的地地址。例如,對于來自目標的數(shù)據(jù),虛擬化處理器將最初是物理LUN地址的源地址替換為對應的虛擬LUN和地址。在目的地地址中,端口將它自己的地址替換為發(fā)起者的地址。對于來自發(fā)起者的數(shù)據(jù),端口將源地址從發(fā)起者的地址改變?yōu)樵摱丝谧约旱牡刂?。它還將目的地地址從虛擬LUN/地址改變?yōu)閷奈锢鞮UN/地址。所述新的或已修改的幀然后可被提供給虛擬化攔截交換機306,以使該幀可被發(fā)送到其預期目的地。
當虛擬化處理器308獲得并應用所述虛擬-物理映射時,所述幀或關聯(lián)數(shù)據(jù)可存儲在臨時存儲器位置(例如緩沖區(qū))310中。另外,可能需要或希望存儲正被發(fā)送或接收的數(shù)據(jù),直到已確認所預期的讀或寫操作已成功完成。例如,可能希望將大量數(shù)據(jù)寫到虛擬LUN,所述數(shù)據(jù)必須以多個幀的形式被分別發(fā)送。因此,可能希望對該數(shù)據(jù)進行臨時緩沖,直到接收到該數(shù)據(jù)的接收確認。作為另一個例子,可能希望從虛擬LUN讀大量數(shù)據(jù),所述數(shù)據(jù)必須以多個幀的形式被分別接收。而且,接收這一數(shù)據(jù)的順序可能與該數(shù)據(jù)應被傳送到讀命令的發(fā)起者的順序不一致。在此情形下,在將數(shù)據(jù)發(fā)送到發(fā)起者之前對之進行緩沖可能是有益的,以使數(shù)據(jù)在發(fā)送之前可被重新排序。類似地,可能希望在必須驗證已被發(fā)送到發(fā)起者(或目標)的數(shù)據(jù)的完整性時,對數(shù)據(jù)進行緩沖。
所述新的或已修改的幀然后由轉發(fā)引擎312接收,轉發(fā)引擎312從該幀的各個字段獲得信息,例如源地址和目的地地址。轉發(fā)引擎312然后訪問轉發(fā)表314,以確定所述源地址是否可訪問所指定的目的地地址。更具體地說,轉發(fā)表314可包括物理LUN地址以及虛擬LUN地址。轉發(fā)引擎312還確定交換機的合適端口以通過其發(fā)送該幀,并為該幀生成合適的路由標簽。
將幀進行合適的格式化以用于發(fā)送之后,在發(fā)送之前由緩沖隊列模塊316接收該幀。不是將幀在接收時就進行發(fā)送,而是可能希望將幀臨時存儲在緩沖區(qū)或隊列318中。例如,可能希望基于服務質量而將分組臨時存儲在一組隊列中的一個隊列中,其中每個隊列都對應于不同的優(yōu)先級。然后通過交換結構320將幀發(fā)送到合適的端口。如圖所示,外發(fā)端口具有它自己的MAC模塊322和雙向連接器324,通過它們發(fā)送幀。
如上所述,不是存儲區(qū)域網(wǎng)絡中的所有交換機都必須是虛擬化交換機。也就是說,交換機可以是標準交換機,其中任意端口都未實現(xiàn)“智能的”虛擬化功能。圖3B的框圖示出了其中可實現(xiàn)本發(fā)明的若干實施例的示例性標準交換機。如圖所示,標準端口326具有MAC模塊304。然而,未實現(xiàn)諸如圖3所示的虛擬化攔截交換機和虛擬化處理器。在進入端口處接收的幀只是由轉發(fā)引擎312和它的關聯(lián)轉發(fā)表314進行處理。在發(fā)送之前,可將幀排隊316在緩沖區(qū)或隊列318中。然后通過交換結構320將幀轉發(fā)到外發(fā)端口。如圖所示,外發(fā)端口也具有關聯(lián)MAC模塊322和雙向連接器324。當然,每個端口都可支持多種協(xié)議。例如,外發(fā)端口可以是也支持虛擬化的iSCSI端口(即支持以太網(wǎng)上的基于IP的SCSI的端口),還可以是并行SCSI和串行SCSI。
雖然上面參考圖3A和3B所述的網(wǎng)絡設備被描述為交換機,但是這些網(wǎng)絡設備僅僅是示例性的。因此,也可實現(xiàn)其他網(wǎng)絡設備例如路由器來接收、處理、修改和/或生成具有如上所述功能的分組或幀以在存儲區(qū)域網(wǎng)絡中進行傳輸。而且,上述網(wǎng)絡設備僅僅是示例性的,因此也可實現(xiàn)其他類型的網(wǎng)絡設備來執(zhí)行所公開的虛擬化功能。
一般地,SCSI目標可由SCSI發(fā)起者(例如主機)直接訪問。也就是說,SCSI目標例如PLUN對正在訪問這些SCSI目標的主機來說是可見的。類似地,即使實現(xiàn)了VLUN,VLUN對SCSI發(fā)起者來說也是可見且可訪問的。因此,每個主機一般都必須識別對它來說可用的SCSI。更具體地說,主機一般確定哪些SCSI目標端口對它來說是可用的。主機然后向這些SCSI端口中的每一個詢問,想了解通過這些SCSI目標端口可使用哪些VLUN。
在光纖信道網(wǎng)絡內,所有的光纖信道設備都具有全球范圍名稱(WWN)。更具體地說,節(jié)點WWN(NWWN)是連接到特定端口的節(jié)點的WWN。也就是說,NWWN是連接到交換機端口的系統(tǒng)、存儲設備或子系統(tǒng)的WWN。在節(jié)點WWN之外,端口WWN(PWWN)用作為特定端口的給定名稱。特定交換機端口的光纖信道網(wǎng)絡ID(FCID)用于表示端口的物理位置。每個光纖信道設備可具有多個端口,每個端口都唯一地由一個NWWN和PWWN標識。
不幸地是,傳統(tǒng)的光纖信道WWN術語的應用存在若干相關聯(lián)的缺點。例如,必須為光纖信道設備的每個端口都分配NWWN和PWWN。然而,可能不希望使得每個端口的NWWN和PWWN對于發(fā)起者例如主機來說都是可見的。而且,可用端口的數(shù)量被限制為特定存儲設備、子系統(tǒng)或交換機內的端口的數(shù)量。類似地,存儲設備、子系統(tǒng)或交換機可具有比特定存儲虛擬化方案中所需的端口數(shù)量多得多的端口。然而,虛擬化端口的實現(xiàn)是很昂貴的,因此不希望“浪費”這些智能端口。因此,根據(jù)本發(fā)明,虛擬化端口的使用可以是按需進行。也就是說,可選擇端口用于實現(xiàn)一個或多個虛擬包封,這是通過將這些端口綁定到虛擬包封端口或通過將中心端口實現(xiàn)為陷入端口來完成的。結果,生產起來最為昂貴的那些端口可得到最大程度的使用。
在本發(fā)明的一個實施例中,網(wǎng)絡例如光纖信道網(wǎng)絡中的虛擬化的實現(xiàn)不受限于存儲子系統(tǒng)中可訪問端口的數(shù)量。而且,SAN內的端口可按需選擇及分配,以用于特定存儲虛擬化方案。下面將更詳細地描述本發(fā)明的若干實施例。
為了理解本發(fā)明是如何應用到光纖信道網(wǎng)絡中的,圖示出WWN術語在光纖信道網(wǎng)絡中的傳統(tǒng)應用是有幫助的。圖4的事務流程圖示出了為每個SCSI目標端口實現(xiàn)節(jié)點全球范圍名稱(NWWN)和端口全球范圍名稱(PWWN)的傳統(tǒng)方法。如圖所示,主機402、交換機404、域名系統(tǒng)(DNS)服務器406和SCSI目標端口408之間的交互通過被標簽的對應垂直線所表示出來。如圖所示,為了是光纖信道節(jié)點例如主機402可建立到結構交換機404的邏輯連接,主機402執(zhí)行結構登錄(FLOGI)410。與使用固定介質訪問控制(MAC)地址的許多LAN技術不同,光纖信道使用稱為FCID的地址標識符,該標識符可在登錄期間動態(tài)分配。這樣,在412處,交換機404向主機402提供一個FCID。一旦向主機分配了主機FCID,主機就可在方框414通過SCSI REPORT命令向DNS服務器406進行DNS查詢,該命令請求確定SCSI目標是否可用。更具體地說,所述DNS查詢確定對主機FCID可見的那些SCSI目標。在416,DNS服務器406然后將SCSI目標端口的FCID提供給主機402。
在主機獲得對它可用的那些SCSI目標端口的FCID之后,在418,它向(由其FCID標識出的)可用的SCSI目標端口之一發(fā)送光纖信道處理邏輯命令。這一處理邏輯實現(xiàn)了一個映射層,將光纖信道“映射”到SCSI。完成后,SCSI目標端口408在420發(fā)送光纖信道接受消息。由于光纖信道被映射到SCSI,因此主機可以發(fā)送SCSI命令到SCSI目標。
由于主機402可以發(fā)送SCSI命令到SCSI目標端口408,因此它在422可以通過將SCSI處理登錄命令發(fā)送到SCSI目標端口408來執(zhí)行SCSI處理登錄。SCSI目標端口408然后發(fā)送SCSI接受命令424。由此可在主機和SCSI目標之間建立經由SCSI協(xié)議進行的通信。例如,主機可以確定哪些LUN對它可用,并對它可用的LUN進行讀和寫。
由于主機402知道了哪些SCSI目標端口對它可用,并可與這些端口中的每一個進行通信,因此它可以在426發(fā)送SCSI REPORT LUN命令到SCSI目標端口408,以確定對所述主機FCID可見的那些LUN。SCSI目標端口408在428確定哪些LUN對該主機FCID是可見的,并發(fā)送一個LUN(例如PLUN或VLUN)列表。然后在430,主機402可通過SCSI目標端口408向特定PLUN或VLUN發(fā)送SCSI讀和寫命令。
根據(jù)本發(fā)明的若干實施例,通過創(chuàng)建“虛擬包封”而在存儲區(qū)域網(wǎng)絡中實現(xiàn)了存儲虛擬化。圖5的框圖示出了根據(jù)本發(fā)明一個實施例的示例性虛擬包封。虛擬包封502是一個適于“包封”或代表一個或多個虛擬存儲單元的虛擬實體。例如,所述虛擬存儲單元中的一個或多個中的每一個都可包括SAN上的VLUN或其他虛擬存儲表示。如上所述,每個虛擬存儲單元都表示存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元504上的一個或多個物理存儲位置。通過創(chuàng)建虛擬包封,可以按需實現(xiàn)上述各種虛擬化端口以支持特定存儲區(qū)域網(wǎng)絡內的虛擬化。更具體地說,所述虛擬包封具有一個或多個“虛擬包封端口”,其中每一個虛擬包封端口都與該存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的一個端口(例如虛擬化端口)相關聯(lián)。例如,可靜態(tài)或動態(tài)地指示網(wǎng)絡設備的端口去處理發(fā)送到虛擬包封端口的消息。還將一個地址或標識符分配到每個虛擬包封端口。這樣,發(fā)送到虛擬包封端口的消息(例如分組或幀)可通過這一地址或標識符來標識,從而使得一個端口可代表特定的虛擬包封端口來攔截并處理消息。例如,可將一個FCID分配到光纖信道網(wǎng)絡中使用的每個虛擬包封端口,或與諸如SAN之類的網(wǎng)絡內的各種光纖信道設備一起使用。按照這種方式,可以創(chuàng)建虛擬包封來表示一個或多個虛擬存儲單元。
在SAN內,可以創(chuàng)建不同的虛擬SAN(VSAN)。在單個存儲區(qū)域網(wǎng)絡內實現(xiàn)虛擬存儲區(qū)域網(wǎng)絡(VSAN)的一種方法已參考美國專利申請No.___(律師案卷號No.ANDIP001)進行了更詳細的描述,該申請的名稱為“Methods and Apparatus for Encapsulating a Frame forTransmission in a Storage Area Network”,由Edsall等人與2001年12月26日遞交,該申請通過引用而包含于此以用于各種目的。也就是說,可能希望或必須將物理存儲單元分布在不同的VSAN之間。因此,當虛擬包封端口被綁定到虛擬化端口時,這些所選擇的虛擬化端口可被分布在多個VSAN之間。
每個虛擬包封可具有任意數(shù)量的虛擬包封端口。也就是說,希望使得虛擬包封端口的數(shù)量是可以選擇的。例如,負責創(chuàng)建并維護虛擬包封定義的系統(tǒng)管理員可選擇適當數(shù)量的虛擬包封端口。應注意,虛擬包封內的虛擬包封端口的數(shù)量并不受限于存儲區(qū)域網(wǎng)絡內特定網(wǎng)絡設備內的端口數(shù)量。更具體地說,每個虛擬包封端口與存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的一個端口相關聯(lián)。也就是說,單個虛擬包封的虛擬包封端口可同時與存儲區(qū)域網(wǎng)絡內多個不同網(wǎng)絡設備而非單個設備的端口(例如虛擬化端口)相關聯(lián)。另外,網(wǎng)絡設備的單個端口例如虛擬化端口可同時與多個虛擬包封端口相關聯(lián)或綁定到所述虛擬包封端口。因此,可用于虛擬存儲單元的虛擬化的端口的數(shù)量幾乎沒有限制。
如上所述,將一個地址或標識符分配到每個虛擬包封端口。理論上,這一地址或標識符可以是之前已被分配到存儲區(qū)域網(wǎng)絡某個端口的地址或標識符,所述某個端口之后與該虛擬包封端口相關聯(lián)。然而,由于單個虛擬化端口可綁定到多個虛擬包封端口,因此之前分配給所述端口(例如虛擬化端口)的地址或標識符將不再唯一地標識虛擬包封端口。因此,將所述地址或標識符分配到虛擬包封端口以唯一地表示該虛擬包封端口。此時,將所述地址或標識符提供給與該虛擬包封端口相關聯(lián)的虛擬化端口。根據(jù)一個實施例,所述虛擬包封使用在光纖信道網(wǎng)絡中,因此每個光纖信道設備都具有NWWN。根據(jù)本發(fā)明的各個實施例來利用這一術語,以實現(xiàn)虛擬包封。因此,NWWN和PWWN一起可用作唯一地表示虛擬包封端口的地址或標識符。更具體地說,NWWN與虛擬包封相關聯(lián)。另外,將PWWN分配到每個虛擬包封端口。NWWN和PWWN一起標識虛擬包封端口,直到它被分配了一個地址或標識符例如FCID。
創(chuàng)建虛擬包封之后,可將一個或多個虛擬存儲單元分配到該虛擬包封。如上所述,每個虛擬存儲單元都可以是VLUN或存儲區(qū)域網(wǎng)絡上的其他虛擬存儲表示。按照這種方式,虛擬包封“包封”了所述虛擬存儲單元,從而需要主機通過虛擬包封來訪問這些虛擬存儲單元。按照這種方式,可將VLUN對于主機“隱藏”起來。也就是說,通過訪問PWWN,主機僅可訪問虛擬包封而不能訪問具體設備或VLUN。更具體地說,VLUN看起來像位于一組虛擬包封端口之后的邏輯單元。這樣,用于創(chuàng)建VLUN的PLUN對主機隱藏起來。
如上所述,可用適于實現(xiàn)虛擬化功能的虛擬化交換機以及標準交換機來實現(xiàn)存儲區(qū)域網(wǎng)絡。每個虛擬化交換機都可包括一個或多個“智能”虛擬化端口以及一個或多個標準端口。圖6示出了根據(jù)本發(fā)明若干實施例的一個示例性系統(tǒng),在其中可通過將虛擬包封端口綁定到若干虛擬化端口來實現(xiàn)虛擬包封。如圖所示,虛擬包封602“包封”了兩個虛擬存儲單元VLUN1 604和VLUN2 606。在這一示例中,虛擬包封602具有3個虛擬包封端口VE1 608、VE2 610和VE3 612。另外,還示出了存儲區(qū)域網(wǎng)絡內的4個網(wǎng)絡設備。更具體地說,示出了4個虛擬化交換機614、616、618和620。每個虛擬化交換機都具有一個或多個虛擬化端口,如上參考圖3A所述。然而,為了簡化圖示,每個虛擬化交換機都被示出為具有單個虛擬化端口,分別標記為v1、v2、v3和v4。每個虛擬化端口都具有關聯(lián)PWWN(未示出)。交換機之間的通信可通過兩個交換機(或兩個端口)之間的交換機間鏈路來完成。
可唯一地表示每個虛擬包封端口。更具體地說,在光纖信道網(wǎng)絡內,虛擬包封602由NWWN 621所標識。另外,一旦每個虛擬包封端口與虛擬化端口相關聯(lián)之后,虛擬包封端口VE1 608、VE2 610和VE3 612中的每一個就都可由PWWN以及其FCID來進一步標識,分別標記為PWWN1622、PWWN2 624和PWWN3 626。更具體地說,虛擬包封端口可通過NWWN和PWWN來標識,直到向虛擬包封端口分配了FCID。下面將參考圖8來更詳細地描述FCID。如圖所示,所分配的FCID還標識了與對應的虛擬包封端口相關聯(lián)的虛擬化交換機。這是因為在光纖信道中,交換機被視為“域”。因此,該交換機中的任意端口的FCID的第一個字節(jié)都與域ID相同。例如,分配給第一虛擬包封端口VE1 608的FCID的第一個字節(jié)標識了虛擬化交換機616,示出為交換機50,而分配給第三虛擬包封端口VE3 612的FCID的第一個字節(jié)標識了虛擬化交換機618,示出為交換機45。
虛擬包封例如虛擬包封602的創(chuàng)建還可由網(wǎng)絡設備例如虛擬包封服務器627來執(zhí)行。例如,可由系統(tǒng)管理員來創(chuàng)建虛擬包封602。創(chuàng)建后,可將各種VLUN例如VLUN 604和606分配給虛擬包封602。需要的話,可隨后將這一分配修改為包括其他VLUN,從該虛擬包封內刪除VLUN,或修改VLUN到虛擬包封602的分配。在創(chuàng)建、修改和維護虛擬包封之外,虛擬包封服務器627還可以向虛擬化交換機的虛擬化端口通知它們與對應的虛擬包封端口之間的關聯(lián)。按照這種方式,可向虛擬化端口通知它們的以下職責,即攔截并處理指向那些對應虛擬包封端口的分組(或幀)。
一旦已創(chuàng)建虛擬包封,一個或多個主機628、630就可通過虛擬包封602訪問存儲區(qū)域網(wǎng)絡內的數(shù)據(jù)。更具體地說,主機628、630可訪問與虛擬存儲單元(在此示出為VLUN1 604和虛擬包封602)相對應的各個物理存儲設備(稱為物理存儲單元)。例如,主機可通過向虛擬包封所包封的VLUN內(并且通過虛擬包封端口而可由該主機獲得)的虛擬地址發(fā)送分組、幀或消息,從存儲區(qū)域網(wǎng)絡內的各個PLUN 632、634、636、638讀數(shù)據(jù)或對之寫數(shù)據(jù)。
如上所述,可創(chuàng)建虛擬包封以在各種網(wǎng)絡環(huán)境下使用。圖7的處理流程圖示出了根據(jù)本發(fā)明的若干實施例來創(chuàng)建虛擬包封的方法。在這一示例中,該虛擬包封用在光纖信道網(wǎng)絡中。因此,如在方框702所示,將一個NWWN與虛擬包封相關聯(lián)。另外,在方框704選擇虛擬包封的虛擬包封端口的數(shù)量。這些虛擬包封端口中的每一個都可由PWWN來標識,直到在方框706將它們綁定到虛擬化端口,并在方框708分配FCID。生成虛擬包封之后,在710將一個或多個VLUN分配到虛擬包封。這樣,當主機在方框712登錄到SAN中時,該主機可以發(fā)出SCSI讀和寫命令,以通過虛擬包封來訪問物理存儲單元。
在光纖信道網(wǎng)絡內,每個SCSI目標設備都被分配了NWWN。而且,每個SCSI目標端口都被分配了PWWN。另外,光纖信道標識符(FCID)標識了每個SCSI目標端口的物理位置,因此與PWWN相關聯(lián)。圖8示出了根據(jù)本發(fā)明的若干實施例,可與虛擬包封端口相關聯(lián)的傳統(tǒng)FCID。FCID是一個3字節(jié)地址標識符,標識出交換機802例如虛擬化交換機、網(wǎng)絡內的區(qū)域804以及交換機802的端口806例如虛擬化端口。
如上所述,為了創(chuàng)建虛擬包封,將每個虛擬包封端口“綁定”到虛擬化端口。根據(jù)本發(fā)明的若干實施例,由獨立的網(wǎng)絡設備來協(xié)調將虛擬包封端口綁定到虛擬化端口的工作。例如,這一網(wǎng)絡設備可以是負責生成虛擬包封的虛擬包封服務器。也就是說,虛擬包封服務器對被綁定到虛擬包封端口、并因此應處理指向該虛擬包封端口的(由該虛擬化端口所接收的)所有消息的虛擬化端口進行指示。
除了將單個虛擬化端口綁定到虛擬包封端口之外,可能還希望使得另外的端口可“陷入”指向該虛擬包封端口的消息。例如,接收指向虛擬包封端口的虛擬化端口可比“綁定”到該虛擬包封端口的虛擬化端口離主機更近,因此能夠提供更及時、有效的服務。另外,可能不希望將所有的消息都路由到被綁定到虛擬包封端口的單個虛擬化端口,因為這可能對有限數(shù)量的端口產生過重的負載,從而導致低效的服務。因此,根據(jù)本發(fā)明的若干實施例,虛擬包封服務器指示各個虛擬化端口“陷入”指向一個或多個虛擬包封端口的消息。按照這種方式,就可以利用SAN內其他虛擬化端口處理消息的能力。因此,即使在虛擬化端口未綁定到虛擬包封端口時,虛擬化端口也可對虛擬包封進行服務。
“陷入”虛擬化端口優(yōu)選地是SAN中的“外部”節(jié)點而非內部節(jié)點。也就是說,虛擬化端口應直接連接到主機,而非通過一個或多個其他端口(例如標準或虛擬化端口)間接地連接。這一直接連接尤其重要,因為內部節(jié)點可從主機接收消息或請求,但是該內部節(jié)點可能不接收來自該目標、指向該主機的消息,因為不能確保有相同的返回路徑。因此,虛擬化端口將不能完成這一“通信回路”,因此就無法得知主機請求是否已得到了服務。
圖9中示出了一種方法,用于根據(jù)本發(fā)明的若干實施例,協(xié)調虛擬化端口的虛擬包封綁定和陷入功能。虛擬包封服務器處執(zhí)行的步驟由垂直線902表示,而在虛擬化端口1-3處執(zhí)行的步驟分別由垂直線904、906和908表示。DNS服務器和關聯(lián)交換機分別由垂直線912和910表示。DNS服務器912經常包括在交換機910內。虛擬包封服務器902可向SAN內的各端口發(fā)送各種虛擬化消息,以實現(xiàn)SAN內的存儲虛擬化。例如,如上所述,虛擬化消息可以是綁定消息或陷入消息,其標識了虛擬包封端口的PWWN。綁定消息和陷入消息之間的基本區(qū)別在于綁定消息表明FCID將動態(tài)地分配給虛擬包封端口,而陷入消息表明將獲得之前已分配給另一個虛擬包封端口的FCID,以使得指向該FCID的消息可由接收端口陷入。如在914所示,虛擬包封服務器發(fā)送綁定消息914,指示第一虛擬化端口(虛擬化端口1904)處理指向第一虛擬包封端口VEP1的所有消息,這些消息由虛擬化端口1904接收。每個虛擬包封端口例如VEP1都由其PWWN唯一地標識。虛擬化消息例如綁定或陷入消息還可進一步表明接收虛擬化端口將獲得分配到該虛擬包封端口的地址或標識符。例如,虛擬化消息可表明將從DNS服務器獲得所述地址或標識符,其可以是已指定或未指定的。
接收到綁定消息后,虛擬化端口1904在916將FLOGI消息發(fā)送到交換機910,以建立與交換機910的連接。如上所述,在登錄期間動態(tài)地分配FCID。因此,交換機910向第一虛擬化端口VEP1分配了一個FCID即FCID1,其在918被提供給DNS服務器912,服務器912然后將虛擬包封端口1 VEP1與該FCID即FCID1相關聯(lián)。交換機910然后在920發(fā)送“接受(ACCEPT)”消息,表明FCID1現(xiàn)在已由DNS服務器912與第一虛擬包封端口VEP1相關聯(lián)。另外,如圖所示,該“接受”消息還向虛擬化端口904提供已被分配的FCID。虛擬化端口跟蹤這些虛擬包封端口,該虛擬化端口已與這些虛擬包封端口相互綁定,并負責為這些虛擬包封端口陷入消息。為了維護這一虛擬包封端口信息,虛擬化端口然后將所述FCID即FCID1存儲在例如下面參考圖10所述的虛擬化端口表中。還在922執(zhí)行DNS REGISTRY(DNS注冊),以將VEP1理解SCSI協(xié)議這一情況通知給DNS服務器912。DNS服務器然后在914發(fā)送“接受”消息。然后在926從虛擬化端口向虛擬包封服務器發(fā)送虛擬化響應,表明虛擬化端口現(xiàn)在已被配置為處理指向虛擬包封的虛擬包封端口的消息。在這一示例中,所述虛擬化響應表明虛擬化端口現(xiàn)在已綁定到虛擬包封端口。另外,分配到虛擬包封端口VEP1的FCID也可被提供給虛擬包封服務器,以使得虛擬包封服務器可將FCID分配給虛擬包封端口。更具體地說,可以在虛擬化響應中提供FCID。按照這種方式,虛擬包封服務器就獲得了它可使用的SCSI目標端口的FCID。
在將虛擬包封端口綁定到SAN內的虛擬化端口之外,虛擬包封服務器902還可通過SAN內地其他虛擬化端口來建立陷入,如上所述。例如,如圖所示,在928,發(fā)送陷入消息,表明虛擬化端口2 906將處理指向分配到特定虛擬包封端口的地址或標識符的消息。由于虛擬包封服務器902已獲得了分配到該虛擬包封端口VEP1的FCID,因此可以在陷入消息中提供該FCID?;蛘?,可以從DNS服務器獲得該FCID,這將在此示例中進行描述。在這一示例中,指示虛擬化端口906處理指向所指定的虛擬包封端口(例如VEP1)消息,這些消息由虛擬化端口906接收。也就是說,指示虛擬化端口906處理指向分配到該虛擬包封端口的地址或標識符的消息。類似地,在930發(fā)送第二陷入消息到虛擬化端口3 908,表明該虛擬化端口將處理指向第一虛擬包封端口的消息。
當虛擬化端口2 906在928接收到陷入消息時,該虛擬化端口在932發(fā)送GET FCID消息到DNS服務器912,以獲得分配到第一虛擬包封端口VEP1的地址或標識符。它在934接收到所述地址或標識符之后,在936存儲該地址或標識符。更具體地說,它可更新以下圖10中所述的表。所述虛擬化端口然后在938向主機發(fā)送虛擬化響應,以響應所述虛擬化消息。例如,所述虛擬化響應可表明所述虛擬化端口已成功(或不成功)地被配置來處理指向所述虛擬包封端口的消息。所述虛擬化端口現(xiàn)在可以陷入它所接收的、指向所述虛擬包封端口的消息,如在940所示。
類似地,當虛擬化端口3 908在930接收到陷入消息時,該虛擬化端口在942將GET FCID消息發(fā)送到DNS服務器912,以獲得分配給第一虛擬包封端口VEP1的地址或標識符。它在944接收到該地址或標識符之后,在946存儲該地址或標識符。該虛擬化端口在948發(fā)送虛擬化響應,表明所述虛擬化端口已成功(或不成功)地被配置為陷入端口,并在950開始陷入指向該虛擬化端口的消息。
如上所述,SAN內的端口例如虛擬化端口可被配置為代表多個虛擬包封端口來處理消息。更具體地說,單個虛擬化端口可被綁定到多個虛擬包封端口,并可被配置為用于多個虛擬包封端口的陷入端口。圖10示出了根據(jù)本發(fā)明若干實施例的一個示例性的表,其可由虛擬化端口維護,表明將由該虛擬化端口處理的FCID。如圖所示,虛擬化端口表1000可由虛擬化端口維護,以跟蹤與之綁定或被配置來為之陷入消息的那些虛擬包封端口1002。對于每個虛擬包封端口1002,它維護相關聯(lián)的FCID。按照這種方式,虛擬化端口可標識出它所負責的那些FCID。當分組指向該虛擬化端口不對之負責的FCID時,虛擬化端口只是轉發(fā)該分組。
配置了一個或多個虛擬化端口來代表虛擬包封端口處理分組后(例如陷入或綁定端口),它們就可用作為發(fā)起者例如主機的SCSI目標。圖11的事務流程圖示出了根據(jù)本發(fā)明的實施例,在主機和一個或多個虛擬化端口(例如綁定到一個或多個虛擬包封端口的端口或陷入端口)建立通信,以使得主機可以訪問一個或多個LUN的方法。如圖所示,主機1102、交換機1104、域名系統(tǒng)(DNS)服務器1106和虛擬化端口1108之間的交互由被標記的對應垂直線表示。如圖所示,光纖信道節(jié)點例如主機1102為了建立到結構交換機1104的邏輯連接,它執(zhí)行結構登錄(FLOGI)1110。如上所述,光纖信道使用稱為FCID的地址標識符,該標識符在登錄期間動態(tài)地分配。這樣,交換機1104在1112向主機1102提供FCID。向主機分配了主機FCID之后,主機可在步驟1114通過SCSI REPORT(報告)命令對DNS服務器1106進行DNS查詢,請求對該主機可用因而可見的SCSI目標。更具體地說,DNS查詢確定對該主機FCID可見的SCSI目標。然后DNS服務器1106在1116向主機1102提供作為潛在目標端口的一個或多個虛擬包封端口的FCID。
主機獲得對它來說可用的那些SCSI目標端口的FCID之后,它在1118發(fā)送光纖信道處理登錄命令到(由其FCID標識的)可用的虛擬包封SCSI目標端口中的一個或多個。如上所述,雖然分組指向了分配給虛擬包封端口的FCID,但是,可能是由綁定到該虛擬包封端口或代表該虛擬包封端口進行陷入的虛擬化端口來實際處理這些分組。這一處理登錄實現(xiàn)了一個映射層,將光纖信道“映射”到SCSI。完成后,(多個)SCSI虛擬包封端口1108在1120發(fā)送光纖信道接受消息。由于光纖信道被映射到SCSI,因此主機可以將SCSI命令發(fā)送到所述(多個)SCSI目標虛擬包封端口。
由于主機1102可以向(多個)虛擬包封端口1108發(fā)送SCSI命令,因此它通過將SCSI處理登錄命令發(fā)送到SCSI目標虛擬包封端口1108,從而可在1122執(zhí)行SCSI處理登錄。SCSI虛擬包封端口1108然后發(fā)送SCSI接受命令1124。因此通過SCSI協(xié)議在主機和SCSI目標虛擬包封端口之間建立了通信。例如,主機可以確定哪些LUN對它來說是可用的,并對那些對它可用的LUN進行讀和寫。
由于主機1102知道哪些SCSI目標(以及虛擬包封端口)對它來說是可用的,并且可以與這些端口中的每一個進行通信,因此,它可以在1126發(fā)送“SCSI報告LUN”命令到(多個)SCSI目標虛擬包封端口1108,以確定對該主機FCID可見的那些LUN。例如,這些LUN可能僅僅是虛擬包封的那些VLUN,或者可能是那些VLUN的子集。更具體地說,這一“報告”消息可被發(fā)送到分配給所述虛擬包封端口的FCID。接收SCSI目標虛擬包封端口1108在1128確定哪些LUN對所述主機FCID是可見的,并在1130發(fā)送指示了一個或多個可用LUN(例如PLUN或VLUN)的應答消息。需要注意,接收虛擬包封端口實際上可能是綁定到虛擬包封端口的虛擬化端口或代表該虛擬包封端口進行陷入的虛擬化端口。因此,這些虛擬化端口還負責在1128執(zhí)行LUN映射。下面將參考圖12詳細描述一種LUN映射方法。主機1102然后在1132通過虛擬包封端口1108發(fā)送SCSI讀和寫命令到特定的VLUN。
可以任何通信協(xié)議來實現(xiàn)諸如陷入和綁定消息等虛擬化消息。所實現(xiàn)的協(xié)議優(yōu)選地是可靠的通信協(xié)議,例如TCP套接口或運行在TCP/IP上的動態(tài)即時化協(xié)議(DIP)。
圖12示出了可在圖11的步驟1128處用于執(zhí)行LUN映射的示例性LUN映射表。如圖所示,LUN映射表1200可用于為每個發(fā)起者(例如主機)1202標識出那些通過虛擬包封的一個或多個虛擬包封端口1206(例如FCID)可見的那些VLUN 1204。例如,一個指定的邏輯單元1208例如LUN0可用來表示引導盤。由于可能希望為每個主機提供一個不同的引導盤,因此所指定的邏輯單元1208與一個或多個VLUN 1204相關聯(lián),所述VLUN 1204通過所指定的虛擬包封端口1206而對主機1202可用。對特定主機1202可用的虛擬包封端口1206可被指定,或者可使用通配符來表明所有的虛擬包封端口對該主機來說都是可用的。因此,當通過虛擬包封端口之一從該主機接收到對指定的邏輯單元1208的請求時,與該指定的邏輯單元1208相關聯(lián)的VLUN被利用來服務于該請求。
圖13表示對應于圖12的LUN映射表的虛擬包封。如圖所示,虛擬包封1302表示4個VLUNA 1304、B 1306、C 1308和D 1310。虛擬包封1302具有兩個虛擬包封端口,VEP1 1312和VEP2 1314。如圖12所示,主機H1在任何虛擬包封端口上都將LUN0視為VLUN A,主機H2在任何虛擬包封端口上都將LUN0視為VLUN B,主機H3在任何虛擬包封端口上都將LUN0視為VLUN C,主機H4只在虛擬包封端口0上將LUN0視為VLUN D,而主機H5只在虛擬包封端口1上將LUN0視為VLUNC。按照這種方式,所述VLUN的身份對主機來說是不可見的。因此,本發(fā)明提供了附加的存儲虛擬化層級。
LUN映射表優(yōu)選地維護在中心位置例如虛擬包封服務器處。然而,根據(jù)一個實施例,也可提供LUN映射表并周期性地分發(fā)到存儲區(qū)域網(wǎng)絡內的合適網(wǎng)絡設備(例如虛擬化端口)。例如,LUN映射表可在主機登錄時被分發(fā)到某個虛擬包封端口。換言之,向虛擬化端口提供了一個LUN映射(map),其對應于通過所述虛擬包封服務器已登錄的主機。
盡管在此已示出并描述了本發(fā)明的示例性實施例和應用,但是可在本發(fā)明的原理、范圍和精神的范圍內作出許多變動和修改,這些變動和修改對本領域內的技術人員來說在閱讀了本申請之后將會變得很清楚。例如,本發(fā)明被描述為應用到幀上。然而,應該理解到,本發(fā)明并不局限于這種實現(xiàn),而是可同樣應用到分組。而且,可應用本發(fā)明而不考慮其實現(xiàn)所處的上下文和系統(tǒng)。因此,一般地說,多個端口的綁定和陷入的協(xié)調控制并不一定需要如上所述地使用虛擬包封服務器來執(zhí)行,而是可以其他方式來執(zhí)行。
另外,盡管描述了示例性的交換機,但是上述實施例也可實現(xiàn)在多種網(wǎng)絡設備(例如服務器)以及多種介質中。例如,用于實現(xiàn)上述發(fā)明的指令和數(shù)據(jù)可以存儲在磁盤驅動器、硬盤驅動器、軟盤、服務器計算機或遠程聯(lián)網(wǎng)的計算機上。因此,所述實施例應被理解為示例性的而非限制性的,本發(fā)明不應局限于此處所給出的細節(jié),而是可以在所附權利要求的范圍和等同物之內作出修改。
權利要求
1.一種在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的方法,包括創(chuàng)建虛擬包封,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;將所述虛擬包封的虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián);以及向所述虛擬包封端口中的每一個都分配地址或標識符。
2.如權利要求1所述的方法,其中,“將所述虛擬包封的所述虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)”包括指示所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口去處理指向分配給所述關聯(lián)虛擬包封端口的地址或標識符的消息。
3.如權利要求1所述的方法,其中,“將所述虛擬包封的所述虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)”包括指示虛擬存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口去處理指向分配給所述關聯(lián)虛擬包封端口的地址或標識符的消息。
4.如權利要求1所述的方法,還包括將一個節(jié)點全球范圍名稱與所述虛擬包封相關聯(lián)。
5.如權利要求4所述的方法,還包括向所述虛擬包封端口中的每一個都分配一個端口全球范圍名稱PWWN,使得該PWWN與所述存儲區(qū)域網(wǎng)絡內的某個網(wǎng)絡設備的一個關聯(lián)端口相關聯(lián)。
6.如權利要求1所述的方法,其中,所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的所述端口是光纖信道設備的端口。
7.如權利要求1所述的方法,其中,“向所述虛擬包封端口中的每一個都分配地址或標識符”包括向所述虛擬包封端口中的每一個都分配一個光纖信道標識符FCID。
8.如權利要求1所述的方法,還包括選擇所述虛擬包封的虛擬包封端口數(shù)量。
9.如權利要求8所述的方法,其中,所述虛擬包封的虛擬包封端口數(shù)量大于所述存儲區(qū)域網(wǎng)絡內的每個網(wǎng)絡設備的端口數(shù)量。
10.如權利要求1所述的方法,其中,“將所述虛擬包封的所述虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)”包括將所述虛擬包封端口與所述存儲區(qū)域網(wǎng)絡內的一個或多個網(wǎng)絡設備的端口相關聯(lián)。
11.如權利要求1所述的方法,其中,“將所述虛擬包封的所述虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)”包括將所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口綁定到所述虛擬包封端口中的一個或多個。
12.如權利要求11所述的方法,還包括指示所述存儲區(qū)域網(wǎng)絡內的一個或多個網(wǎng)絡設備的一個或多個其他端口去陷入指向所述虛擬包封端口之一的消息。
13.如權利要求1所述的方法,其中,其中所述虛擬存儲單元中的一個或多個中的每一個都包括VLUN或所述存儲區(qū)域網(wǎng)絡上的存儲的其他虛擬表示。
14.如權利要求1所述的方法,還包括將一個或多個虛擬存儲單元分配到所述虛擬包封。
15.如權利要求14所述的方法,其中,所述一個或多個虛擬存儲單元中的每一個都包括VLUN或所述存儲區(qū)域網(wǎng)絡上的存儲的其他虛擬表示。
16.一種其上存儲有計算機可讀指令的計算機可讀介質,所述指令用于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化,包括用于創(chuàng)建虛擬包封的指令,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;用于將所述虛擬包封的虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)的指令;以及用于向所述虛擬包封端口中的每一個都分配地址或標識符的指令。
17.一種在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的裝置,包括用于創(chuàng)建虛擬包封的裝置,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;用于將所述虛擬包封的虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)的裝置;以及用于向所述虛擬包封端口中的每一個都分配地址或標識符的裝置。
18.一種適于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的網(wǎng)絡設備,包括處理器;以及存儲器,所述處理器和存儲器中至少有一個適于創(chuàng)建虛擬包封,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;將所述虛擬包封的虛擬包封端口中的每一個都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián);并且向所述虛擬包封端口中的每一個都分配地址或標識符。
19.一種在存儲區(qū)域網(wǎng)絡內進行LUN映射的方法,包括訪問具有一個或多個條目的LUN映射表,所述條目中的每一個都標識出所述存儲區(qū)域網(wǎng)絡內的發(fā)起者、虛擬包封中的一個或多個虛擬包封端口構成的組中的一個或多個虛擬包封端口,并且所述條目還將所指定的邏輯單元與一個或多個虛擬存儲單元相關聯(lián),所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置,其中所述虛擬包封適于表示所述的由一個或多個虛擬存儲單元構成的組,并且每個所述虛擬包封端口都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián);以及當通過所述關聯(lián)虛擬包封端口之一,從所述發(fā)起者接收到對所指定的邏輯單元的請求時,標識出所述LUN映射表中的條目之一,并利用該條目中指定的一個或多個虛擬存儲單元來服務于該請求。
20.一種其上存儲有用于在存儲區(qū)域網(wǎng)絡內進行LUN映射的指令的計算機可讀介質,包括用于訪問具有一個或多個條目的LUN映射表的指令,所述條目中的每一個都標識出所述存儲區(qū)域網(wǎng)絡內的發(fā)起者、虛擬包封中的一個或多個虛擬包封端口構成的組中的一個或多個虛擬包封端口,并且所述條目還將所指定的邏輯單元與一個或多個虛擬存儲單元相關聯(lián),所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置,其中所述虛擬包封適于表示所述一個或多個虛擬存儲單元構成的組,并且每個所述虛擬包封端口都與所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián);以及用于當通過所述關聯(lián)虛擬包封端口之一,從所述發(fā)起者接收到對所指定的邏輯單元的請求時,標識出所述LUN映射表中的條目之一,并利用該條目中指定的一個或多個虛擬存儲單元來服務于該請求的指令。
21.一種在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的方法,包括向所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口發(fā)送虛擬化消息,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口接收虛擬化響應。
22.如權利要求21所述的方法,其中所述虛擬包封端口由NWWN和PWWN來標識。
23.如權利要求21所述的方法,其中所述虛擬化響應表明所述端口被配置成處理指向所述虛擬包封的虛擬包封端口的消息。
24.如權利要求21所述的方法,其中所述虛擬化消息表明所述端口要獲得分配給所述虛擬包封端口的地址或標識符。
25.如權利要求24所述的方法,其中所述虛擬化消息是綁定消息或陷入消息。
26.如權利要求24所述的方法,其中所述虛擬化響應包括分配給所述虛擬包封端口的地址或標識符。
27.如權利要求21所述的方法,其中所述虛擬化消息表明所述端口要從DNS服務器獲得分配給所述虛擬包封端口的地址或標識符。
28.如權利要求24所述的方法,還包括接收分配給所述虛擬包封端口的地址或標識符。
29.如權利要求24所述的方法,其中所述地址或標識符是FCID。
30.如權利要求21所述的方法,其中所述虛擬化消息表明所述端口將處理指向分配給所述虛擬包封端口的地址或標識符的消息。
31.如權利要求30所述的方法,其中所述地址或標識符是FCID。
32.一種其上存儲有計算機可讀指令的計算機可讀介質,所述指令用于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化,包括用于向所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口發(fā)送虛擬化消息的指令,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及用于響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口接收虛擬化響應的指令。
33.一種在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的裝置,包括用于向所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口發(fā)送虛擬化消息的裝置,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及用于響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口接收虛擬化響應的裝置。
34.一種在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的裝置,包括處理器;存儲器,所述處理器和存儲器中至少有一個適于向所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口發(fā)送虛擬化消息,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;并且響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口接收虛擬化響應。
35.一種在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的方法,包括在所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口處接收虛擬化消息,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口發(fā)送虛擬化響應。
36.如權利要求35所述的方法,其中,所述虛擬化消息表明所述端口要獲得分配給所述虛擬包封端口的地址或標識符,所述方法還包括獲得分配給所述虛擬包封端口的地址或標識符。
37.如權利要求36所述的方法,還包括存儲所述地址或標識符。
38.如權利要求35所述的方法,其中,所述虛擬化消息表明所述端口要從DNS服務器獲得分配給所述虛擬包封端口的地址或標識符,所述方法還包括獲得分配給所述虛擬包封端口的地址或標識符。
39.如權利要求36所述的方法,還包括發(fā)送分配給所述虛擬包封端口的地址或標識符。
40.如權利要求36所述的方法,其中所述地址或標識符是FCID。
41.如權利要求35所述的方法,其中,所述虛擬化消息表明所述端口將處理指向分配給所述虛擬包封端口的地址或標識符的消息。
42.如權利要求41所述的方法,其中所述地址或標識符是FCID。
43.如權利要求41所述的方法,還包括處理指向分配給所述虛擬包封端口的地址或標識符的消息。
44.如權利要求35所述的方法,還包括處理指向所述虛擬包封的虛擬包封端口的消息。
45.如權利要求36所述的方法,還包括處理指向分配給所述虛擬包封端口的地址或標識符的消息。
46.如權利要求35所述的方法,還包括接收一個報告消息,該消息請求標識出由分配給所述虛擬包封端口之一的地址或標識符所支持的虛擬存儲單元中的一個或多個;以及發(fā)送應答消息,該消息標識了所述虛擬存儲單元中的一個或多個。
47.如權利要求46所述的方法,其中所述標識符或地址是FCID。
48.如權利要求46所述的方法,其中,所述虛擬存儲單元中的一個或多個包括VLUN或所述存儲區(qū)域網(wǎng)絡上的存儲的其他虛擬表示。
49.如權利要求46所述的方法,其中,所述應答消息中所標識出的虛擬存儲單元中的一個或多個是對發(fā)送所述報告消息的發(fā)起者來說可見的那些虛擬存儲單元。
50.一種其上存儲有計算機可讀指令的計算機可讀介質,所述指令用于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化,包括用于在所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口處接收虛擬化消息的指令,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及用于響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口發(fā)送虛擬化響應的指令。
51.一種適于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的網(wǎng)絡設備,包括用于在所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口處接收虛擬化消息的裝置,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及用于響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口發(fā)送虛擬化響應的裝置。
52.一種適于在存儲區(qū)域網(wǎng)絡內實現(xiàn)存儲虛擬化的網(wǎng)絡設備,包括處理器;以及存儲器,所述處理器和存儲器中至少有一個適于在所述存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口處接收虛擬化消息,所述虛擬化消息指示所述端口處理指向虛擬包封的虛擬包封端口的消息,所述虛擬包封具有一個或多個虛擬包封端口,并適于表示一個或多個虛擬存儲單元,所述虛擬存儲單元中的每一個都表示所述存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置;并且響應于所述虛擬化消息,從所述網(wǎng)絡設備的所述端口發(fā)送虛擬化響應。
全文摘要
本發(fā)明公開了用于在存儲區(qū)域網(wǎng)絡的網(wǎng)絡設備上實現(xiàn)存儲虛擬化的方法和裝置。創(chuàng)建虛擬包封,使其具有一個或多個虛擬包封端口,并適于表示一個或多個存儲虛擬單元。每個虛擬存儲單元都表示存儲區(qū)域網(wǎng)絡的一個或多個物理存儲單元上的一個或多個物理存儲位置。虛擬包封的每個虛擬包封端口都與存儲區(qū)域網(wǎng)絡內的網(wǎng)絡設備的端口相關聯(lián)。然后向每個虛擬包封端口分配地址或標識符。
文檔編號G06F12/00GK1623136SQ02828446
公開日2005年6月1日 申請日期2002年12月23日 優(yōu)先權日2002年1月9日
發(fā)明者桑賈亞·庫馬爾, 馬納斯·巴魯阿, 約翰·L·伯內特 申請人:思科技術公司