存儲域網(wǎng)絡(luò)(SAN)通常設(shè)計成用于數(shù)據(jù)中心或其它地方以允許聯(lián)網(wǎng)設(shè)備訪問一個或多個存儲設(shè)備,用于數(shù)據(jù)備份、恢復(fù)和其它用途。雖然一些SAN依賴于因特網(wǎng)協(xié)議(IP)網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)(例如,以太網(wǎng)端口/電纜和相關(guān)命令)用于網(wǎng)絡(luò)內(nèi)通信,而許多SAN依賴于光纖通道(FC)基礎(chǔ)結(jié)構(gòu)(例如,SCSI端口/電纜和相關(guān)命令)用于這種通信。另外,一些SAN依賴于IP和FC基礎(chǔ)結(jié)構(gòu)二者。例如,該SAN可以使用IP基礎(chǔ)結(jié)構(gòu)用于存儲服務(wù)器與運行數(shù)據(jù)存儲軟件的存儲客戶端之間的通信,并且使用FC基礎(chǔ)結(jié)構(gòu)用于存儲服務(wù)器與存儲設(shè)備之間的通信,例如磁帶庫。
附圖說明
圖1是根據(jù)示例的包含存儲服務(wù)器的存儲域網(wǎng)絡(luò)的圖。
圖2是根據(jù)示例與通過光纖通道基礎(chǔ)結(jié)構(gòu)將用于數(shù)據(jù)存儲軟件的以太網(wǎng)有效載荷傳輸?shù)酱鎯Ψ?wù)器相關(guān)的方法的流程圖。
圖3是根據(jù)示例的存儲服務(wù)器的圖。
圖4是根據(jù)示例的包含存儲服務(wù)器的存儲域網(wǎng)絡(luò)的圖。
圖5是根據(jù)示例的說明操作期間存儲服務(wù)器的各方面的圖。
圖6說明了根據(jù)示例的存儲域網(wǎng)絡(luò)中的用例的第一部分,其中數(shù)據(jù)在主機與目標(biāo)之間傳遞。
圖7說明了根據(jù)示例的存儲域網(wǎng)絡(luò)中的用例的第二部分,其中數(shù)據(jù)在主機與目標(biāo)之間傳遞。
具體實施方式
在一些SAN中,存儲設(shè)備(例如,磁盤陣列、磁帶庫等)與存儲服務(wù)器相接,以允許存儲服務(wù)器存儲和取回存儲設(shè)備上的數(shù)據(jù)。該存儲服務(wù)器可以進(jìn)一步與存儲客戶端相接以響應(yīng)來自存儲客戶端的存儲相關(guān)請求。例如,存儲客戶端可以指示存儲服務(wù)器取回存儲在存儲設(shè)備上的數(shù)據(jù)并且將該數(shù)據(jù)提供給存儲客戶端作為數(shù)據(jù)恢復(fù)過程的部分。作為另一示例,存儲客戶端可以發(fā)送數(shù)據(jù)到存儲服務(wù)器并且指示存儲服務(wù)器將該數(shù)據(jù)存儲在存儲設(shè)備上作為數(shù)據(jù)備份過程的部分。
數(shù)據(jù)存儲軟件已經(jīng)被設(shè)計成能夠提高這些SAN的有用性。僅作為一個示例,一些數(shù)據(jù)存儲軟件能夠用于執(zhí)行數(shù)據(jù)去重,數(shù)據(jù)去重是會涉及到將寫入存儲設(shè)備的數(shù)據(jù)的塊與先前存儲在一個或多個存儲設(shè)備上的數(shù)據(jù)的塊進(jìn)行比較的過程。在一個示例中,數(shù)據(jù)存儲軟件包括能由計算機或處理器執(zhí)行的計算機或處理器機器可讀指令。在該過程中,當(dāng)發(fā)現(xiàn)重復(fù)數(shù)據(jù)時,可以建立到原始數(shù)據(jù)的指針,而不是存儲重復(fù)的數(shù)據(jù)集。結(jié)果,用于存儲大塊數(shù)據(jù)的存儲空間的量可以減少。雖然數(shù)據(jù)存儲軟件已經(jīng)設(shè)計成允許通過SAN內(nèi)的各種設(shè)備來執(zhí)行該去重,客戶端側(cè)去重會尤其有益,因為其能夠減少通過存儲基礎(chǔ)結(jié)構(gòu)在存儲客戶端與存儲服務(wù)器之間傳遞的數(shù)據(jù)量。也即,不是在存儲客戶端與存儲服務(wù)器之間傳遞全部重復(fù)數(shù)據(jù)流,當(dāng)客戶端側(cè)去重被使用時,在存儲客戶端與存儲服務(wù)器之間傳遞減少(即,去重)的數(shù)據(jù)流。
安裝到存儲客戶端上的數(shù)據(jù)存儲軟件可以被編程以經(jīng)由在IP基礎(chǔ)結(jié)構(gòu)(例如,以太網(wǎng)端口/電纜)上的互聯(lián)網(wǎng)套接字應(yīng)用編程接口(API)與存儲服務(wù)器相接,以傳輸IP報務(wù)(例如,以太網(wǎng)報務(wù))。因為SAN中的聯(lián)網(wǎng)設(shè)備經(jīng)常設(shè)計成經(jīng)由FC基礎(chǔ)結(jié)構(gòu)通信,IP基礎(chǔ)結(jié)構(gòu)的傳輸與數(shù)據(jù)存儲軟件有關(guān)的IP報務(wù)的附加用途在一些情況下會導(dǎo)致成本增加以及網(wǎng)絡(luò)上的管理需求。例如,在一些數(shù)據(jù)中心,存儲管理者負(fù)責(zé)管理數(shù)據(jù)中心的FC相關(guān)的方面,不同的網(wǎng)絡(luò)管理者負(fù)責(zé)管理數(shù)據(jù)中心的IP相關(guān)方面。而且,一些數(shù)據(jù)中心將存儲管理和網(wǎng)絡(luò)管理外部資源利用到不同的公司。結(jié)果,依賴于SAN中的IP和FC基礎(chǔ)結(jié)構(gòu)的數(shù)據(jù)備份軟件可能昂貴,并且在管理上成為負(fù)擔(dān)。
本公開的一些實現(xiàn)方式旨在通過提供能夠在FC基礎(chǔ)結(jié)構(gòu)上與存儲客戶端上的數(shù)據(jù)存儲軟件相接的存儲服務(wù)器來解決上述問題。例如,在一些實現(xiàn)方式中,在FC基礎(chǔ)結(jié)構(gòu)上從存儲客戶端接收以太網(wǎng)有效載荷。以太網(wǎng)有效載荷可封裝在FC SCSI有效載荷中,通過存儲服務(wù)器從SCSI有效載荷提取,然后轉(zhuǎn)發(fā)到存儲服務(wù)器上的虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備。然后,可以使虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備與存儲客戶端上的數(shù)據(jù)存儲軟件相接。在一些實現(xiàn)方式中,該封裝的以太網(wǎng)有效載荷和虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備的使用能夠允許存儲服務(wù)器在FC基礎(chǔ)結(jié)構(gòu)上與存儲客戶端上的數(shù)據(jù)存儲軟件相接,而不依賴于開發(fā)者修改數(shù)據(jù)存儲軟件的代碼。而且,因為FC基礎(chǔ)結(jié)構(gòu)能夠單獨使用,而不是FC和IP基礎(chǔ)結(jié)構(gòu)的組合,所以該SAN的成本可以降低,并且其管理可以簡化。該實現(xiàn)方式及其相關(guān)聯(lián)的優(yōu)點以及其它的實現(xiàn)方式及其優(yōu)點的進(jìn)一步的細(xì)節(jié)將在下文進(jìn)行更詳細(xì)地說明。
圖1是存儲域網(wǎng)絡(luò)(SAN)100的圖,該SAN包含存儲服務(wù)器102,存儲服務(wù)器102經(jīng)由FC基礎(chǔ)結(jié)構(gòu)108和110與存儲設(shè)備104和存儲客戶端106通信。SAN 100的點對點(FC-P2P)拓?fù)浣Y(jié)構(gòu)被提供作為示例。在這種類型的拓?fù)浣Y(jié)構(gòu)中,兩種設(shè)備(例如,存儲服務(wù)器102和存儲客戶端106)彼此直接連接。應(yīng)意識到,本公開可應(yīng)用于SAN 100的其它適合的拓?fù)浣Y(jié)構(gòu),例如適合的仲裁回路(FC-AL)拓?fù)浣Y(jié)構(gòu),其中網(wǎng)絡(luò)設(shè)備處于回路或環(huán)中,以及交換結(jié)構(gòu)(FC-SW)拓?fù)浣Y(jié)構(gòu),其中網(wǎng)絡(luò)設(shè)備連接到光纖通道交換機。
存儲服務(wù)器102和存儲客戶端106可以為適合的服務(wù)器、桌面式計算機、膝上型計算機或其它電子設(shè)備的形式。例如,在一些實現(xiàn)方式中,存儲服務(wù)器102為獨立式存儲服務(wù)器裝置的形式,存儲客戶端106為桌面式計算機的形式,包括向操作者呈現(xiàn)信息的監(jiān)視器以及用于接收來自操作者的輸入的鍵盤和鼠標(biāo)。在一些實現(xiàn)方式中,存儲服務(wù)器裝置包括共用的外殼,包含存儲服務(wù)器102和存儲設(shè)備104。該存儲裝置可以例如安裝到服務(wù)器機架上并且包括基本引擎對,該基本引擎對包含多個服務(wù)器節(jié)點(例如,兩個服務(wù)器節(jié)點)以及多個雙控制器磁盤陣列(例如,兩個陣列),每個陣列包含多個磁盤(例如,十二個磁盤)。在一些實現(xiàn)方式中,例如額外的磁盤陣列的附加存儲可以添加到存儲裝置中。
存儲設(shè)備104與存儲服務(wù)器102相接,并且可以例如為磁帶庫、磁盤陣列或包含機器可讀存儲介質(zhì)126的另一適當(dāng)類型的存儲設(shè)備的形式。例如,存儲設(shè)備104可以為第三存儲的形式,例如,其可以根據(jù)存儲設(shè)備104的命令而經(jīng)由機器人機構(gòu)來安裝和拆卸。存儲設(shè)備104可以例如用于將極少訪問的信息存檔并且可以包括設(shè)計成用于大的數(shù)據(jù)庫的機器可讀存儲介質(zhì)。為了從這些第三存儲讀取信息,存儲服務(wù)器102或另一計算機可設(shè)計成首先咨詢目錄數(shù)據(jù)庫以確定存儲設(shè)備104的哪些介質(zhì)(例如,磁帶或磁盤)包含信息。接著,存儲服務(wù)器102或另一計算機可以指示機器人臂取得介質(zhì)并且將介質(zhì)放到驅(qū)動器中或另一讀取器機制中。當(dāng)存儲服務(wù)器102或另一計算機已經(jīng)完成從介質(zhì)讀取信息時,機器人臂可以將介質(zhì)歸還到其在庫中的位置。存儲設(shè)備104可以使用標(biāo)準(zhǔn)的SCSI命令(例如,INQUIRY)并且響應(yīng)一組特定的SCSI命令。
存儲服務(wù)器102和存儲客戶端106包括相應(yīng)的處理器118和120,以及如下文進(jìn)一步描述的相應(yīng)的機器可讀存儲介質(zhì)122和114。每個處理器能夠例如為中央處理器(CPU)、基于半導(dǎo)體的微處理器、數(shù)字信號處理器(DSP)如數(shù)字圖像處理單元、適合于取回并執(zhí)行存儲介質(zhì)中所存儲的指令的其它硬件設(shè)備或處理元件或其適合的組合的形式。每個處理器可以例如包括芯片上的單個核或多個核,跨多個芯片的多個核、跨多個設(shè)備的多個核或其適當(dāng)?shù)慕M合。每個處理器可以運行以取得指令,對指令譯碼且執(zhí)行指令,如本文所述。作為取回并執(zhí)行指令的替代或附加,每個處理器可以例如包括至少一個集成電路(IC)、其它控制邏輯、其它電子電路、或其適當(dāng)?shù)慕M合,包括用于執(zhí)行存儲介質(zhì)上所存儲的指令的功能的多個電子部件。每個處理器可以例如實現(xiàn)在多個處理單元上,并且指令可以由存儲服務(wù)器102或存儲客戶端106的不同區(qū)域中的不同處理單元來實現(xiàn)。
存儲服務(wù)器102和存儲客戶端106的一個或多個介質(zhì)可以例如是非暫時性的機器可讀存儲介質(zhì)的形式,例如包含或存儲諸如用于存儲服務(wù)器102的FC路由指令116、用于存儲客戶端106的數(shù)據(jù)存儲軟件112、用于存儲客戶端106的FC路由指令124、相關(guān)數(shù)據(jù)等信息的適當(dāng)?shù)碾娮印⒋?、光或其它物理存儲裝置。應(yīng)意識到,存儲在存儲服務(wù)器102中的數(shù)據(jù)可以存儲在單獨的機器可讀存儲介質(zhì)上。例如,F(xiàn)C路由指令116可以存儲在第一機器可讀存儲介質(zhì)如硬盤驅(qū)動器上,用于存檔的數(shù)據(jù)可以存儲在第二機器可讀存儲介質(zhì)如容納在存儲服務(wù)器102的共用外殼內(nèi)的磁帶庫上。用于存檔的數(shù)據(jù)可以存儲在容納于與存儲服務(wù)器102分離的外殼中(例如,在存儲設(shè)備104上)的第二機器可讀存儲介質(zhì)中。為本文說明的目的,存儲服務(wù)器102的多個存儲介質(zhì)可以被標(biāo)識為單個存儲介質(zhì)122。
如本文所使用的,術(shù)語“機器可讀存儲介質(zhì)”可以例如包括隨機存取存儲器(RAM)、閃速存儲器、存儲驅(qū)動器(例如,硬盤)、磁帶庫、任何類型的存儲盤(例如,壓縮盤只讀存儲器(CD-ROM)、任何其它類型的壓縮盤、DVD等),以及類似物,或其組合。在一些實現(xiàn)方式中,存儲介質(zhì)可對應(yīng)于包括主存儲器(例如隨機存取存儲器(RAM),其中在運行時軟件可以位于其中)和輔助存儲器的存儲器。輔助存儲器可以例如包括非易失性的存儲器,其中存儲有軟件或諸如用于存檔的數(shù)據(jù)的其它數(shù)據(jù)的副本。
用于存儲服務(wù)器102的FC路由指令116能夠通過處理器118執(zhí)行,使得存儲服務(wù)器102能運行以執(zhí)行本文所述的一個或多個功能,比如下文結(jié)合圖2的方法所說明的。例如,在一些實現(xiàn)方式中,F(xiàn)C路由指令116可包括:(1)虛擬化存儲服務(wù)器102上的以太網(wǎng)網(wǎng)絡(luò)設(shè)備的指令,(2)從FC小型計算機系統(tǒng)接口(SCSI)有效載荷提取封裝的以太網(wǎng)有效載荷的指令,(3)將所提取的以太網(wǎng)有效載荷轉(zhuǎn)發(fā)到虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備的指令,以及(4)使虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備與存儲客戶端106的數(shù)據(jù)存儲軟件相接的指令。
數(shù)據(jù)存儲軟件112安裝到存儲客戶端106上,并且可以例如用于方便備份和恢復(fù)過程。在一些實現(xiàn)方式中,數(shù)據(jù)存儲軟件112能夠允許操作者集中管理和保護(hù)以物理、虛擬和云基礎(chǔ)結(jié)構(gòu)散布在遠(yuǎn)程地點和數(shù)據(jù)中心中的數(shù)據(jù)。在一些實現(xiàn)方式中,數(shù)據(jù)存儲軟件112可以提供客戶端側(cè)去重,和/或允許操作者根據(jù)現(xiàn)有的文件系統(tǒng)或圖像備份來創(chuàng)建災(zāi)難恢復(fù)圖像。在一些實現(xiàn)方式中,數(shù)據(jù)存儲軟件能夠用于跨越多個節(jié)點上的備份庫以平衡存儲基礎(chǔ)結(jié)構(gòu)上的容量、性能和增長。數(shù)據(jù)存儲軟件112可以例如提供應(yīng)用編程接口(API),其允許利用遠(yuǎn)程程序調(diào)用來與存儲服務(wù)器102交互。
與存儲服務(wù)器上的FC路由指令116分離,第二組FC路由指令124可以安裝到存儲客戶端106上,允許用于數(shù)據(jù)存儲軟件112的以太網(wǎng)有效載荷封裝在FC SCSI有效載荷中用于在FC基礎(chǔ)結(jié)構(gòu)上傳輸。FC路由指令124可以例如實現(xiàn)將套接字鏈接命令(例如,套接字、連接、發(fā)送、接收、關(guān)閉)映射到由存儲服務(wù)器102解釋的SCSI命令的API。該套接字鏈接映射的示例性用例將參考圖6和圖7描述如下。
如上文所述,存儲服務(wù)器102經(jīng)由FC基礎(chǔ)結(jié)構(gòu)108和110連接到存儲客戶端106和存儲設(shè)備104。為說明的原因,圖1描繪出FC基礎(chǔ)結(jié)構(gòu)108僅包括將存儲客戶端106和存儲服務(wù)器102連接的單根線纜,以及將存儲服務(wù)器102與存儲設(shè)備104連接的單根線纜。然而,其它適合的FC基礎(chǔ)結(jié)構(gòu)能夠用于連接這些網(wǎng)絡(luò)元件。例如,應(yīng)意識到,SAN 100的許多實現(xiàn)方式將包括將存儲服務(wù)器102和存儲客戶端106連接的更復(fù)雜的FC基礎(chǔ)結(jié)構(gòu)。例如,在一些實現(xiàn)方式中,存儲客戶端106能夠經(jīng)由存儲域網(wǎng)絡(luò)中的一個或多個中間設(shè)備連接到存儲服務(wù)器102,中間設(shè)備比如是網(wǎng)絡(luò)交換機、路由器、網(wǎng)關(guān)等,并且多個FC線纜能夠用于該連接。
FC線纜128可以將存儲服務(wù)器102與存儲客戶端106連接,F(xiàn)C線纜130能夠?qū)⒋鎯Ψ?wù)器102與存儲設(shè)備104連接。FC線纜可以例如為電纜或光纖線纜的形式。FC線纜可以例如與單模態(tài)光纖或多模態(tài)光纖模態(tài)相兼容。FC線纜的纖維直徑可以為例如62.5μm、50μm或另一適當(dāng)?shù)闹睆?。?yīng)意識到,可使用其它適合類型的FC線纜。
FC線纜128經(jīng)由存儲服務(wù)器102的FC端口132與存儲服務(wù)器102連接且經(jīng)由存儲客戶端106的FC端口134與存儲客戶端106連接。FC線纜130經(jīng)由存儲服務(wù)器102的FC端口136與存儲服務(wù)器102連接且經(jīng)由存儲設(shè)備104的FC端口138與存儲設(shè)備104連接。每個端口能夠用于在SAN 100內(nèi)接收和發(fā)送數(shù)據(jù)。每個端口可以為如下形式:節(jié)點端口(例如,N_port),用于與點對點或交換結(jié)構(gòu)拓?fù)浣Y(jié)構(gòu)一起使用,節(jié)點回路端口(例如,NL_port),用于與仲裁回路拓?fù)浣Y(jié)構(gòu)一起使用,或者用于SAN的另一適合類型的端口。存儲服務(wù)器102、存儲客戶端106和存儲設(shè)備104可以經(jīng)由主機總線適配器(HBA)的使用與其相應(yīng)的端口相接從而連接到光纖通道設(shè)備,比如SCSI設(shè)備。
圖2圖示說明了與存儲服務(wù)器的使用有關(guān)的方法140的流程圖。方法140及其構(gòu)成步驟的說明參考了示例SAN 100的元件,諸如存儲服務(wù)器102、存儲客戶端106、以及存儲設(shè)備104,以方便說明,然而,應(yīng)意識到,該方法能夠用于本文或其它地方所述的任何適合的網(wǎng)絡(luò)或網(wǎng)絡(luò)元件。
方法140包括步驟142,存儲服務(wù)器102從運行數(shù)據(jù)存儲軟件的存儲客戶端106接收封裝在通過FC基礎(chǔ)結(jié)構(gòu)傳輸?shù)腇C SCSI有效載荷中的以太網(wǎng)有效載荷。如上文所述,存儲客戶端106上的FC路由指令124能夠由存儲客戶端106的處理器120執(zhí)行以將以太網(wǎng)有效載荷封裝在用于通過FC基礎(chǔ)結(jié)構(gòu)傳輸?shù)腇C SCSI有效載荷內(nèi)。例如,存儲客戶端106的FC路由指令124能夠?qū)崿F(xiàn)將套接字鏈接命令(套接字、連接、發(fā)送、接收、關(guān)閉)映射到由存儲服務(wù)器102解釋的SCSI命令的API。在步驟142的一些實現(xiàn)方式中,利用SCSI命令,將數(shù)據(jù)通過FC基礎(chǔ)結(jié)構(gòu)從存儲客戶端106傳遞到存儲服務(wù)器102。為接收來自存儲服務(wù)器102的數(shù)據(jù),存儲客戶端106可以發(fā)出SCSI命令且等待數(shù)據(jù)。該過程的一個示例結(jié)合圖6和圖7描述如下。
在一些實現(xiàn)方式中,以太網(wǎng)有效載荷中的數(shù)據(jù)可以是去重數(shù)據(jù)。該去重數(shù)據(jù)可以通過存儲客戶端106經(jīng)由安裝到存儲客戶端106上的數(shù)據(jù)存儲軟件112或者來自安裝于另一機器上的軟件來去重。應(yīng)意識到,可以在存儲服務(wù)器102接收自存儲客戶端106的以太網(wǎng)有效載荷中提供其它類型的數(shù)據(jù)。
方法140包括步驟144,存儲服務(wù)器102從SCSI有效載荷中提取封裝的以太網(wǎng)有效載荷。例如,在一些實現(xiàn)方式中,存儲客戶端106將套接字鏈接命令映射到SCSI命令,步驟144可以包括將SCSI命令映射到適合用于以太網(wǎng)網(wǎng)絡(luò)設(shè)備的套接字鏈接命令。在一些實現(xiàn)方式中,包括以太網(wǎng)報頭和有效載荷的整個以太網(wǎng)分組都封裝在SCSI有效載荷內(nèi)。在該實現(xiàn)方式中,步驟144可以包括將SCSI有效載荷從其SCSI報頭和其它元素中剝離以得到包含以太網(wǎng)報頭和有效載荷的以太網(wǎng)分組。
方法140包括步驟146,存儲服務(wù)器102將所提取的以太網(wǎng)有效載荷轉(zhuǎn)發(fā)到虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備。該虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備被虛擬化到存儲服務(wù)器102上并且可以例如由存儲服務(wù)器102或另一機器來創(chuàng)建。在一些實現(xiàn)方式中,存儲服務(wù)器102可以創(chuàng)建多個虛擬化的以太網(wǎng)設(shè)備,例如第一虛擬以太網(wǎng)設(shè)備和第二虛擬以太網(wǎng)設(shè)備來運行于存儲服務(wù)器102之上。在創(chuàng)建了多個虛擬以太網(wǎng)設(shè)備的實現(xiàn)方式中,方法140可以包括將第一唯一目標(biāo)標(biāo)識符(UTID)分配給第一虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備以及將第二UTID分配給第二虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備的步驟。在這些實現(xiàn)方式中,方法140可以包括基于以太網(wǎng)有效載荷中的元數(shù)據(jù)來判定所提取的以太網(wǎng)有效載荷是否應(yīng)當(dāng)轉(zhuǎn)發(fā)給第一或第二以太網(wǎng)設(shè)備的另一步驟。例如,元數(shù)據(jù)可以包括標(biāo)識第一或第二UTID的目的地址。
方法140包括步驟146,存儲服務(wù)器102使虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備與存儲客戶端106上的數(shù)據(jù)存儲軟件相接。步驟146可以包括使虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備經(jīng)由互聯(lián)網(wǎng)套接字應(yīng)用編程接口(API)與數(shù)據(jù)存儲軟件相接。在這樣的接口之后,已經(jīng)使用互聯(lián)網(wǎng)套接字API(例如,Linux套接字API)的過程可以利用虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備,而不依賴于代碼修改。在一些實現(xiàn)方式中,虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備是能夠由數(shù)據(jù)存儲軟件經(jīng)由套接字API命令來配置的。例如,可以使用現(xiàn)有的Linux網(wǎng)絡(luò)配置和診斷工具(例如,ifconfig和tcpdump)。
在一些實現(xiàn)方式中,方法140可以包括存儲服務(wù)器102將接收自存儲客戶端106的數(shù)據(jù)存儲到存儲設(shè)備104上的步驟。同樣,在一些實現(xiàn)方式中,方法140可以包括存儲服務(wù)器102取回存儲設(shè)備104上所存儲的數(shù)據(jù)且將取回的數(shù)據(jù)發(fā)送到存儲客戶端106的步驟。存儲服務(wù)器102可以例如使用FC命令比如SCSI命令與存儲設(shè)備通信。在該上下文中,存儲服務(wù)器102可以充當(dāng)SCSI發(fā)起者的角色,存儲設(shè)備104充當(dāng)SCSI目標(biāo)的角色。圖6和圖7說明了通過存儲設(shè)備104執(zhí)行的SCSI命令的示例,比如發(fā)送數(shù)據(jù)到存儲設(shè)備104以及接收來自存儲設(shè)備104的數(shù)據(jù)。
圖3是根據(jù)示例的存儲服務(wù)器150的圖,其為能運行以執(zhí)行本文所述的一條或多條計算機指令的功能模塊的形式。如本文所使用的,術(shù)語“模塊”是指硬件(例如,諸如集成電路或其它電路系統(tǒng)的處理器)和軟件(例如,機器或處理器可執(zhí)行指令,命令或比如固件、程序或目標(biāo)碼的代碼)的組合。硬件和軟件的組合可以僅包括硬件(即,沒有軟件元件的硬件元件)、托管于硬件中的軟件(例如,存儲在存儲器中且在處理器中執(zhí)行或解釋的軟件)或者硬件和托管于硬件中的軟件。另外,如本文所使用的,除非上下文明確指出,否則單數(shù)形式“一”、“一個”和“該”包含了復(fù)數(shù)指代物。因此,例如,術(shù)語“模塊”旨在意指一個或多個模塊或模塊的組合。存儲服務(wù)器150的每個模塊可以包括一個或多個機器可讀存儲介質(zhì)和一個或多個計算機處理器。例如,提供存儲服務(wù)器150上的模塊的功能的軟件可以存儲在計算機的存儲器上以便由計算機的處理器執(zhí)行。圖3的存儲服務(wù)器150,是根據(jù)包含硬件和軟件的功能模塊來描述的,可以包括圖1的存儲服務(wù)器102的一個或多個結(jié)構(gòu)或功能方面,其是從處理器和機器可讀存儲介質(zhì)方面來描述的。
在一些實現(xiàn)方式中,存儲服務(wù)器150包括通信模塊152、提取模塊154、虛擬化模塊156、轉(zhuǎn)發(fā)模塊158和接口模塊160。下面將對存儲服務(wù)器150的這些方面中的每個方面進(jìn)行說明。應(yīng)意識到,其它模塊可以添加到存儲服務(wù)器150中用于附加或替代功能。例如,存儲服務(wù)器的另一實現(xiàn)方式(結(jié)合圖4進(jìn)行說明)包括附加的模塊,諸如存儲模塊。
通信模塊152是存儲服務(wù)器150的功能模塊,其包括硬件和軟件的組合,允許服務(wù)器連接到客戶端以從運行數(shù)據(jù)存儲軟件的存儲客戶端接收封裝在FC小型計算機系統(tǒng)接口(SCSI)有效載荷內(nèi)的以太網(wǎng)有效載荷。在一些實現(xiàn)方式中,通信模塊152被配置成提供與上述方法140的步驟142相關(guān)的通信功能。在圖3的實現(xiàn)方式中,通信模塊152包括光纖通道(FC)端口162,以連接到FC基礎(chǔ)結(jié)構(gòu),從而將存儲服務(wù)器150與運行數(shù)據(jù)存儲軟件的存儲客戶端連接。在一些實現(xiàn)方式中,通信模塊152包括在單個集成電路上的微處理器形式的硬件、相關(guān)的固件和允許微處理器與存儲服務(wù)器150的其它硬件可操作地通信的其它軟件。
提取模塊154是存儲服務(wù)器150的功能模塊,其包括允許存儲服務(wù)器150從SCSI有效載荷中提取以太網(wǎng)有效載荷的硬件和軟件的組合。在一些實現(xiàn)方式中,提取模塊154被配置成提供與上述方法140的步驟144有關(guān)的提取功能。提取模塊154可以例如包括在單個集成電路上的微處理器形式的硬件、相關(guān)的固件以及允許微處理器與存儲服務(wù)器150的其它硬件可操作地通信的其它軟件。在一些實現(xiàn)方式中,提取模塊154被配置成從單一SCSI有效載荷提取多個以太網(wǎng)命令和/或從多個SCSI有效載荷提取單一以太網(wǎng)命令。
虛擬化模塊156是存儲服務(wù)器150的功能模塊,其包括允許存儲服務(wù)器150虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備的硬件和軟件的組合。在一些實現(xiàn)方式中,虛擬化模塊156被配置成提供與上文結(jié)合方法140所描述的虛擬化步驟有關(guān)的虛擬化功能。例如,虛擬化模塊156可以例如虛擬化存儲服務(wù)器150上的第一和第二以太網(wǎng)網(wǎng)絡(luò)設(shè)備。而且,虛擬化模塊156可以例如將第一唯一目標(biāo)標(biāo)識符(UTID)分配給第一以太網(wǎng)網(wǎng)絡(luò)設(shè)備以及將第二UTID分配給第二以太網(wǎng)網(wǎng)絡(luò)設(shè)備,用于轉(zhuǎn)發(fā)從存儲客戶端接收的以太網(wǎng)有效載荷。在一些實現(xiàn)方式中,虛擬化模塊156包括在單個集成電路上的微處理器形式的硬件、相關(guān)的固件以及允許微處理器與存儲服務(wù)器150的其它硬件可操作地通信的其它軟件。
轉(zhuǎn)發(fā)模塊158是存儲服務(wù)器150的功能模塊,其包括允許存儲服務(wù)器150將以太網(wǎng)有效載荷轉(zhuǎn)發(fā)到虛擬化的以太網(wǎng)網(wǎng)絡(luò)設(shè)備的硬件和軟件的組合。在一些實現(xiàn)方式中,轉(zhuǎn)發(fā)模塊158被配置成提供與上文所述的方法140的步驟146有關(guān)的轉(zhuǎn)發(fā)功能。轉(zhuǎn)發(fā)模塊158可以例如包括單個集成電路上的微處理器形式的硬件、相關(guān)的固件和允許微處理器與存儲服務(wù)器150的其它硬件可操作地通信的其它軟件。在虛擬化模塊156虛擬化服務(wù)器上的第一和第二以太網(wǎng)網(wǎng)絡(luò)設(shè)備的實現(xiàn)方式中,轉(zhuǎn)發(fā)模塊158可以例如基于所提取的以太網(wǎng)有效載荷中的元數(shù)據(jù)來判定是將所提取的以太網(wǎng)有效載荷轉(zhuǎn)發(fā)到第一虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備還是轉(zhuǎn)發(fā)到第二虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備。在一些實現(xiàn)方式中,轉(zhuǎn)發(fā)模塊158將所提取的以太網(wǎng)有效載荷轉(zhuǎn)發(fā)到所確定的以太網(wǎng)網(wǎng)絡(luò)設(shè)備。
接口模塊160是存儲服務(wù)器150的功能模塊,其包括允許存儲服務(wù)器150將虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備與數(shù)據(jù)存儲軟件相接的硬件和軟件的組合。在一些實現(xiàn)方式中,接口模塊160被配置成提供接口功能,例如與上述的方法140的步驟148相關(guān)的功能。在一些實現(xiàn)方式中,接口模塊160包括在單個集成電路上的微處理器形式的硬件、相關(guān)的固件和允許微處理器與存儲服務(wù)器150的其它硬件可操作地通信的其它軟件。
圖4說明了存儲域網(wǎng)絡(luò)(SAN)164的示例,其包括存儲服務(wù)器166經(jīng)由FC基礎(chǔ)結(jié)構(gòu)170與存儲客戶端168連接的另一實現(xiàn)方式。從包含硬件和軟件的功能模塊方面描述的圖4的存儲服務(wù)器166和存儲客戶端168可以包括圖1的存儲服務(wù)器102和存儲客戶端106的一個或多個結(jié)構(gòu)或功能方面,這些是從處理器和機器可讀存儲介質(zhì)的方面來描述的。
如圖4所描繪的存儲服務(wù)器166包括通信模塊152、提取模塊154、虛擬化模塊156、轉(zhuǎn)發(fā)模塊158和接口模塊160,這種在上文結(jié)合圖3進(jìn)行了說明。雖然存儲服務(wù)器166的描述提到存儲服務(wù)器150的元件以便進(jìn)行說明,應(yīng)意識到,存儲服務(wù)器166的一些實現(xiàn)方式可以包括除了那些結(jié)合存儲服務(wù)器166明確說明的特征之外的可替代的和/或附加的特征。例如,如下文進(jìn)一步說明的,存儲服務(wù)器166可以包括存儲模塊172。
存儲模塊172是存儲服務(wù)器166的功能模塊,其包括將數(shù)據(jù)存檔和恢復(fù)數(shù)據(jù)的硬件和軟件的組合。存儲模塊172可以包括上文結(jié)合存儲設(shè)備104所描述的硬件和軟件,并且可以為例如磁盤庫、磁盤陣列或包含機器可讀存儲介質(zhì)的另一適合類型的存儲設(shè)備的形式。存儲模塊172可以例如經(jīng)由小型計算機系統(tǒng)接口(SCSI)命令將SCSI存儲設(shè)備上的數(shù)據(jù)存檔。
存儲客戶端168包括通信模塊174以及包含數(shù)據(jù)存儲軟件112的數(shù)據(jù)存儲軟件模塊176,其示例在上文結(jié)合圖1進(jìn)行了說明。下面進(jìn)一步說明通信模塊174和數(shù)據(jù)存儲軟件模塊176。應(yīng)意識到,為了附加的或可替代的功能,其它模塊可以添加到存儲服務(wù)器166中。僅作為一個示例,存儲客戶端168可以包括包含與輸入和輸出有關(guān)的硬件和軟件的I/O模塊,諸如監(jiān)視器、鍵盤和鼠標(biāo),它們可允許操作者與存儲客戶端168交互。
通信模塊174是存儲客戶端168的功能模塊,其包括允許存儲客戶端168與存儲服務(wù)器166連接從而發(fā)送封裝于FC小型計算機系統(tǒng)接口(SCSI)有效載荷內(nèi)的以太網(wǎng)有效載荷的硬件和軟件的組合。在一些實現(xiàn)方式中,通信模塊174被配置成提供關(guān)于上文結(jié)合方法140的步驟142所描述的關(guān)于存儲客戶端168的通信功能。在圖4的實現(xiàn)方式中,通信模塊174包括與FC基礎(chǔ)結(jié)構(gòu)170連接的光纖通道(FC)端口。在一些實現(xiàn)方式中,通信模塊174包括單個集成電路上的微處理器形式的硬件、相關(guān)的固件以及允許微處理器與存儲客戶端168的其它硬件可操作地通信的其它軟件。
數(shù)據(jù)存儲軟件模塊176是存儲客戶端168的功能模塊,其包括允許存儲客戶端168執(zhí)行諸如數(shù)據(jù)存儲軟件112的數(shù)據(jù)存儲軟件(這在上文結(jié)合圖1進(jìn)行了進(jìn)一步詳述)的硬件和軟件的組合。在一些實現(xiàn)方式中,數(shù)據(jù)存儲軟件模塊176包括單個集成電路上的微處理器形式的硬件、相關(guān)的固件和允許微處理器與存儲服務(wù)器166的其它硬件可操作地通信的其它軟件。在一些實現(xiàn)方式中,數(shù)據(jù)存儲軟件存儲在數(shù)據(jù)存儲軟件模塊176的存儲器硬件內(nèi)。例如,在數(shù)據(jù)存儲軟件模塊176包含硬盤驅(qū)動器的實現(xiàn)方式中,數(shù)據(jù)存儲軟件可以存儲在硬盤驅(qū)動器上。在其它實現(xiàn)方式中,數(shù)據(jù)存儲軟件可以相對于存儲客戶端168遠(yuǎn)程地存儲。
封裝模塊178是存儲客戶端168的功能模塊,其包括允許存儲服務(wù)器166將以太網(wǎng)有效載荷封裝在SCSI有效載荷內(nèi)的硬件和軟件的組合。在一些實現(xiàn)方式中,封裝模塊178被配置成提供與上文結(jié)合方法140的步驟142和144所描述的存儲客戶端168有關(guān)的封裝功能。封裝模塊178可以例如包括在單個集成電路上的微處理器形式的硬件、相關(guān)的固件和允許微處理器與存儲客戶端168的其它硬件可操作地通信的其它軟件。
圖5是說明在操作期間示例的存儲服務(wù)器180的各個方面的圖。存儲服務(wù)器180包括與SAN內(nèi)的其它聯(lián)網(wǎng)設(shè)備物理連接的多個物理FC端口182、184、186和188。FC端口與被配置成創(chuàng)建存儲服務(wù)器180上的虛擬化以太網(wǎng)設(shè)備的驅(qū)動器190相接。在該示例中,驅(qū)動器190將兩個虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備192和194呈現(xiàn)給SAN的其余部分。驅(qū)動器190可以將FC端口182、184、186和188上的FC SCSI報務(wù)映射到相應(yīng)的虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備上。在一些示例中,F(xiàn)C SCSI報務(wù)可以包含表明引導(dǎo)報務(wù)流到哪個以太網(wǎng)網(wǎng)絡(luò)設(shè)備的元數(shù)據(jù),并且每個物理FC端口能夠支持任一以太網(wǎng)網(wǎng)絡(luò)設(shè)備的報務(wù)流。
在該實現(xiàn)方式中,驅(qū)動器190將每個物理FC端口182、184、186和188作為單個SCSI設(shè)備呈現(xiàn)給SAN。例如,每個物理FC端口可以利用SCSI命令(例如,INQUIRY)將其自身標(biāo)識為SCSI設(shè)備且響應(yīng)于一組具體的SCSI命令。在一些實現(xiàn)方式中,每個FC端口對每個以太網(wǎng)網(wǎng)絡(luò)設(shè)備具有訪問權(quán)以允許來自不同F(xiàn)C端口的報務(wù)被引導(dǎo)到相同或不同的虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備。
在該實現(xiàn)方式中,驅(qū)動器190例示了兩節(jié)點IP子網(wǎng),第一節(jié)點是虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備,第二節(jié)點是由安裝到存儲客戶端上的數(shù)據(jù)存儲軟件使用的端點。例如,驅(qū)動器190創(chuàng)建第一子網(wǎng),其中第一虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備192與互聯(lián)網(wǎng)套接字API 200相接,其執(zhí)行存儲服務(wù)器進(jìn)程196。在圖5所描繪的示例中,驅(qū)動器190創(chuàng)建第二子網(wǎng),其中第二虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備194與互聯(lián)網(wǎng)套接字API 200相接,其執(zhí)行存儲服務(wù)器進(jìn)程198。在一些實現(xiàn)方式中,利用標(biāo)準(zhǔn)Linux工具套件(例如,ifconfig,tcpdump)來配置和監(jiān)視虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備192和194。在一些實現(xiàn)方式中,數(shù)據(jù)存儲軟件在存儲客戶端上的進(jìn)程可以利用標(biāo)準(zhǔn)Linux套接字API來訪問虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備192和194。如上文結(jié)合方法140的步驟146和148所說明的,在一些實現(xiàn)方式中,每個虛擬化以太網(wǎng)網(wǎng)絡(luò)設(shè)備可以被分配唯一目標(biāo)標(biāo)識符(UTID)。在這些實現(xiàn)方式中,存儲客戶端可以詢問對應(yīng)于實際的FC端口182、184、186和188的SCSI設(shè)備以確定哪些UTID能通過存儲服務(wù)器180訪問。存儲客戶端隨后可以構(gòu)建哪些SCSI設(shè)備可供用于數(shù)據(jù)存儲軟件的列表。
圖6和圖7說明了示例性用例202,其中響應(yīng)于來自用戶進(jìn)程208和主機進(jìn)程210的進(jìn)程指令,數(shù)據(jù)在主機204與目標(biāo)206之間傳遞,圖6說明了用例的第一部分,圖7說明了用例的第二部分。為了說明,圖6和圖7的說明參考了本文所述的其它示例SAN的元件,例如在存儲服務(wù)器的端口上的SCSI目標(biāo),然而應(yīng)意識到,該用例可適用于本文或其它地方所描述的任何適合的網(wǎng)絡(luò)或網(wǎng)絡(luò)元件。
如圖6中所描繪的,在時間212,用戶進(jìn)程208收聽目標(biāo)206的端口(端口0)上的活動。在時間214,主機進(jìn)程210請求主機204與目標(biāo)206連接。在該示例中,該連接是經(jīng)由命令“連接(Connect)(CID=0)”來建立的。目標(biāo)206隨后創(chuàng)建連接記錄123,將CID信息和SCSI狀態(tài)的質(zhì)量轉(zhuǎn)發(fā)給主機204,并且與用戶進(jìn)程208通信以完成在端口0上的收聽。在時間216,用戶進(jìn)程208從主機204請求1024字節(jié)的數(shù)據(jù)。作為響應(yīng),主機進(jìn)程210指示主機204將所請求的數(shù)據(jù)發(fā)送給目標(biāo)206。在目標(biāo)206接收到來自主機204的所請求的數(shù)據(jù)之后,目標(biāo)206向用戶進(jìn)程208確認(rèn)數(shù)據(jù)的接收并且向主機204指示SCSI狀態(tài)質(zhì)量。
在時間218,用戶進(jìn)程向主機204請求140KB的數(shù)據(jù)。作為響應(yīng),主機進(jìn)程210指示主機204將所請求的數(shù)據(jù)發(fā)送給目標(biāo)206。由于所請求的大數(shù)據(jù)塊的尺寸,該數(shù)據(jù)利用多個命令提供給目標(biāo)206,每個命令指示是否存在即將到來的附加的命令(例如,最后一個(Last)=0或1)。在目標(biāo)206接收到來自主機204的所請求的數(shù)據(jù)之后,目標(biāo)206向用戶進(jìn)程208確認(rèn)接收且向主機204指示SCSI狀態(tài)質(zhì)量。
在時間220,主機進(jìn)程210請求讀取1K的數(shù)據(jù)。在該示例中,這是通過分組入命令(Packet In Command)(例如,“分組入(CID=123)”)完成的。在該示例中,所請求的數(shù)據(jù)無法立即可用,目標(biāo)206在響應(yīng)前等待直至數(shù)據(jù)可用。在該實現(xiàn)方式中,目標(biāo)206從客戶端被規(guī)定了在超時之前目標(biāo)206應(yīng)當(dāng)?shù)却淖畲髸r間。該最大定時器可以例如被選定為短于客戶端的SCSI驅(qū)動器超時,使得SCSI驅(qū)動器在正常情形下不超時。如果數(shù)據(jù)在時間到期前可用,則數(shù)據(jù)被返回。然而,如果超時到期,則目標(biāo)206返回指示命令超時的響應(yīng)且客戶端可以重新發(fā)送命令或者向調(diào)用進(jìn)程發(fā)信令表明發(fā)生了超時。在該情況下,在超時周期前,所請求的數(shù)據(jù)不可用,并且目標(biāo)206向主機204表明,請求已超時。在一些實現(xiàn)方式中,SCSI超時值可以自身增加,從而最小化超時的可能性。在時間222,主機204通過分組入命令重新請求讀取1K的數(shù)據(jù)。響應(yīng)于該請求,目標(biāo)206通過發(fā)送所請求的數(shù)據(jù)且另外向主機204指示SCSI狀態(tài)質(zhì)量來響應(yīng)。
在時間224,主機進(jìn)程210經(jīng)由分組入命令來請求讀取66K的數(shù)據(jù)。由于所請求的大數(shù)據(jù)塊的尺寸,利用多個命令將數(shù)據(jù)提供給主機204,每個命令指示是否存在即將到來的附加的命令(例如,最后一個(Last)=0或1)。在時間226,主機進(jìn)程210請求主機204與目標(biāo)206斷開連接。目標(biāo)206破壞連接且將連接ID(34567)連同SCSI狀態(tài)質(zhì)量一起轉(zhuǎn)發(fā)給主機204。
雖然上文已經(jīng)示出和描述了一些實現(xiàn)方式,可以進(jìn)行各種形式和細(xì)節(jié)上的變化。例如,已經(jīng)關(guān)于一個實現(xiàn)方式和/或過程所描述的一些特征可以與其它實現(xiàn)方式相關(guān)。換言之,關(guān)于一個實現(xiàn)方式所描述的過程、特征、組件和/或性質(zhì)可以用于其它實現(xiàn)方式。作為另一示例,上文關(guān)于具體的模塊或元件所描述的功能可以包括在其它實現(xiàn)方式的不同的模塊、引擎或元件中。
如本文所使用的,術(shù)語“提供”包含了推送機制(例如,獨立于對該數(shù)據(jù)的請求而發(fā)送數(shù)據(jù)),拉取(pull)機制(響應(yīng)于對該數(shù)據(jù)的請求而輸送數(shù)據(jù)),以及存儲機制(例如,將數(shù)據(jù)存儲在能夠在此訪問數(shù)據(jù)的中間設(shè)備處)。此外,如本文所使用的,術(shù)語“基于”意指“至少部分地基于”。因此,基于一些條款所描述的特征可以僅基于該條款,或者基于該條款且基于一個或多個其它條款。
此外,應(yīng)當(dāng)理解的是,本文所描述的系統(tǒng)、裝置和方法可以包括所描述的不同實現(xiàn)方式的組件和/或特征的各種組合和/或子組合。因此,參考一個或多個實現(xiàn)方式所描述的特征可以與本文所述的其它實現(xiàn)方式組合。