亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在存儲區(qū)域網中實現(xiàn)存儲虛擬化的方法與裝置的制作方法

文檔序號:6405332閱讀:334來源:國知局
專利名稱:在存儲區(qū)域網中實現(xiàn)存儲虛擬化的方法與裝置的制作方法
技術領域
本發(fā)明一般地涉及網絡技術。更具體而言,本發(fā)明涉及支持存儲區(qū)域網中的存儲虛擬化的方法與裝置。
背景技術
近年來,存儲設備的容量沒有存儲的需求增加得快。因此給定服務器或其它宿主機必須訪問多個物理上不同的存儲節(jié)點(一般是盤)。為了解決這些存儲限制,開發(fā)了存儲區(qū)域網(SAN)。通常,存儲區(qū)域網是用來互連不同數(shù)據存儲設備和代表更大用戶網絡的相關數(shù)據宿主機的高速專用網絡。然而,盡管SAN能夠將存儲設備配置成由網絡內部的多種網絡設備和/或實體使用,但是數(shù)據存儲需求常常是動態(tài)的而非靜態(tài)的。
圖1A圖示了示例性傳統(tǒng)存儲區(qū)域網。更具體地說,在存儲區(qū)域網102中,可以將一組宿主機(例如,服務器或工作站)104、106、108耦合到存儲設備(例如,盤)池。在SCSI用法中,宿主機可以被視為“發(fā)起者”,存儲設備可以被視為“目標”。例如通過一組存儲陣列或盤陣列110、112、114可以實現(xiàn)存儲池。每個盤陣列110、112、114還對應一組盤。在本例中,第一盤陣列110對應盤116、118,第二盤陣列112對應盤120,第三盤陣列114對應盤122、124。優(yōu)于使所有宿主機104-108能夠訪問所有盤116-124,可取的是通過盤陣列110、112、114使存儲器(例如,盤)能夠動態(tài)并隱式分配到每個宿主機104-108。換句話說,可以通過虛擬存儲器(例如,虛擬盤)的概念分配物理存儲器(例如,物理盤)。這允許人們以能夠動態(tài)并透明分配存儲器的方式將異質的發(fā)起者連接到分布式的異質目標組(存儲池)。
虛擬存儲器的概念已經在傳統(tǒng)上用來通過物理存儲器中的物理地址和虛擬存儲器中的虛擬地址之間的翻譯使物理存儲器虛擬化。最近,通過多種機制,已經在存儲區(qū)域網中實現(xiàn)“虛擬化”概念。虛擬化交互轉換存儲網絡上的虛擬存儲器和物理存儲器。宿主機(發(fā)起者)將虛擬盤視為目標。虛擬盤以限定但又相當靈活的方式代表可用物理存儲器。虛擬化向宿主機提供不受存儲器的某些物理安排/分配限制的可用物理存儲器的表示。
一種早期的技術,獨立盤冗余陣列(RAID),提供了虛擬化的一些有限特征。已經實現(xiàn)了多種RAID子類型。在RAID1中,虛擬盤可以對應于存儲相同數(shù)據(或者以其他方式支持相同數(shù)據的恢復)的兩個物理盤116、118,從而在存儲區(qū)域網中提供冗余。在RAID0中,單個虛擬盤對應多個物理盤。一些其它類型的虛擬化包括串聯(lián)、備用(sparing)等。最近通過在存儲區(qū)域網內的各個位置中實現(xiàn)虛擬化功能,已經實現(xiàn)了虛擬化的一些方面。三個這樣的位置已經獲得了某種程度上的接受宿主機(例如,104-108)中的虛擬化、盤陣列或存儲陣列(例如,110-114)中的虛擬化以及與宿主機和存儲池分離的存儲裝備126中的虛擬化。令人遺憾的是,這些實現(xiàn)方案中的每個都有不理想的性能限制。
存儲陣列中的虛擬化是當今最通用的存儲虛擬化解決方案之一。通過該方法,在具體存儲子系統(tǒng)(例如,盤陣列)的存儲空間上創(chuàng)建虛擬卷。在存儲子系統(tǒng)級別上創(chuàng)建虛擬卷提供了宿主機的獨立性,這是因為存儲池的虛擬化對宿主機不可見。并且,存儲系統(tǒng)級別上的虛擬化能夠最優(yōu)化存儲器訪問,從而實現(xiàn)高性能。然而,這樣的虛擬化方案一般將使用只用于同質存儲環(huán)境的統(tǒng)一管理結構,并且盡管這樣只具有有限的靈活性。此外,由于在存儲子系統(tǒng)級別上進行虛擬化,所以在存儲子系統(tǒng)級別上設置的物理—虛擬限制被強加到存儲區(qū)域網中的所有宿主機上。并且,每個存儲子系統(tǒng)(或者盤陣列)被獨立地管理。因此存儲級別上的虛擬化很少允許虛擬卷跨越多個存儲子系統(tǒng)(例如,盤陣列),進而限制基于存儲設備的方法的可伸縮性(scalability)。
當在每個宿主機上進行虛擬化的時候,可以跨越多個存儲子系統(tǒng)(例如,盤陣列)?;谒拗鳈C的方法具有其它的優(yōu)點,優(yōu)點在于存儲區(qū)域網上一個宿主機上的限制不影響其它宿主機的操作。然而,在宿主機級別上的虛擬化需要存在運行在實現(xiàn)虛擬化功能的每個宿主機(例如,服務器)上的軟件層。因此運行該軟件影響運行該軟件的宿主機的性能。本方法的另一個關鍵問題是其假定各個宿主機預先劃分可用存儲設備。由于是在宿主機級別上支持這樣的劃分的,并且每個宿主機的虛擬化功能獨立于存儲區(qū)域網中的其它宿主機而被執(zhí)行,所以難以協(xié)調宿主機之間的存儲訪問。因此,基于宿主機的方法沒能提供足夠級別的安全性。由于該安全性的限制,難以實現(xiàn)多種冗余方案,例如需要在讀取和寫入操作期間“鎖定”存儲器的RAID。并且,當進行鏡像時,宿主機必須多次復制數(shù)據,進而增加了它的輸入—輸出和CPU負載,并且增加了SAN上的流量。
在設置于宿主機和存儲設備之間的存儲區(qū)域網裝備中的虛擬化解決了基于宿主機的方法與基于存儲設備的方法的一些困難。存儲裝備全局管理物理存儲設備到虛擬卷的映射和分配。一般來說,存儲裝備管理提供由物理到虛擬的當前映射的中心表。這樣,基于存儲裝備的方法能夠獨立于存儲區(qū)域網上的宿主機和存儲子系統(tǒng)兩者來實現(xiàn)虛擬卷,從而提供較高級別的安全性。并且,該方法支持跨越多個存儲子系統(tǒng)的虛擬化。該體系結構的許多實現(xiàn)的主要缺點是必須通過存儲區(qū)域網裝備發(fā)送每個宿主機的每個輸入/輸出(I/O),這引起顯著的性能劣化和存儲區(qū)域網瓶頸。這在支持冗余方案例如RAID的系統(tǒng)中尤為不利,因為數(shù)據必須跨越多個盤進行鏡像。在另一個基于存儲裝備的方法中,該裝備確保所有宿主機接收表的當前版本。這樣,為了使宿主機能夠從裝備接收表,需要從裝備到宿主機的軟件補償(software shim),這增加了系統(tǒng)的復雜度。并且,由于軟件層被實現(xiàn)在宿主機上,所以同樣存在基于宿主機的方法的許多不利之處。
有鑒于此,如果各個存儲設備或其部分能夠邏輯地并且動態(tài)地被分配到網絡中的各個設備和/或實體,這應當是可取的。并且,如果該機制能夠被實現(xiàn)為支持SAN中的存儲虛擬化而沒有傳統(tǒng)虛擬化方法的缺點,這應當是有利的。

發(fā)明內容
本發(fā)明公開了在存儲區(qū)域網中實現(xiàn)存儲虛擬化的方法與裝置。這通過使用能夠置于宿主機和存儲設備之間的數(shù)據路徑中的一個或多個網絡設備來實現(xiàn)。結果,存儲設備和宿主機都不需要其它的軟件或硬件來支持存儲虛擬化。從而,本發(fā)明優(yōu)于基于宿主機的方法,基于宿主機的方法需要每個宿主機負擔額外的軟件來實現(xiàn)虛擬化功能。并且,本發(fā)明使得多個網絡設備能夠同時管理異質存儲設備的虛擬化。重要的是,可以在每個端口的基礎上實現(xiàn)基于交換機的虛擬化。交換機上的任何數(shù)量的端口可以管理它自身流量的虛擬化。這允許網絡的虛擬化能力隨端口數(shù)量而定。由于在任何網絡系統(tǒng)中都有大量端口,所以虛擬化幾乎總是有充足的帶寬。因此可以實現(xiàn)沒有傳統(tǒng)虛擬化方案所存在的許多缺陷的存儲虛擬化。
根據本發(fā)明的一個方面,公開了在存儲區(qū)域網的網絡設備上實現(xiàn)存儲虛擬化的方法與裝置。首先在網絡設備的端口處接收幀或分組。然后確定該幀或分組與虛擬存儲單元的虛擬存儲位置的訪問有關,所述虛擬存儲單元的虛擬存儲位置代表存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置。于是就獲得了一個或多個物理存儲位置和虛擬存儲位置之間的虛擬物理映射。新的或經修改的幀或分組隨后被發(fā)送到虛擬物理映射指定的目標或發(fā)起者。
根據本發(fā)明的另一個方面,在每個端口的基礎上實現(xiàn)本發(fā)明。換句話說,所選擇的一個或多個網絡設備的虛擬化端口可以硬件和/或軟件方式實現(xiàn)虛擬化功能。這允許虛擬化處理能力隨端口的數(shù)量而定。因此,與基于宿主機或基于存儲設備的虛擬化方案提供的帶寬相比,本發(fā)明為虛擬化提供了大得多的帶寬。
根據本發(fā)明的另一個方面,虛擬化端口確保在訪問由虛擬存儲位置代表的一個或多個物理存儲位置之前,“鎖定”對那些存儲位置的訪問。這樣,虛擬化端口確保沒有其它網絡節(jié)點將同時試圖訪問相同數(shù)據位置。當訪問(例如,讀取和/或寫入訪問)完成后,可以釋放鎖定。在一個實施例中,這通過同步由虛擬化端口提交的存儲器訪問來實現(xiàn)。更具體地說,虛擬化端口向主虛擬化端口提交鎖定請求(除非該虛擬化端口自身是主虛擬化端口)。主虛擬化端口管理所有鎖定請求,并且當已同意鎖定請求之后,通知進行請求的從屬虛擬化端口。主虛擬化端口同樣地處理“鎖定釋放”請求。
多種網絡設備可以被配置成或適用于截取、產生、修改和傳輸分組或幀,以實現(xiàn)所公開的虛擬化功能。這些網絡設備包括但不局限于服務器(例如,宿主機)、路由器和交換機。此外,可以以軟件和硬件的方式實現(xiàn)上述虛擬化過程的功能。
本發(fā)明的另一方面與包括機器可讀介質的計算機程序產品有關,其中在機器可讀介質上提供有用于部分或全部實現(xiàn)上述方法與技術的程序指令。本發(fā)明的任何方法都可部分或全部實現(xiàn)為可在這樣的機器可讀介質上提供的程序指令。此外,本發(fā)明與如這里所述而產生和/或使用的數(shù)據的各種組合與安排有關。例如,具有這里所描述的格式并且在合適介質上提供的分組和幀是本發(fā)明的一部分。
結合附圖,將在下文本發(fā)明的詳細說明中更加具體地描述本發(fā)明的這些以及其它特征。


圖1A是圖示了示例性傳統(tǒng)存儲區(qū)域網的框圖;圖1B是圖示了能夠實現(xiàn)現(xiàn)有技術虛擬化功能的多個實施例的存儲區(qū)域網的框圖;圖2是圖示了可以根據本發(fā)明的多個實施例實現(xiàn)的虛擬化模型的框圖;圖3A是圖示了可以實現(xiàn)本發(fā)明的多個實施例的示例性虛擬化交換機的框圖;圖3B是圖示了可以實現(xiàn)本發(fā)明的多個實施例的示例性標準交換機的框圖;圖4是圖示了可以實現(xiàn)本發(fā)明的多個實施例的示例性系統(tǒng)體系結構的框圖;圖5是圖示了傳統(tǒng)SCSI寫入操作的示例性事務流程圖;圖6是圖示了傳統(tǒng)SCSI讀取操作的示例性事務流程圖;圖7是圖示了根據本發(fā)明的一個實施例執(zhí)行的示例性SCSI寫入操作的事務流程圖;
圖8是圖示了根據本發(fā)明的一個實施例執(zhí)行的示例性SCSI讀取操作的事務流程圖;圖9A是圖示了由根據本發(fā)明的一個實施例執(zhí)行的RAID 1+0操作應用得到的示例性存儲配置的示例性框圖;圖9B是圖示了由根據本發(fā)明的一個實施例執(zhí)行的RAID 0+1操作應用得到的示例性存儲配置的示例性框圖;圖10A是圖示了由根據本發(fā)明的一個實施例執(zhí)行的RAID 1+0操作應用得到的示例性存儲配置的另一個示例性框圖,其中在鏡像之后進行分拆(strip);圖10B和10C一起表示一個事務流程圖,該事務流程圖表示在圖10A的RAID 1+0操作期間執(zhí)行的步驟。
具體實施例方式
在下文的描述中,為了提供對本發(fā)明的充分理解,闡述了許多具體細節(jié)。然而對本領域普通技術人員來說很明顯,可以在沒有這些具體細節(jié)的某些和全部的情況下實施本發(fā)明。在其它的情況下,沒有詳細描述公知的過程步驟,以免不必要的混淆本發(fā)明。
根據本發(fā)明的多個實施例,可以在一個或多個網絡設備中實現(xiàn)存儲區(qū)域網內的存儲虛擬化,所述網絡設備這里指的是虛擬化交換機。更具體地說,諸如虛擬化交換機的網絡設備截取幀或分組并從該幀或分組獲得信息(例如,虛擬地址),下文將參考圖3A進一步詳細描述諸如虛擬化交換機的網絡設備。網絡設備隨后從所獲得的信息確定虛擬—物理映射。例如,網絡設備可以將所獲得的信息用作虛擬到物理映射表或算法中的“關鍵字”,以決定如何修改幀或分組以及/或者是否生成其它的幀或分組。
隨后可以使用從虛擬—物理映射獲得的信息組成新的或修改后的幀或分組。該新的或修改后的幀或分組隨后被發(fā)送到所截取幀或分組的預定接收者。例如,可以生成一個或多個幀或分組,并將它們傳輸?shù)脚c所截取幀或分組中指定的虛擬地址相對應的一個或多個物理地址。這樣,如在下文將要進一步描述的那樣,本發(fā)明的實施例可以應用于分組或幀。為方便起見,后面的討論將參考幀來描述本發(fā)明的實施例。交換機對幀起作用并且使用有關SAN的信息來作出交換決定。
注意,由虛擬化交換機接收并發(fā)送的幀具有由諸如以太網或光纖通道的標準協(xié)議規(guī)定的幀格式。因此,可以在本發(fā)明中采用傳統(tǒng)上用來生成這樣的幀的軟件和硬件。根據本發(fā)明,使用其它硬件和/或軟件修改和/或生成與該標準協(xié)議相兼容的幀。本領域普通技術人員將理解如何開發(fā)必要的硬件和軟件以實現(xiàn)如下文所述的虛擬化。
幀由諸如宿主機、交換機或存儲設備的網絡設備生成。很明顯,合適的網絡設備應當配置有用于執(zhí)行虛擬化功能的合適軟件和/或硬件。當然,不是存儲區(qū)域網中的所有網絡設備都需要配置有虛擬化功能。而是可以將經選擇的交換機和/或端口配置有虛擬化功能或使之適應于虛擬化功能。類似地,在多個實施例中,通過選擇多種模式可以使能或禁用這樣的虛擬化功能。并且,可取的是將網絡設備的經選擇端口配置為能夠進行虛擬化(virtualization-capable)的端口,該端口能夠持續(xù)執(zhí)行或只在虛擬化使能狀態(tài)下執(zhí)行虛擬化。
存儲區(qū)域網中采用的標準協(xié)議(即,用來成幀化數(shù)據的協(xié)議)一般與網絡運輸?shù)摹傲髁款愋汀蓖x,盡管這不是必需的。如下文所解釋的,在一些密封幀中定義流量類型。流量類型的示例一般是第2層或對應層格式,例如以太網、光纖通道和無限帶寬(InfiniBand)。
如上所述,存儲區(qū)域網(SAN)是高速專用網絡,其代表較大用戶網絡來互連不同數(shù)據存儲設備和相關聯(lián)的網絡宿主機(例如,數(shù)據服務器或端用戶機)。SAN由系統(tǒng)的物理配置定義。換句話說,SAN中的那些設備必須物理上相互連接。在諸如圖1B所圖示的存儲區(qū)域網131中,可以實現(xiàn)設備132、134、136、138、140和142,它們可以是同質的(例如,相同設備類型、尺寸或配置),也可以是異質的(例如,不同設備類型、尺寸或配置)。響應于宿主機144和146發(fā)出的命令,可以從存儲設備132-142的多個部分讀取數(shù)據以及向其寫入數(shù)據。通過借助一個或多個交換機、路由器或被配置為執(zhí)行交換功能的其它網絡節(jié)點將存儲設備與宿主機耦合起來,實現(xiàn)存儲設備和宿主機之間的通信。在本示例中,交換機148、150和152通過交換機間鏈路154和156相互通信。
如上所述,本發(fā)明涉及存儲網絡中的“虛擬化”。與現(xiàn)有方法不同,本發(fā)明的虛擬化被實現(xiàn)在存儲區(qū)域網的交換機或其它“內部”網絡節(jié)點上。優(yōu)選地,組成網絡組構的多個交換機將一起實現(xiàn)給定存儲區(qū)域網的虛擬化模型。此外,本發(fā)明的虛擬化一般在每個端口的基礎上實現(xiàn)。換句話說,多端口交換機將具有在其一個或多個端口上分別實現(xiàn)的虛擬化。獨立端口具有用于為該獨立端口操作的分組或幀操作虛擬化功能的專用邏輯。這允許虛擬化處理能力隨端口的數(shù)量而定,因而比基于宿主機或基于存儲設備的虛擬化提供大得多的用于虛擬化的帶寬。在這樣的現(xiàn)有技術方法中,宿主機和網絡組構之間連接的數(shù)量或者存儲節(jié)點和網絡組構之間連接的數(shù)量是有限的——至少與網絡組構中端口的數(shù)目相比是有限的。
在本發(fā)明的具體及優(yōu)選實施例中,在給定交換機的獨立端口處分別實現(xiàn)虛擬化邏輯——而不是對交換機的所有端口進行集中處理。這允許虛擬化處理能力能夠在每個端口的基礎上密切配合交換機的確切需要。如果為整個交換機(具有多個端口)采用中心處理器,則處理器必須被設計成/選定為操作所有端口處的最大流量。對于許多應用,這意味著非常高的處理要求和非常大/昂貴的處理器。如果中心處理器太小,則交換機有時將不能跟上網絡的交換/虛擬化需要。
虛擬化可以采取多種形式。一般而言,它可以被定義為用來相互關聯(lián)存儲網絡上的物理存儲設備和虛擬存儲設備的邏輯或例程。宿主機看見可用物理存儲設備的外在表現(xiàn),其不受存儲設備中固有的物理安排或位置的限制。虛擬化所超越的物理限制的一個示例包括組成物理存儲塊的大小和位置。例如,小計算機系統(tǒng)接口(SCSI)標準所定義的邏輯單元使用精確的物理大小(例如,36GB和72GB)。虛擬化可以以虛擬邏輯單元表示存儲設備,所述虛擬邏輯單元小于或大于物理邏輯單元的規(guī)定大小。此外,虛擬化可以表現(xiàn)出包括來自兩個或多個不同物理邏輯單元的多個區(qū)域的虛擬邏輯單元,所述兩個或多個不同物理邏輯單元有時是在不同廠家的設備上提供的。虛擬化操作優(yōu)選地對至少一些網絡實體(例如,宿主機)透明。在一些通用方法中,存儲區(qū)域網上的虛擬化類似于一般計算機系統(tǒng)上的虛擬存儲器。然而,網絡上的虛擬化具有更高的復雜度和更大的靈活性。復雜度的增加直接來自以下因素,即存在許多分散互連的網絡節(jié)點。虛擬化必須含概這些節(jié)點。所述節(jié)點包括宿主機、存儲子系統(tǒng)和交換機(或者類似的網絡流量控制設備,例如路由器)。由于由不同的廠家提供,宿主機和/或存儲子系統(tǒng)通常是異質的。廠家可能采用完全不同的協(xié)議(標準協(xié)議或專有協(xié)議)。因此,在很多情況下,虛擬化提供下述能力,即將異質的發(fā)起者(例如,宿主機或服務器)連接到分布式的異質目標(存儲子系統(tǒng))組,使得能夠動態(tài)并透明地分配存儲設備。
針對網絡的虛擬化操作的示例包括下述方式RAID 0至RAID 5,來自物理存儲器的兩個或多個完全不同的邏輯單元的存儲器的串聯(lián),備用(故障物理介質的自動替代),物理存儲器的遠程鏡像,日志信息(例如,錯誤和/或統(tǒng)計),多個物理存儲器系統(tǒng)之間的負載平衡,分拆(例如,RAID 0),諸如用于訪問物理存儲器的訪問控制算法的安全測量,調整虛擬存儲器塊的大小,使任意的邏輯單元(LUN)用作啟動設備的LUN映射,物理存儲器的備份(時間點(point in time)的拷貝)等等。這些只是虛擬化功能的示例。本發(fā)明不限于上述整個集合或它的任何特定子集。
在這里的討論的許多部分里,是就SCSI協(xié)議來描述本發(fā)明的虛擬化交換機的功能的。這是因為商業(yè)上的許多存儲區(qū)域網運行SCSI協(xié)議來訪問存儲站點。存儲區(qū)域網常常使用光纖通道(FC-PH(ANSI X3.230-1994,光纖通道—物理和信令接口))作為較低級別的協(xié)議,并在光纖通道之上運行IP和SCSI。注意本發(fā)明不限于這些協(xié)議中的任何一個。例如,光纖通道可以替換為以太網、無限帶寬等。并且較高級別的協(xié)議不需要包括SCSI。例如,宿主機可以使用其它協(xié)議訪問存儲設備。此外,重要的要注意,將在這里使用的SCSI指代FC上的SCSI、iSCSI(IP上的SCSI)、并行SCSI(并行電纜上的SCSI)、串行SCSI(串行電纜上的SCSI)以及SCSI的所有其它具體形式的任何實現(xiàn)方式。
由于SCSI在存儲區(qū)域網中得到如此廣泛的使用,所以這里使用的許多術語將是SCSI術語。SCSI術語(例如,“發(fā)起者”和“目標”)的使用不意味著所描述的過程或裝置必須使用SCSI。在進行說明之前,有必要解釋一些將在本討論中使用的SCSI術語。首先,“發(fā)起者”是請求由另一個設備執(zhí)行的操作的設備(通常是宿主機系統(tǒng))。在本文的上下文中,宿主機發(fā)起者一般將請求讀取或寫入操作,該讀取或寫入操作在虛擬或物理存儲器的區(qū)域上執(zhí)行。其次,“目標”是執(zhí)行由發(fā)起者請求的操作的設備。例如,目標物理存儲器盤將獲得或寫由宿主機發(fā)起者最初請求的數(shù)據。注意,盡管宿主機發(fā)起者可以提供指令以從具有虛擬地址的“虛擬”目標讀取或向其寫入,但是在指示之前,本發(fā)明的交換機必須首先將這些指令轉換為物理目標地址。
目標可以被劃分成物理或虛擬“邏輯單元”。這些是可通過目標尋址的特定設備。例如,物理存儲子系統(tǒng)可以被組織為多個完全不同的邏輯單元。在本文中,宿主機將虛擬存儲器視為完全不同的虛擬邏輯單元。這里有時將邏輯單元稱為“LUN”。在SCSI標準中,LUN指的是邏輯單元號,但在通用說法中,LUN也指代邏輯單元本身。
虛擬化的核心是“虛擬化模型”的概念。這是將存儲子系統(tǒng)(諸如盤陣列)上提供的物理存儲設備關聯(lián)到網絡上宿主機或其它發(fā)起者所見的虛擬存儲設備的方法。盡管所述關聯(lián)關系可以采用多種形式并且可以由多種術語表征,但是如上所述將使用基于SCSI的術語。因此,存儲區(qū)域網的物理一方將被描述為物理LUN。宿主機方依次見到一個或多個虛擬LUN,這些虛擬LUN是物理LUN的虛擬表示。物理LUN到虛擬LUN的映射在邏輯上可以在一個、兩個或更多級別上發(fā)生。最后,具有一個可以由本發(fā)明的交換機使用的映射功能,以在物理LUN地址和虛擬LUN地址之間相互轉換。
圖2是圖示了根據本發(fā)明的多個實施例可以在存儲區(qū)域網中實現(xiàn)的虛擬化模型的示例的框圖。如圖所示,存儲區(qū)域網的物理存儲設備由一個或多個物理LUN組成,物理存儲設備在這里被示為物理盤202。每個物理LUN是能夠含有存儲在一個或多個連續(xù)塊中的數(shù)據的設備,其中所述連續(xù)塊可以分別且直接被訪問。例如,物理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。一般而言,當訪問數(shù)據時,發(fā)起者設備只“看見”VLUN 210。
在本示例中,VLUN 210被實現(xiàn)為虛擬LUN 208的“邏輯”RAID陣列。此外,可以例如通過使用分拆和/或鏡像進一步實現(xiàn)這樣的虛擬化級別。例如如下文將要參考圖10A至10C進一步詳細討論的那樣,可以順序地執(zhí)行RAID 1+0或RAID 0+1。并且,重要的是要注意,不必規(guī)定虛擬化級別的數(shù)量來支持映射功能206。更可取的是例如通過分層次映射功能,可以支持任何數(shù)量的虛擬化級別。例如,可以在樹形數(shù)據結構、鏈表或其它可以被遍歷的合適數(shù)據結構中創(chuàng)建并維護節(jié)點的多個級別。
借助位于分層次虛擬化模型的任何級別處的節(jié)點,每個發(fā)起者因而可以訪問物理LUN。在給定存儲區(qū)域網中實現(xiàn)的分層次模型的給定虛擬化級別中的節(jié)點可以對允許的發(fā)起者集合(未示出)可見,并且可被其訪問。具體虛擬化級別(例如,VLUN)中的節(jié)點需要在可以在這些節(jié)點上操作功能(例如,讀取、寫入)之前創(chuàng)建。這可以例如通過具體發(fā)起者的主啟動記錄來完成。此外,多個發(fā)起者可以被賦予對特定虛擬化級別中的特定節(jié)點(例如,VLUN)的寫入和/或讀取特權。這樣,特定虛擬化級別中的節(jié)點可以對所選擇的發(fā)起者可見,并可由其訪問。
如上所述,存儲區(qū)域網中的多個交換機可以是支持虛擬化功能的虛擬化交換機。圖3A是圖示了可以實現(xiàn)本發(fā)明的多個實施例的示例性虛擬化交換機的框圖。如圖所示,數(shù)據經由雙向連接器302由智能虛擬化端口接收。提供介質訪問控制(MAC)塊304與進入端口相關聯(lián),其能夠使例如以太網或光纖通道的多種協(xié)議的幀被接收。此外,虛擬化截取交換機306確定進入幀中規(guī)定的地址是否與虛擬存儲單元的虛擬存儲位置的訪問有關,其中虛擬存儲位置表示存儲區(qū)域網的一個或多個物理存儲單元的一個或多個物理存儲位置。在本示例中,該幀經由雙向連接器302接收,并且新的或經修改的幀從交換機組構320出來。然而,重要的是要注意,可以以其它方式實現(xiàn)虛擬化交換機。例如,該幀可以從組構320接收,由306-308重定向,進行虛擬化并發(fā)送回交換機組構320。這對于下述情況來說很重要,所述情況即宿主機和盤連接到如圖3B所示的標準線路卡以及宿主機和盤共享諸如圖3A所示的幾個虛擬化卡。
當虛擬化截取交換機306確定進入幀中規(guī)定的地址與虛擬存儲位置的訪問而非物理存儲位置的訪問有關時,該幀由能夠執(zhí)行如上所述的映射功能的虛擬化處理器308處理。更具體地說,虛擬化處理器308獲得一個或多個物理存儲位置和虛擬存儲位置之間的虛擬—物理映射。這樣,虛擬化處理器308可以適合地查找合適的物理或虛擬地址。例如,可能需要執(zhí)行從物理地址到虛擬地址的映射,或者從虛擬地址到一個或多個物理地址的映射。
一旦獲得了虛擬—物理映射,虛擬化處理器308隨后可以使用所獲得的映射生成新的幀或修改已有幀,從而能夠使幀被發(fā)送到由虛擬—物理映射規(guī)定的發(fā)起者或目標。例如,在鏡像寫入的情況下,幀可以被多次復制。該復制需要可以由虛擬—物理映射功能規(guī)定。此外,源地址和/或目的地地址被合適地修改。例如,對于來自目標的數(shù)據,虛擬化處理器將最初是物理LUN地址的源地址替換為對應的虛擬LUN和虛擬地址。
在目的地地址中,端口將它自身的地址替換為發(fā)起者的地址。對于來自發(fā)起者的數(shù)據,端口將源地址從發(fā)起者地址改變?yōu)槎丝诘淖陨淼刂?。它還將目的地地址從虛擬LUN/地址改變?yōu)閷奈锢鞮UN/地址。新的或經修改的幀隨后可以被提供給虛擬化截取交換機306以使該幀能夠被發(fā)送到它的預定目的地。
盡管虛擬化處理器器308獲得并應用虛擬—物理映射,但是幀或相關聯(lián)的數(shù)據可以存儲在臨時存儲器位置(例如,緩存)310中。并且,可能需要或期望存儲所發(fā)送或接收的數(shù)據,直到已確認已經成功完成所期望的讀取或寫入操作。作為一個示例,可能期望向虛擬LUN寫入大量數(shù)據,這些數(shù)據必須在多個幀中分別被傳輸。因此可能期望臨時緩沖存儲數(shù)據,直到接收到數(shù)據的接收確認。作為另一個示例,可能期望從虛擬LUN讀取大量數(shù)據,這些數(shù)據可能在多個幀中分別接收。并且,接收該數(shù)據的順序可能與數(shù)據應當傳輸?shù)阶x取命令的發(fā)起者的順序不同。在這種情況下,如下做法可能是有益的,即在將數(shù)據傳輸?shù)桨l(fā)起者之前對數(shù)據進行緩沖存儲以使數(shù)據能夠在傳輸之前重新排序。類似地,可能期望在變得需要驗證已發(fā)送到發(fā)起者(或目標)的數(shù)據完整性的情況下對數(shù)據進行緩沖存儲。
新的或經修改的幀隨后可以由轉發(fā)引擎312接收,該轉發(fā)引擎312從該幀的多個字段獲得信息,所述信息例如是源地址和目的地地址。轉發(fā)引擎312隨后訪問轉發(fā)表314以確定源地址是否可以到達規(guī)定的目的地地址。更具體地說,轉發(fā)表314可以包括物理LUN地址和虛擬LUN地址。轉發(fā)引擎312還確定交換機中發(fā)送該幀的合適端口,并且為該幀生成合適的路由標記。
一旦為傳輸合適地格式化了幀,則在傳輸之前該幀將由緩存排隊框316接收。并非如接收幀那樣傳輸它們,可能期望臨時將幀存儲在緩存或隊列318中。例如,可能期望在隊列集合中的一個隊列中臨時存儲基于服務質量的分組,其中隊列集合中的每個對應不同的優(yōu)先權級別。幀隨后經由交換機組構320被傳輸?shù)胶线m端口。如圖所示,外發(fā)端口具有其自身的MAC塊322和雙向連接器324,幀可以經由雙向連接器324被發(fā)送。
如上所述,存儲區(qū)域網中的交換機不需要都是虛擬化交換機。換句話說,交換機可以是沒有任何端口實現(xiàn)“智能”虛擬化功能的標準交換機。圖3B是圖示了可以實現(xiàn)本發(fā)明的多個實施例的示例性標準交換機的框圖。如圖所示,標準端口326具有MAC塊304。然而,諸如圖3A中示出的虛擬化截取交換機和虛擬化處理器并沒有被實現(xiàn)。在進入端口處接收到的幀僅由轉發(fā)引擎312和它關聯(lián)的轉發(fā)表314處理。在傳輸之前,幀可以在緩存或隊列318中排隊316。隨后經由交換機組構320將幀轉發(fā)到外發(fā)端口。如圖所示,外發(fā)端口也具有關聯(lián)的MAC塊322和雙向連接器324。
如上所述,虛擬化交換機至少可以部分地實現(xiàn)本發(fā)明。虛擬化優(yōu)選地在每個端口的基礎上執(zhí)行而不是在每個交換機的基礎上執(zhí)行。因此,每個虛擬化交換機可以具有能夠執(zhí)行虛擬化功能的一個或多個虛擬化端口以及不具有這樣的虛擬化功能的端口。在一個實施例中,交換機是混合式的,具有如上文參考圖3A和圖3B所描述的線路卡的組合。
雖然上面參考圖3A和3B所述的網絡設備被描述為交換機,但是這些網絡設備僅僅是示例性的。因此,也可實現(xiàn)其他網絡設備例如路由器來接收、處理、修改和/或生成具有如上所述功能的分組或幀以在存儲區(qū)域網絡中傳輸。而且,上述網絡設備僅僅是示例性的,因此可以實現(xiàn)其他類型的網絡設備來執(zhí)行所公開的虛擬化功能。
如上所述,可以用適于實現(xiàn)虛擬化功能的虛擬化交換機和標準交換機實現(xiàn)存儲區(qū)域網。圖4是圖示了可以實現(xiàn)本發(fā)明的多個實施例的示例性系統(tǒng)體系結構的框圖。在本示例中,實現(xiàn)了兩個虛擬化交換機402和404以支持幀在存儲區(qū)域網中的傳輸。每個虛擬化交換機可以包括一個或多個“智能”虛擬化端口和一個或多個標準端口。更具體地說,本示例中的虛擬化交換機402和404每個分別具有虛擬化端口406和408。此外,虛擬化交換機402和404的每個分別具有多個標準端口410、412、414、416和418、420、422、424。為了支持虛擬—物理映射并支持多個應用和/或宿主機對存儲器的訪問能力,期望在虛擬化交換機402和404之間協(xié)調存儲器訪問。交換機402和404之間的通信可以由兩個交換機之間的交換機間鏈路426完成。如圖所示,交換機間鏈路426可以在兩個標準端口之間。換句話說,兩個交換機進行存儲器訪問的同步僅僅需要兩個交換機之間的通信。該通信可以通過智能虛擬化端口執(zhí)行,但不必一定通過虛擬化端口或在兩個虛擬化端口之間執(zhí)行。
可以為多個理由執(zhí)行存儲虛擬化,例如鏡像。例如,考慮四個物理LUN,PLUN1 428、PLUN2 430、PLUN3 432和PLUN4 434。為了冗余的目的,常常期望將兩個物理LUN形成組。如圖所示,因此兩個物理LUN,PLUN1 428和PLUN2 430由單個虛擬LUN,VLUN1 436表示。當數(shù)據被鏡像時,數(shù)據被鏡像(例如,存儲)到多個物理LUN以使數(shù)據在物理LUN之一發(fā)生故障時能夠被獲取。
當數(shù)據被寫入一組“鏡像”或從其讀取的時候可能產生多種問題。例如如鏈路438、440所示,運行在相同或不同宿主機上的多個應用程序可能同時訪問相同數(shù)據或存儲器位置(例如,盤位置或盤塊)。類似地,如在438、440和442、443處所示的,從兩個不同宿主機發(fā)送的命令例如讀取或寫入命令可以在同時幀中發(fā)送。每個宿主機可以具有如所示的對應宿主機總線適配器(HBA)。由應用程序或宿主機訪問或存儲的數(shù)據應當保持鏡像完整。更具體地說,即使在向鏡像之一進行寫操作之后,存儲在所有鏡像中的數(shù)據將保持一致。換句話說,如果鏡像之一發(fā)生故障,其他鏡像應當繼續(xù)用作冗余物理LUN。
在使能鏡像的傳統(tǒng)系統(tǒng)中,兩個不同源的幾乎同時的訪問常常導致固有的競爭狀態(tài)。例如,當兩個不同客戶發(fā)送寫命令到相同虛擬LUN的情形,如所示,運行在宿主機1 424上的應用程序1 444發(fā)送帶有數(shù)據“A”的寫命令,而運行在宿主機2 426上的應用程序2 446發(fā)送帶有數(shù)據“B”的寫命令。如果第一應用程序444首先發(fā)送數(shù)據“A”到VLUN1 436,則可以向例如PLUN1 428寫入數(shù)據“A”。然而,在它能被鏡像到PLUN2430之前,第二應用程序446可能發(fā)送數(shù)據“B”。數(shù)據“B”可以在被鏡像到PLUN1 428之前被寫入到PLUN2 430。數(shù)據“A”隨后被鏡像到PLUN2 430。類似地,數(shù)據“B”被鏡像到PLUN1 428。這樣如圖所示,最后的寫操作控制在特定物理LUN中存儲的數(shù)據。在本例中,在完成兩個鏡像操作之后,PLUN1 428存儲數(shù)據“B”而PLUN2430存儲數(shù)據“A”。這樣,兩個物理LUN不再互相鏡像,導致分歧的數(shù)據。
為了解決傳統(tǒng)系統(tǒng)中存在的固有競爭狀態(tài),虛擬化端口如上所述地經由交換機間鏈路例如426相互通信。換句話說,端口同步它們相互之間的虛擬化LUN的訪問。在一個實施例中,這是通過建立單個主虛擬化端口來完成的,其它虛擬化端口將這個主虛擬化端口認做主端口??梢酝ㄟ^多種機制建立主端口的身份。作為一個示例,主端口可以向其它虛擬化端口發(fā)出組播消息,指示其是主虛擬化端口。作為另一個示例,虛擬化端口可以以主端口的身份進行初始化。此外,在主虛擬化端口故障的情況下,可能期望使能從屬虛擬化端口之一來充當主端口。
主虛擬化端口可以以多種方式解決由固有競爭狀態(tài)引起的問題。一種解決方法是這里描述的鎖定機制。另一種方法是將SCSI命令重定向到主虛擬化端口,其將負責執(zhí)行虛擬到物理映射和合適的互鎖。從屬端口隨后可以從主端口獲知該映射,并處理數(shù)據。
在訪問虛擬LUN之前,從屬虛擬化端口啟動與主虛擬化端口的會話,以請求允許訪問虛擬LUN。這是通過鎖定機制完成的,該鎖定機制鎖定對虛擬LUN的訪問,直到該鎖定被釋放。例如,從屬虛擬化端口(例如,端口406)可以從主虛擬化端口(例如,端口408)請求鎖定的許可。主虛擬化端口隨后當許可鎖定時通知從屬虛擬化端口。當許可了鎖定后,對相應物理存儲位置的訪問被“鎖定”,直到該鎖定被釋放。換句話說,鎖定的保持具有對存儲在那些物理位置處的數(shù)據的排他讀取和/或寫入訪問。在本例中,數(shù)據“A”隨后被存儲在物理LUN1 428和物理LUN2430兩者中。當從屬虛擬化端口406接收指示對虛擬LUN的寫入操作成功的STATUS OK消息時,可以釋放鎖定。主虛擬化端口408隨后可以獲得對訪問虛擬LUN的鎖定,直到數(shù)據“B”被存儲在VLUN1 436的兩個鏡像中。這樣,虛擬化端口同步對虛擬LUN的訪問,以確保存儲在下層物理存儲介質中的數(shù)據的完整性。
通常,在用于存儲器訪問的SCSI協(xié)議中,由發(fā)起者和目標發(fā)送命令以實現(xiàn)讀取或寫入操作。為了請求對目標的讀取或寫入訪問,發(fā)起者發(fā)送請求命令(CMD)。更具體地說,命令請求對目標中的具體存儲器位置的訪問。為此目的,請求命令含有下述信息SCSI LUN、將要在邏輯單元中訪問的數(shù)據的起始存儲器地址(邏輯單元的開始地址的偏移量)、存儲器訪問的長度(例如,以塊或字節(jié)為單位)和命令類型(讀取或寫入)。在接收到請求命令之后,目標設備(一般經由存儲器控制器)確定是否能夠訪問所請求的存儲器位置。如果能并且訪問是寫入操作,則目標以傳送就緒信號(XFR_RDY)答復發(fā)起者,其還指示可以傳送的數(shù)據量。此后,發(fā)起者發(fā)送數(shù)據的一個或多個幀到目標。目標的控制器試圖將進入數(shù)據寫入到指定的存儲器位置。在命令完成(成功或不成功)后,目標向發(fā)起者返回狀態(tài)字節(jié)。由于多數(shù)錯誤和異常狀態(tài)不能恰當?shù)匾詥蝹€狀態(tài)字節(jié)描述,所以一個狀態(tài)碼CHECK CONDITION指示可獲取其它的信息。假定寫入操作成功,則目標以STATUS OK信號答復。為了結束操作,目標發(fā)送COMMAND COMPLETE消息到發(fā)起者。SCSI寫入操作隨后完成。
如果請求命令指定讀取操作,則目標直接答復從所請求位置讀取的數(shù)據。不需要傳送就緒信號。當已經發(fā)送了所有所請求的數(shù)據之后,目標答復STATUS OK和COMMAND COMPLETE信號。為了與本發(fā)明相對照,下文描述的圖5和圖6闡述了標準SCSI讀取和寫入操作。
根據本發(fā)明,虛擬化交換機被置于目標與發(fā)起者(通常是存儲子系統(tǒng)和宿主機)之間。這些交換機上的虛擬化端口截取SCSI命令,并且在通知發(fā)起者或目標之前進行某些動作,如例子可能有的情況那樣。下文描述的圖7至圖10示出了多種情形,其中虛擬化交換機操縱SCSI命令。
通常,在請求命令(讀取或寫入)的情況下,虛擬化端口執(zhí)行三個操作。首先,它將請求的虛擬化LUN和關聯(lián)的地址和長度轉換為它的對應物理LUN和關聯(lián)地址和長度。當然,在鏡像和分拆的情況下,從虛擬LUN、地址和長度進行的該轉換的結果可能產生多個對應的物理LUN、地址和長度組。這可以通過詢問虛擬和物理位置之間的映射的內部表或列表來完成。當然,也可以使用其它合適的數(shù)據結構例如列表和樹。此外,還可以使用算法計算虛擬—物理映射(例如,在分拆的情況下)。注意,數(shù)據的單個虛擬塊可能對應數(shù)據的兩個或多個物理塊——跨越多個LUN。在這種情況下,虛擬化端口必須識別出物理映射指定兩個獨立的物理位置。
其次,在虛擬化端口已標識物理LUN、地址和長度之后,端口隨后可以確保沒有其它節(jié)點將同時試圖訪問相同數(shù)據位置。這樣,根據一個實施例,虛擬化請求該物理數(shù)據位置鎖定,直到完成訪問。這可以通過向主虛擬化端口提交鎖定請求來完成——除非進行請求的端口自身是主端口。重要的是要注意,鎖定可以在虛擬地址空間操縱,也可以在物理地址空間操縱。換句話說,可以鎖定VLUN中或PLUN上的一系列字節(jié)。此外,可以在執(zhí)行虛擬到物理翻譯之前或在執(zhí)行翻譯之后執(zhí)行鎖定。兩種情況下結果應當相同。
第三,在許可鎖定之后,虛擬化端口準備一個或多個新(代替)SCSI請求命令。這些命令包括與在來自發(fā)起者的所截取請求命令中指定的虛擬位置相對應的物理位置(或多個位置)。這些命令還可以包括作為源地址的虛擬化端口地址。這樣,來自目標的答復返回到虛擬化端口而不是返回到宿主機。例如,如果虛擬化端口從目標接收傳送就緒(XFR_RDY)命令,則它可以將對應的傳送就緒命令發(fā)送回發(fā)起者。然而,一般在所傳輸?shù)臄?shù)據或傳送就緒命令中沒有LUN字段(其含有VLUN或PLUN)。這樣的LUN字段只存在于SCSI命令中。在一個實施例中,智能端口能夠通過使用光纖通道幀中的其它字段使傳送就緒與數(shù)據相關于SCSI命令。
在某些情況下,虛擬化端口將為單個讀取/寫入請求接收多個傳送就緒命令。這通常在虛擬存儲器位置映射到多個完全不同的物理LUN時發(fā)生。在這種情況下,每個物理LUN將響應于虛擬化端口發(fā)送的讀取/寫入請求命令答復一個傳送就緒命令。這樣,虛擬化端口應當能夠在發(fā)起者只發(fā)送單個請求命令時只向發(fā)起者發(fā)送單個傳送就緒命令——而不必考慮請求中暗含多少物理LUN。虛擬化端口如對待傳送就緒命令那樣對待狀態(tài)命令。
關于發(fā)起者和目標之間的實際數(shù)據傳輸,虛擬化交換機簡單地截取數(shù)據幀,并合適地替換源和目的地地址。對于來自目標的數(shù)據,端口將最初是物理LUN地址的源地址替換為對應的虛擬LUN和虛擬地址。
在目的地地址中,端口將它自身的地址替換為發(fā)起者的地址。對于來自發(fā)起者的數(shù)據,端口將源地址從發(fā)起者的地址改變?yōu)槎丝谧陨淼牡刂?。它還將目的地地址從虛擬LUN/地址改變到對應的物理LUN/地址。還存在該處理更為復雜的情形。例如,在一個實施例中,在鏡像或分拆的情況下,狀態(tài)沒有被簡單地重寫到并發(fā)送到發(fā)起者。而是收集發(fā)往PLUN的所有命令的所有狀態(tài)。如果所有狀態(tài)都是SUCCESS,SUCCESS狀態(tài)被返回到發(fā)起者。
在圖示截取、修改、生成及傳輸SCSI命令以支持存儲虛擬化的方法之前,討論傳統(tǒng)SCSI讀取和寫入操作是有幫助的。圖5是圖示了傳統(tǒng)SCSI寫入操作的示例性事務流程圖。如圖所示,在宿主機和物理LUN之間執(zhí)行事務,二者分別由垂直線502和504表示。當運行在宿主機上的應用程序想要將數(shù)據存儲到盤中時,它通過操作系統(tǒng)庫發(fā)出寫入命令506。寫入命令被傳送到SCSI驅動器,該SCSI驅動器將命令轉發(fā)到合適的盤。如圖所示,寫入命令一般將標識要存儲的數(shù)據、存儲器中的具體物理地址以及在該物理地址處所需的存儲器的量。在本例中,所需存儲器的量為4KB。
當驅動器502接收寫入命令后,這觸發(fā)SCSI交換。更具體地說,驅動器502發(fā)送SCSI寫入命令508,該寫入命令508指定物理LUN(PLUN)、物理地址(即,偏移量)、所需的存儲器長度(例如,4KB),并且其指示該命令是寫入命令。當PLUN準備好接收數(shù)據的時候,PLUN 504隨后發(fā)送指示PLUN 504準備好接收4KB數(shù)據的傳送就緒命令510。幀通常具有最大尺寸,這常常禁止整個數(shù)據集在單個幀中傳輸。因此在本例中,宿主機502以兩個連續(xù)幀512、514發(fā)送數(shù)據,每個幀傳輸初始4KB數(shù)據中的2KB。PLUN 504隨后在寫入成功后以STATUS(OK)消息516響應,或者在發(fā)生錯誤的情況下以CHECK_CONDITION消息響應。
類似地,圖6中示出了傳統(tǒng)SCSI讀取操作期間執(zhí)行的步驟。當客戶想要從物理地址讀取指定的數(shù)據量時,客戶發(fā)送讀取命令602。如上所述,宿主機502對命令的接收讀取觸發(fā)了SCSI交換。宿主機502隨后發(fā)送SCSI讀取命令604,并指示該命令是讀取命令而非寫入命令,其中讀取命令604指示物理LUN、物理地址(即,偏移量)、長度。PLUN 504隨后以兩個連續(xù)幀606、608響應,其中每個幀包括2KB數(shù)據。假定讀取操作成功,則PLUN 504發(fā)送STATUS(OK)消息610到宿主機504。
為了支持存儲區(qū)域網中的存儲虛擬化,虛擬化使能設備(這里稱為虛擬化交換機)截取SCSI消息(例如,幀)。虛擬化交換機優(yōu)選地生成或修改所接收的SCSI幀,使得虛擬化對宿主機(例如,發(fā)起者)和物理LUN(例如,目標)兩者都透明。換句話說,不需要修改宿主機和物理存儲設備來支持本發(fā)明所公開的實施例。
根據本發(fā)明的多個實施例,虛擬化交換機支持存儲區(qū)域網中的存儲虛擬化。圖7圖示了用于執(zhí)行SCSI寫入操作的存儲虛擬化的應用,而圖8圖示了用于執(zhí)行SCSI讀取操作的存儲虛擬化的應用,二者將在下文進一步詳細介紹。
圖7是圖示根據本發(fā)明的一個實施例執(zhí)行的示例性SCSI寫入操作的事務流程圖。如圖所示,宿主機702、虛擬化端口704、物理LUN1 706和物理LUN2 708由垂直線表示。在本例中,數(shù)據在兩個物理LUN中進行鏡像。如圖所示,宿主機702發(fā)送WRITE命令710,并指示該命令是寫入命令,其中WRITE命令710標識虛擬LUN、虛擬LUN中的地址、要寫入的數(shù)據長度(例如,4KB)。當虛擬化端口704截取WRITE命令后,它獲得虛擬—物理映射712以標識由虛擬—物理映射指定的一個或多個物理LUN和關聯(lián)的物理地址(例如,與虛擬LUN和虛擬地址相關聯(lián))。并且,當將要鏡像數(shù)據時,虛擬化端口可以執(zhí)行鏡像選擇算法714,該算法指示哪個物理LUN將被首先寫入。例如,算法可以以隨機方式或循環(huán)順序進行操作。虛擬化端口隨后獲得鎖定716,使得它可以向物理LUN 706和708兩者開始數(shù)據傳送。
一旦虛擬化端口704獲得鎖定,則它向第一物理LUN發(fā)送WRITE命令(如718所示),并向第二物理LUN發(fā)送WRITE命令(如720所示)。每個幀標識物理LUN、物理LUN中的物理地址、所需的存儲器長度(例如,4KB),并指示該命令是WRITE命令。重要的是要注意,虛擬化端口發(fā)送的幀與虛擬化端口從發(fā)起者接收的幀的標準協(xié)議(例如,流量類型)相兼容。在本例中,由于數(shù)據被鏡像,所以在虛擬化端口從發(fā)起者接收單個WRITE命令之后,虛擬化端口將發(fā)送多個WRITE命令。因此,盡管虛擬化端口可以修改所接收的幀以用于傳輸,但是在本例中,虛擬化端口還必須生成至少一個新的幀用于傳輸。
如上所述,當目標接收SCSI WRITE命令之后,在目標準備好接收從發(fā)起者傳送的數(shù)據之后,目標通常發(fā)送XFR_RDY信號。因此,還期望將XFR_RDY信號從虛擬化端口傳輸?shù)桨l(fā)起者(目標)。然而,根據本發(fā)明的一個實施例,在從任何一個物理LUN接收到對應的XFR_RDY信號之前,虛擬化端口704就將XFR_RDY信號722發(fā)送到宿主機702。這樣,虛擬化端口704可能在多個物理LUN準備好接收數(shù)據之前就獲得要被傳送的數(shù)據。因此,只要從多個物理LUN之一接收到XFR_RDY信號,數(shù)據就可以被即發(fā)送到發(fā)出信號的物理LUN。
例如,如圖所示,一旦宿主機702接收到XFR_RDY信號722,指示虛擬LUN準備好接收4KB的數(shù)據,則宿主機702就在兩個連續(xù)幀724和730中傳送4KB數(shù)據,每個幀包含2KB數(shù)據。在第一幀724被發(fā)送到虛擬化端口704之后,從第一物理LUN 706接收到XFR_RDY信號726。因此,通過將第一幀數(shù)據在728處發(fā)送到第一物理LUN,可以立即啟動從虛擬端口704到第一物理LUN的數(shù)據傳輸。類似地,只要虛擬化端口704從宿主機702接收到第二幀數(shù)據730,則虛擬化端口704就發(fā)送第二數(shù)據幀732到第一物理LUN 706。類似地,只要從第二物理LUN 708接收到XFR_RDY消息734,指示準備好接收整個4KB數(shù)據,則數(shù)據就以兩個幀736、740被傳輸?shù)降诙锢鞮UN 708。在此期間,虛擬化端口704可以從第一物理LUN 706接收到STATUS(OK)消息738。類似地,在成功完成向第二物理LUN 708的數(shù)據傳送之后,第二物理LUN 708將發(fā)送STATUS(OK)消息742到虛擬端口。虛擬端口704隨后發(fā)送單個STATUS(OK)消息744到宿主機702,指示數(shù)據被成功存儲在存儲器中。當然,如果狀態(tài)指示命令未成功,可以將一個或多個幀重新發(fā)送到合適的(多個)物理LUN。因此,需要向多個物理LUN復制多個寫入操作的鏡像操作對宿主機702透明。
一旦數(shù)據如上參考圖7所述的那樣在兩個或多個物理LUN中進行鏡像,則SCSI讀取操作將觸發(fā)從鏡像之一的數(shù)據讀取。圖8是圖示了根據本發(fā)明的一個實施例執(zhí)行的示例性SCSI讀取操作的事務流程圖。如圖所示,宿主機702發(fā)送SCSI讀取命令802到虛擬化端口704,其中讀取命令標識虛擬LUN、關聯(lián)的虛擬地址、要獲得的數(shù)據長度,并且指示該命令是讀取操作(而非寫入操作)。虛擬化端口704接收讀取命令觸發(fā)由虛擬化端口704執(zhí)行的若干操作。更具體地說,虛擬化端口可能分配存儲器804以存儲其接收的數(shù)據。例如,可能期望分配要從之讀取(或向其寫入)的存儲器的量。由于若干原因,這可能很重要。例如,虛擬化端口處接收的數(shù)據的接收順序可能與數(shù)據發(fā)送到讀取操作的發(fā)起者的順序不一致。此外,如果讀取操作失敗,可能期望保留該數(shù)據,以確保先前發(fā)送到宿主機的數(shù)據的完整性。例如,這可以通過從預備的鏡像讀取數(shù)據用于與先前發(fā)送的數(shù)據比較來實現(xiàn)。
在從多個鏡像(例如,多個物理LUN)之一讀取數(shù)據之前,虛擬化端口704可以實現(xiàn)鏡像選擇算法806以選擇若干鏡像之一,以從其讀取數(shù)據。如上所述,存儲在每個鏡像中的數(shù)據應當反映(例如,復制)存儲在其它鏡像中的數(shù)據。例如,鏡像選擇算法可以隨機選擇多個鏡像之一或者選擇優(yōu)選鏡像(例如,物理LUN1),以從其讀取數(shù)據。
如上文參考虛擬化寫入命令所描述的那樣,在808處獲得鎖定以確保對指定存儲器位置的排他訪問。此外,在810處獲得虛擬—物理映射。虛擬化端口704隨后發(fā)送讀取命令812到所選擇的鏡像,物理LUN1 706。類似于上文參考圖7所描述的寫入虛擬化操作,命令指定物理LUN(例如,PLUN1)和關聯(lián)的物理地址,要讀取的數(shù)據長度,并指示該操作是讀取操作。如上文參考圖7所描述的那樣,可能需要在兩個或更多幀中發(fā)送大塊數(shù)據。因此,PLUN1 706以在兩個分開的幀814和816中的所請求數(shù)據答復虛擬化端口。虛擬化端口704隨后可以在818處將數(shù)據存儲于先前分配的存儲器中。虛擬化端口704隨后可以將數(shù)據以兩個分開的幀820和822發(fā)送到宿主機702。當虛擬化端口704從PLUN1 706接收STATUS824之后,虛擬化端口704可以確定是否需要在826重新傳輸命令和/或數(shù)據。換句話說,如果STATUS指示操作未成功,則可能期望從其它鏡像(例如,物理LUN)讀取數(shù)據,以將該數(shù)據和先前發(fā)送到宿主機(并且存儲在所分配的存儲器中)的數(shù)據相比較。隨后可以傳輸STATUS 828到宿主機702。例如,虛擬化端口704可以在發(fā)送狀態(tài)到宿主機之前一直等待,直到命令已被成功完成。
本發(fā)明可以適用于完成多種虛擬化操作,包括鏡像和分拆。例如,RAID 1+0操作包括鏡像操作和隨后的分拆操作。圖9A是圖示了由根據本發(fā)明的一個實施例執(zhí)行的RAID 1+0操作應用得到的示例性存儲配置的示例性框圖。如圖所示,圖示了多個物理LUN,其中數(shù)據A-E存儲在多個數(shù)據塊中。更具體地說,以所示的對應號碼1-10的順序存儲數(shù)據。執(zhí)行RAID 1+0操作,使得數(shù)據被存儲在物理LUN PLUN1 902、PLUN2904、PLUN3 906和PLUN4 908,并被鏡像到物理LUN PLUN5 910和PLUN6 912中。由于首先執(zhí)行鏡像,所以每個數(shù)據塊在被分拆之前被鏡像到物理LUN PLUN5 910和PLUN6 912中。換句話說,在經過多個鏡像“分拆”整個數(shù)據塊之前,數(shù)據的單個部分被鏡像到多個物理LUN中。在本例中,數(shù)據A被存儲在LUN 902中,隨后被鏡像到LUN 910中。數(shù)據B隨后被存儲在LUN 904中,并被鏡像到LUN 912中,如圖所示,其橫跨LUN創(chuàng)建“分拆帶(stripe)”。如圖所示,執(zhí)行連續(xù)的鏡像和分拆操作來存儲數(shù)據C、D和E。
作為另一個示例,可以執(zhí)行RAID 0+1操作,其包括分拆操作和隨后的鏡像操作。圖9B是圖示了由根據本發(fā)明的一個實施例執(zhí)行的RAID 0+1操作應用得到的示例性存儲配置的示例性框圖。如圖所示,圖示了多個物理LUN,其中數(shù)據A-E存儲在多個數(shù)據塊中。更具體地說,以所示的對應號碼1-10的順序存儲數(shù)據。執(zhí)行RAID 0+1操作,使得數(shù)據被存儲在物理LUN PLUN1 914、PLUN3 918、PLUN5 922和PLUN7 926,并被鏡像到物理LUN PLUN2 916、PLUN4 920、LUN6 924和PLUN8 928中。由于首先執(zhí)行分拆,如圖所示,所以在將單個數(shù)據塊鏡像到多個物理LUN之前,所有數(shù)據塊都橫跨物理LUN被“分拆”。在本例中,數(shù)據A-E的整個集合橫跨物理LUN 914、918、922、926和914而被分拆,如號碼1-5所示。然后,數(shù)據A、B、C、D和E的每個部分分別被鏡像到物理LUN 916、920、924、928和916中,分別如對應的號碼6-10所示。
圖10A是圖示了由根據本發(fā)明的一個實施例執(zhí)行的RAID 1+0操作應用得到的示例性存儲配置的另一個示例性框圖。如上所示,RAID 1+0操作包括鏡像和隨后的分拆步驟。如圖所示,虛擬LUN 1002可以表示三個物理LUN、PLUN1 1004、PLUN2 1006和PLUN3 1008。如圖所示,物理LUN可以是異質的,并且因而可以包括不同的存儲器量。在本例中,數(shù)據A、B和C中的每塊是100字節(jié)。數(shù)據以號碼1-6表示的順序被鏡像和分拆。如圖所示,每塊數(shù)據分別被鏡像到PLUN3 1008中。在此過程中,數(shù)據A-C橫跨PLUN 1004和1006被分拆。
圖10B和10C一起表示一個事務流程圖,該事務流程圖表示在圖10A的RAID 1+0操作期間執(zhí)行的步驟。其中分拆在鏡像之后。如圖所示,由宿主機、從屬虛擬化端口、主虛擬化端口和物理LUN PLUN1-PLUN3執(zhí)行的步驟分別由垂直線1010、1012、1014、1016、1018和1019表示。宿主機1010首先如1020所示的那樣發(fā)送寫入命令,該命令指示虛擬LUN(例如,VLUN1)、虛擬LUN中的地址(例如,0)、要被傳送的數(shù)據長度(例如,300字節(jié)),并且指示該命令是寫入命令。當虛擬化端口1012接收該命令時,它可以為要被寫入的數(shù)據分配存儲器1022,如上文參考讀取命令所描述的那樣。
如上所述,如果虛擬化端口不是主端口,則它在訪問虛擬LUN之前從主端口獲得鎖定。因此,從屬虛擬化端口1012發(fā)送鎖定請求1024到主虛擬化端口1014。例如,鎖定請求可以用來請求在指定地址處對虛擬LUN的訪問,以及指示要被鎖定的存儲器的量。當從主虛擬化端口1014接收到鎖定許可1026后,從屬虛擬化端口1012可能想發(fā)送XFR RDY信號1028到宿主機1010以優(yōu)化虛擬化過程。
虛擬化端口1012隨后以發(fā)送數(shù)據的順序向三個PLUN發(fā)送寫入命令,如圖10A所示。更具體地說,數(shù)據A將被存儲在PLUN1中地址0處,隨后是PLUN3中地址0處。因此,對應的寫入命令1030和1032被發(fā)送到PLUN1 1016和PLUN3 1019,兩個命令都指示100字節(jié)的數(shù)據將被寫入對應物理LUN中的物理地址0處。類似地,寫入命令1034和1036對應于在PLUN2和PLUN3中的數(shù)據B的鏡像,指示100字節(jié)的數(shù)據將被分別寫入地址0和100,如圖10A所示。寫入命令1038和1040隨后被發(fā)送到對應于數(shù)據C的PLUN1 1016和PLUN3 1019,其分別指示將要傳送的數(shù)據量和物理地址100和200,其中數(shù)據將要存儲在這些物理LUN中的這些物理地址處。當物理LUN準備好接收數(shù)據的傳送時,PLUN1、PLUN2和PLUN3發(fā)送對應于每個寫入命令的傳送就緒信號1042-1052。
在上文描述的示例中,圖示了每個寫入命令和關聯(lián)的XFR_RDY命令。但是,存儲器在1022處被分配,因此數(shù)據在虛擬化端口上被緩沖。結果,如上所示,如圖10A所示的諸如A1-C5數(shù)據的寫入以及數(shù)據A2-B4-C6的寫入(以及關聯(lián)的XFR_RDY命令)可以合并在單個步驟中而不用分別執(zhí)行。例如,步驟1030和1038可以合并到200字節(jié)的單個寫入中,而步驟1032、1036和1040可以合并到300字節(jié)的單個寫入中。類似地,步驟1042和1044可以合并到200字節(jié)的來自PLUN1的單個XFR_RDY命令中,并且步驟1048、1050合1052可以合并到300字節(jié)的來自PLN3的單個XFR_RDY命令中。
由于已經接收到XFR_RDY信號,所以只要從宿主機1010接收到數(shù)據,虛擬化端口1012就可以開始向對應的物理LUN發(fā)送數(shù)據。因此,當在1053處從宿主機接收數(shù)據A后,數(shù)據在1054處被發(fā)送到PLUN1 1016并在1056處被發(fā)送到PLUN3 1019。類似地,當從宿主機接收數(shù)據B后,它可以如1058和1060處所示的那樣被分別發(fā)送到PLUN2 1018和PLUN31019。在此期間,如1059處所示,可以從宿主機1010接收數(shù)據C。數(shù)據C隨后如1062和1064所示的那樣被分別發(fā)送到PLUN1和PLUN3。假定寫入命令成功,則分別從PLUN1、PLUN2和PLUN3接收STATUS(OK)消息1066-1076。隨后STATUS(OK)消息1077返回到宿主機。在通知命令已經成功完成之后,所分配的存儲器可以在1080處被解除分配。
由于系統(tǒng)中的多種限制,可能存在最大傳送單元。流入,虛擬化端口可能具有有限的存儲器量用于具體傳送的分配。修改圖10B中圖示的示例,宿主機可以用最初請求的400字節(jié)的存儲器來發(fā)送數(shù)據A至D(而不是如圖所示的300字節(jié)的存儲器),盡管虛擬化端口可能只有300字節(jié)可用于分配。因此如上所述,虛擬化端口可以發(fā)送XFR_RDY消息,指示只可以傳送300字節(jié)。在這種情況下,只要存儲器被解除分配,虛擬化端口就在1082處分配存儲器的剩余100字節(jié)。第二鎖定請求可以例如標識虛擬LUN、虛擬LUN中的地址、要被寫入的數(shù)據長度(100字節(jié)),并且指示該數(shù)據將被寫入VLUN。當在1086處許可鎖定后,傳送就緒信號1087被發(fā)送到宿主機,指示可以傳送剩余的100字節(jié)數(shù)據。類似地,向PLUN2 1018和PLUN3 1019的寫入命令被分別在1088和1090處發(fā)送,指示寫入操作所需的存儲器量和物理地址。當如1092和1094所示從對應的物理LUN接收到傳送就緒信號后,在1095處從宿主機接收的數(shù)據D在1096和1098處被發(fā)送到兩個物理LUN。如1100和1102所示,在從兩個物理LUN接收狀態(tài)之后,在1103處向宿主機發(fā)送合適的狀態(tài)。在成功完成命令之后,在1104處再次解除分配存儲器。
一旦存儲區(qū)域網中的“主端口”已許可鎖定,則該鎖定可以在不再需要的時候被“釋放”。在釋放之后,其它網絡實體或方法可以訪問虛擬LUN和對應的物理LUN。例如,在已成功完成寫入(或讀取)命令之后,從屬虛擬化端口可以發(fā)送鎖定釋放或解鎖請求1106到主虛擬化端口。如上所示,在從對應目標接收STATUS之后可以指示命令的成功完成。主虛擬化端口隨后可以在1108處向從屬虛擬化端口提供所許可的鎖定已被釋放的通知。
盡管這里示出并描述的本發(fā)明的示例性實施例和應用,但是可以有保持在本發(fā)明的概念、范圍和精神之內的許多變化和修改,并且在本領域普通技術人員熟讀本申請之后,這些變化將會變得很清楚。例如所描述的本發(fā)明適用于幀,但是應當理解,本發(fā)明不限于這種實現(xiàn),相反也可以等同地適用于分組。并且,應用本發(fā)明不用考慮實現(xiàn)它的環(huán)境和提供。因此,一般而言,本發(fā)明不需要使用如上所述的虛擬化操作來執(zhí)行,而可以用來支持存儲區(qū)域網中的其它虛擬化操作。
此外,盡管描述了示例性交換機,但是上述的實施例可以在多種網絡設備(例如,服務器)和多種介質中實現(xiàn)。例如,用于實現(xiàn)上述發(fā)明的指令和數(shù)據可以存儲在盤驅動、硬驅動、軟盤、服務器計算機或遠程網絡計算機中。因此,本實施例被認為是示例性的而非限制性的,并且本發(fā)明不限于這里給出的細節(jié),而是可以在權利要求的范圍和等同物內進行修改。
權利要求
1.一種在存儲區(qū)域網的網絡設備上實現(xiàn)存儲虛擬化的方法,所述方法包括(a)在所述網絡設備的端口處接收幀或分組;(b)確定所述幀或分組與虛擬存儲單元的虛擬存儲位置的訪問有關,所述虛擬存儲單元的所述虛擬存儲位置代表所述存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置;(c)獲得所述一個或多個物理存儲位置和所述虛擬存儲位置之間的虛擬—物理映射;以及(d)將新的或經修改的幀或分組發(fā)送到所述虛擬—物理映射指定的發(fā)起者或目標。
2.如權利要求1所述的方法,其中所述網絡設備是交換機、路由器、iSCSI網關或被配置成執(zhí)行交換功能的其它網絡節(jié)點。
3.如權利要求1所述的方法,其中所述虛擬存儲單元包括所述存儲區(qū)域網上的虛擬邏輯單元或存儲設備的其它虛擬表示。
4.如權利要求1所述的方法,其中由所述網絡設備的所述端口專用的邏輯來執(zhí)行所述步驟(b)、(c)和(d)。
5.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組是光纖通道幀。
6.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀是iSCSI幀。
7.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組包括讀取或寫入命令。
8.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組包括SCSI讀取或寫入命令。
9.如權利要求1所述的方法,其中確定所述幀或分組與虛擬存儲位置的訪問有關的步驟包括在來自所述發(fā)起者的所述幀或分組中識別所述虛擬存儲單元的地址。
10.如權利要求9所述的方法,其中所述地址是目的地地址。
11.如權利要求1所述的方法,其中確定所述幀或分組與虛擬存儲位置的訪問有關的步驟包括在來自所述目標的所述幀或分組的目的地地址字段中識別所述端口的地址。
12.如權利要求1所述的方法,其中所述虛擬存儲單元是虛擬邏輯單元,所述一個或多個物理存儲存單元是物理邏輯單元。
13.如權利要求1所述的方法,其中所述虛擬—物理映射由虛擬化模型定義。
14.如權利要求1所述的方法,所述方法還包括以將所述虛擬存儲單元的目的地地址替換為所述一個或多個物理存儲單元的一個或多個目的地地址的方式,修改所述所接收的分組或幀,或者生成一個或多個新的分組或幀。
15.如權利要求1所述的方法,所述方法還包括以將物理存儲單元的源地址替換為所述虛擬存儲單元的源地址的方式,修改所述所接收的分組或幀,或者生成新的分組或幀。
16.如權利要求1所述的方法,所述方法還包括以將所述發(fā)起者的源地址替換為所述網絡設備上的所述端口的地址的方式,修改所述所接收的分組或幀,或者生成新的分組或幀。
17.如權利要求1所述的方法,所述方法還包括以將所述網絡設備上的所述端口的目的地地址替換為所述虛擬存儲單元的目的地地址的方式,修改所述所接收的分組或幀,或者生成新的分組或幀。
18.如權利要求1所述的方法,其中由所述網絡設備的所述端口專用的處理器來執(zhí)行所述步驟(b)、(c)和(d)。
19.如權利要求1所述的方法,還包括在向所述一個或多個物理存儲位置提交讀取或寫入命令之前,請求所述一個或多個物理存儲位置的鎖定。
20.如權利要求19所述的方法,其中請求所述一個或多個物理存儲位置的鎖定的步驟包括請求所述虛擬存儲位置的鎖定。
21.如權利要求19所述的方法,其中請求所述一個或多個物理存儲位置的鎖定的步驟包括向所述存儲區(qū)域網中的網絡設備的另一個端口發(fā)送鎖定請求。
22.如權利要求21所述的方法,還包括從所述存儲區(qū)域網中的所述網絡設備的所述另一個端口接收鎖定許可。
23.如權利要求22所述的方法,其中所述所許可的鎖定指示,許可了對所述虛擬存儲位置的排他讀取和寫入訪問中的至少一個。
24.如權利要求22所述的方法,還包括當接收所述鎖定許可之后,向所述發(fā)送者發(fā)送傳送就緒消息。
25.如權利要求22所述的方法,還包括從所述存儲區(qū)域網中的所述網絡設備的所述另一個端口請求釋放所述所許可的鎖定。
26.如權利要求25所述的方法,還包括接收所述所許可的鎖定已被所述另一個端口釋放的通知。
27.如權利要求25所述的方法,其中當已經成功完成所述讀取或寫入命令后,執(zhí)行請求釋放所述所許可的鎖定的步驟。
28.如權利要求27所述的方法,其中當從所述發(fā)起者或所述目標接收到指示所述命令成功的狀態(tài)時,所述命令已被成功完成。
29.如權利要求1所述的方法,其中在所述網絡設備的端口處接收的所述幀或分組包括讀取或寫入命令,所述讀取或寫入命令指示將要讀取或寫入的存儲器的量,所述方法還包括在所述網絡設備處分配所述存儲器的量。
30.如權利要求29所述的方法,還包括在向所述目標發(fā)送所述新的或經修改的幀或分組之后,從所述目標接收狀態(tài);以及當所述狀態(tài)指示所述命令成功時,在所述網絡設備處解除分配所述存儲器的量。
31.如權利要求1所述的方法,其中在所述網絡設備的端口處接收的所述幀或分組包括讀取或寫入命令,所述方法還包括在發(fā)送所述新的或經修改的幀或分組之后,從所述目標接收傳送就緒信號,所述傳送就緒信號指示所述目標準備好接收數(shù)據的傳送。
32.如權利要求31所述的方法,還包括在發(fā)送所述新的或經修改的幀或分組之后,向所述發(fā)起者發(fā)送傳送就緒信號,所述傳送就緒信號指示所述網絡設備準備好接收來自所述發(fā)起者的數(shù)據的傳送;其中在從所述目標接收傳送就緒信號之前,執(zhí)行向所述發(fā)起者發(fā)送所述傳送就緒信號。
33.如權利要求1所述的方法,其中在所述網絡設備的端口處接收的所述幀或分組包括讀取或寫入命令,所述方法還包括在發(fā)送所述新的或經修改的幀或分組之后,接收狀態(tài),所述狀態(tài)指示所述命令是否成功。
34.如權利要求33所述的方法,還包括向所述發(fā)起者發(fā)送所述狀態(tài)。
35.如權利要求33所述的方法,還包括向所述虛擬—物理映射指定的發(fā)起者或目標發(fā)送第二新的或經修改的幀或分組;在發(fā)送所述第二新的或經修改的幀或分組之后,接收第二狀態(tài),所述第二狀態(tài)指示所述命令是否成功;合并所述狀態(tài)和所述第二狀態(tài);以及將所述合并的狀態(tài)發(fā)送到所述發(fā)起者。
36.如權利要求33所述的方法,還包括從所述狀態(tài)確定所述命令是否成功;以及當確定所述命令不成功時,重新發(fā)送所述新的或經修改的幀或分組。
37.如權利要求36所述的方法,還包括當確定所述命令成功時,向所述發(fā)起者發(fā)送所述狀態(tài)。
38.如權利要求36所述的方法,其中所述新的或經修改的幀或分組包括數(shù)據。
39.如權利要求36所述的方法,其中所述新的或經修改的幀或分組包括讀取或寫入命令。
40.如權利要求36所述的方法,其中在所述網絡設備的端口處接收的所述幀或分組包括數(shù)據,所述方法還包括在存儲器位置中存儲所述數(shù)據;其中重新發(fā)送所述新的或經修改的幀或分組包括從所述存儲器位置獲得所述數(shù)據;以及向所述虛擬—物理映射指定的所述發(fā)起者或所述目標發(fā)送含有所述所獲得數(shù)據的新的或經修改的幀或分組。
41.如權利要求36所述的方法,還包括從由所述虛擬—物理映射指定的所述目標接收數(shù)據,并且在存儲器位置中存儲所述數(shù)據。
42.如權利要求41所述的方法,其中重新發(fā)送所述新的或經修改的幀或分組的步驟包括從所述存儲器位置獲得所述數(shù)據;以及向所述虛擬—物理映射指定的所述發(fā)起者發(fā)送含有所述所獲得數(shù)據的新的或經修改的幀或分組。
43.如權利要求41所述的方法,其中重新發(fā)送所述新的或經修改的幀或分組的步驟包括向所述虛擬—物理映射指定的其它目標發(fā)送所述新的或經修改的幀或分組,所述方法還包括從由所述虛擬—物理映射指定的所述其它目標接收其它數(shù)據;以及比較所述其它數(shù)據和存儲在所述存儲器位置中的所述數(shù)據。
44.如權利要求43所述的方法,還包括采用鏡像算法來選擇所述其它目標。
45.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組以及由所述網絡設備發(fā)送的所述新的或經修改的幀或分組與標準協(xié)議相兼容。
46.如權利要求45所述的方法,其中所述標準協(xié)議是SCSI。
47.如權利要求45所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組以及由所述網絡設備發(fā)送的所述新的或經修改的幀或分組與所述幀或分組攜帶的流量類型相兼容。
48.如權利要求47所述的方法,其中所述流量類型是光纖通道。
49.如權利要求47所述的方法,其中所述流量類型是iSCSI。
50.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組包括SCSI讀取命令,并且由所述網絡設備發(fā)送的所述新的或經修改的幀或分組包括SCSI讀取命令。
51.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組包括SCSI寫入命令,并且由所述網絡設備發(fā)送的所述新的或經修改的幀或分組包括SCSI寫入命令。
52.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組包括讀取命令,并且由所述網絡設備發(fā)送的所述新的或經修改的幀或分組包括讀取命令。
53.如權利要求1所述的方法,其中在所述網絡設備的所述端口處接收的所述幀或分組包括寫入命令,并且由所述網絡設備發(fā)送的所述新的或經修改的幀或分組包括寫入命令。
54.一種其上存儲指令的計算機可讀介質,所述指令用于實現(xiàn)存儲區(qū)域網的網絡設備上的存儲虛擬化,所述計算機可讀介質包括(a)用于在所述網絡設備的端口處接收幀或分組的指令;(b)用于確定所述幀或分組與虛擬存儲單元的虛擬存儲位置的訪問有關的指令,所述虛擬存儲單元的所述虛擬存儲位置代表所述存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置;(c)用于獲得所述一個或多個物理存儲位置和所述虛擬存儲位置之間的虛擬—物理映射的指令;以及(d)用于將新的或經修改的幀或分組發(fā)送到所述虛擬—物理映射指定的發(fā)起者或目標的指令。
55.一種存儲區(qū)域網的網絡設備,所述存儲區(qū)域網適于實現(xiàn)存儲虛擬化,所述網絡設備包括(a)用于在所述網絡設備的端口處接收幀或分組的裝置;(b)用于確定所述幀或分組與虛擬存儲單元的虛擬存儲位置的訪問有關的裝置,所述虛擬存儲單元的所述虛擬存儲位置代表所述存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置;(c)用于獲得所述一個或多個物理存儲位置和所述虛擬存儲位置之間的虛擬—物理映射的裝置;以及(d)用于將新的或經修改的幀或分組發(fā)送到所述虛擬—物理映射指定的發(fā)起者或目標的裝置。
56.一種存儲區(qū)域網的網絡設備,所述存儲區(qū)域網適于實現(xiàn)存儲虛擬化,所述網絡設備包括處理器;以及存儲器,所述處理器和所述存儲器中的至少一個適于(a)在所述網絡設備的端口處接收幀或分組;(b)確定所述幀或分組與虛擬存儲單元的虛擬存儲位置的訪問有關,所述虛擬存儲單元的所述虛擬存儲位置代表所述存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置;(c)獲得所述一個或多個物理存儲位置和所述虛擬存儲位置之間的虛擬—物理映射;以及(d)將新的或經修改的幀或分組發(fā)送到所述虛擬—物理映射指定的發(fā)起者或目標。
57.一種在支持虛擬化的存儲區(qū)域網中使用的網絡設備,所述網絡設備包括多個端口,其中至少一些所述端口包括(i)用于在存儲區(qū)域網上發(fā)送和接收分組或幀的接口;以及(ii)所述網絡設備的所述端口專用的邏輯,所述邏輯用于識別與虛擬存儲單元的虛擬存儲位置的訪問有關的幀或分組,所述虛擬存儲單元的所述虛擬存儲位置代表所述存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置;以及實現(xiàn)所述一個或多個物理存儲位置和所述虛擬存儲位置之間的虛擬—物理映射。
58.一種在存儲區(qū)域網的網絡設備上實現(xiàn)存儲虛擬化的方法,所述方法包括(a)在所述網絡設備的端口處接收幀或分組;(b)從與對存儲在所述存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理位置中的數(shù)據的訪問有關的所述幀或分組獲得信息,所述信息標識一個或多個物理位置或標識代表所述一個或多個物理存儲位置的虛擬存儲位置;(c)獲得所述一個或多個物理存儲位置和所述虛擬存儲位置之間的虛擬—物理映射;以及(d)將新的或經修改的幀或分組發(fā)送到所述虛擬—物理映射指定的身份。
59.如權利要求58所述的方法,其中所述新的或經修改的幀或分組含有從所述虛擬—物理映射獲得的源地址和目的地地址中的至少一個。
60.如權利要求58所述的方法,其中所述所接收的幀或分組含有源地址和目的地地址,其中所述所獲得的信息含有所述源地址和所述目的地地址中的至少一個。
全文摘要
本發(fā)明公開了在存儲區(qū)域網的網絡設備上實現(xiàn)存儲虛擬化的方法與裝置。在該網絡設備的端口處接收到幀或分組。之后確定該幀或分組與虛擬存儲單元的虛擬存儲位置有關,所述虛擬存儲單元的虛擬存儲位置代表存儲區(qū)域網的一個或多個物理存儲單元上的一個或多個物理存儲位置。于是就獲得了一個或多個物理存儲位置和虛擬存儲位置之間的虛擬物理映射。新的或經修改的幀或分組隨后被發(fā)送到虛擬物理映射指定的目標或發(fā)起者。
文檔編號G06F15/173GK1708742SQ03806717
公開日2005年12月14日 申請日期2003年1月10日 優(yōu)先權日2002年1月23日
發(fā)明者托馬斯·詹姆斯·埃茲爾, 西爾瓦諾·加伊 申請人:思科技術公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1