新四季網

在存儲區域網中實現存儲虛擬化的方法與裝置的製作方法

2023-09-21 08:34:40

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

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


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀