欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在線初始鏡像同步及存儲區(qū)域網(wǎng)絡(luò)中的鏡像同步驗證的制作方法

文檔序號:6655688閱讀:413來源:國知局
專利名稱:在線初始鏡像同步及存儲區(qū)域網(wǎng)絡(luò)中的鏡像同步驗證的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及存儲區(qū)域網(wǎng)絡(luò)。
背景技術(shù)
在今天數(shù)據(jù)密集型工業(yè)和應(yīng)用環(huán)境中,信息管理正日益變成使人畏縮的任務(wù)。更具體地,由于更多的公司和個人面臨越來越大的數(shù)據(jù)量,這些數(shù)據(jù)必須被有力地、有效地、及可靠地保存,從而原始數(shù)據(jù)存儲的管理正變得日益麻煩和困難。實體繼續(xù)面對添加更多存儲器、服務(wù)更多用戶、及為更大量用戶提供對更多數(shù)據(jù)的存取的需要。
存儲區(qū)域網(wǎng)絡(luò)或SAN的概念在近些年非常盛行以滿足這些日益增長的需求。盡管SAN存在不同的定義,但SAN通常被視為網(wǎng)絡(luò),其主要目的是在計算機系統(tǒng)和存儲元件之間及存儲元件與存儲元件之間傳輸數(shù)據(jù)。SAN形成實質(zhì)上獨立的網(wǎng)絡(luò),其不具有與其直連對應(yīng)物一樣的帶寬限制,例如,所述對應(yīng)物包括直接連到服務(wù)器的存儲設(shè)備(如使用SCSI連接)及使用傳統(tǒng)以太網(wǎng)接口直接添加到局域網(wǎng)(LAN)的存儲設(shè)備。
在SAN環(huán)境中,目標器,其可包括存儲設(shè)備(如磁帶機和RAID陣列)及其它能夠保存數(shù)據(jù)的設(shè)備,及啟動器,其可包括服務(wù)器、個人計算設(shè)備、和其它能夠提供寫指令和請求的設(shè)備,通常經(jīng)不同的開關(guān)和/或設(shè)備互連。到開關(guān)和設(shè)備的連接通常為光纖通路。這種結(jié)構(gòu)通常使SAN上的任何啟動器均可與任何目標器通信,反之亦然。其還提供另外的從啟動器到目標器的路徑。換言之,如果特定啟動器很慢或完全不可用,SAN上的另一啟動器可提供對目標器的存取。SAN還使可鏡像數(shù)據(jù),制作多份可用拷貝,因而在數(shù)據(jù)可用性方面提供更高的可靠性。當(dāng)需要更多的存儲器時,另外的存儲設(shè)備可被添加到SAN中,而無須連接到特殊的啟動器;而是,新設(shè)備可被簡單地添加到存儲網(wǎng)絡(luò)并可從任何點進行存取。
一些SAN利用設(shè)備執(zhí)行SAN的存儲管理。典型設(shè)備可接收并在設(shè)備內(nèi)保存數(shù)據(jù),之后,例如使用內(nèi)部處理器,為將數(shù)據(jù)轉(zhuǎn)發(fā)給適當(dāng)?shù)哪繕似鞫治龊瓦\算數(shù)據(jù)。這樣的保存-轉(zhuǎn)發(fā)處理可減慢數(shù)據(jù)存取,包括從存儲設(shè)備讀數(shù)據(jù)的時間和將數(shù)據(jù)寫到存儲設(shè)備的時間。
在設(shè)備可執(zhí)行交換操作的同時,開關(guān)經(jīng)常用于使啟動器與設(shè)備連接,假定在許多設(shè)備中包括大量啟動器和少量端口。在更當(dāng)前的SAN實施例中,開關(guān)已代替先前由設(shè)備執(zhí)行的某些功能,使得該設(shè)備不是必須的并可從系統(tǒng)中刪除。
SAN通常通過開關(guān)和/或設(shè)備執(zhí)行虛擬化功能以將一個或多個物理目標器的空間分配給不知道物理空間剩余的特定用戶。例如,公司可使用SAN提供雇員存取數(shù)據(jù)存儲器并檢索的數(shù)據(jù)存儲。例如,工程部可具有分配為“工程存儲空間”的存儲器。當(dāng)雇員看見或與物理存儲設(shè)備如所連接的硬盤驅(qū)動器相互作用時,雇員可看見并與虛擬看見相互作用。但是,空間實際上可跨多個物理存儲設(shè)備進行再分,甚至是單一存儲設(shè)備內(nèi)的碎片。開關(guān)或設(shè)備可接收請求虛擬空間和塊數(shù)的請求,并確定物理上與所請求的虛擬空間關(guān)聯(lián)的設(shè)備及其部分,以控制數(shù)據(jù)。
新近的存儲區(qū)域網(wǎng)絡(luò)開關(guān)能夠在啟動器和目標器之間發(fā)送數(shù)據(jù),而無須像先前SAN中使用的設(shè)備那樣要求緩沖數(shù)據(jù)。例如,相較典型的網(wǎng)絡(luò)開關(guān),一些存儲開關(guān)可沒有引起更多等待時間地發(fā)送數(shù)據(jù)包。啟動器和目標器之間的這種無緩沖數(shù)據(jù)傳送必須由執(zhí)行互連的開關(guān)可靠且有效地處理。存儲開關(guān)的一個例子可在2002年1月18日申請的、題為“存儲系統(tǒng)中的虛擬化”的未決美國專利申請10/051,396中找到。
例如,SAN的重要特征在于通過所謂的鏡像或使用鏡像的虛擬目標器在多個目標器中或一個或多個目標器的多個邏輯單元內(nèi)可靠且有效地保存數(shù)據(jù)的能力。一些網(wǎng)絡(luò)可包括存儲區(qū)(或虛擬目標器),其在一個或多個物理位置保存數(shù)據(jù)的多個拷貝以增加數(shù)據(jù)存儲的可靠性。因此,這樣的網(wǎng)絡(luò)中的開關(guān)可響應(yīng)于向存儲區(qū)寫數(shù)據(jù)的請求將數(shù)據(jù)發(fā)送給兩個或多個存儲設(shè)備。
為建立鏡像的虛擬目標器,鏡像的虛擬目標器成員中的每一個必須同步。通常,一目標器的數(shù)據(jù)被指定為源數(shù)據(jù),其被寫入形成鏡像的虛擬目標器的其它設(shè)備。在緩沖實施方式中,數(shù)據(jù)可從源目標器讀出,然后緩存,然后當(dāng)其它目標器可用于接收數(shù)據(jù)時將數(shù)據(jù)寫入其它目標器。
然而,為實現(xiàn)無緩存的實施方式,源數(shù)據(jù)不應(yīng)被保持在開關(guān)中等待直到目的地目標器可用于接收其為止。因此,需要以幫助將數(shù)據(jù)從源目標器傳送到一個或多個目的地目標器而不用緩存在開關(guān)中的方式同步鏡像的虛擬目標器的系統(tǒng)和方法。另外,需要在執(zhí)行初始鏡像同步并從啟動設(shè)備接收對鏡像的虛擬目標器的指令的同時保持鏡像的虛擬目標器的完整性和同步性的系統(tǒng)和方法。

發(fā)明內(nèi)容
根據(jù)各個實施例,提供管理鏡像的虛擬目標器的系統(tǒng)和方法。在一實施例中,存儲開關(guān)執(zhí)行鏡像的虛擬目標器的初始鏡像同步以在虛擬目標器各成員間同步數(shù)據(jù)。
一實施例包括提供對應(yīng)于被同步的鏡像目標器的各成員的內(nèi)部虛擬目標器(IVT)??山⒌谝粌?nèi)部虛擬邏輯單元(IVLU)用于鏡像目標器成員之一,其中已為該鏡像目標器指定將要同步的數(shù)據(jù)的源目標器。可為鏡像目標器的其余成員、或目的地目標器中的每一個建立一個或多個另外的IVLU。在提供IVT之后,寫指令可經(jīng)IVT及相應(yīng)的IVLU提供給每一目的地目標器成員。一旦每一目的地目標器返回傳送就緒信號,讀指令可經(jīng)源目標器的相應(yīng)IVLU提供給源目標器。通過在向源目標器發(fā)出讀指令之前等待每一目的地目標器的傳送就緒信號,根據(jù)實施例的存儲開關(guān)可在接收將要同步的數(shù)據(jù)之前建立內(nèi)部數(shù)據(jù)通路。因此,數(shù)據(jù)可被從源目標器讀出、轉(zhuǎn)換為寫數(shù)據(jù)、并以線路速度提供給每一目的地目標器,而不用將數(shù)據(jù)緩存在存儲開關(guān)中。
在一實施例中,在第一處理單元提供IVT。第二處理單元包括復(fù)制服務(wù)管理器,其可向IVT提供讀和寫指令。寫指令可在第一處理單元接收并使用為IVT提供的信息而被發(fā)送給適當(dāng)?shù)哪康牡啬繕似鞒蓡T。
在一實施例中,存儲開關(guān)執(zhí)行鏡像同步驗證以驗證鏡像的虛擬目標器的成員均被同步。類似于初始鏡像同步,可提供IVT且經(jīng)該IVT向每一目的地目標器提供讀指令。一旦從每一目的地目標器返回傳送就緒信號,向源目標器提供讀指令。從源目標器接收到的數(shù)據(jù)可被轉(zhuǎn)換以驗證數(shù)據(jù)并以線路速度提供給目的地目標器進行驗證,而沒有緩沖。
在一實施例中,在鏡像的虛擬目標器正被同步或驗證的同時存儲開關(guān)管理輸入鏡像的虛擬目標器的指令。所接收的針對鏡像目標器的指令不被立即提供給鏡像目標器。在開關(guān)完成任何未決同步或驗證指令的同時,這些指令可被暫時排隊。在同步或驗證指令完成之后,開關(guān)可解除隊列并將指令從啟動器提供給鏡像的虛擬目標器。
根據(jù)一實施例,提供管理鏡像目標器的方法,其包括確定至少一目的地目標器接收數(shù)據(jù)的可用性,僅在至少一目的地目標器被確定可用于接收數(shù)據(jù)時向源目標器提供讀指令。在一實施例中,所述方法還包括從源目標器接收讀出數(shù)據(jù),將所讀出數(shù)據(jù)轉(zhuǎn)換為寫或驗證數(shù)據(jù),并將該寫或驗證數(shù)據(jù)提供給至少一目的地目標器。
根據(jù)一實施例,提供管理鏡像目標器的裝置,其包括與至少一目的地目標器和源目標器通信的至少一端口及與至少一端口通信的至少一處理單元。至少一處理單元僅在至少一目的地目標器可用于接收數(shù)據(jù)時向源目標器提供讀指令。
本發(fā)明可使用硬件、軟件、或硬件和軟件的結(jié)合實現(xiàn)。用于本發(fā)明的軟件保存在一個或多個處理器可讀存儲介質(zhì)上,包括硬盤驅(qū)動器、CD-ROM、DVD、光盤、軟盤、磁帶機、RAM、ROM、閃存或其它適當(dāng)?shù)拇鎯υO(shè)備。在另一實施例中,部分或所有軟件可用專用硬件代替,包括常規(guī)集成電路、門陣列、FPGA、PLD、及專用處理器。在一實施例中,實現(xiàn)本發(fā)明的軟件用于編程一個或多個處理器。一個或多個處理器可與一個或多個存儲設(shè)備(硬盤驅(qū)動器、CD-ROM、DVD、光盤、軟盤、磁帶機、RAM、ROM、閃存或其它適當(dāng)?shù)拇鎯υO(shè)備)、外設(shè)(打印機、顯示器、鍵盤、點擊設(shè)備)和/或通信接口(如網(wǎng)卡、無線發(fā)送器/接收器等)通信。
本發(fā)明的其它特征、方面及目標可通過讀閱下面的說明書、附圖和權(quán)利要求獲得。


圖1為根據(jù)一實施例的存儲區(qū)域網(wǎng)絡(luò)的一般原理框圖;圖2為根據(jù)一實施例的存儲開關(guān)的一般原理框圖;圖3為根據(jù)一實施例的用于存儲開關(guān)中的線路卡的一般原理框圖;圖4為圖示啟動設(shè)備看見的虛擬目標器的一般原理框圖;圖5a-5c為存儲區(qū)域網(wǎng)絡(luò)的一般原理框圖,其示出了虛擬目標器的示例性提供;圖6為根據(jù)一實施例,在指令信息包或幀的輸入方向中的虛擬化進程的流程圖;圖7為根據(jù)一實施例,在指令信息包或幀的輸出方向中的虛擬化進程的流程圖;圖8為根據(jù)一實施例,R2T或XFER_RDY信息包或幀的輸入方向中的虛擬化進程的流程圖;圖9為根據(jù)一實施例,R2T或XFER_RDY信息包或幀的輸出方向中的虛擬化進程的流程圖;圖10為根據(jù)一實施例,寫數(shù)據(jù)包或幀的輸入方向中的虛擬化進程的流程圖;圖11為根據(jù)一實施例,寫數(shù)據(jù)包或幀的輸出方向中的虛擬化進程的流程圖;圖12為根據(jù)一實施例,初始鏡像同步過程的流程圖;圖13為根據(jù)一實施例,包括可用于同步鏡像的虛擬目標器各成員的存儲開關(guān)和指令流的一般原理框圖;
圖14為根據(jù)一實施例,包括可用于同步鏡像的虛擬目標器各成員的存儲開關(guān)和指令流的一般原理框圖;圖15為根據(jù)一實施例,驗證鏡像的虛擬目標器的各成員均被同步的流程圖;圖16為包括驗證鏡像的虛擬目標器被同步的存儲開關(guān)和指令流的一般原理框圖;及圖17為根據(jù)一實施例,在執(zhí)行虛擬目標器的初始鏡像同步或鏡像同步驗證的同時處理輸入鏡像的虛擬目標器的指令的流程圖。
具體實施例方式
圖1所示為包括根據(jù)一實施例的存儲開關(guān)的示例性系統(tǒng)100。系統(tǒng)100包括多個啟動設(shè)備如服務(wù)器102。應(yīng)該意識到的是,可以使用更多或更少的服務(wù)器,且除了服務(wù)器102之外或用以代替服務(wù)器102,實施例可包括任何適當(dāng)?shù)奈锢韱悠?。盡管沒有示出,服務(wù)器還可連到LAN。如圖所示,每一服務(wù)器102被連到存儲開關(guān)104。然而,在其它實施例中,每一服務(wù)器102可連到比所呈現(xiàn)的所有存儲開關(guān)104少的存儲開關(guān)。盡管在一實施例中,連接是光纖通路或吉比特以太網(wǎng)(根據(jù)iSCSI協(xié)議攜載信息包),在服務(wù)器和開關(guān)之間形成的連接可使用任何協(xié)議。其它實施例可使用Intel公司定義的Infiniband協(xié)議或其它協(xié)議或連接。
在一些實施例中,一個或多個開關(guān)104中的每一個連到城域網(wǎng)(MAN)或?qū)捰蚓W(wǎng)(WAN)108,如因特網(wǎng)。在大多數(shù)實施例中,存儲開關(guān)104和WAN108之間形成的連接通常使用因特網(wǎng)協(xié)議(IP)。盡管在圖中示出為直接連到MAN/WAN108,其它實施例可使用路由器(未示出)作為開關(guān)104和MAN/WAN108之間的媒介。
另外,各自的管理站110連到每一存儲開關(guān)104、每一服務(wù)器102、和每一存儲設(shè)備106。盡管管理站被圖示為不同的計算機,應(yīng)該理解的是,管理每一類設(shè)備的軟件可全部都在同一計算機上。
這樣的存儲開關(guān)104,除了其開關(guān)功能以外,還可提供虛擬化和存儲服務(wù)(如鏡像)。這樣的服務(wù)可包括那些通常由傳統(tǒng)體系結(jié)構(gòu)中的設(shè)備提供的服務(wù)。
此外,根據(jù)本發(fā)明實施例的存儲開關(guān)的智能被分布給每一開關(guān)端口。這種分布式智能慮及系統(tǒng)可擴縮性和可用性。分布式智能使根據(jù)實施例的開關(guān)能夠以“網(wǎng)速”處理數(shù)據(jù),也就是說,與典型的網(wǎng)絡(luò)開關(guān)相比,存儲開關(guān)104不會引起更多的數(shù)據(jù)包等待時間。因此,該開關(guān)的“網(wǎng)速”通過連接到特定端口進行測量。因而,在一具有OC-48連接的實施例中,存儲開關(guān)可跟上OC-48速度(2.5位每毫微秒)。以O(shè)C-48速度移動的兩千字節(jié)信息包(10位每字節(jié))僅需8毫秒即可輸入開關(guān)。一千字節(jié)的信息包僅需4毫秒。100字節(jié)的最小信息包僅需400毫微秒。
不同存儲區(qū)域網(wǎng)絡(luò)包括圖1所示的網(wǎng)絡(luò)的更多信息可在下述專利申請中找到2002年1月18日申請的、題為“存儲系統(tǒng)中的虛擬化”的美國專利申請10/051,396;2002年1月18日申請的、題為“用于存儲區(qū)域網(wǎng)絡(luò)的存儲開關(guān)”的美國專利申請10/051,321。
“虛擬化”通常指將用戶預(yù)訂的虛擬目標器空間映射到一個或多個物理存儲目標器設(shè)備上的空間。術(shù)語“虛擬的”和“虛擬目標器”源于下述事實每一預(yù)訂分配的存儲空間可在連到存儲開關(guān)104的一個或多個物理存儲目標器設(shè)備上的任何地方。物理空間可被提供為“虛擬目標器”,其可包括一個或多個“邏輯單元”(LU),在此也被稱為“虛擬邏輯單元”(VLU)。每一虛擬目標器由用一個或多個LU號(LUN)標識的一個或多個LU組成,LU頻繁使用于iSCSI和FC協(xié)議中。每一邏輯單元通常由一個或多個盤區(qū)組成,盤區(qū)即為物理設(shè)備上的存儲空間的連續(xù)片。因而,虛擬目標器可占用整個存儲設(shè)備(一個盤區(qū))、單一存儲設(shè)備的一部分(一個或多個盤區(qū))、或多個存儲設(shè)備的一部分(多個盤區(qū))。物理設(shè)備、LU、盤區(qū)數(shù)量、及它們的準確位置對訂戶而言均是非實質(zhì)的和不可見的。
存儲空間可來自多個不同的物理設(shè)備,在不同的實施例中,每一虛擬目標器可屬于一個或多個“池”,在此有時稱為“域”。在一實施例中,只有同一域的用戶才被允許共享他們域中的虛擬目標器。還可形成域系,其包括幾個域作為成員。使用域系可使多個域的用戶的管理容易,例如,如果一個公司具有五個域但選擇停止服務(wù),只需采取一個行動即可停用整個域系。域系的成員也可以是其它域的成員。
圖2所示為根據(jù)本發(fā)明實施例的存儲開關(guān)104的原理框圖。關(guān)于存儲開關(guān)如存儲開關(guān)104及其運行的詳細情況的更多信息可在2002年1月18申請的、題為“用于存儲區(qū)域網(wǎng)絡(luò)的存儲開關(guān)”的美國專利申請10/051,321中找到。在一實施例中,存儲開關(guān)104包括多個線路卡302、304和306、多個矩陣卡(fabric card)308、和兩個系統(tǒng)控制卡310,每一卡均將在下面詳細描述。盡管示出了示例性的存儲開關(guān),應(yīng)該意識到的是,根據(jù)不同的實施例,也可使用多種其它實施方式和構(gòu)造。
系統(tǒng)控制卡。兩個系統(tǒng)控制卡(SCC)310中的每一個連到每一線路卡302、304、306。在一實施例中,這樣的連接由I2C信號形成,其在本領(lǐng)域是公知的,并通過以太網(wǎng)與SCC連接。SCC控制加電并監(jiān)視各個線路卡及矩陣卡和I2C連接。在以太網(wǎng)連接上使用卡間通信,SCC還啟動各個存儲設(shè)備如快照和復(fù)制。
此外,SCC維護數(shù)據(jù)庫312,其跟蹤存儲開關(guān)及連接到開關(guān)的所有虛擬目標器和物理設(shè)備如服務(wù)器和存儲設(shè)備的配置信息。另外,數(shù)據(jù)庫保留關(guān)于使用、錯誤及存取數(shù)據(jù)的信息以及關(guān)于虛擬目標器和用戶的不同域及域系的信息。數(shù)據(jù)庫的記錄在此可被稱為“對象”。每一啟動器(如服務(wù)器)和目標器(如存儲設(shè)備)具有全球唯一標識符(WWUI),這在本領(lǐng)域中是公知的。數(shù)據(jù)庫被保存在SCC內(nèi)的存儲設(shè)備中,在一實施例中,所述存儲設(shè)備由閃存構(gòu)成,盡管在各個實施例中也可使用其它存儲設(shè)備。
存儲開關(guān)104可由管理站110通過SCC310使用以太網(wǎng)連接到達。因而,SCC還包括另外的以太網(wǎng)端口以用于連接到管理站。管理站的管理員可發(fā)現(xiàn)存儲設(shè)備或虛擬目標器的添加或去除,以及查詢和虛擬地更新保存在SCC數(shù)據(jù)庫312中的任何對象。
矩陣卡。在開關(guān)104的一實施例中,有三個矩陣卡308,盡管其它實施例可具有更多或更少的矩陣卡。在一實施例中,每一矩陣卡308連到線路卡302、304、306中的每一個并用于將所有線路卡連在一起。在一實施例中,當(dāng)所有線路卡均被填充時,每一矩陣卡308可處理最大流量。在一實施例中,由每一線路卡處理的這樣的流量負載高達160Gbps,盡管其它實施例可處理更高或更低的最大流量。如果一個矩陣卡308失效,其余兩個卡依然具有足夠的帶寬用于最大可能開關(guān)流量在一實施例中,每一線路卡產(chǎn)生20Gbps的流量,10Gbps輸入和10Gbps輸出。然而,在正常情況下,所有三個矩陣卡同時使用。數(shù)據(jù)流量將從每一線路卡發(fā)送給三個矩陣卡中可容納該數(shù)據(jù)的任一矩陣卡。
線路卡。線路卡構(gòu)成到服務(wù)器和存儲設(shè)備的連接。在一實施例中,存儲開關(guān)104支持高達16個線路卡,盡管其它實施例可支持不同數(shù)量的線路卡。另外,在一實施例中,使用了三種不同類型的線路卡吉比特以太網(wǎng)(GigE)卡302、光纖通路(FC)卡304、和WAN卡306。其它實施例可包括更多或更少類型的線路卡。GigE卡302用于以太網(wǎng)連接,在一實施例中連接到或iSCSI服務(wù)器或iSCSI存儲設(shè)備(或其它基于以太網(wǎng)的設(shè)備)。FC卡304用于光纖通路連接,連接到或光纖通路協(xié)議(FCP)服務(wù)器或FCP存儲設(shè)備。WAN卡306用于連到MAN或WAN。
圖3所示為用于根據(jù)一實施例的存儲開關(guān)104中的一般線路卡400的原理框圖。線路卡400僅為示例的目的進行呈現(xiàn)。根據(jù)各實施例,也可使用其它線路卡和設(shè)計。圖中示出了所有類型的線路卡如GigE302、FC304或WAN306均具有的那些元件。在其它實施例中,可使用其它類型的線路卡使用其它協(xié)議如Infiniband連接到設(shè)備。
端口。每一線路卡400包括多個端口402。端口構(gòu)成線路卡連接到或服務(wù)器或存儲設(shè)備的連接。在圖示的實施例中示出了8個端口,但在其它實施例中可使用更多或更少的端口。例如,在一實施例中,每一GigE卡可支持高達8個1Gb以太網(wǎng)端口,每一FC卡可支持高達或8個1Gb FC端口或4個2Gb FC端口,每一WAN卡可支持高達4個OC-48端口或兩個OC-192端口。因此,在一實施例中,最大可能連接為每開關(guān)(104)128個端口。在一實施例中,每一線路卡的端口均為全雙工通信制,并連接到或服務(wù)器或其它客戶和/或連到存儲設(shè)備或子系統(tǒng)。
此外,每一端口402具有相關(guān)聯(lián)的存儲器403。盡管只示出了一個存儲設(shè)備連到一個端口,應(yīng)該理解的是,每一端口可具有其自己的存儲設(shè)備,或者所有端口均被連接到同一存儲設(shè)備。在此示出只有一個存儲設(shè)備連接到一個端口是為了清楚起見。
存儲處理器單元。在一實施例中,每一端口與存儲處理器單元(SPU)401關(guān)聯(lián)。在一實施例中,SPU快速處理數(shù)據(jù)流量以允許網(wǎng)速運行。在一實施例中,每一SPU包括幾個元件信息包聚集和分類引擎(PACE)404、信息包處理單元(PPU)406、SRAM405、CAM407。同樣,其它實施例可使用更多或更少的元件或可結(jié)合元件以獲得相同的功能。例如,一些實施例可在SPU中包括PACE和PPU,但SPU可與其它SPU共享存儲元件。
PACE。每一端口連到信息包聚集和分類引擎(PACE)404。如圖所示,PACE404將兩個端口聚集為單一數(shù)據(jù)通路,由此其具有兩倍的帶寬。例如,PACE404將兩個1Gb端口聚集為一個2Gb數(shù)據(jù)通路。PACE可將每一接收到的信息包分類為控制信息包或數(shù)據(jù)包??刂菩畔?jīng)網(wǎng)橋416發(fā)送給CPU414進行處理。如下所述,數(shù)據(jù)包被發(fā)送給包處理單元(PPU)406,并添加了本地首部。在一實施例中,本地首部為導(dǎo)致64字節(jié)(16字節(jié)首部和48字節(jié)凈荷)的數(shù)據(jù)“存儲單元”的16字節(jié)。本地首部用于攜帶信息并由開關(guān)104內(nèi)部使用。在信息包離開開關(guān)之前刪除本地首部。因而,“存儲單元”可以是開關(guān)中本地使用的傳輸單位,其包括本地首部和原始信息包(在一些實施例中,原始TCP/IP首部也被從原始信息包剝離)。但是,不是本發(fā)明的所有實施例均將產(chǎn)生本地首部或具有不同于外部信息包的“內(nèi)部信息包”(單元)。因此,在此使用的術(shù)語“信息包”可指“內(nèi)部”或“外部”信息包。
分類功能有助于使開關(guān)能夠以網(wǎng)速執(zhí)行存儲虛擬化和協(xié)議變換功能,而不用使用傳統(tǒng)系統(tǒng)的保存-轉(zhuǎn)發(fā)模式。每一PACE具有專門的到PPU如PPU 4061的通路,同時在圖示實施例中所有四個PACE共享到CPU414的通路,在一實施例中其為104MHz/32(3.2Gbps)比特數(shù)據(jù)通路。
包處理單元(PPU)。每一PPU如PPU4061在傳輸過程中執(zhí)行虛擬化和協(xié)議變換,即存儲單元不被緩沖而進行這樣的處理。其還實現(xiàn)其它基于開關(guān)的存儲服務(wù)功能,將在隨后描述。在一實施例中,PPU能夠以O(shè)C-48速度或2.5Gbps的速度移動輸入和輸出雙向的存儲單元,在其它實施例中,其可以O(shè)C-192或10Gbps的速度移動存儲單元。在一實施例中,PPU包括輸入PPU4061i和輸出PPU4061e,二者同時運行。輸入PPU4061i從PACE4041接收輸入數(shù)據(jù)并將數(shù)據(jù)發(fā)送給流量管理器408i,輸出PPU4061e從流量管理器408e接收數(shù)據(jù)并將數(shù)據(jù)發(fā)送給PACE4041。盡管在圖3中只有一個PPU4061具有輸入PPU4061i和輸出PPU4061e,應(yīng)該理解的是,在一實施例中,所有PPU406均將包括輸入PPU和輸出PPU,圖3中僅示出只有一個PPU具有輸入和輸出PPU是為了清楚起見。
在每一端口可同時建立大量存儲連接(如服務(wù)器到虛擬目標器的連接)。但是,每一連接對虛擬目標器是唯一的并可由TCP控制塊索引(在iSCSI連接的情況下)和端口號唯一地確定。當(dāng)建立連接時,線路卡400的CPU414通過向PPU406發(fā)送虛擬目標器描述符(VTD)以進行連接而將使用中的虛擬目標器通知給PPU406。VTD包括關(guān)于連接和虛擬目標器的所有有關(guān)信息,即PPU將需要對數(shù)據(jù)進行適當(dāng)?shù)剡\算,如執(zhí)行虛擬化、變換及各種存儲服務(wù)。VTD源自SCC數(shù)據(jù)庫中的對象并通常包含保存在SCC數(shù)據(jù)庫中的相關(guān)對象中的信息子集。
類似地,在本發(fā)明的一實施例中,使用物理目標器描述符(PTD)。PTD描述實際的物理設(shè)備、其各個LU、或其各個盤區(qū)(LU的連續(xù)部分或整個LU),并將包括類似于用于VTD那樣的信息。同樣,與VTD相似,PTD源自SCC數(shù)據(jù)庫中的對象。
在一實施例中,為保存VTD和PTD并能快速訪問它們,PPU如PPU4061被連接到SRAM4051和CAM4071。SRAM4051可保存VTD和PTD數(shù)據(jù)庫。VTD標識符(VTDID)的列表或地址及PTD標識符(PTD ID)也可被保存在PPU CAM4071中以能快速訪問VTD。VTD ID使用TCP控制塊索引和LUN進行索引。PTD ID使用VTD ID進行索引。此外,對于IP路由服務(wù),CAM4071包含路由表,當(dāng)添加或去除路由時其由CPU進行更新。
在不同的實施例中,每一PPU將按如圖所示那樣與其自己的CAM和SRAM設(shè)備連接,或者所有PPU均將被連到同一CAM和/或SRAM(未示出)。
對于每一給PPU的未完成的請求(如讀或?qū)?,在PPU SRAM407中建立任務(wù)控制塊以跟蹤請求的狀態(tài)。有輸入任務(wù)控制塊(ITCB)和輸出任務(wù)控制塊(ETCB),ITCB跟蹤由輸入PPU上的存儲開關(guān)接收的請求的狀態(tài),ETCB跟蹤由輸出PPU上的存儲開關(guān)發(fā)出的請求的狀態(tài)。對于每一虛擬的目標器連接,可有大量同時發(fā)生的請求,因而有許多任務(wù)控制塊。當(dāng)請求開始時分配任務(wù)控制塊,當(dāng)請求結(jié)束時釋放任務(wù)控制塊。
流量管理器。在每一線路卡400上有兩個流量管理器(TM)408其中一個TM408i用于輸入流量,另一TM408e用于輸出流量。在一實施例中,輸入TM從所有4個SPU接收存儲單元,其為64字節(jié)數(shù)據(jù)單元形式。在這樣的實施例中,每一數(shù)據(jù)單元具有16字節(jié)的本地首部和48字節(jié)的凈荷。首部包含F(xiàn)lowID,其告訴TM存儲單元的目的端口。在一些實施例中,在將存儲單元轉(zhuǎn)發(fā)給TM之前,SPU還可將TM首部附加到存儲單元。在一些實施例中,或TM或SPU還可將存儲單元再分為更小的存儲單元以通過矩陣卡傳輸。
在一實施例中,輸入TM經(jīng)128位104Mhz接口410將數(shù)據(jù)單元發(fā)送給矩陣卡。其它實施例可以125Mhz或其它速度運行。輸出TM從矩陣卡接收數(shù)據(jù)單元并將它們傳送給四個SPU。
輸入和輸出TM均具有大緩沖器412以排隊需傳送的存儲單元。輸入和輸出TM的緩沖器412為64MB,其可為開關(guān)內(nèi)的內(nèi)部流控制而排隊大量信息包。存儲單元不被緩存在高速緩存或緩沖的開關(guān)設(shè)備中。因為在這些系統(tǒng)中,沒有傳送級確認。存儲單元僅被暫時緩沖以保持開關(guān)內(nèi)的流控制。存儲單元保持其原始順序且在TM沒有存儲單元的高級處理。當(dāng)矩陣卡的輸出流與輸入流一樣快時,SPU通??焖俚貙⒋鎯卧l(fā)送給輸入TM。因此,存儲單元快速移到輸出TM。另一方面,由于輸出端口被塞滿或正被多個輸入線路卡饋送,輸出TM可被備份。在這種情況下,在輸出存儲單元的首部中設(shè)置標志以通知輸出SPU快速采取行動。輸出TM還發(fā)送請求給輸入SPU以啟動在提供存儲器存取服務(wù)質(zhì)量中使用的流控制功能。值得注意的是,與因特網(wǎng)上的通信流量不同,對于存儲流量,丟失信息包或存儲單元是不可接受的。因此,只要緩沖器中的存儲單元數(shù)量超出指定的閾值,SPU可啟動其流控制功能以減慢輸入流量從而避免緩沖器溢出。
網(wǎng)絡(luò)連接(Fabric Connection)。網(wǎng)絡(luò)連接410將TM的256位并行信號(128位輸入和128位輸出)以160Gbps轉(zhuǎn)換到底板的16位串行接口中(8位輸入和8位輸出)。因而,底板在插腳的16分之一運行,但速度上快16倍。這種轉(zhuǎn)換使能以合理的成本構(gòu)造高可用性底板,且不用成千上萬的連接插腳和導(dǎo)線。此外,在一實施例中,由于有三個矩陣卡,在一實施例中,每一線路卡上有三個高速連接器,其中每一連接器分別將8位信號連到三個矩陣卡中的相應(yīng)矩陣卡。當(dāng)然,其它實施例可能不需要三個網(wǎng)絡(luò)連接410。
CPU。在每一線路卡上有處理器(CPU)614,在一實施例中其為PowerPC 750 Cxe。在一實施例中,CPU414用3.2Gb總線經(jīng)總線控制器415和網(wǎng)橋416連到每一PACE。此外,CPU414還連到每一PPU、CAM和TM,然而,在一些實施例中,該連接是40Mbps的較慢速度。3.2Gb和40Mb通路均允許CPU與線路卡中的大多數(shù)設(shè)備通信并讀和寫線路卡上每一設(shè)備的內(nèi)部寄存器、下載微碼、及發(fā)送和接收控制信息包。
每一線路卡上的CPU負責(zé)在加電時初始化每一芯片并在無論哪里需要微碼時將微碼下載到SPU及每一端口。一旦線路卡在運行狀態(tài),CPU處理控制流量。對于建立虛擬目標器連接需要的信息,CPU從SCC請求信息,其繼而從SCC數(shù)據(jù)庫中的適當(dāng)對象獲得信息。
線路卡中的區(qū)別—端口。在一實施例中,每一類線路卡如GigE、FC或WAN中的端口均是不同的,因為每一線路卡支持一種類型的端口。在其它實施例中,其它線路卡端口可被設(shè)計為支持其它協(xié)議如Infiniband。
GigE端口。吉比特以太網(wǎng)端口連到iSCSI服務(wù)器和存儲設(shè)備。當(dāng)GigE端口攜載所有類型的以太網(wǎng)流量時,根據(jù)本發(fā)明的一實施例,通常將由存儲開關(guān)104以網(wǎng)速處理的唯一網(wǎng)絡(luò)流量是TCP/IP包內(nèi)的iSCSI信息包數(shù)據(jù)單元(PDU)。但是,在其它實施例中,在以太網(wǎng)連接上傳送的根據(jù)其它協(xié)議(如網(wǎng)絡(luò)文件系統(tǒng)(NFS))的信息包可在GigE端口進行接收并由SPU和/或CPU處理。
GigE端口接收和傳送TCP/IP段以用于虛擬目標器或iSCSI設(shè)備。為建立對虛擬目標器的TCP連接,線路卡CPU414和SCC310均被涉及。當(dāng)接收TCP信息包時,在執(zhí)行初始聯(lián)絡(luò)之后,TCP控制塊被產(chǎn)生并保存在GigE端口存儲器403中。VTD也被從SCC數(shù)據(jù)庫的對象取回并保存在CPU SDRAM405中以用于驗證連接并理解虛擬目標器的配置。TCP控制塊確定特定TCP會話或信息包屬于其的iSCSI連接,在一實施例中,還包含TCP段數(shù)量、狀態(tài)、窗口大小、及關(guān)于連接的其它可能信息。此外,TCP控制塊通過索引進行識別,其在此稱為“TCP控制塊索引”。該連接的VTD可被產(chǎn)生并保存在SPU SRAM405中。CPU通過取回保存在其SDRAM中且最初從SCC數(shù)據(jù)庫獲得的VTD信息而產(chǎn)生VTD。VTD ID被建立在SPU CAM407中的VTD ID列表中,以便快速定位到VTD。VTD ID與TCP控制塊索引有關(guān)系并由其進行索引。
當(dāng)端口接收iSCSI PDU時,其實際上用作連接的端頭,但其后開關(guān)啟動與目標器的新連接。在輸入側(cè)接收信息包之后,端口使用TCP控制塊索引將iSCSI PDU傳送給PACE,其確定特殊的TCP連接。對于非TCP信息包或TCP信息包不包含iSCSI PDU,端口接收和傳送信息包,但不充作連接端頭。通常,端口402與PACE404通信,通過使用TCP控制塊索引接收或發(fā)送iSCSI信息包。當(dāng)信息包的TCP控制塊索引是-1時,其標識非iSCSI信息包。
FC端口。FC端口連到服務(wù)器和FC存儲設(shè)備。FC端口表現(xiàn)為連接服務(wù)器的光纖通路存儲子系統(tǒng)(即目標器),也就是說,如本領(lǐng)域所理解的,其呈現(xiàn)大量允許啟動器(如服務(wù)器)執(zhí)行進程登入(PLOGI或PRLI)從而建立連接的虛擬目標器設(shè)備的池。FC端口接受GID擴展鏈路服務(wù)(ELS)并返回可為該啟動器(如服務(wù)器)存取的目標器設(shè)備列表。
當(dāng)連到光纖通路存儲設(shè)備時,端口表現(xiàn)為光纖通路F端口,意為如本領(lǐng)域所公知的,其接受來自存儲設(shè)備的交換機登錄并通過接受和處理GID請求而提供名服務(wù)功能,換言之,端口將表現(xiàn)為存儲設(shè)備的啟動器。
此外,F(xiàn)C端口可連到另一現(xiàn)有的SAN網(wǎng)絡(luò),在這種情況下,其表現(xiàn)為具有許多到另一網(wǎng)絡(luò)的LU的目標器。
在端口初始化時,線路卡CPU可經(jīng)歷發(fā)送交換機登錄、進程登入、GID及接收它們。SCC支持將FC ELS轉(zhuǎn)換為iSNS請求和響應(yīng)的應(yīng)用。因此,在SCC中的同一數(shù)據(jù)庫可跟蹤FC啟動器(如服務(wù)器)和目標器(如存儲設(shè)備),只要它們是iSCSI啟動器和目標器即可。
當(dāng)建立FC連接時,與GigE端口不同,F(xiàn)C端口不需要創(chuàng)建TCP控制塊或其等價物。所有必須的信息均可從FC首部獲得。但是,VTD(通過確定幀的目的地的D_ID索引)仍需以類似于在GigE端口處描述的方式建立。
FC端口可被配置為1Gb或2Gb。當(dāng)為1Gb端口時,兩個端口均被連到同一PACE,如圖3中所示;但在一實施例中,當(dāng)配置為2Gb端口時,端口流量和可被SPU容納的流量應(yīng)匹配以避免SPU擁塞。在一實施例中,端口使用POS/PHY接口連到PACE。每一端口可被單獨配置,即一個PACE可具有兩個1Gb端口,另一PACE具有一個2Gb端口。
WAN端口。在包括WAN線路卡的實施例中,在一實施例中,WAN線路卡支持OC-48和OC-192連接。因而,有兩種類型的WAN端口OC-48和OC-192。對于OC-48,每一SPU有一個端口。盡管還有分類功能,但在PACE中沒有聚集功能。WAN端口連到SONET并像GigE端口那樣工作,其傳送和接收網(wǎng)絡(luò)信息包如ICMP、RIP、BPG、IP和TCP。在一實施例中,WAN端口用VPN和IPSec支持網(wǎng)絡(luò)安全性,其需要另外的硬件構(gòu)件。
由于OC-192導(dǎo)致更快的網(wǎng)速,在支持OC-192的實施例中將要求更快的SPU。
基于開關(guān)的存儲操作本領(lǐng)域一般技術(shù)人員均具有iSCSI和FC協(xié)議的一般知識。然而,對于關(guān)于iSCSI的更多信息,指2003年1月19日因特網(wǎng)工程任務(wù)組(IETF)的因特網(wǎng)草案(見www.ietf.org)及進行中的工作一“draft-ietf-ips-iSCSI-20.txt”,其通過引用組合于此。對于關(guān)于光纖通路(FC)的更多信息,指2002年11月23日的“SCSI光纖通路協(xié)議-2(FCP-2)”,修訂08(見www.t10.org),其通過引用組合于此。此外,二者還在2002年1月18日申請的、題為“存儲區(qū)域網(wǎng)絡(luò)的存儲開關(guān)”的美國專利申請10/051,321中有所描述。
存儲池如圖1所示,在其物理結(jié)構(gòu)中,根據(jù)本發(fā)明實施例的系統(tǒng)包括連到一個或多個服務(wù)器102和一個或多個物理設(shè)備106即存儲設(shè)備或子系統(tǒng)的開關(guān)104。每一物理目標器由一個或多個邏輯單元(LU)107組成。虛擬目標器或VLU將最終由這些LU形成。
然而,在虛擬目標器可被產(chǎn)生或“提供”之前,開關(guān)需要“意識到”所連接的和/或可由其存取的物理存儲設(shè)備及這些物理存儲設(shè)備的特性。因而,在本發(fā)明的一實施例中,當(dāng)存儲設(shè)備或啟動器設(shè)備連接到開關(guān)或向開關(guān)登記時,開關(guān)必須知道新設(shè)備的性能特征。一旦設(shè)備被“發(fā)現(xiàn)”,不同的詢問被發(fā)送給設(shè)備以收集關(guān)于性能特征的信息。例如,可發(fā)送讀/寫指令以測量傳送率或檢查存取時間。另外,在一些實施例中,性能特征的獲得可通過使管理員在管理站110輸入性能特征而實現(xiàn),其中,這些特征將繼而被提供給開關(guān)104。
根據(jù)所收集的關(guān)于設(shè)備的信息,通常所有這些設(shè)備終端用戶均看不見,在本發(fā)明的一實施例中,開關(guān)根據(jù)政策對設(shè)備進行分類。一旦用于存儲設(shè)備的政策已被確定,設(shè)備的LU被分配到存儲池802,在此有時稱為“域”。由于每一存儲設(shè)備由一個或多個LU組成,特定存儲設(shè)備的所有LU被分配到同一池。然而,在一實施例中,每一LU被開關(guān)視為單獨的存儲節(jié)點且每一LU由SCC數(shù)據(jù)庫中的LU對象描述。因而,每一池具有LU作為組成部分。在一實施例中,分配到池獨立于物理存儲設(shè)備在其下運行的協(xié)議如iSCSI或光纖通路完成。如本領(lǐng)域那些技術(shù)人員將理解的,每一池由分配給該池的LU的列表在開關(guān)中確定,在一實施例中,該列表保存在SCC數(shù)據(jù)庫中。這樣的列表可由指向LU對象的指針組成。
通常,每一池將僅可由具有特定特征的用戶存取。例如,存儲池可為那些位于建筑物1中的用戶建立,其中池被命名為“建筑物1共享的金存儲池”。另一示例性的池可被命名為“工程獨占銀存儲池”并僅可由特定公司的工程隊存取。當(dāng)然,無限變化的池均可被建立,且所述及所示的池僅是示例性的。
此外,在一實施例中,有兩個特殊池“默認池”和“非池”。默認池允許任何訪問存儲網(wǎng)絡(luò)的人存取。相反,“非池”通常不可由用戶存取,而僅可由開關(guān)自身或系統(tǒng)管理員存取。一旦分配到池,LU可由開關(guān)自身或系統(tǒng)管理員重新分配給不同的池。例如,LU在起初可被放在非池中,之后可移到默認池或其它池。
提供虛擬目標器一旦物理設(shè)備的LU在可存取池中(即不是“非池”),則可從那些LU創(chuàng)建虛擬目標器或VLU。如圖4中所示,一旦創(chuàng)建,服務(wù)器(及其相應(yīng)的用戶)將“看見”一個或多個虛擬目標器或VLU152,每一虛擬目標器由一個或多個盤區(qū)154組成,但它們將不必須“看見”物理設(shè)備106。盤區(qū)是來自物理設(shè)備的連續(xù)部分或整個LU。如圖4的例子中所示,在虛擬目標器152例子中每一盤區(qū)由來自幾個物理設(shè)備的完整LU構(gòu)成?!氨P區(qū)”還可被來自啟動器如服務(wù)器的LUN引用,其并不了解目標器是“虛擬的”。虛擬目標器的組成包括LU使用的協(xié)議與服務(wù)器無關(guān)。然而,如圖4中所示,每一虛擬目標器由映射到物理設(shè)備106的LU的盤區(qū)組成。
為提供虛擬目標器,在一實施例中,用戶為虛擬目標器選擇幾個特征,包括-大小(如按吉字節(jié)計算);-存儲池,盡管在一實施例中用戶可僅從用戶被允許存取的存儲池選擇;-希望的可用性,如始終可用(數(shù)據(jù)關(guān)鍵且必須未曾被接受)、通??捎玫?;-虛擬目標器的WWUI;-備份池;-用戶鑒別數(shù)據(jù);-鏡像成員的數(shù)量;-鏡像成員的位置(如本地或遠程)。
在本發(fā)明的其它實施例中,也可選擇不同的、另外的或較少的特征。
之后,開關(guān)分析所選池的可用資源以確定是否可形成虛擬目標器,具體地,開關(guān)確定滿足虛擬目標器的大小要求的多個LU(或LU的部分)是否可用。如果是,則用一個或多個盤區(qū)創(chuàng)建虛擬目標器,且虛擬目標器對象被形成在確定虛擬目標器、其盤區(qū)及其特征的SCC數(shù)據(jù)庫中。用戶為多個虛擬目標器選擇的特征的例子可在2002年1月18日申請的、題為“存儲系統(tǒng)中的虛擬化”的美國專利申請10/051,396中找到。
提供啟動器連接當(dāng)服務(wù)器或其它啟動器連到開關(guān)且啟動器支持iSNS或SLP時,在一實施例中,啟動器將其向開關(guān)登記,使得啟動器對象保存在SCC數(shù)據(jù)庫中。然而,在其它實施例中,開關(guān)將包括存取提供功能,其創(chuàng)建、更新或刪除啟動器連接。
在創(chuàng)建存取連接-開關(guān)和啟動器(如服務(wù)器)之間的連接時,用戶將指定多個參數(shù)如服務(wù)器WWUI、連接詳細資料如協(xié)議(如GigE或光纖通路)、獨占或共享、源及目的地IP地址、帶寬的最小和最大百分比、服務(wù)器要求的連接數(shù)、存取安全性、只讀或讀/寫、及VPN使能等。
用戶指定的一些或所有信息保存在存于SCC數(shù)據(jù)庫中的啟動器對象中。當(dāng)消除連接時,啟動器對象將被刪除。
之后,開關(guān)、管理站或其它網(wǎng)絡(luò)管理為特定連接創(chuàng)建存儲池,指明可用于啟動器的LU以形成虛擬目標器。
用戶域與物理設(shè)備類似,虛擬目標器可被分配給僅可由那些具有指定特征的虛擬目標器存取的池。因此,與物理設(shè)備類似,虛擬目標器可被分配給用戶專用域(在此有時稱為用戶域)、默認域(任何人均可存取)、或非域。在一實施例中,每一域?qū)⒂蒘CC數(shù)據(jù)庫中的對象確定,所述數(shù)據(jù)庫包括分配給該域的所有虛擬目標器的列表。對于虛擬目標器,非域可包括備用虛擬目標器、鏡像的虛擬目標器的成員、或來自另一開關(guān)的遠程虛擬目標器。實際上,虛擬目標器非域是某些類型的虛擬目標器的停放地。為使描述簡單,當(dāng)提及虛擬目標器時,池在此將被稱為“域”,但當(dāng)提及物理設(shè)備時,池將繼續(xù)被稱為“池”。然而,應(yīng)當(dāng)理解的是,概念上地“池”和“域”實質(zhì)上相同。
一旦啟動器連接被提供,如上所述,提供滿足啟動器要求的虛擬目標器并放在啟動器可存取的池中,或使得先前提供的虛擬目標器可存取啟動器,例如通過將虛擬目標器從另一域如非域或默認域移到啟動器的用戶域?qū)崿F(xiàn)。(應(yīng)注意,或虛擬目標器或啟動器連接可被首先提供-對它們以特定順序進行提供沒有要求)。之后,一旦啟動器請求存取虛擬目標器如通過發(fā)送讀或?qū)懻埱?,從SCC數(shù)據(jù)庫讀出虛擬目標器對象和啟動器對象,且關(guān)于啟動器連接和虛擬目標器的信息被傳給相應(yīng)的線路卡以用于處理請求。
圖5a-5c示出了在存儲區(qū)域網(wǎng)絡(luò)中提供虛擬目標器的一個例子。圖5a-5c的系統(tǒng)包括三個物理設(shè)備1061、1062和1063,總共具有六個LU-LU1、LU2、LU3、LU4、LU5、LU6。在圖5a中,每一物理設(shè)備連到開關(guān)并放置在可由兩個啟動器X和Y存取的池中,即“X-Y用戶池”。
如果啟動器X和啟動器Y中的每一個均要求一個虛擬目標器,則在一實施例中,提供LU以形成虛擬目標器VT1和VT2,其中VT1包括盤區(qū)LU1-3,VT2包括盤區(qū)LU4-6,如圖5b所示。VT1被放置在服務(wù)器X用戶域中,VT2放在服務(wù)器Y用戶域中。啟動器X將可以使用VT1,但不能使用VT2;同理,啟動器Y可使用VT2,但不可使用VT1。
例如,如果啟動器Y要求具有所有6個LU的鏡像虛擬目標器M,則VT1和VT2可被生成為虛擬目標器M的組成部分。VT1和VT2可被放在開關(guān)的非域中(物理目標器不可由用戶直接訪問的域),同時M可被使得可由Y存取,如圖2c所示。作為M的組成部分,VT1和VT2將不可被單獨存取。VT1由LU1-3組成(物理設(shè)備1061),VT2由LU4-6組成(物理設(shè)備1062和1063)。當(dāng)接收到向虛擬目標器M寫數(shù)據(jù)的請求時,開關(guān)104將發(fā)送輸入數(shù)據(jù)給VT1(物理設(shè)備1061)和VT2(物理設(shè)備1062和/或1063),因而在至少兩個物理位置保存數(shù)據(jù)。
對象如上所述,每一虛擬目標器、每一啟動器連接、和每一物理設(shè)備均用包括在相應(yīng)實體的對象中的信息在SCC數(shù)據(jù)庫中進行標識。每一虛擬目標器對象和物理目標器對象將包括包含其的盤區(qū)或LU的列表。在本發(fā)明的一實施例中,虛擬目標器對象的例子包括下述信息-實體類型-實體標識符-管理IP地址
-時間戳和標志-端口-域信息-SCN位圖-容量及查詢信息-盤區(qū)數(shù)量-盤區(qū)列表-盤區(qū)定位器-虛擬方式頁-服務(wù)質(zhì)量政策(如表4的前三項)-統(tǒng)計—使用、錯誤、及性能數(shù)據(jù)-SLA標識符物理目標器(或LU)對象可包括類似的信息。關(guān)于VTD信息的更多信息可在2002年1月18日申請的、題為“存儲系統(tǒng)中的虛擬化”的美國專利申請10/051,396中找到。
虛擬化對不同信息包類型的示例性的輸入和輸出進程進行描述僅是為了闡述目的。應(yīng)該理解的是,根據(jù)不同的實施方式,可使用很多用于不同信息包類型的進程。在一實施例中,在輸入的信息包被PPU分類為數(shù)據(jù)或控制流量之后,PPU可在沒有數(shù)據(jù)緩沖的情況下執(zhí)行數(shù)據(jù)包的虛擬化。對于每一接收到的信息包,PPU確定信息包的類型(如指令、R2T/XFER_RDY、寫數(shù)據(jù)、讀數(shù)據(jù)、響應(yīng)、任務(wù)管理/異常中止),其后執(zhí)行或輸入(信息包進入開關(guān)的情況)或輸出(信息包離開開關(guān)的情況)算法以將虛擬目標器變換為物理目標器,反之亦然。因而,虛擬化功能分布在輸入和輸出端口之間。為還使能網(wǎng)速處理,虛擬描述符被與CAM結(jié)合使用以將請求位置映射到存取位置。此外,對于每一信息包,可以有特殊的考慮。例如,信息包去往的虛擬目標器可被間隔幾個不連續(xù)的盤區(qū),可被鏡像,或者同時進行前述兩個操作。
指令信息包—輸入為開始去往或來自虛擬目標器的傳送任務(wù),由iSCSI或FC啟動器分別在iSCSI PDU或FCP IU中發(fā)送SCSI指令。參考圖6,在步驟502,當(dāng)在PPU接收到這樣的信息包時(在分類之后),接下來在步驟504,PPU CAM被檢查以確定是否存在有效的VTD ID,在iSCSI啟動器的情況下其使用TCP控制塊索引和邏輯單元號(LUN),在FC啟動器的情況下其使用S_ID(幀源的標識)和LUN。在每種情況下,LUN均可在各自的iSCSI PDU或FCP IU中找到。在步驟506,如果沒有發(fā)現(xiàn)有效的VTD ID,則響應(yīng)信息包被發(fā)送回啟動器。在步驟508,如果發(fā)現(xiàn)有效的VTD,則檢查無效參數(shù)。如果存在無效參數(shù),則在步驟506,響應(yīng)信息包被發(fā)送回到iSCSI或FC啟動器。
步驟510,任務(wù)索引(Task Index)連同輸入任務(wù)控制塊(ITCB)一起分配。任務(wù)索引指向或確定ITCB。ITCB保存FlowID(從VTD獲得)、VTD ID、指令序號或CmdSN(來自iSCSI信息包本身)、以及啟動器(始發(fā)者)標識(如在iSCSI PDU中發(fā)送的initiator_task_tag或FCP幀首部中的OX_ID)。OX_ID是交換機的始發(fā)者(啟動器)標識。ITCB保存在PPU SRAM中。當(dāng)然,在任何給定時間可以有許多進行中的指令,這樣,PPU可在任何特定時間保存多個ITCB。每一ITCB將由其各自的任務(wù)索引引用。
步驟512,VTD跟蹤到特定虛擬目標器的未完成指令的數(shù)量,這樣,當(dāng)建立ITCB時,其遞增未完成指令的數(shù)量。在一些實施例中,VTD建立任一特定虛擬目標器允許的未完成指令的最大數(shù)。步驟514,F(xiàn)lowID、VTD ID和任務(wù)索引均被復(fù)制到本地首部。FlowID告訴流量管理器目的地線路卡和端口。之后,任務(wù)索引將由輸出端口返回以確定特定的信息包任務(wù)。最后,步驟516,信息包被發(fā)送給流量管理器繼而路由交換機,從而其最終到達輸出PPU。
當(dāng)虛擬目標器由多個盤區(qū)組成時,有多個FlowID標識在VTD中,每一個用于一個盤區(qū)。PPU檢查信息包的塊地址并選擇正確的FlowID。例如,如果虛擬目標器具有兩個1Gb盤區(qū),及指令的塊地址在第二盤區(qū)中,則PPU選擇第二盤區(qū)的FlowID。換言之,F(xiàn)lowID確定目的地/輸出端口。如果讀指令跨盤區(qū)邊界,意為指令指明開始塊地址在第一盤區(qū)中,結(jié)束塊地址在第二盤區(qū)中,則在從第一盤區(qū)讀適當(dāng)?shù)臄?shù)據(jù)之后,PPU向第二盤區(qū)重復(fù)該指令以讀剩余的塊。對于跨盤區(qū)邊界的寫指令,PPU將指令復(fù)制給兩個盤區(qū)并管理寫數(shù)據(jù)的順序。當(dāng)讀指令跨盤區(qū)邊界時,將有兩個讀指令給兩個盤區(qū)。第二讀指令僅在完成第一讀指令之后發(fā)送以確保數(shù)據(jù)循序返回給啟動器。
指令信息包—輸出參考圖7,步驟602,在指令PDU或IU已通過交換結(jié)構(gòu)之后,其將到達PPU,去往輸出端口。步驟604,PPU試圖確定信息包所去往的物理設(shè)備。為此,來自本地首部的VTD ID被用于搜索PTD ID(物理目標器描述符標識符)的PPU CAM。VTD ID與同特定輸出PPU相關(guān)的特定PTD ID有關(guān)系并對其索引。與VTD類似,PTD保存在PPU SRAM中,且還包含類似于在VTD中發(fā)現(xiàn)的信息。如果搜索不成功,則假設(shè)這是由CPU直接發(fā)送的指令信息包,不需要PPU進行另外的處理,從而使得PPU根據(jù)本地首部中的FlowID將該信息包傳給適當(dāng)?shù)妮敵龆丝?。如果搜索成功,PTD ID將確定虛擬目標器將被映射到其的物理目標器(包括盤區(qū)),且其與當(dāng)前處理該信息包的特定輸出線路卡通信。
之后,步驟606,PPU分配任務(wù)索引和輸出任務(wù)控制塊(ETCB)。在實施例中,用于輸出的任務(wù)索引與用于輸入的相同。任務(wù)索引還確定ETCB。此外,ETCB還保存指令所需的任何其它控制信息,包括iSCSIPDU的CmdSN或FCP IU的交換序列。
步驟608,使用PTD的內(nèi)容,PPU將來自虛擬目標器的SCSI塊地址轉(zhuǎn)換為物理設(shè)備的塊地址。將虛擬目標器的塊地址增加到盤區(qū)的開始塊偏移量可提供這種轉(zhuǎn)換。例如,如果尋求存取的虛擬目標器塊為1990,且對應(yīng)第一盤區(qū)的開始偏移量為3000,則將被存取的盤區(qū)的塊地址為4990。之后,步驟610,PPU產(chǎn)生適當(dāng)?shù)膇SCSI CmdSN或FCP序列ID,并將它們放在iSCSI PDU或FCP幀首部中。如果需要(在一些實施例中,在輸入PPU從FCP首部讀必要的信息之后,其將刪除那些信息,盡管其它實施例將其完整的留下并在該步驟僅更新或改變必要的字段)或為了發(fā)送給iSCSI目標器的信息包,PPU可構(gòu)建FCP幀首部,在步驟612,TCP控制塊索引被從PTD復(fù)制到本地首部中。此外,PPU提供iSCSI或FCP首部需要的任何標記或其它變量。之后,步驟614,完成的iSCSI PDU或FCP幀被發(fā)送給PACE,其繼而去除本地首部(步驟616)并將信息包傳給適當(dāng)?shù)亩丝?,步驟618。
R2T或XFER RDY—輸入?yún)⒖紙D8,步驟702,在指令已按如上所述發(fā)送給目標器存儲設(shè)備之后,指令是寫指令,當(dāng)存儲設(shè)備準備好接受寫數(shù)據(jù)時,將從存儲設(shè)備接收R2T PDU或XFER_RDY IU。步驟704,PPU通過使用信息包內(nèi)的initiator_task_tag或OX_ID確定相應(yīng)的ETCB。在一些實施例中,信息包的initiator_task_tag或OX_ID與任務(wù)索引一樣,其確定ETCB。如果由于無效的initiator_task_tag或OX_ID而使PPU不能確定有效的ETCB,則丟棄信息包。否則,一旦ETCB被確定,PPU從ETCB取回輸入任務(wù)索引(如果不同于輸出任務(wù)索引)和VTD ID,步驟706。PPU還從PTD取回FlowID,其也由PTD ID在ETCB中確定。FlowID向流量管理器指示原始啟動器(輸入)端口的線路卡。FlowID、VTD ID和任務(wù)索引被復(fù)制到信息包的本地首部,步驟708。最后,在步驟710,信息包被發(fā)送給流量管理器和交換結(jié)構(gòu)。
R2T或XFER RDY—輸出參考圖9,在R2T或XFER_RDY信息包從交換結(jié)構(gòu)出現(xiàn)之后,其由PPU在其被傳回啟動器(發(fā)起特定任務(wù)的原始指令的設(shè)備)的途中接收,步驟802。步驟804,任務(wù)索引確定對應(yīng)于PPU的ITCB,從該ITCB可獲得原始initiator_task_tag和VTD ID。步驟806,R2T/XFER_RDY希望的數(shù)據(jù)傳送長度或BURST_LEN字段保存在ITCB中。步驟808,本地首部被FCP D_ID或TCP連接的TCP控制塊索引更新。應(yīng)注意,所保存的來自原始信息包的S_ID,其保存在ITCB中,變?yōu)镈_ID。步驟810,如果需要,構(gòu)建FCP幀首部或更新其字段。步驟812,目的地端口號在本地首部中指明,其代替FlowID并與initiator_task_tag一起放在SCSI PDU中,或?qū)τ贔C連接,RX_ID和OX_ID放在FCP幀中。RX_ID字段是交換機的應(yīng)答者(目標器)標識。PPU還放置需要放在PDU或FCP首部中的任何其它標記或變量。步驟814,信息包被轉(zhuǎn)發(fā)給PACE,其從本地首部確定輸出端口。之后,步驟816,本地首部被去除,并在步驟818轉(zhuǎn)發(fā)給適當(dāng)?shù)亩丝谶M行傳送。
如果指令被拆分到兩個或更多個盤區(qū),如指令在一盤區(qū)開始并在另一盤區(qū)結(jié)束,則PPU必須保存第二盤區(qū)的R2T或XFER_RDY,直到第一盤區(qū)的數(shù)據(jù)傳送結(jié)束為止,因而確保從啟動器連續(xù)傳送數(shù)據(jù)。此外,第二盤區(qū)的R2T或XFER_RDY的數(shù)據(jù)偏移量將需要進行修改,其通過增加傳送給第一盤區(qū)的數(shù)據(jù)量實現(xiàn)。
寫數(shù)據(jù)包—輸入在啟動器接收R2T或XFER_RDY信息包之后,其返回寫入數(shù)據(jù)信息包。參考圖10,在步驟902,當(dāng)從啟動器接收到寫入數(shù)據(jù)iSCSI PDU或FC IU時,在步驟904,信息包屬于其的ITCB必須被確定。通常,ITCB可使用RX_ID或target_task_tag進行確定,在一些實施例中,其與任務(wù)索引相同。SPU還確定所接收的信息包狀況良好。然而,在一些情況下,啟動器將傳送主動提供的數(shù)據(jù)在接收R2T或XFER_RDY之前發(fā)送的數(shù)據(jù)。在這種情況下,PPU必須通過搜索特定虛擬目標器的所有未完成任務(wù)而發(fā)現(xiàn)ITCB。但如果未發(fā)現(xiàn)ITCB,則丟棄信息包。在步驟906,如果發(fā)現(xiàn)ITCB,將被傳送的總數(shù)據(jù)量在ITCB中更新。步驟908,F(xiàn)lowID和任務(wù)索引被添加到信息包的本地首部。之后,在步驟910,信息包被轉(zhuǎn)發(fā)給流量管理器并最終轉(zhuǎn)發(fā)給交換結(jié)構(gòu)。
寫數(shù)據(jù)包—輸出參考圖11,在步驟1002,當(dāng)從交換結(jié)構(gòu)(經(jīng)流量管理器)接收到寫入數(shù)據(jù)信息包時,在步驟1004需要確定信息包的ETCB。通常,ETCB可使用本地首部中的任務(wù)索引進行確定。步驟1006,一旦發(fā)現(xiàn)ETCB,通過使用ETCB內(nèi)的信息,PPU產(chǎn)生適當(dāng)?shù)膇SCSI DataSN或FCP序列ID,以及PDU或FCP幀首部的任何其它標記或變量如數(shù)據(jù)偏移量。在步驟1008,本地首部用來自PTD的TCP控制塊索引或FCP D_ID更新。端口號也被添加到本地首部。在步驟1010,完成的iSCSI PDU或FCP幀被發(fā)送給PACE,在步驟1012,其去掉本地首部并在步驟1014將信息包轉(zhuǎn)發(fā)給適當(dāng)?shù)亩丝凇?br> 初始鏡像同步鏡像的虛擬目標器(或鏡像的VLU)將數(shù)據(jù)保存在兩個或多個物理位置以提高數(shù)據(jù)存儲的可靠性。在開始提供鏡像的虛擬目標器時,保存在虛擬目標器的每一成員中的數(shù)據(jù)必須被同步。因而,可執(zhí)行初始鏡像同步操作以在鏡像的虛擬目標器的每一物理目標器成員之間同步數(shù)據(jù)。在一實施例中,可通過將一目標器成員建立為主(源)目標器而同步數(shù)據(jù)。之后,主目標器的數(shù)據(jù)可被寫入鏡像的虛擬目標器的其它目標器成員中的每一個。在主源目標器的數(shù)據(jù)被寫入每一目的地目標器之后,建立虛擬目標器的初始狀態(tài),且虛擬目標器可以說成將被鏡像的目標器,每一目標器成員保存相同的鏡像虛擬目標器的數(shù)據(jù)集。
盡管本說明書經(jīng)常提及初始鏡像同步在初始提供鏡像的虛擬目標器時執(zhí)行,但不必須如此。初始鏡像同步可在任何時間執(zhí)行。例如,在確定鏡像的虛擬目標器中的一個或多個目標器因某些原因已變得不同步時,可執(zhí)行初始鏡像同步。在另一例子中,可在需要時執(zhí)行初始鏡像同步以確保鏡像的虛擬目標器的同步。
根據(jù)一實施例,鏡像的虛擬目標器的初始鏡像同步將結(jié)合圖12和圖13進行描述。圖12為根據(jù)一實施例的初始鏡像同步過程的流程圖,圖13為簡化的框圖,其包括可用于同步鏡像的虛擬目標器的成員的存儲開關(guān)1300和指令流。為了清晰描述,存儲開關(guān)1300的許多構(gòu)件已從圖13中省略,這些構(gòu)件的運行在此之前已進行描述。根據(jù)圖13所示的實施例,存儲開關(guān)可包括中央處理單元1302。在一實施例中,CPU1302可包括復(fù)制服務(wù)管理器(CSM)1304以管理初始鏡像同步。在各個實施例中,CSM1304可包括一個或多個實質(zhì)上可執(zhí)行如在此所述的功能的軟件模塊、組成部分、或指令集。CSM1304可包括專用硬件和/或包括由保存在一個或多個存儲設(shè)備如非易失性存儲器(如閃存、EEPROM等)或其它存儲器設(shè)備上的軟件編程的硬件。
在圖12的步驟1202,例如,虛擬目標器的初始鏡像同步響應(yīng)于用戶如先前所述提供鏡像的虛擬目標器而開始。例如,用戶可提供如圖13中所示的虛擬邏輯單元1306,其具有物理目標器M0和M1作為成員。物理目標器M0和M1可以是一個或多個物理設(shè)備的物理LU。作為虛擬目標器的成員在此給出兩個物理目標器僅為示例性的目的。根據(jù)實施例,虛擬目標器可包括任何數(shù)量的物理目標器成員。
為開始對應(yīng)于所提供VLU1306的物理目標器的初始同步,在步驟1204,創(chuàng)建內(nèi)部虛擬目標器(IVT)。例如,CSM1304可創(chuàng)建IVT1308,其保存在存儲器1310中并可由PPU1312存取。IVT1308可被提供為包括第一內(nèi)部虛擬邏輯單元(IVLU),其對應(yīng)于被指定為操作源的鏡像目標器1306的成員。一個或多個第二IVLU可被提供,其對應(yīng)于鏡像目標器1306的其余成員。例如,在圖13給出的例子中,源IVLU(0)1320提供給源目標器M0,目的地IVLU(1)提供給目的地目標器M1。在一實施例中,如果VLU1306包括3個或更多個成員目標器,可為鏡像目標器的每一對應(yīng)目標器(目的地)成員提供單獨的IVLU。在另一實施例中,每一目的地目標器可被提供為同一IVLU的個別成員。在一實施例中,內(nèi)部虛擬邏輯單元可以是為初始鏡像同步操作創(chuàng)建或提供的臨時對象。在同步操作結(jié)束后,IVLU可被丟棄。CPU1302和CSM1304在同步期間可用作內(nèi)部啟動器以向IVLU(0)1320和IVLU(1)1322提供讀和寫指令。
在同步物理目標器之前,IVT的一個成員被指定為主成員,其成為源目標器,其數(shù)據(jù)將被寫入VLU的每一其余成員。在一實施例中,用戶提供VLU1306可指定VLU的哪一物理目標器是主成員。在其它實施例中,存儲開關(guān)可指定成員之一作為默認成員。
根據(jù)不同的實施例,IVT可在存儲開關(guān)的任何PPU處提供。在圖13給出的例子中,在不與初始鏡像同步操作關(guān)聯(lián)的PPU1312提供IVT1308。PPU1312不與連到物理目標器M0或M1的端口關(guān)聯(lián)。此外,PPU A12不與初始提供VLU1306的端口關(guān)聯(lián)。在一實施例中,CSM1304包括確定提供IVT的最佳PPU的算法。在一實施例中,該算法最好在與VLU的主成員關(guān)聯(lián)的PPU處提供IVT。如果主成員的PPU正處理預(yù)定數(shù)量或超過預(yù)定數(shù)量的任務(wù),IVT可被分配給另一PPU(例如,其余虛擬目標器成員之一的PPU或與主成員關(guān)聯(lián)的PPU的線路卡上的另一PPU)。在另一實施例中,CSM1304選擇存儲開關(guān)的正處理最少任務(wù)數(shù)的那一PPU。
在提供IVT1308之后,在步驟1206,CSM1304向鏡像的虛擬邏輯單元的目的地目標器發(fā)出寫指令。在圖13的例子中,VLU1306的鏡像成員M0為主成員。因而,寫指令被首先發(fā)給目的地目標器M1。寫指令的指令流在圖13中被標為1。如圖所示,CSM1304首先將寫指令發(fā)給IVLU(1)1322,其被保存在SRAM1310中并與PPU1312關(guān)聯(lián)。如果有多個目的地目標器,CSM1304可向為每一目的地目標器提供的各個IVLU發(fā)出多個寫指令,或向為目的地目標器提供的一個或多個IVLU的各個成員發(fā)出一個或多個寫指令。寫指令在輸入PPU13121接收。PPU1312可從為IVLU(1)1322保存的VTD對象確定目的地目標器M1的位置(如線路卡和端口位置)。在確定M1的位置之后,寫指令通過交換結(jié)構(gòu)轉(zhuǎn)發(fā)給PPU1314(與目的地目標器M1相關(guān)聯(lián)的PPU)。例如,PPU1312可更新寫指令的首部信息以指明適當(dāng)?shù)哪康牡鼐€路卡和端口。如果VLU1306包括兩個以上的鏡像成員,PPU1312確定鏡像的VLU的每一目的地目標器的位置并將寫指令轉(zhuǎn)發(fā)給那些目的地目標器中的每一個。
寫指令首先從PPU1312的入口發(fā)送給交換結(jié)構(gòu)。為了清晰起見,組件如流量管理器和接口均從圖13中省略。寫指令通過交換結(jié)構(gòu),在那里其被發(fā)送給PPU1314。寫指令在輸出PPU13142接收并轉(zhuǎn)發(fā)給PACE1316。PACE1316將指令轉(zhuǎn)發(fā)給目標器M1,其將確定對于寫指令是否有傳送就緒信號可用。如果目標器M1具有可用傳送就緒信號,在步驟1208,傳送就緒信號(如XFER_RDY信息單元或R2T信息包單元)被返回給PACE1316。傳送就緒信號的指令流在圖13所示的指令流中被標為2。傳送就緒信號從PACE1316發(fā)送給PPU13141并進入交換結(jié)構(gòu),在那里其被送回到PPU13122。PPU13122將傳送就緒信號返回給CSM1304。
CSM1304在向源目標器發(fā)出讀指令之前將等待以從每一目的地目標器接收傳送就緒信號。通過首先向目的地目標器發(fā)出寫指令,根據(jù)一實施例,存儲開關(guān)在接收數(shù)據(jù)之前可建立將被同步的數(shù)據(jù)的內(nèi)部流。這樣,可確保從源到目的地以線路速度成功發(fā)送數(shù)據(jù),而沒有緩沖。存儲開關(guān)在向源目標器發(fā)出讀指令之前等待從每一目的地目標器接收傳送就緒信號,使得每一目的地目標器一旦被讀即可用于從源目標器接收數(shù)據(jù)。這樣,在等待一個或多個目的地目標器返回傳送就緒信號的同時,存儲開關(guān)將不必緩存從源目標器讀的數(shù)據(jù)。
在從每一目的地目標器接收傳送就緒信號之后,在步驟1210,CSM1304向源目標器發(fā)出讀指令。讀指令在圖13的指令流中被標為3,其首先發(fā)送給PPU13121。PPU13121將讀指令轉(zhuǎn)發(fā)給交換結(jié)構(gòu),在那里其將被發(fā)送給連到源目標器M0的PPU1318。在步驟1212,源目標器M0從PACE1320接收讀指令并返回所讀的數(shù)據(jù)。在一實施例中,在步驟1212,根據(jù)在步驟1208由目的地目標器返回的傳送就緒信號指明的最小數(shù)據(jù)大小(如突發(fā)長度或所需數(shù)據(jù)長度字段),返回一個或多個讀出數(shù)據(jù)包。
讀出數(shù)據(jù)在圖13所示的指令流中被標為4,其從源目標器M0通過PACE1320和PPU13181轉(zhuǎn)發(fā)給交換結(jié)構(gòu)。之后,讀出數(shù)據(jù)被從交換結(jié)構(gòu)發(fā)送給PPU1312。在輸出PPU13122接收讀出數(shù)據(jù)。在步驟1214,PPU13122將讀出數(shù)據(jù)包轉(zhuǎn)換為寫數(shù)據(jù)包。在一實施例中,PPU1312更新信息包的本地首部信息以指明其是寫數(shù)據(jù)包。在一實施例中,當(dāng)從源目標器M0接收到讀出的信息包時,PPU1318將從所分配的ETCB取回VTD ID、任務(wù)索引、及FlowID并將它們復(fù)制到本地首部中。當(dāng)在PPU13122接收到讀出數(shù)據(jù)時,引用分配給寫請求的ITCB以用對應(yīng)于所分配ITCB的值更新讀出數(shù)據(jù)首部信息。例如,在FCP-SCSI中,讀出的幀首部字段包括OX_ID、RX_ID、SEQ_ID、SEQ_CNT、和PARAM被轉(zhuǎn)換為對應(yīng)于寫指令I(lǐng)TCB和數(shù)據(jù)流的值。
在將讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)之后,在步驟1216,PPU13122將寫數(shù)據(jù)轉(zhuǎn)發(fā)給目的地目標器。寫數(shù)據(jù),在圖13的指令流中被標為5,被首先從PPU13122發(fā)送給PACE1322。PACE1322能夠?qū)妮敵鯬PU13122接收到的數(shù)據(jù)發(fā)送給輸入PPU13121。這使PPU1312能夠?qū)憯?shù)據(jù)轉(zhuǎn)發(fā)給交換結(jié)構(gòu),在那里其將被發(fā)送給與目的地目標器相關(guān)聯(lián)的PPU。PPU1314從交換結(jié)構(gòu)接收寫數(shù)據(jù)并將該數(shù)據(jù)經(jīng)PACE1316轉(zhuǎn)發(fā)給目的地目標器M1。
本領(lǐng)域一般技術(shù)人員應(yīng)該意識到的是,如果在步驟1208從目的地目標器返回傳送就緒信號,其指明小于發(fā)給目的地目標器的寫指令的整個大小的所需數(shù)據(jù)長度或突發(fā)字段長度,則步驟1210-1216可被重復(fù),直到寫指令的所有數(shù)據(jù)被提供給目的地目標器為止。根據(jù)從目的地目標器接收到的傳送就緒信號中指明的突發(fā)大小,CSM1304可向源目標器發(fā)出多個讀指令,直到滿足寫指令為止。另外,多個寫指令可被發(fā)給目的地目標器以同步整個VLU。例如,發(fā)出的每一寫指令可以是有限的傳送大小如128K。因而,為同步一個VLU,步驟1206-1216可重復(fù)許多次。
如先前所述,在步驟1204,IVT可在存儲開關(guān)的任何PPU提供以執(zhí)行初始鏡像同步。圖14為包括存儲開關(guān)1400和描繪指令流的簡化框圖,所述指令流為用在與主目標器成員(源目標器)相關(guān)聯(lián)的PPU提供的IVT實施的指令流。為開始同步鏡像的目標器成員的數(shù)據(jù),CSM1404首先向目的地目標器M1發(fā)出寫指令,在圖14的指令流中被標為1。寫指令被首先提供給與源目標器M0關(guān)聯(lián)的輸入PPU14121。PPU14121將指令轉(zhuǎn)發(fā)給交換結(jié)構(gòu),在那里其通過輸出PPU14142和PACE1416發(fā)送給目的地目標器M1。當(dāng)目的地目標器M1可用于接收寫數(shù)據(jù)時,其將向存儲開關(guān)1400返回傳送就緒信號。傳送就緒信號,在圖14的指令流中被標為2,通過輸出PPU14122從PPU14141發(fā)送回CSM1404。當(dāng)傳送就緒信號已從鏡像的目標器的每一目的地目標器返回時,CSM1404向源成員發(fā)出讀指令。CSM1404提供讀指令給輸入PPU14121,其在圖14的指令流中標為3,輸入PPU14121將指令轉(zhuǎn)發(fā)給交換結(jié)構(gòu)。讀指令的目的地(其可在復(fù)制到讀指令的本地首部的FlowID中指明)將指示流量管理器向PPU1412與其關(guān)聯(lián)的線路卡和端口發(fā)送指令。之后,讀指令將從交換結(jié)構(gòu)通過輸出PPU14122發(fā)送給源目標器M0。之后,源目標器M0將向PACE1422返回一個或多個讀出數(shù)據(jù)包,在圖14的指令流中標為4,PACE將數(shù)據(jù)包轉(zhuǎn)發(fā)給輸入PPU14121。讀出數(shù)據(jù)通過交換結(jié)構(gòu)傳過輸入PPU14121到達輸出PPU14122。在輸出PPU14122,讀出數(shù)據(jù)被轉(zhuǎn)換為寫數(shù)據(jù),在圖14的指令流中標為5,之后其被轉(zhuǎn)回PACE1422。如先前所述,PACE1422可向PPU14121返回寫數(shù)據(jù)包,在那里其被轉(zhuǎn)發(fā)給交換結(jié)構(gòu),并通過輸出PPU14142和PACE1416而到目的地目標器成員M1。
鏡像同步驗證除同步鏡像的虛擬目標器的成員之外,根據(jù)多個實施例,存儲開關(guān)可驗證鏡像的虛擬目標器的成員均已被同步。為驗證鏡像的虛擬目標器的成員已被同步,讀一成員目標器的數(shù)據(jù)并將其與其它成員目標器的數(shù)據(jù)比較。根據(jù)一實施例,存儲開關(guān)可以線路速度驗證鏡像的虛擬目標器的成員已被同步,而不用緩存從源目標器讀出并與其它成員目標器的數(shù)據(jù)進行比較的數(shù)據(jù)。
圖15所示為根據(jù)一實施例用于驗證鏡像的虛擬目標器的成員已被同步的流程圖,圖16所示為包括存儲開關(guān)1500和驗證鏡像的虛擬目標器已被同步的指令流的簡化框圖。虛擬目標器1606包括物理目標器M0和M1作為成員,其同步將被驗證。在步驟1502,響應(yīng)于從管理站接收到的用戶請求開始驗證操作以驗證虛擬目標器1606的成員已被同步。在一實施例中,CPU1602包括驗證服務(wù)管理器(VSM)1604以管理鏡像目標器驗證。在步驟1504,VSM1604首先提供IVT,其包括對應(yīng)于物理目標器M0的IVLU(0)1620和對應(yīng)于物理目標器M1的IVLU(1)1622。VSM1604將M0指定為主成員(如響應(yīng)于開始驗證時接收到的用戶指定)。與初始鏡像同步一樣,IVT可在存儲開關(guān)1600內(nèi)的任何PPU處提供。在圖16的例子中,IVT1608在與源目標器M0相關(guān)聯(lián)的PPU處提供。如果鏡像的目標器包括3個或更多個目的地目標器,則可提供一個包括每一目的地目標器作為成員的IVLU或多個具有一個或多個目的地目標器作為成員的IVLU。在提供包括多個目標器作為成員的單一IVLU的實施例中,驗證操作可僅返回成員目標器之一未同步的狀態(tài),而不用確定特定的目標器。在這樣的實施例中,不成功的同步驗證可通過向單一IVLU寫正確的數(shù)據(jù)而進行糾正,其將使得數(shù)據(jù)被寫入每一目的地目標器。
在提供IVT1608之后,在步驟1506,VSM1604向目的地目標器發(fā)出寫或驗證指令,在圖16的指令流中標為1。寫或驗證指令可如先前結(jié)合圖14所述的那樣進行發(fā)送。在步驟1508,如果目標器M0具有可用傳送就緒信號,在圖16的指令流中標為2,傳送就緒信號將被返回給VSM1604。傳送就緒信號可指明目的地目標器可接收的最大突發(fā)或數(shù)據(jù)長度。在從每一目的地目標器接收傳送就緒信號之后,在步驟1510,VSM1604向主目標器成員發(fā)出讀指令,在圖16的指令流中標為3。如果讀數(shù)據(jù)將相對多個目標器進行驗證,讀指令可指明從每一成員目標器接收到的最小突發(fā)或數(shù)據(jù)長度。響應(yīng)于讀指令,在步驟1512,目標器M0將向PPU1612返回一個或多個數(shù)據(jù)包。讀出數(shù)據(jù)在輸入PPU16121接收并發(fā)送給交換結(jié)構(gòu),在那里其被發(fā)送回輸出PPU16122。在步驟1514,在輸出PPU16122,讀出數(shù)據(jù)被轉(zhuǎn)換以驗證數(shù)據(jù)。例如,每一讀出數(shù)據(jù)包的首部信息可被更新以指明數(shù)據(jù)是驗證數(shù)據(jù)(如首部信息可被改為具有字節(jié)檢驗請求的SCSI驗證)并指明被驗證的成員目標器的目的地標識。當(dāng)在PPU16122接收到讀出數(shù)據(jù)時,引用分配給寫請求的ITCB以用對應(yīng)于所分配ITCB的值更新讀出數(shù)據(jù)首部信息。例如,在FCP-SCSI中,讀出的幀首部字段包括OX_ID、RX_ID、SEQ_ID、SEQ_CNT、和PARAM被轉(zhuǎn)換為對應(yīng)于寫或驗證指令I(lǐng)TCB和數(shù)據(jù)流的值。在一實施例中,PPU16122以線路速度將讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù),而不用緩存數(shù)據(jù)。在將讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)之后,驗證數(shù)據(jù)被發(fā)送給PACE1622并發(fā)送回PPU16121。在步驟1516,驗證數(shù)據(jù)包可被發(fā)送給交換結(jié)構(gòu)并發(fā)送給與目的地目標器M1關(guān)聯(lián)的16141。之后,驗證數(shù)據(jù)被提供給目的地目標器,其將對驗證數(shù)據(jù)及其保存的數(shù)據(jù)進行比較以確定數(shù)據(jù)是否匹配,因而確定目的地目標器是否與源目標器同步。
本領(lǐng)域一般技術(shù)人員應(yīng)該意識到的是,如果在步驟1508從目的地目標器返回傳送就緒信號,其指明小于所發(fā)出驗證指令的整個大小的數(shù)據(jù)或突發(fā)字段長度,則步驟1510-1516可被重復(fù),直到驗證指令的所有數(shù)據(jù)被提供給目的地目標器進行驗證為止。根據(jù)從目的地目標器接收到的傳送就緒信號中指明的突發(fā)大小,CSM1604可向源目標器發(fā)出多個讀指令,直到滿足驗證指令為止。另外,多個驗證指令可被發(fā)給目的地目標器以驗證整個VLU的同步。例如,發(fā)出的每一驗證指令可以是有限的傳送大小如128K。因而,為驗證一個VLU,步驟1506-1516可重復(fù)許多次。
在一實施例中,線路卡CPU可執(zhí)行初始鏡像同步并將從源目標器讀的數(shù)據(jù)轉(zhuǎn)換為每一目的地目標器的寫數(shù)據(jù)。另外,線路卡CPU可執(zhí)行鏡像同步驗證并將讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)。寫指令依然被發(fā)給鏡像的VLU的目的地目標器成員以確保在讀指令發(fā)給源目標器之前每一目標器可用于接收數(shù)據(jù)。開關(guān)內(nèi)的內(nèi)部數(shù)據(jù)路徑可在向源目標器發(fā)出讀指令之前建立以避免在開關(guān)內(nèi)緩存數(shù)據(jù),同時等待目的地目標器變得可用。
例如,參考圖14的框圖(但不參考指令流),CPU1410可通過向每一目的地物理目標器提供寫指令而開始初始鏡像同步或鏡像驗證。在一實施例中,每一寫指令被直接從CPU1410發(fā)送給物理目標器,而不是通過各自的PPU發(fā)送。在另一實施例中,寫指令可被提供給如先前所述提供IVT的PPU(包括對應(yīng)于鏡像的VLU的成員的一個或多個IVLU)。在這樣的實施例中,寫指令將從提供IVT的PPU發(fā)送給每一目的地物理目標器,其分別通過與其關(guān)聯(lián)的PPU發(fā)送。在從每一物理目標器接收傳送就緒信號之后,CPU1410發(fā)給源目標器讀指令。在一實施例中,與寫指令一樣,讀指令通過提供IVT的PPU并繼而通過與源目標器相關(guān)聯(lián)的PPU發(fā)送。在另一實施例中,讀指令通過其相關(guān)聯(lián)的PACE直接發(fā)送給源目標器,而不通過提供IVT的PPU。源目標器將根據(jù)提供給其的傳送就緒信號中指明的數(shù)據(jù)傳送長度或突發(fā)長度而響應(yīng)以一個或多個數(shù)據(jù)包(其長度可以是所有目的地成員目標器指明的最小長度)。相比于結(jié)合圖13、14和15描述的過程,讀出數(shù)據(jù)將不被發(fā)送給提供IVT的PPU。而是,讀出數(shù)據(jù)被從與源目標器相關(guān)聯(lián)的PACE直接發(fā)送給CPU414。CPU414可更新讀出數(shù)據(jù)包首部信息以在執(zhí)行初始同步時將讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù),及在執(zhí)行鏡像驗證時將讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)。之后,寫或驗證數(shù)據(jù)可被提供給目的地目標器。在一實施例中,寫數(shù)據(jù)被直接發(fā)送給與目的地目標器相關(guān)的PACE并繼而發(fā)送給目的地目標器。在另一實施例中,寫或驗證數(shù)據(jù)被轉(zhuǎn)發(fā)給提供IVT的PPU并繼而經(jīng)與目的地目標器相關(guān)的PPU發(fā)送給目的地目標器。
由于寫指令被發(fā)給每一目的地目標器,CPU在向源目標器發(fā)出讀指令之前等待來自每一目的地目標器成員的傳送就緒信號,在等待目的地目標器變得可用從而接收數(shù)據(jù)時數(shù)據(jù)將不被緩存在CPU中。然而,應(yīng)該注意的是,在離開與源目標器相關(guān)的PACE時,讀和寫數(shù)據(jù)將進入去往和來自CPU1410的一般指令通路。因而,在讀數(shù)據(jù)之前CPU處理進入CPU指令流的其它任務(wù)或請求時,數(shù)據(jù)可被緩存在CPU1410。
根據(jù)一實施例的存儲開關(guān)在虛擬目標器的初始鏡像同步或鏡像同步驗證期間可接受來引自啟動設(shè)備的指令。在初始化或驗證過程期間為保持鏡像的虛擬目標器的完整性和同步性,指令可被接收和處理。根據(jù)一實施例,在鏡像同步或驗證期間鏡像的虛擬目標器可保持“在線”,使得包括忙碌和任務(wù)集滿狀態(tài)信號的失效響應(yīng)不被返回給向虛擬目標器發(fā)出指令的啟動設(shè)備。這樣,啟動器未完成指令可與初始鏡像同步或鏡像驗證一起發(fā)生,啟動器不會經(jīng)受任何服務(wù)損失。圖17示出了根據(jù)一實施例的流程圖,其在執(zhí)行虛擬目標器的初始鏡像同步或鏡像同步驗證的同時處理輸入的鏡像的虛擬目標器或VLU的指令。
在步驟1700,如先前所述那樣,開始鏡像的VLU的初始鏡像同步或驗證。在步驟1702,用于同步或驗證操作的第一寫或驗證指令被發(fā)給目的地目標器。在步驟1704,在步驟1702發(fā)出的指令還未完成時,確定是否接收到對于正被同步或驗證的虛擬目標器的寫、讀或其它指令。如果接收到指令,所接收的指令不被立即從輸入PPU發(fā)送給VLU的每一目標器成員。而是,輸入的指令可被發(fā)送給VLU的管理同步的CSM或管理驗證的VSM。在步驟1706,由CSM或VSM對輸入的指令進行排隊。在一實施例中,輸入的指令可在先進/先出緩沖器中進行排隊(如保存在本地存儲器中如圖3的SRAM418),使得它們將以接收它們的順序出隊并進行處理。如果在步驟1704確定尚未接收到指令,則處理直接進行到步驟1708。
在步驟1708,確定在步驟1702發(fā)出的指令是否已被處理。如果指令的處理沒有結(jié)束,則流程圖進行到步驟1704以確定是否已從啟動器接收到另外的給鏡像的VLU的指令。
如在步驟1708確定在步驟1702發(fā)出的指令已被處理,在處理于步驟1702發(fā)出的指令時對于鏡像的VLU的任何指令可在步驟1710出隊并在步驟1712進行處理。在一實施例中,F(xiàn)IFO的表頭被存取,在步驟1710和1712,在表頭的指令出隊并被處理。在步驟1714,確定在隊列中是否有另外的指令。如果還有指令,則另一指令可在步驟1710出隊并在步驟1712進行處理。在所有排隊的指令已被處理之后,過程進行到步驟1716,確定為執(zhí)行同步或驗證是否需要發(fā)出和處理另外的指令。如果不需要發(fā)出和處理另外的指令(如所有源目標器數(shù)據(jù)已被寫入目的地目標器或所有源目標器數(shù)據(jù)均已相對目的地目標器的數(shù)據(jù)進行驗證),過程在步驟1718結(jié)束。然而,如果需要發(fā)出和處理另外的指令以同步或驗證鏡像的目標器,操作進行到步驟1702以發(fā)出下一指令。
通過排隊輸入的、用于正被同步或驗證的鏡像的目標器的指令,在從啟動設(shè)備接收指令的同時,同步或驗證可被同時執(zhí)行。這可提供提高的性能,因為鏡像的目標器在過程期間可保持在線。啟動設(shè)備將不會經(jīng)受來自鏡像的目標器的任何服務(wù)損失。輸入的指令將在同步或驗證指令之間進行處理,使得啟動設(shè)備“看見”鏡像的目標器連續(xù)可用。
前述關(guān)于本發(fā)明的詳細描述均為說明和描述的目的而給出。在此的描述并不是窮盡的,也不是將本發(fā)明限定為在此公開的準確形式。根據(jù)上面的示教,可進行許多修改和改變。選擇所描述的實施例是為了最佳闡釋本發(fā)明的原理及其實際應(yīng)用從而使本領(lǐng)域的其它技術(shù)人員能在不同的實施情況下使用適于預(yù)期特定用途的各種修改最好地使用本發(fā)明。本發(fā)明的范圍由所附權(quán)利要求及其等價物確定。
權(quán)利要求
1.管理鏡像的目標器的方法,包括確定至少一目的地目標器接收數(shù)據(jù)的可用性;及只在至少一目的地目標器被確定可用于接收數(shù)據(jù)時向源目標器提供讀指令。
2.根據(jù)權(quán)利要求1的方法,其中所述確定可用性的步驟包括提供第一指令給所述至少一目的地目標器;及確定所述至少一目的地目標器是否返回傳送就緒信號。
3.根據(jù)權(quán)利要求2的方法,其中所述第一指令為寫指令和驗證指令中的至少之一。
4.根據(jù)權(quán)利要求1的方法,還包括提供對應(yīng)于所述至少一目的地目標器的第一內(nèi)部虛擬邏輯單元和對應(yīng)于所述源目標器的第二內(nèi)部虛擬邏輯單元。
5.根據(jù)權(quán)利要求4的方法,其中所述提供第一內(nèi)部虛擬邏輯單元的步驟包括提供對應(yīng)于第一目的地目標器的第一內(nèi)部虛擬邏輯單元;所述方法還包括提供對應(yīng)于第二目的地目標器的第三內(nèi)部虛擬邏輯單元。
6.根據(jù)權(quán)利要求4的方法,其中所述提供第一內(nèi)部虛擬邏輯單元的步驟包括提供所述第一內(nèi)部虛擬邏輯單元的對應(yīng)于第一目的地目標器的第一成員及對應(yīng)于第二目的地目標器的第二成員。
7.根據(jù)權(quán)利要求4的方法,其中所述確定可用性的步驟包括向與所述第一內(nèi)部虛擬邏輯單元相關(guān)聯(lián)的處理單元提供第一指令;從所述第一內(nèi)部虛擬邏輯單元提供的信息確定所述至少一目的地目標器的位置;從所述處理單元向所述至少一目的地目標器提供第一指令;及確定所述至少一目的地目標器是否返回傳送就緒信號。
8.根據(jù)權(quán)利要求7的方法,其中所述處理單元為第一處理單元;第二處理單元將所述第一指令提供給所述第一處理單元并確定所述至少一目的地目標器是否返回傳送就緒信號。
9.根據(jù)權(quán)利要求8的方法,其中所述提供讀指令的步驟包括當(dāng)至少一目標器返回所述傳送就緒信號時,從所述第二處理單元提供讀指令給所述第二內(nèi)部虛擬邏輯單元;及使用提供給所述第二內(nèi)部虛擬邏輯單元的信息將所述讀指令從所述第一處理單元發(fā)送給所述源目標器。
10.根據(jù)權(quán)利要求9的方法,其中所述第一指令是寫指令,所述方法還包括從所述源目標器接收讀出數(shù)據(jù);將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù);及將所述寫數(shù)據(jù)提供給所述至少一目的地目標器。
11.根據(jù)權(quán)利要求10的方法,其中轉(zhuǎn)換所述讀出數(shù)據(jù)包括在所述第一處理單元的輸出部分接收所述讀出數(shù)據(jù);在所述第一處理單元的所述輸出部分將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述寫數(shù)據(jù);將所述寫數(shù)據(jù)從所述輸出部分發(fā)送到所述第一處理單元的輸入部分;及將所述寫數(shù)據(jù)從所述輸入部分發(fā)送給所述至少一目的地目標器。
12.根據(jù)權(quán)利要求11的方法,其中所述讀出數(shù)據(jù)是一個或多個讀出數(shù)據(jù)包;所述在所述第一處理單元的所述輸出部分將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)的步驟包括更新所述一個或多個讀出數(shù)據(jù)包的首部信息以表明所述一個或多個讀出數(shù)據(jù)包是一個或多個寫數(shù)據(jù)包。
13.根據(jù)權(quán)利要求9的方法,其中所述第一指令是驗證指令,所述方法還包括從所述源目標器接收讀出數(shù)據(jù);將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù);及將所述驗證數(shù)據(jù)提供給所述至少一目的地目標器。
14.根據(jù)權(quán)利要求13的方法,其中轉(zhuǎn)換所述讀出數(shù)據(jù)包括在所述第一處理單元的輸出部分接收所述讀出數(shù)據(jù);在所述第一處理單元的所述輸出部分將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述驗證數(shù)據(jù);將所述驗證數(shù)據(jù)從所述輸出部分發(fā)送到所述第一處理單元的輸入部分;及將所述驗證數(shù)據(jù)從所述輸入部分發(fā)送給所述至少一目的地目標器。
15.根據(jù)權(quán)利要求14的方法,其中所述讀出數(shù)據(jù)是一個或多個讀出數(shù)據(jù)包;所述在所述第一處理單元的所述輸出部分將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)的步驟包括更新所述一個或多個讀出數(shù)據(jù)包的首部信息以表明所述一個或多個讀出數(shù)據(jù)包是一個或多個驗證數(shù)據(jù)包。
16.根據(jù)權(quán)利要求7的方法,其中所述處理單元是第一處理單元;及所述提供所述第一指令給所述至少一目的地目標器的步驟包括將所述寫指令提供給與所述至少一目的地目標器通信的第二處理單元。
17.根據(jù)權(quán)利要求1的方法,還包括在所述鏡像的目標器的同步或驗證指令未完成時,接收啟動器提供給所述鏡像的目標器的指令;排隊所述啟動器提供的指令;當(dāng)完成所述同步或所述驗證指令時,解除隊列并將所述啟動器提供的指令提供給所述鏡像的目標器。
18.根據(jù)權(quán)利要求17的方法,其中所述接收、排隊和解除隊列的步驟在所述啟動器不經(jīng)受所述鏡像的目標器的任何服務(wù)損失的情況下執(zhí)行。
19.根據(jù)權(quán)利要求10的方法,其中所述將讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)的步驟以線路速度執(zhí)行。
20.根據(jù)權(quán)利要求10的方法,其中所述將讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)的步驟在不緩存所述讀出數(shù)據(jù)或所述寫數(shù)據(jù)的情況下進行。
21.根據(jù)權(quán)利要求13的方法,其中所述將讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)的步驟以線路速度執(zhí)行。
22.根據(jù)權(quán)利要求13的方法,其中所述將讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)的步驟在不緩存所述讀出數(shù)據(jù)或所述驗證數(shù)據(jù)的情況下進行。
23.管理鏡像的目標器的裝置,所述鏡像的目標器包括至少一目的地目標器和源目標器,該裝置包括至少一與所述至少一目的地目標器和所述源目標器通信的端口;至少一與所述至少一端口通信的處理單元,所述至少一處理單元只在所述至少一目的地目標器可用于接收數(shù)據(jù)時才向所述源目標器提供讀指令。
24.根據(jù)權(quán)利要求23的裝置,其中所述至少一處理單元通過向所述至少一目的地目標器提供第一指令并確定所述至少一目的地目標器是否返回傳送就緒信號而確定所述至少一目的地目標器是否可用于接收數(shù)據(jù)。
25.根據(jù)權(quán)利要求24的裝置,其中所述指令為寫指令和驗證指令中的至少之一。
26.根據(jù)權(quán)利要求23的裝置,還包括與所述至少一處理單元通信的存儲器,所述存儲器包括對應(yīng)于所述至少一目的地目標器的第一內(nèi)部虛擬邏輯單元和對應(yīng)于所述源目標器的第二內(nèi)部虛擬邏輯單元。
27.根據(jù)權(quán)利要求26的裝置,其中所述第一內(nèi)部虛擬邏輯單元對應(yīng)于第一目的地目標器;所述存儲器還包括對應(yīng)于第二目的地目標器的第三內(nèi)部虛擬邏輯單元。
28.根據(jù)權(quán)利要求26的裝置,其中所述第一內(nèi)部虛擬邏輯單元包括對應(yīng)于第一目的地目標器的第一成員及對應(yīng)于第二目的地目標器的第二成員。
29.根據(jù)權(quán)利要求26的裝置,其中所述至少一處理單元包括第一處理單元和第二處理單元,所述第一處理單元與所述第一和第二內(nèi)部虛擬邏輯單元相關(guān)聯(lián)。
30.根據(jù)權(quán)利要求29的裝置,其中所述第二處理單元向所述第一處理單元提供所述第一指令,所述第一指令用于所述第一內(nèi)部虛擬邏輯單元;所述第一處理單元從所述存儲器中提供給所述第一內(nèi)部虛擬邏輯單元的信息確定所述至少一目的地目標器的位置;在確定所述位置之后,所述第一處理單元將所述第一指令提供給所述至少一目的地目標器;及所述第二處理單元確定所述至少一目的地目標器是否返回所述傳送就緒信號。
31.根據(jù)權(quán)利要求30的裝置,其中當(dāng)所述至少一目的地目標器返回所述傳送就緒信號時,所述第二處理單元將所述讀指令提供給所述第一處理單元,所述讀指令用于所述第二內(nèi)部虛擬邏輯單元;及所述第一處理單元使用提供給所述第二內(nèi)部虛擬邏輯單元的信息將所述讀指令發(fā)送給所述源目標器。
32.根據(jù)權(quán)利要求31的裝置,其中所述信息是所述目的地目標器與其相連的線路卡或端口。
33.根據(jù)權(quán)利要求31的裝置,其中所述第一指令是寫指令;在提供所述讀指令之后,所述第一處理單元從所述源目標器接收讀出數(shù)據(jù),所述第一處理單元將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)并將所述寫數(shù)據(jù)提供給所述至少一目的地目標器。
34.根據(jù)權(quán)利要求33的裝置,其中所述第一處理單元包括輸入部分和輸出部分,所述第一處理單元在所述輸出部分接收所述讀出數(shù)據(jù)并將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述寫數(shù)據(jù),所述寫數(shù)據(jù)被從所述輸出部分發(fā)送到所述輸入部分,所述寫數(shù)據(jù)被從所述輸入部分發(fā)送給所述至少一目的地目標器。
35.根據(jù)權(quán)利要求34的裝置,其中所述讀出數(shù)據(jù)是一個或多個讀出數(shù)據(jù)包;及所述第一處理單元通過更新所述一個或多個讀出數(shù)據(jù)包的首部信息而將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述寫數(shù)據(jù),以表明所述一個或多個讀出數(shù)據(jù)包是一個或多個寫數(shù)據(jù)包。
36.根據(jù)權(quán)利要求31的裝置,其中所述第一指令是驗證指令;在提供所述讀指令之后,所述第一處理單元從所述源目標器接收讀出數(shù)據(jù),所述第一處理單元將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)并將所述驗證數(shù)據(jù)提供給所述至少一目的地目標器。
37.根據(jù)權(quán)利要求36的裝置,其中所述第一處理單元包括輸入部分和輸出部分,所述第一處理單元在所述輸出部分接收所述讀出數(shù)據(jù)并將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述驗證數(shù)據(jù),所述驗證數(shù)據(jù)被從所述輸出部分發(fā)送到所述輸入部分,所述驗證數(shù)據(jù)被從所述輸入部分發(fā)送給所述至少一目的地目標器。
38.根據(jù)權(quán)利要求37的裝置,其中所述讀出數(shù)據(jù)是一個或多個讀出數(shù)據(jù)包;及所述第一處理單元通過更新所述一個或多個讀出數(shù)據(jù)包的首部信息而將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述驗證數(shù)據(jù),以表明所述一個或多個讀出數(shù)據(jù)包是一個或多個驗證數(shù)據(jù)包。
39.根據(jù)權(quán)利要求30的裝置,其中所述第一處理單元通過向與所述至少一目的地目標器通信的第三處理單元提供所述第一指令而將所述第一指令提供給所述至少一目的地目標器,所述第三處理單元將所述第一指令發(fā)送給所述至少一目的地目標器。
40.根據(jù)權(quán)利要求33的裝置,其中所述第一處理單元能夠以線路速度將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述寫數(shù)據(jù)。
41.根據(jù)權(quán)利要求33的裝置,其中所述第一處理單元能夠?qū)⑺鲎x出數(shù)據(jù)轉(zhuǎn)換為所述寫數(shù)據(jù)而不緩存所述讀出數(shù)據(jù)或所述寫數(shù)據(jù)。
42.根據(jù)權(quán)利要求36的裝置,其中所述第一處理單元能夠以線路速度將所述讀出數(shù)據(jù)轉(zhuǎn)換為所述驗證數(shù)據(jù)。
43.根據(jù)權(quán)利要求36的裝置,其中所述第一處理單元能夠?qū)⑺鲎x出數(shù)據(jù)轉(zhuǎn)換為所述驗證數(shù)據(jù)而不緩存所述讀出數(shù)據(jù)或所述驗證數(shù)據(jù)。
44.根據(jù)權(quán)利要求29的裝置,其中所述第一處理單元與所述至少一目的地目標器通信。
45.根據(jù)權(quán)利要求29的裝置,其中所述第一處理單元與所述源目標器通信。
46.根據(jù)權(quán)利要求29的裝置,其中所述第一處理單元不是用于與所述至少一目的地目標器或所述源目標器通信的端口的處理單元。
47.根據(jù)權(quán)利要求23的裝置,還包括存儲器,在所述裝置正處理所述鏡像的目標器的同步或驗證指令時,所述至少一處理單元在所述存儲器中對輸入給所述鏡像的目標器的指令進行排隊,當(dāng)所述同步或驗證指令完成時,所述至少一處理單元解除隊列并將所述輸入的指令提供給所述鏡像的目標器。
48.根據(jù)權(quán)利要求47的裝置,其中所述輸入的指令從至少一啟動器接收;及所述至少一處理單元排隊所述輸入的指令,所述裝置不會向所述至少一啟動器提供失效響應(yīng)。
49.根據(jù)權(quán)利要求48的裝置,其中所述失效響應(yīng)包括忙碌響應(yīng)和任務(wù)集滿響應(yīng)。
50.根據(jù)權(quán)利要求48的裝置,其中所述至少一處理單元排隊、解除隊列并提供所述輸入的指令是在所述至少一處理單元不經(jīng)受所述鏡像的目標器的服務(wù)損失的情況下進行。
51.根據(jù)權(quán)利要求23的裝置,其中所述鏡像的目標器是鏡像的虛擬邏輯單元。
52.管理鏡像的目標器的方法,包括提供對應(yīng)于所述鏡像的目標器的至少一目的地目標器的第一內(nèi)部虛擬邏輯單元(IVLU)和對應(yīng)于所述鏡像的目標器的源目標器的第二IVLU;將用于所述至少一目的地目標器的第一指令提供給所述第一IVLU;將所述第一指令發(fā)送給所述至少一目的地目標器;及當(dāng)從所述源目標器接收到傳送就緒信號時,將用于所述源目標器的讀指令提供給所述第二IVLU。
53.根據(jù)權(quán)利要求52的方法,其中所述第一IVLU對應(yīng)于第一目的地目標器;及所述提供步驟包括提供對應(yīng)于第二目的地目標器的第三IVLU。
54.根據(jù)權(quán)利要求52的方法,其中所述提供步驟包括在第一處理單元提供所述第一和第二IVLU。
55.根據(jù)權(quán)利要求54的方法,其中所述提供第一指令的步驟包括從內(nèi)部啟動器提供所述第一指令給所述第一處理單元;及所述提供讀指令的步驟包括從所述內(nèi)部啟動器提供讀指令給所述第一處理單元。
56.根據(jù)權(quán)利要求55的方法,其中所述內(nèi)部啟動器為中央處理單元;及所述第一處理單元為包處理單元。
57.根據(jù)權(quán)利要求56的方法,其中所述中央處理單元包括復(fù)制服務(wù)管理器和驗證服務(wù)管理器中至少之一。
58.根據(jù)權(quán)利要求56的方法,其中所述第一指令為寫指令,所述方法還包括響應(yīng)于所述讀指令從所述源目標器接收讀出數(shù)據(jù);在所述第一處理單元將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù);及將所述寫數(shù)據(jù)提供給所述至少一目的地目標器。
59.根據(jù)權(quán)利要求58的方法,其中所述轉(zhuǎn)換步驟不涉及所述中央處理單元。
60.根據(jù)權(quán)利要求58的方法,其中所述轉(zhuǎn)換步驟以線路速度執(zhí)行,而不緩存所述讀出數(shù)據(jù)或所述寫數(shù)據(jù)。
61.根據(jù)權(quán)利要求56的方法,其中所述第一指令為驗證指令,所述方法還包括響應(yīng)于所述讀指令從所述源目標器接收讀出數(shù)據(jù);在所述第一處理單元將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù);及將所述驗證數(shù)據(jù)提供給所述至少一目的地目標器。
62.根據(jù)權(quán)利要求61的方法,其中所述轉(zhuǎn)換步驟不涉及所述中央處理單元。
63.根據(jù)權(quán)利要求62的方法,其中所述轉(zhuǎn)換步驟以線路速度執(zhí)行,而不緩存所述讀出數(shù)據(jù)或所述驗證數(shù)據(jù)。
64.管理鏡像的目標器的裝置,包括第一處理單元;與所述第一處理單元通信的存儲器,所述存儲器在同步或驗證所述鏡像的目標器的同步時維護至少第一內(nèi)部虛擬邏輯單元(IVLU)和第二IVLU,所述第一IVLU對應(yīng)于所述鏡像的目標器的至少一目的地目標器,所述第二IVLU對應(yīng)于所述鏡像的目標器的源目標器;及內(nèi)部啟動器,所述內(nèi)部啟動器將用于所述至少一目的地目標器的第一指令提供給所述第一IVLU,當(dāng)從所述源目標器接收到傳送就緒信號時,所述內(nèi)部啟動器將用于所述源目標器的讀指令提供給所述第二IVLU。
65.根據(jù)權(quán)利要求64的裝置,其中所述內(nèi)部啟動器通過將所述第一指令提供給所述第一處理單元而將用于所述至少一目的地目標器的第一指令提供給所述第一IVLU;及所述第一處理單元使用保存在所述存儲器中的、用于所述第一IVLU的信息將所述第一指令發(fā)送給所述至少一目的地目標器。
66.根據(jù)權(quán)利要求64的裝置,其中所述第一指令是寫指令;及在所述讀指令被提供給所述源目標器之后,所述第一處理單元從所述源目標器接收讀出數(shù)據(jù),所述第一處理單元將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)并將所述寫數(shù)據(jù)發(fā)送給所述至少一目的地目標器。
67.根據(jù)權(quán)利要求66的裝置,其中所述讀出數(shù)據(jù)和所述寫數(shù)據(jù)不由所述內(nèi)部啟動器接收。
68.根據(jù)權(quán)利要求64的裝置,其中所述第一指令是驗證指令;及在所述讀指令被提供給所述源目標器之后,所述第一處理單元從所述源目標器接收讀出數(shù)據(jù),所述第一處理單元將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)并將所述驗證數(shù)據(jù)發(fā)送給所述至少一目的地目標器。
69.根據(jù)權(quán)利要求68的裝置,其中所述讀出數(shù)據(jù)和所述驗證數(shù)據(jù)不由所述內(nèi)部啟動器接收。
70.根據(jù)權(quán)利要求69的裝置,其中所述內(nèi)部啟動器是中央處理單元。
71.一個或多個處理器可讀存儲設(shè)備,其具有體現(xiàn)在所述一個或多個處理器可讀存儲設(shè)備上的處理器可讀代碼,所述處理器可讀代碼用于編程一個或多個處理器以執(zhí)行下述方法,包括確定至少一目的地目標器接收數(shù)據(jù)的可用性;及只在所述至少一目的地目標器被確定可用于接收數(shù)據(jù)時向源目標器提供讀指令。
72.根據(jù)權(quán)利要求71的一個或多個處理器可讀存儲設(shè)備,其中所述方法還包括提供對應(yīng)于所述至少一目的地目標器的第一內(nèi)部虛擬邏輯單元和對應(yīng)于所述第二源目標器的第二內(nèi)部虛擬邏輯單元;從所述源目標器接收讀出數(shù)據(jù);將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù);及將所述寫數(shù)據(jù)提供給所述至少一目的地目標器。
73.根據(jù)權(quán)利要求72的一個或多個處理器可讀存儲設(shè)備,其中所述將所述讀出數(shù)據(jù)轉(zhuǎn)換為寫數(shù)據(jù)的步驟以線路速度執(zhí)行,而不緩存所述讀出數(shù)據(jù)或所述寫數(shù)據(jù)。
74.根據(jù)權(quán)利要求71的一個或多個處理器可讀存儲設(shè)備,其中所述方法還包括提供對應(yīng)于所述至少一目的地目標器的第一內(nèi)部虛擬邏輯單元和對應(yīng)于所述第二源目標器的第二內(nèi)部虛擬邏輯單元;從所述源目標器接收讀出數(shù)據(jù);將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù);及將所述驗證數(shù)據(jù)提供給所述至少一目的地目標器。
75.根據(jù)權(quán)利要求74的一個或多個處理器可讀存儲設(shè)備,其中所述將所述讀出數(shù)據(jù)轉(zhuǎn)換為驗證數(shù)據(jù)的步驟以線路速度執(zhí)行,而不緩存所述讀出數(shù)據(jù)或所述驗證數(shù)據(jù)。
全文摘要
根據(jù)各個實施例的系統(tǒng)和方法可管理鏡像的虛擬目標器以使虛擬目標器的成員同步和/或驗證虛擬目標器的成員已被同步。在一實施例中,通過首先提供至少一對應(yīng)于鏡像的目標器的至少一目的地目標器的第一內(nèi)部虛擬邏輯單元(IVLU)和對應(yīng)于鏡像的目標器的源目標器的第二IVLU而同步鏡像的虛擬目標器。寫指令被首先經(jīng)一個或多個內(nèi)部虛擬邏輯單元發(fā)給鏡像的目標器的每一目的地目標器成員。當(dāng)每一目的地目標器可用于接收數(shù)據(jù)時,是否可接收數(shù)據(jù)由返回的傳送就緒信號指示,讀指令經(jīng)第二內(nèi)部虛擬邏輯單元提供給源目標器。這樣,在從源目標器讀數(shù)據(jù)之前已在源和目的地目標器之間建立數(shù)據(jù)通路。因而,數(shù)據(jù)可以線路速度從源目標器讀出、轉(zhuǎn)換為寫數(shù)據(jù)、并發(fā)送給目的地目標器,而不用緩存數(shù)據(jù)。提供類似的過程以驗證鏡像的目標器的成員已被同步。在一實施例中,提供在同步或驗證鏡像的目標器的同步時管理輸入鏡像的目標器的指令的系統(tǒng)和方法。當(dāng)接收到輸入的指令時可對其排隊并在未完成的同步或驗證指令完成時提供給鏡像的目標器。
文檔編號G06F11/20GK101061476SQ200580013831
公開日2007年10月24日 申請日期2005年4月26日 優(yōu)先權(quán)日2004年4月30日
發(fā)明者羅伯特·托爾·弗雷, 張超, 普洛·庫里科塞, 拉杰什·阿南塔阿拉亞南, 霍金斯·姚 申請人:伊姆西公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宝应县| 集安市| 四平市| 衡水市| 扬中市| 高要市| 五大连池市| 青浦区| 泾川县| 平邑县| 乌鲁木齐市| 巴南区| 泸定县| 红原县| 扶绥县| 福建省| 嘉善县| 肃宁县| 合山市| 温州市| 卢龙县| 莱州市| 麦盖提县| 汉川市| 灵石县| 太仆寺旗| 福贡县| 大安市| 鹤岗市| 长春市| SHOW| 花莲县| 鸡泽县| 勐海县| 湾仔区| 长寿区| 金溪县| 富源县| 广平县| 栾城县| 乌拉特后旗|