本申請(qǐng)是國(guó)際申請(qǐng)日為2012年8月22日、于2014年2月25日進(jìn)入中國(guó)國(guó)家階段、國(guó)家申請(qǐng)?zhí)枮?01280041414.8、名稱(chēng)為“訪問(wèn)對(duì)象存儲(chǔ)系統(tǒng)的計(jì)算機(jī)系統(tǒng)”的中國(guó)發(fā)明專(zhuān)利申請(qǐng)的分案申請(qǐng)。
技術(shù)領(lǐng)域
本申請(qǐng)的各實(shí)施例涉及訪問(wèn)對(duì)象存儲(chǔ)系統(tǒng)的計(jì)算機(jī)系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)系統(tǒng)縮放至企業(yè)級(jí),特別是在支持大規(guī)模數(shù)據(jù)中心的情境中,下層數(shù)據(jù)存儲(chǔ)系統(tǒng)經(jīng)常運(yùn)用存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)或者網(wǎng)絡(luò)附著存儲(chǔ)裝置(NAS)。如在常規(guī)上被良好理解的那樣,SAN或者NAS提供諸多技術(shù)能力和操作益處,這些技術(shù)能力和操作益處基礎(chǔ)地包括數(shù)據(jù)存儲(chǔ)設(shè)備的虛擬化、具有透明的容許故障的故障恢復(fù)和故障保護(hù)控制的物理設(shè)備的冗余性、在地理上分布和復(fù)制的存儲(chǔ)裝置以及從以客戶端為中心的計(jì)算機(jī)系統(tǒng)管理去耦合的集中式監(jiān)督和存儲(chǔ)配置管理。
在架構(gòu)上,在SAN存儲(chǔ)系統(tǒng)中的存儲(chǔ)設(shè)備(例如,盤(pán)陣列等)通常連接到網(wǎng)絡(luò)交換機(jī)(例如,光纖信道交換機(jī)等),這些網(wǎng)絡(luò)交換機(jī)然后連接到服務(wù)器或者“主機(jī)”,這些服務(wù)器或者“主機(jī)”需要訪問(wèn)存儲(chǔ)設(shè)備中的數(shù)據(jù)。在SAN中的服務(wù)器、交換機(jī)和存儲(chǔ)設(shè)備通常使用小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議來(lái)通信,該SCSI協(xié)議在盤(pán)數(shù)據(jù)塊級(jí)跨越網(wǎng)絡(luò)傳送數(shù)據(jù)。對(duì)照而言,NAS設(shè)備通常是如下設(shè)備,該設(shè)備內(nèi)部包含一個(gè)或者多個(gè)存儲(chǔ)設(shè)備并且通過(guò)網(wǎng)絡(luò)協(xié)議(比如以太網(wǎng))連接到主機(jī)(或者居間交換機(jī))。除了包含存儲(chǔ)設(shè)備之外,NAS設(shè)備也已經(jīng)根據(jù)基于網(wǎng)絡(luò)的文件系統(tǒng)(比如網(wǎng)絡(luò)文件系統(tǒng)(NFS)或者公共因特網(wǎng)文件系統(tǒng)(CIFS))預(yù)先格式化它的存儲(chǔ)設(shè)備。這樣,如與向主機(jī)暴露盤(pán)(被稱(chēng)為L(zhǎng)UN并且以下進(jìn)一步具體描述)——這些盤(pán)然后需要根據(jù)由主機(jī)利用的文件系統(tǒng)來(lái)格式化并且然后裝配——的SAN比對(duì),NAS設(shè)備的基于網(wǎng)絡(luò)的文件系統(tǒng)(該系統(tǒng)需要由主機(jī)的操作系統(tǒng)支持)使NAS設(shè)備向主機(jī)的操作系統(tǒng)表現(xiàn)為文件服務(wù)器,該文件服務(wù)器然后可以裝配或者映射N(xiāo)AS設(shè)備例如作為操作系統(tǒng)可訪問(wèn)的網(wǎng)絡(luò)驅(qū)動(dòng)。應(yīng)當(dāng)認(rèn)識(shí)到,隨著存儲(chǔ)系統(tǒng)銷(xiāo)售商不斷創(chuàng)新和發(fā)布新產(chǎn)品,在SAN與NAS存儲(chǔ)系統(tǒng)之間的清晰差別繼續(xù)減弱,而實(shí)際存儲(chǔ)系統(tǒng)實(shí)現(xiàn)方式經(jīng)常展現(xiàn)二者的特性、在相同系統(tǒng)中提供文件級(jí)協(xié)議(NAS)和塊級(jí)協(xié)議(SAN)二者。例如,在備選NAS架構(gòu)中,NAS“首領(lǐng)(head)”或者“網(wǎng)關(guān)”設(shè)備聯(lián)網(wǎng)到主機(jī)而不是傳統(tǒng)NAS設(shè)備。這樣的NAS網(wǎng)關(guān)設(shè)備未本身包含存儲(chǔ)驅(qū)動(dòng),而是使外部存儲(chǔ)設(shè)備能夠連接到NAS網(wǎng)關(guān)設(shè)備(例如,經(jīng)由光纖信道接口等)。被主機(jī)以相似方式感知為傳統(tǒng)NAS設(shè)備的這樣的NAS網(wǎng)關(guān)設(shè)備提供一種用于顯著增加基于NAS的存儲(chǔ)架構(gòu)的容量(例如,在更傳統(tǒng)上由SAN支持的存儲(chǔ)容量級(jí))而又保持文件級(jí)存儲(chǔ)訪問(wèn)的簡(jiǎn)單性的能力。
SCSI和其他基于塊協(xié)議的存儲(chǔ)設(shè)備(比如圖1A中所示的存儲(chǔ)系統(tǒng)30)利用代表一個(gè)或者多個(gè)編程的存儲(chǔ)處理器的存儲(chǔ)系統(tǒng)管理器31以聚合存儲(chǔ)設(shè)備中的存儲(chǔ)單元或者驅(qū)動(dòng)并且將它們呈現(xiàn)為各自具有唯一可標(biāo)識(shí)編號(hào)的一個(gè)或者多個(gè)LUN(邏輯單元編號(hào))34。LUN34通過(guò)網(wǎng)絡(luò)20(例如,光纖信道等)由一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)10通過(guò)物理主機(jī)總線適配器(HBA)11來(lái)訪問(wèn)。在計(jì)算機(jī)系統(tǒng)10內(nèi)和在HBA 11以上,通過(guò)從低級(jí)設(shè)備驅(qū)動(dòng)器層12開(kāi)始并且在操作系統(tǒng)專(zhuān)屬文件系統(tǒng)層15中結(jié)束的一系列軟件層有特點(diǎn)地實(shí)施存儲(chǔ)訪問(wèn)抽象化。實(shí)現(xiàn)對(duì)LUN 34的基本訪問(wèn)的設(shè)備驅(qū)動(dòng)器層12通常專(zhuān)屬于由存儲(chǔ)系統(tǒng)使用的通信協(xié)議(例如,SCSI等)。可以在設(shè)備驅(qū)動(dòng)器層12以上實(shí)施數(shù)據(jù)訪問(wèn)層13以支持通過(guò)HBA 11以及其他數(shù)據(jù)訪問(wèn)控制和管理功能可見(jiàn)的LUN 34的多路徑合并。通常在數(shù)據(jù)訪問(wèn)層13與常規(guī)操作系統(tǒng)文件系統(tǒng)層15之間實(shí)施的邏輯卷管理器14支持通過(guò)HBA 11可訪問(wèn)的LUN 34的面向卷的虛擬化和管理??梢栽谶壿嬀砉芾砥?4的控制之下將多個(gè)LUN 34作為卷一起聚集和管理以用于向文件系統(tǒng)層15呈現(xiàn)并且由文件系統(tǒng)層15用作邏輯設(shè)備。
存儲(chǔ)系統(tǒng)管理器31實(shí)施在存儲(chǔ)系統(tǒng)30中駐留的、在圖1A中被稱(chēng)為紡錘體(spindle)32的通常基于盤(pán)驅(qū)動(dòng)的物理存儲(chǔ)單元的虛擬化。從邏輯觀點(diǎn)來(lái)看,這些紡錘體32中的每個(gè)紡錘體可以被視為固定大小的盤(pán)區(qū)(extent)的依次陣列。存儲(chǔ)系統(tǒng)管理器31通過(guò)向連接的計(jì)算機(jī)系統(tǒng)(比如計(jì)算機(jī)系統(tǒng)10)暴露連續(xù)邏輯存儲(chǔ)空間(該邏輯存儲(chǔ)空間被劃分成被稱(chēng)為L(zhǎng)UN 34的虛擬SCSI設(shè)備的集合)來(lái)抽象化掉使讀取和寫(xiě)入操作以盤(pán)驅(qū)動(dòng)的實(shí)際紡錘體和盤(pán)區(qū)的地址為目標(biāo)的復(fù)雜性。每個(gè)LUN借助存在這樣的LUN以及向計(jì)算機(jī)系統(tǒng)10呈現(xiàn)這樣的LUN來(lái)代表被指派用于由計(jì)算機(jī)系統(tǒng)10使用的某個(gè)容量。存儲(chǔ)系統(tǒng)管理器31維護(hù)元數(shù)據(jù),該元數(shù)據(jù)包括用于每個(gè)這樣的LUN到盤(pán)區(qū)的有序列表的映射,其中每個(gè)這樣的盤(pán)區(qū)可以被標(biāo)識(shí)為紡錘體-盤(pán)區(qū)對(duì)<紡錘體#,盤(pán)區(qū)#>并且因此可以位于各種紡錘體32中的任何紡錘體中。
圖1B是通過(guò)網(wǎng)絡(luò)21(例如,以太網(wǎng))經(jīng)由網(wǎng)絡(luò)接口卡(NIC)11’連接到一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)10的基于NAS或者文件級(jí)的常規(guī)存儲(chǔ)系統(tǒng)40的框圖。存儲(chǔ)系統(tǒng)40包括代表一個(gè)或者多個(gè)編程的存儲(chǔ)處理器的存儲(chǔ)系統(tǒng)管理器41。存儲(chǔ)系統(tǒng)管理器41在存儲(chǔ)系統(tǒng)40中駐留的、在圖1B中稱(chēng)為紡錘體42的通?;诒P(pán)驅(qū)動(dòng)的物理存儲(chǔ)單元上面實(shí)施文件系統(tǒng)45。從邏輯觀點(diǎn)來(lái)看,這些紡錘體中的每個(gè)紡錘體可以被視為固定大小的盤(pán)區(qū)43的依次陣列。文件系統(tǒng)45通過(guò)向連接的計(jì)算機(jī)系統(tǒng)(比如計(jì)算機(jī)系統(tǒng)10)暴露包括目錄和文件(這些目錄和文件可以被組織成文件系統(tǒng)級(jí)卷44(下文稱(chēng)為“FS卷”),這些FS卷通過(guò)它們的相應(yīng)裝配點(diǎn)來(lái)訪問(wèn))的名稱(chēng)空間來(lái)抽象化掉使讀取和寫(xiě)入操作以盤(pán)驅(qū)動(dòng)的實(shí)際紡錘體和盤(pán)區(qū)的地址為目標(biāo)的復(fù)雜性。
即使有以上描述的存儲(chǔ)系統(tǒng)中的進(jìn)步,仍然已經(jīng)廣泛地認(rèn)識(shí)到它們未充分可伸縮以滿足虛擬化的計(jì)算機(jī)系統(tǒng)的特定需要。例如,服務(wù)器機(jī)器群集可以服務(wù)于多達(dá)10,000個(gè)虛擬機(jī)(VM),每個(gè)VM使用數(shù)目為多個(gè)的“虛擬盤(pán)”和數(shù)目為多個(gè)的“快照”,每個(gè)虛擬盤(pán)和快照可以例如被存儲(chǔ)為特定LUN或者FS卷上的文件。即使按比例縮減的估計(jì)為每VM有2個(gè)虛擬盤(pán)和2個(gè)快照,如果VM直接連接到物理盤(pán)(即每物理盤(pán)有1個(gè)虛擬盤(pán)或者快照),這仍然總計(jì)為存儲(chǔ)系統(tǒng)支持60,000個(gè)不同盤(pán)。此外,在這一規(guī)模的存儲(chǔ)設(shè)備和拓?fù)涔芾硪阎欣щy。作為結(jié)果,開(kāi)發(fā)了比如在這里通過(guò)引用而結(jié)合的、名稱(chēng)為“Providing Multiple Concurrent Access to a File System”的美國(guó)專(zhuān)利7,849,098中描述的數(shù)據(jù)存儲(chǔ)庫(kù)這一概念,在這些數(shù)據(jù)存儲(chǔ)庫(kù)中,將VM復(fù)用到物理存儲(chǔ)實(shí)體(例如,基于LUN的VMFS群集文件系統(tǒng)或者FS卷)的更小集合上。
在運(yùn)用LUN或者FS卷的常規(guī)存儲(chǔ)系統(tǒng)中,來(lái)自多個(gè)VM的工作量通常由單個(gè)LUN或者單個(gè)FS卷服務(wù)。作為結(jié)果,來(lái)自一個(gè)VM工作量的資源需求將影響在相同LUN或者FS卷上向另一VM工作量提供的服務(wù)水平。用于存儲(chǔ)的效率測(cè)量(比如延時(shí)和每秒輸入/輸出操作(IO)或者IOPS)因此取決于在給定的LUN或者FS卷中的工作量的數(shù)目變化并且不能被保障。因而,不能在每VM基礎(chǔ)上執(zhí)行用于運(yùn)用LUN或者FS卷的存儲(chǔ)系統(tǒng)的存儲(chǔ)策略,并且不能在每VM基礎(chǔ)上給予服務(wù)水平協(xié)定(SLA)保障。此外,在LUN或者FS卷的粒度而不是在VM的虛擬盤(pán)的粒度提供由存儲(chǔ)系統(tǒng)銷(xiāo)售商提供的數(shù)據(jù)服務(wù)(比如快照、復(fù)制、加密和去重復(fù))。作為結(jié)果,可以使用由存儲(chǔ)系統(tǒng)銷(xiāo)售商提供的數(shù)據(jù)服務(wù)來(lái)為整個(gè)LUN或者整個(gè)FS卷創(chuàng)建快照,但是不能從其中存儲(chǔ)虛擬盤(pán)的LUN或者文件系統(tǒng)分離地創(chuàng)建用于VM的單個(gè)虛擬盤(pán)的快照。
技術(shù)實(shí)現(xiàn)要素:
一個(gè)或者多個(gè)實(shí)施例涉及一種存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)被配置用于隔離在其中運(yùn)行的工作量,從而使得可以每工作量地提供SLA保障并且可以每工作量地提供存儲(chǔ)系統(tǒng)的數(shù)據(jù)服務(wù),而無(wú)需存儲(chǔ)系統(tǒng)的徹底重新設(shè)計(jì)。在存儲(chǔ)用于多個(gè)虛擬機(jī)的虛擬盤(pán)的存儲(chǔ)系統(tǒng)中,可以在每虛擬盤(pán)基礎(chǔ)上提供SLA保障,并且可以在每虛擬盤(pán)基礎(chǔ)上提供存儲(chǔ)系統(tǒng)的數(shù)據(jù)服務(wù)。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,存儲(chǔ)系統(tǒng)從這里被稱(chēng)為“存儲(chǔ)容器”的邏輯存儲(chǔ)容量指派之中導(dǎo)出在每工作量基礎(chǔ)上被供應(yīng)為存儲(chǔ)對(duì)象的、這里被稱(chēng)為“虛擬卷”的邏輯存儲(chǔ)卷。對(duì)于VM,可以對(duì)于VM的虛擬盤(pán)和快照中的每個(gè)虛擬盤(pán)和快照創(chuàng)建虛擬卷。在一個(gè)實(shí)施例中,由連接的計(jì)算機(jī)系統(tǒng)通過(guò)在存儲(chǔ)系統(tǒng)中配置的被稱(chēng)為“協(xié)議端點(diǎn)”的用于協(xié)議流量的邏輯端點(diǎn)、使用標(biāo)準(zhǔn)協(xié)議(比如SCSI和NFS)按照需求訪問(wèn)虛擬卷。
根據(jù)本發(fā)明的實(shí)施例的一種用于將在存儲(chǔ)系統(tǒng)中創(chuàng)建的邏輯存儲(chǔ)卷綁定到在存儲(chǔ)系統(tǒng)中配置的協(xié)議端點(diǎn)以用于由在計(jì)算機(jī)系統(tǒng)中運(yùn)行的應(yīng)用使用的方法包括以下步驟:經(jīng)由非IO路徑向存儲(chǔ)系統(tǒng)發(fā)出對(duì)于綁定邏輯存儲(chǔ)卷的請(qǐng)求;以及存儲(chǔ)響應(yīng)于請(qǐng)求來(lái)接收的第一標(biāo)識(shí)符和第二標(biāo)識(shí)符,其中第一標(biāo)識(shí)符和第二標(biāo)識(shí)符被編碼成將經(jīng)由IO路徑向邏輯存儲(chǔ)卷發(fā)出的IO。第一標(biāo)識(shí)符標(biāo)識(shí)協(xié)議端點(diǎn)并且第二標(biāo)識(shí)符標(biāo)識(shí)邏輯存儲(chǔ)卷。
根據(jù)本發(fā)明的實(shí)施例的一種用于向邏輯存儲(chǔ)卷發(fā)出輸入-輸出命令(IO)的方法包括以下步驟:從應(yīng)用接收對(duì)于文件的讀取/寫(xiě)入請(qǐng)求;生成與讀取/寫(xiě)入請(qǐng)求對(duì)應(yīng)的塊級(jí)IO;將在塊級(jí)IO中包括的塊設(shè)備名稱(chēng)轉(zhuǎn)譯成第一標(biāo)識(shí)符和第二標(biāo)識(shí)符;以及向由第一標(biāo)識(shí)符標(biāo)識(shí)的協(xié)議端點(diǎn)發(fā)出IO,IO包括用于標(biāo)識(shí)邏輯存儲(chǔ)卷的第二標(biāo)識(shí)符。
根據(jù)本發(fā)明的實(shí)施例的一種計(jì)算機(jī)系統(tǒng)包括在其中運(yùn)行的多個(gè)虛擬機(jī),虛擬機(jī)中的每個(gè)虛擬機(jī)具有在存儲(chǔ)系統(tǒng)中作為分離的邏輯存儲(chǔ)卷被管理的虛擬盤(pán)。該計(jì)算機(jī)系統(tǒng)還包括:硬件存儲(chǔ)接口,被配置用于向存儲(chǔ)系統(tǒng)發(fā)出IO;以及虛擬化軟件模塊,被配置用于從虛擬機(jī)接收對(duì)于虛擬盤(pán)上的文件的讀取/寫(xiě)入請(qǐng)求以及根據(jù)讀取/寫(xiě)入請(qǐng)求生成各自具有協(xié)議端點(diǎn)標(biāo)識(shí)符和次級(jí)標(biāo)識(shí)符的第一和第二IO。
本發(fā)明的實(shí)施例還包括一種存儲(chǔ)指令的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),這些指令在由計(jì)算機(jī)系統(tǒng)執(zhí)行時(shí)使計(jì)算機(jī)系統(tǒng)執(zhí)行以上闡述的方法之一。
附圖說(shuō)明
圖1A是通過(guò)網(wǎng)絡(luò)連接到一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)的基于塊協(xié)議的常規(guī)存儲(chǔ)設(shè)備的框圖。
圖1B是通過(guò)網(wǎng)絡(luò)連接到一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)的常規(guī)NAS設(shè)備的框圖。
圖2A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的實(shí)施虛擬卷的基于塊協(xié)議的存儲(chǔ)系統(tǒng)群集的框圖。
圖2B是根據(jù)本發(fā)明的一個(gè)實(shí)施例的實(shí)施虛擬卷的基于NAS的存儲(chǔ)系統(tǒng)群集的框圖。
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖2A或者圖2B的存儲(chǔ)系統(tǒng)群集的用于管理虛擬卷的部件的框圖。
圖4是用于創(chuàng)建存儲(chǔ)容器的方法步驟的流程圖。
圖5A是在基于SAN的存儲(chǔ)系統(tǒng)上主控的被配置用于實(shí)施虛擬卷的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。
圖5B是在基于NAS的存儲(chǔ)系統(tǒng)上主控的被配置用于虛擬卷的圖5A的計(jì)算機(jī)系統(tǒng)的框圖。
圖5C是在基于SAN的存儲(chǔ)系統(tǒng)上主控的被配置用于實(shí)施虛擬卷的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。
圖5D是在基于NAS的存儲(chǔ)系統(tǒng)上主控的被配置用于虛擬卷的圖5C的計(jì)算機(jī)系統(tǒng)的框圖。
圖6是圖示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用來(lái)管理虛擬卷的部件和通信路徑的計(jì)算機(jī)環(huán)境的簡(jiǎn)化框圖。
圖7是用于向圖2A或者圖2B的存儲(chǔ)系統(tǒng)群集認(rèn)證計(jì)算機(jī)系統(tǒng)的方法步驟的流程圖。
圖8是根據(jù)一個(gè)實(shí)施例的用于創(chuàng)建虛擬卷的方法步驟的流程圖。
圖9A是用于發(fā)現(xiàn)可用于計(jì)算機(jī)系統(tǒng)的協(xié)議端點(diǎn)的方法步驟的流程圖。
圖9B是用于存儲(chǔ)系統(tǒng)發(fā)現(xiàn)計(jì)算機(jī)系統(tǒng)經(jīng)由帶內(nèi)路徑連接到的協(xié)議端點(diǎn)的方法步驟的流程圖。
圖10是根據(jù)一個(gè)實(shí)施例的用于發(fā)出和執(zhí)行虛擬卷綁定請(qǐng)求的方法步驟的流程圖。
圖11A和圖11B是根據(jù)一個(gè)實(shí)施例的用于向虛擬卷發(fā)出IO的方法步驟的流程圖。
圖12是根據(jù)一個(gè)實(shí)施例的用于在存儲(chǔ)系統(tǒng)執(zhí)行IO的方法步驟的流程圖。
圖13是根據(jù)一個(gè)實(shí)施例的用于發(fā)出和執(zhí)行虛擬卷重新綁定請(qǐng)求的方法步驟的流程圖。
圖14是虛擬卷的生命周期的概念圖。
圖15是根據(jù)一個(gè)實(shí)施例的使用圖2A的存儲(chǔ)系統(tǒng)的用于供應(yīng)VM的方法步驟的流程圖。
圖16A是用于使VM通電的方法步驟的流程圖。
圖16B是用于使VM斷電的方法步驟的流程圖。
圖17是用于擴(kuò)展VM的vvol的大小的方法步驟的流程圖。
圖18是用于在存儲(chǔ)容器之間移動(dòng)VM的vvol的方法步驟的流程圖。
圖19是用于從模板VM克隆VM的方法步驟的流程圖。
圖20是根據(jù)另一實(shí)施例的用于供應(yīng)VM的方法步驟的流程圖。
圖21圖示采樣存儲(chǔ)能力簡(jiǎn)檔和用于創(chuàng)建存儲(chǔ)容器的方法,該方法包括簡(jiǎn)檔選擇步驟。
圖22是圖示用于創(chuàng)建vvol以及定義用于vvol的存儲(chǔ)能力簡(jiǎn)檔的方法步驟的流程圖。
圖23是圖示用于創(chuàng)建快照的方法步驟的流程圖。
具體實(shí)施方式
圖2A和圖2B是根據(jù)本發(fā)明的實(shí)施例的實(shí)施“虛擬卷”的存儲(chǔ)系統(tǒng)群集的框圖。存儲(chǔ)系統(tǒng)群集包括一個(gè)或者多個(gè)存儲(chǔ)系統(tǒng),例如,存儲(chǔ)系統(tǒng)1301和1302,這些存儲(chǔ)系統(tǒng)可以是盤(pán)陣列,每個(gè)存儲(chǔ)系統(tǒng)具有多個(gè)數(shù)據(jù)存儲(chǔ)單元(DSU),在圖中標(biāo)注這些DSU之一為141,并且存儲(chǔ)系統(tǒng)群集包括存儲(chǔ)系統(tǒng)管理器131和132,這些存儲(chǔ)系統(tǒng)管理器控制存儲(chǔ)系統(tǒng)130的各種操作以實(shí)現(xiàn)這里描述的本發(fā)明的實(shí)施例。在一個(gè)實(shí)施例中,兩個(gè)或者更多存儲(chǔ)系統(tǒng)130可以實(shí)施分布式存儲(chǔ)系統(tǒng)管理器135,該分布式存儲(chǔ)系統(tǒng)管理器135控制存儲(chǔ)系統(tǒng)群集的操作如同它們是單個(gè)邏輯存儲(chǔ)系統(tǒng)一樣。分布式存儲(chǔ)系統(tǒng)管理器135的操作域可以跨越在相同數(shù)據(jù)中心中或者跨越多個(gè)數(shù)據(jù)中心安裝的存儲(chǔ)系統(tǒng)。例如,在一個(gè)這樣的實(shí)施例中,分布式存儲(chǔ)系統(tǒng)管理器135可以包括存儲(chǔ)系統(tǒng)管理器131,存儲(chǔ)系統(tǒng)管理器131在與用作“從屬”管理器的存儲(chǔ)系統(tǒng)管理器132通信時(shí)用作“主控”管理器,但是應(yīng)當(dāng)認(rèn)識(shí)到,可以實(shí)施用于實(shí)施分布式存儲(chǔ)系統(tǒng)管理器的多種備選方法。DSU代表物理存儲(chǔ)單元,例如,基于盤(pán)或者閃存的存儲(chǔ)單元,比如旋轉(zhuǎn)盤(pán)或者固態(tài)盤(pán)。根據(jù)實(shí)施例,存儲(chǔ)系統(tǒng)群集創(chuàng)建并且向連接的計(jì)算機(jī)系統(tǒng)(比如計(jì)算機(jī)系統(tǒng)1001和1002)暴露如這里進(jìn)一步具體描述的“虛擬卷”(vvol)。在計(jì)算機(jī)系統(tǒng)100中運(yùn)行的應(yīng)用(例如,VM等,這些VM訪問(wèn)它們的虛擬盤(pán))使用標(biāo)準(zhǔn)協(xié)議(比如在圖2A的實(shí)施例中為SCSI和在圖2B的實(shí)施例中為NFS)、通過(guò)在存儲(chǔ)系統(tǒng)130中被配置的、被稱(chēng)為“協(xié)議端點(diǎn)”(PE)的用于SCSI或者NFS協(xié)議流量的邏輯端點(diǎn)按需訪問(wèn)vvol。從計(jì)算機(jī)系統(tǒng)100到存儲(chǔ)系統(tǒng)130的用于與應(yīng)用有關(guān)的數(shù)據(jù)操作的通信路徑這里被稱(chēng)為“帶內(nèi)”路徑。在計(jì)算機(jī)系統(tǒng)100的主機(jī)總線適配器(HBA)與在存儲(chǔ)系統(tǒng)130中配置的PE之間以及在計(jì)算機(jī)系統(tǒng)100的網(wǎng)絡(luò)接口卡(NIC)與在存儲(chǔ)系統(tǒng)130中配置的PE之間的通信路徑是帶內(nèi)路徑的示例。從計(jì)算機(jī)系統(tǒng)100到存儲(chǔ)系統(tǒng)130的不是在帶內(nèi)并且通常用來(lái)執(zhí)行管理操作的通信路徑這里被稱(chēng)為“帶外”路徑。在圖6中從帶內(nèi)路徑分離地圖示帶外路徑的示例,比如在計(jì)算機(jī)系統(tǒng)100與存儲(chǔ)系統(tǒng)130之間的以太網(wǎng)網(wǎng)絡(luò)連接。為了簡(jiǎn)化,計(jì)算機(jī)系統(tǒng)100被示出為直接連接到存儲(chǔ)系統(tǒng)130。然而,應(yīng)當(dāng)理解,它們可以通過(guò)多個(gè)路徑和交換機(jī)中的一個(gè)或者多個(gè)交換機(jī)連接到存儲(chǔ)系統(tǒng)130。
分布式存儲(chǔ)系統(tǒng)管理器135或者單個(gè)存儲(chǔ)系統(tǒng)管理器131或者132可以從代表物理DSU的邏輯聚合的邏輯“存儲(chǔ)容器”創(chuàng)建vvol(例如,在計(jì)算機(jī)系統(tǒng)100請(qǐng)求時(shí)等)。一般而言,存儲(chǔ)容器可以跨越多于一個(gè)存儲(chǔ)系統(tǒng),并且許多存儲(chǔ)容器可以由單個(gè)存儲(chǔ)系統(tǒng)管理器或者分布式存儲(chǔ)系統(tǒng)管理器創(chuàng)建。相似地,單個(gè)存儲(chǔ)系統(tǒng)可以包含許多存儲(chǔ)容器。在圖2A和圖2B中,由分布式存儲(chǔ)系統(tǒng)管理器135創(chuàng)建的存儲(chǔ)容器142A被示出為跨越存儲(chǔ)系統(tǒng)1301和存儲(chǔ)系統(tǒng)1302,而存儲(chǔ)容器142B和存儲(chǔ)容器142C被示出為包含于單個(gè)存儲(chǔ)系統(tǒng)內(nèi)(即,分別為存儲(chǔ)系統(tǒng)1301和存儲(chǔ)系統(tǒng)1302)。應(yīng)當(dāng)認(rèn)識(shí)到,由于存儲(chǔ)容器可以跨越多個(gè)一個(gè)存儲(chǔ)系統(tǒng),所以存儲(chǔ)系統(tǒng)管理員可以向它的客戶供應(yīng)超過(guò)任一存儲(chǔ)系統(tǒng)的存儲(chǔ)容量的存儲(chǔ)容量。還應(yīng)當(dāng)認(rèn)識(shí)到,由于可以在單個(gè)存儲(chǔ)系統(tǒng)內(nèi)創(chuàng)建多個(gè)存儲(chǔ)容器,所以存儲(chǔ)系統(tǒng)管理員可以使用單個(gè)存儲(chǔ)系統(tǒng)來(lái)向多個(gè)客戶供應(yīng)存儲(chǔ)裝置。
在圖2A的實(shí)施例中,從基于塊的存儲(chǔ)系統(tǒng)供應(yīng)每個(gè)vvol。在圖2B的實(shí)施例中,基于NAS的存儲(chǔ)系統(tǒng)在DSU 141上面實(shí)施文件系統(tǒng)145,并且向計(jì)算機(jī)系統(tǒng)100暴露每個(gè)vvol作為在這一文件系統(tǒng)內(nèi)的文件對(duì)象。此外,如以下將進(jìn)一步具體描述的那樣,在計(jì)算機(jī)系統(tǒng)100上運(yùn)行的應(yīng)用通過(guò)PE訪問(wèn)用于IO的vvol。例如,如圖2A和圖2B中的虛線所示,vvol 151和vvol 152經(jīng)由PE 161可訪問(wèn);vvol 153和vvol 155經(jīng)由PE 162可訪問(wèn);vvol 154經(jīng)由PE 163和PE164可訪問(wèn);并且vvol 156經(jīng)由PE 165可訪問(wèn)。應(yīng)當(dāng)認(rèn)識(shí)到,來(lái)自多個(gè)存儲(chǔ)容器的vvol(比如在存儲(chǔ)容器142A中的vvol 153和在存儲(chǔ)容器142C中的vvol 155)可以在任何給予的時(shí)間經(jīng)由單個(gè)PE(比如PE 162)可訪問(wèn)。還應(yīng)當(dāng)認(rèn)識(shí)到,PE(比如PE 166)可以在不存在經(jīng)由它們可訪問(wèn)的任何vvol時(shí)存在。
在圖2A的實(shí)施例中,存儲(chǔ)系統(tǒng)130使用已知的用于設(shè)立LUN的方法來(lái)將PE實(shí)施為特殊類(lèi)型的LUN。如與LUN一樣,存儲(chǔ)系統(tǒng)130向每個(gè)UE提供被稱(chēng)為WWN(世界范圍名稱(chēng))的唯一標(biāo)識(shí)符。在一個(gè)實(shí)施例中,在創(chuàng)建PE時(shí),存儲(chǔ)系統(tǒng)130未指定用于特殊LUN的大小,因?yàn)檫@里描述的PE不是實(shí)際數(shù)據(jù)容器。在一個(gè)這樣的實(shí)施例中,存儲(chǔ)系統(tǒng)130可以指派零值或者很小的值作為與PE有關(guān)的LUN的大小,從而使得如以下進(jìn)一步討論的那樣,管理員可以在請(qǐng)求存儲(chǔ)系統(tǒng)提供LUN(例如,傳統(tǒng)數(shù)據(jù)LUN和與PE有關(guān)的LUN)的列表時(shí)快速標(biāo)識(shí)PE。相似地,存儲(chǔ)系統(tǒng)130可以向PE指派大于255的LUN編號(hào)作為用于LUN的標(biāo)識(shí)編號(hào)以用人類(lèi)友好方式指示它們不是數(shù)據(jù)LUN。作為用于在PE與LUN之間區(qū)分的另一方式,可以向擴(kuò)展的查詢(xún)數(shù)據(jù)VPD頁(yè)面(頁(yè)面86h)添加PE位。在LUN是PE時(shí)將PE位設(shè)置成1,并且在它是普通數(shù)據(jù)LUN時(shí)設(shè)置成0。計(jì)算機(jī)系統(tǒng)100可以通過(guò)發(fā)出SCSI命令REPORT_LUNS(報(bào)告_LUN)來(lái)經(jīng)由帶內(nèi)路徑發(fā)現(xiàn)PE并且通過(guò)檢查指示的PE位來(lái)確定它們是否為根據(jù)這里描述的實(shí)施例的PE或者常規(guī)數(shù)據(jù)LUN。計(jì)算機(jī)系統(tǒng)100可以可選地檢查L(zhǎng)UN大小和LUN編號(hào)性質(zhì)以進(jìn)一步確認(rèn)LUN是否為PE或者常規(guī)LUN。應(yīng)當(dāng)認(rèn)識(shí)到,以上描述的技術(shù)中的任何技術(shù)可以用來(lái)區(qū)分與PE有關(guān)的LUN與普通數(shù)據(jù)LUN。在一個(gè)實(shí)施例中,PE位技術(shù)是用來(lái)區(qū)分與PE有關(guān)的LUN與普通數(shù)據(jù)LUN的僅有技術(shù)。
在圖2B的實(shí)施例中,使用已知的用于設(shè)立指向FS卷的裝配點(diǎn)的方法在存儲(chǔ)系統(tǒng)130中創(chuàng)建PE。在圖2B的實(shí)施例中創(chuàng)建的每個(gè)PE由也常規(guī)地被一起稱(chēng)為“裝配點(diǎn)”的IP地址和文件系統(tǒng)路徑唯一標(biāo)識(shí)。然而,不同于常規(guī)裝配點(diǎn),PE并不與FS卷關(guān)聯(lián)。此外,不同于圖2A的PE,圖2B的PE除非虛擬卷綁定到給定的PE否則不可經(jīng)由帶內(nèi)路徑被計(jì)算機(jī)系統(tǒng)100發(fā)現(xiàn)。因此,圖2B的PE經(jīng)由帶外路徑由存儲(chǔ)系統(tǒng)報(bào)告。
圖3是根據(jù)一個(gè)實(shí)施例的圖2A或者圖2B的存儲(chǔ)系統(tǒng)群集的用于管理虛擬卷的部件的框圖。部件包括在一個(gè)實(shí)施例中在存儲(chǔ)系統(tǒng)130中執(zhí)行的存儲(chǔ)系統(tǒng)管理器131和132的軟件模塊或者在另一實(shí)施例中的分布式存儲(chǔ)系統(tǒng)管理器135的軟件模塊,即輸入/輸出(I/O)管理器304、卷管理器306、容器管理器308和數(shù)據(jù)訪問(wèn)層310。在這里的實(shí)施例的描述中,應(yīng)當(dāng)理解,由分布式存儲(chǔ)系統(tǒng)管理器135采取的任何動(dòng)作可以取決于實(shí)施例由存儲(chǔ)系統(tǒng)管理器131或者存儲(chǔ)系統(tǒng)管理器132采取。
在圖3的示例中,分布式存儲(chǔ)系統(tǒng)管理器135已經(jīng)從DSU 141創(chuàng)建了三個(gè)存儲(chǔ)容器SC1、SC2和SC3,這些存儲(chǔ)容器中的每個(gè)存儲(chǔ)容器被示出為具有被標(biāo)注為P1至Pn的紡錘體盤(pán)區(qū)。一般而言,每個(gè)存儲(chǔ)容器具有固定物理大小并且與DSU的具體盤(pán)區(qū)關(guān)聯(lián)。在圖3中所示的示例中,分布式存儲(chǔ)系統(tǒng)管理器135具有對(duì)容器數(shù)據(jù)庫(kù)316的訪問(wèn),容器數(shù)據(jù)庫(kù)316為每個(gè)存儲(chǔ)容器存儲(chǔ)它的容器ID、物理布局信息和一些元數(shù)據(jù)。容器數(shù)據(jù)庫(kù)316由容器管理器308管理和更新,容器管理器308在一個(gè)實(shí)施例中是分布式存儲(chǔ)系統(tǒng)管理器135的部件。容器ID是在創(chuàng)建存儲(chǔ)容器時(shí)向存儲(chǔ)容器給予的通用唯一標(biāo)識(shí)符。物理布局信息由與給予的存儲(chǔ)容器關(guān)聯(lián)并且被存儲(chǔ)為<系統(tǒng)ID,DSU ID,盤(pán)區(qū)編號(hào)>的有序列表的DSU 141的紡錘體盤(pán)區(qū)構(gòu)成。元數(shù)據(jù)分節(jié)可以包含一些公共和一些存儲(chǔ)系統(tǒng)銷(xiāo)售商專(zhuān)屬元數(shù)據(jù)。例如,元數(shù)據(jù)分節(jié)可以包含被許可訪問(wèn)存儲(chǔ)容器的計(jì)算機(jī)系統(tǒng)或者應(yīng)用或者用戶的ID。作為另一示例,元數(shù)據(jù)分節(jié)包含分配位圖,該分配位圖用于表示已經(jīng)向現(xiàn)有vvol分配了存儲(chǔ)系統(tǒng)的哪些<系統(tǒng)ID,DSU ID,盤(pán)區(qū)編號(hào)>盤(pán)區(qū)并且哪些盤(pán)區(qū)空閑。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)管理員可以創(chuàng)建用于不同業(yè)務(wù)單元的分離存儲(chǔ)容器,從而使得未從相同存儲(chǔ)容器供應(yīng)不同業(yè)務(wù)單元的vvol??梢詰?yīng)用其他用于隔離vvol的策略。例如,存儲(chǔ)系統(tǒng)管理員可以采用將從不同存儲(chǔ)容器供應(yīng)云服務(wù)的不同客戶的vvol這樣的策略。vvol也可以根據(jù)它們的所需服務(wù)水平被分組并且從存儲(chǔ)容器被供應(yīng)。此外,存儲(chǔ)系統(tǒng)管理員可以創(chuàng)建、刪除和以其他方式管理存儲(chǔ)容器,比如定義可以被創(chuàng)建的存儲(chǔ)容器數(shù)目以及設(shè)置可以每存儲(chǔ)容器設(shè)置的最大物理大小。
同樣,在圖3的示例中,分布式存儲(chǔ)系統(tǒng)管理器135已經(jīng)供應(yīng)了(代表請(qǐng)求計(jì)算機(jī)系統(tǒng)100)各自來(lái)自不同存儲(chǔ)容器的多個(gè)vvol。一般而言,vvol可以具有固定物理大小或者可以被瘦供應(yīng),并且每個(gè)vvol具有vvol ID,該vvol ID是在創(chuàng)建vvol時(shí)向vvol給予的通用唯一標(biāo)識(shí)符。對(duì)于每個(gè)vvol,vvol數(shù)據(jù)庫(kù)314為每個(gè)vvol存儲(chǔ)它的vvol ID、其中創(chuàng)建vvol的存儲(chǔ)容器的容器ID和在該存儲(chǔ)容器內(nèi)的包括vvol的地址空間的<偏移,長(zhǎng)度>值的有序列表。vvol數(shù)據(jù)庫(kù)314由卷管理器306管理和更新,卷管理器306在一個(gè)實(shí)施例中是分布式存儲(chǔ)系統(tǒng)管理器135的部件。在一個(gè)實(shí)施例中,vvol數(shù)據(jù)庫(kù)314也存儲(chǔ)關(guān)于vvol的少量元數(shù)據(jù)。這一元數(shù)據(jù)在vvol數(shù)據(jù)314中被存儲(chǔ)為關(guān)鍵字-值對(duì)的集合,并且可以在vvol的存在期間的任何時(shí)間經(jīng)由帶外路徑由計(jì)算機(jī)系統(tǒng)100更新和查詢(xún)。存儲(chǔ)的關(guān)鍵字-值對(duì)落入三個(gè)類(lèi)別中。第一類(lèi)別是:熟知的關(guān)鍵字——某些關(guān)鍵字的定義(并且因此它們的值的解釋)公開(kāi)地可用。一個(gè)示例是與虛擬卷類(lèi)型(例如,在虛擬機(jī)實(shí)施例中,vvol是否包含VM的元數(shù)據(jù)或者VM的數(shù)據(jù))對(duì)應(yīng)的關(guān)鍵字。另一示例是App ID,App ID是在vvol中存儲(chǔ)數(shù)據(jù)的應(yīng)用的ID。第二類(lèi)別是:計(jì)算機(jī)系統(tǒng)專(zhuān)屬關(guān)鍵字——計(jì)算機(jī)系統(tǒng)或者它的管理模塊將某些關(guān)鍵字和值存儲(chǔ)為虛擬卷的元數(shù)據(jù)。第三類(lèi)別是:存儲(chǔ)系統(tǒng)銷(xiāo)售商專(zhuān)屬關(guān)鍵字——這些允許存儲(chǔ)系統(tǒng)銷(xiāo)售商存儲(chǔ)與虛擬卷的元數(shù)據(jù)關(guān)聯(lián)的某些關(guān)鍵字。存儲(chǔ)系統(tǒng)銷(xiāo)售商將這一關(guān)鍵字-值存儲(chǔ)庫(kù)用于它的元數(shù)據(jù)的一個(gè)原因是所有這些關(guān)鍵字經(jīng)由用于vvol的帶外信道容易地可用于存儲(chǔ)系統(tǒng)銷(xiāo)售商插件和其他擴(kuò)展。用于關(guān)鍵字-值對(duì)的存儲(chǔ)操作是虛擬卷創(chuàng)建和其他過(guò)程的部分,并且因此存儲(chǔ)操作應(yīng)當(dāng)合理地快。存儲(chǔ)系統(tǒng)也被配置用于基于與在具體關(guān)鍵字上提供的值的確切匹配來(lái)實(shí)現(xiàn)虛擬卷的搜索。
IO管理器304是維護(hù)連接數(shù)據(jù)庫(kù)312的軟件模塊(也在某些實(shí)施例中為分布式存儲(chǔ)系統(tǒng)管理器135的部件),連接數(shù)據(jù)庫(kù)312存儲(chǔ)在PE與vvol之間的當(dāng)前有效IO連接路徑。在圖3中所示的示例中,示出了七個(gè)當(dāng)前有效IO會(huì)話。每個(gè)有效會(huì)話具有關(guān)聯(lián)的PEID、次級(jí)標(biāo)識(shí)符(SLLID)、vvol ID和參考計(jì)數(shù)(RefCnt),參考計(jì)數(shù)指示通過(guò)這一IO會(huì)話執(zhí)行IO的不同應(yīng)用的數(shù)目。由分布式存儲(chǔ)系統(tǒng)管理器135(例如,在由計(jì)算機(jī)系統(tǒng)100請(qǐng)求時(shí))在PE與vvol之間建立有效IO會(huì)話的過(guò)程這里被稱(chēng)為“綁定”過(guò)程。對(duì)于每個(gè)綁定,分布式存儲(chǔ)系統(tǒng)管理器135(例如,經(jīng)由IO管理器304)向連接數(shù)據(jù)庫(kù)312添加條目。由分布式存儲(chǔ)系統(tǒng)管理器135隨后拆除IO會(huì)話的過(guò)程這里被稱(chēng)為“解綁定”過(guò)程。對(duì)于每個(gè)解綁定,分布式存儲(chǔ)系統(tǒng)管理器135(例如,經(jīng)由IO管理器304)將IO會(huì)話的參考計(jì)數(shù)遞減一。在IO會(huì)話的參考計(jì)數(shù)為零時(shí),分布式存儲(chǔ)系統(tǒng)管理器135(例如,經(jīng)由IO管理器304)可以從連接數(shù)據(jù)庫(kù)312刪除用于該IO連接路徑的條目。如先前討論的那樣,在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)100生成并且經(jīng)由帶外路徑向分布式存儲(chǔ)系統(tǒng)管理器135傳輸綁定和解綁定請(qǐng)求。備選地,計(jì)算機(jī)系統(tǒng)100可以通過(guò)使現(xiàn)有錯(cuò)誤路徑超負(fù)荷來(lái)生成并且經(jīng)由帶內(nèi)路徑傳輸解綁定請(qǐng)求。在一個(gè)實(shí)施例中,在參考計(jì)數(shù)從0改變成1或者相反時(shí)將生成數(shù)被改變成單調(diào)增加數(shù)或者隨機(jī)生成的數(shù)。在另一實(shí)施例中,生成數(shù)是隨機(jī)生成的數(shù),并且從連接數(shù)據(jù)庫(kù)312消除RefCnt列,并且對(duì)于每個(gè)綁定,即使在綁定請(qǐng)求是對(duì)已經(jīng)綁定的vvol時(shí),分布式存儲(chǔ)系統(tǒng)管理器135也(例如,經(jīng)由IO管理器304)向連接數(shù)據(jù)庫(kù)312添加條目。
在圖2A的存儲(chǔ)系統(tǒng)群集中,IO管理器304使用連接數(shù)據(jù)庫(kù)312來(lái)處理通過(guò)PE接收的來(lái)自計(jì)算機(jī)系統(tǒng)100的IO請(qǐng)求(IO)。當(dāng)在PE之一接收IO時(shí),IO管理器304解析IO以標(biāo)識(shí)在IO中包含的PE ID和SLLID以便確定IO被既定用于的vvol。通過(guò)訪問(wèn)連接數(shù)據(jù)庫(kù)314,IO管理器304然后能夠取回與解析的PE ID和SLLID關(guān)聯(lián)的vvol ID。在圖3和后續(xù)圖中,為了簡(jiǎn)化而將PE ID示出為PE_A、PE_B等。在一個(gè)實(shí)施例中,實(shí)際PE ID是PE的WWN。此外,SLLID被示出為S0001、S0002等。實(shí)際SLLID由分布式存儲(chǔ)系統(tǒng)管理器135生成為在與連接數(shù)據(jù)庫(kù)312中的給定的PE ID關(guān)聯(lián)的SLLID之中的任何唯一數(shù)。在具有vvol ID的虛擬卷的邏輯地址空間與DSU141的物理位置之間的映射由卷管理器306使用vvol數(shù)據(jù)庫(kù)314以及由容器管理器308使用容器數(shù)據(jù)庫(kù)316來(lái)執(zhí)行。一旦已經(jīng)獲得了DSU 141的物理位置,數(shù)據(jù)訪問(wèn)層310(在一個(gè)實(shí)施例中也為分布式存儲(chǔ)系統(tǒng)管理器135的部件)就在這些物理位置上執(zhí)行IO。
在圖2B的存儲(chǔ)系統(tǒng)群集中,通過(guò)PE接收IO,并且每個(gè)這樣的IO包括IO已經(jīng)被發(fā)到的NFS句柄(或者相似的文件系統(tǒng)句柄)。在一個(gè)實(shí)施例中,用于這樣的系統(tǒng)的連接數(shù)據(jù)庫(kù)312包含存儲(chǔ)系統(tǒng)的NFS接口的IP地址為PE ID以及包括文件系統(tǒng)路徑為SLLID。基于vvol在文件系統(tǒng)145中的vvol的位置生成SLLID。在vvol的邏輯地址空間與DSU 141的物理位置之間的映射由卷管理器306使用vvol數(shù)據(jù)庫(kù)314以及由容器管理器308使用容器數(shù)據(jù)庫(kù)316來(lái)執(zhí)行。一旦已經(jīng)獲得了DSU 141的物理位置,數(shù)據(jù)訪問(wèn)層就在這些物理位置上執(zhí)行IO。應(yīng)當(dāng)認(rèn)識(shí)到,對(duì)于圖2B的存儲(chǔ)系統(tǒng),容器數(shù)據(jù)庫(kù)312可以在用于給定的vvol的容器位置條目中包含文件:<偏移,長(zhǎng)度>條目有序列表(即,vvol可以包括在文件系統(tǒng)145中存儲(chǔ)的多個(gè)文件段)。
在一個(gè)實(shí)施例中,在易失性存儲(chǔ)器中維護(hù)連接數(shù)據(jù)庫(kù)312,而在持久存儲(chǔ)裝置(比如DSU 141)中維護(hù)vvol數(shù)據(jù)庫(kù)314和容器數(shù)據(jù)庫(kù)316。在其他實(shí)施例中,可以在持久存儲(chǔ)裝置中維護(hù)所有數(shù)據(jù)庫(kù)312、314、316。
圖4是用于創(chuàng)建存儲(chǔ)容器的方法步驟410的流程圖。在一個(gè)實(shí)施例中,這些步驟在存儲(chǔ)管理員的控制之下由存儲(chǔ)系統(tǒng)管理器131、存儲(chǔ)系統(tǒng)管理器132或者分布式存儲(chǔ)系統(tǒng)管理器135執(zhí)行。如以上指出的那樣,存儲(chǔ)容器代表物理DSU的邏輯聚合并且可以跨越來(lái)自多于一個(gè)存儲(chǔ)系統(tǒng)的物理DSU。在步驟411,存儲(chǔ)管理員(經(jīng)由分布式存儲(chǔ)系統(tǒng)管理器135等)設(shè)置存儲(chǔ)容器的物理容量。在云或者數(shù)據(jù)中心內(nèi),這一物理容量可以例如代表由客戶租賃的物理存儲(chǔ)裝置的量。由這里公開(kāi)的存儲(chǔ)容器提供的靈活性是不同客戶的存儲(chǔ)容器可以由存儲(chǔ)管理員從相同存儲(chǔ)系統(tǒng)供應(yīng),并且用于單個(gè)客戶的存儲(chǔ)容器可以例如在任何一個(gè)存儲(chǔ)設(shè)備的物理容量不足以滿足客戶請(qǐng)求的大小的情況下或者在比如vvol的物理存儲(chǔ)覆蓋區(qū)將自然地跨越多個(gè)存儲(chǔ)系統(tǒng)這樣的復(fù)制的情況下從多個(gè)存儲(chǔ)系統(tǒng)被供應(yīng)。在步驟412,存儲(chǔ)管理員設(shè)置用于訪問(wèn)存儲(chǔ)容器的權(quán)限級(jí)別。例如,在多租戶數(shù)據(jù)中心中,客戶僅可以訪問(wèn)已經(jīng)向他或者她租賃的存儲(chǔ)容器。在步驟413,分布式存儲(chǔ)系統(tǒng)管理器135生成用于存儲(chǔ)容器的唯一標(biāo)識(shí)符。然后,在步驟414,分布式存儲(chǔ)系統(tǒng)管理器135(例如,在一個(gè)實(shí)施例中經(jīng)由容器管理器308)以充分?jǐn)?shù)量向存儲(chǔ)容器分配DSU141的空閑紡錘體盤(pán)區(qū)。如以上指出的那樣,在任何一個(gè)存儲(chǔ)系統(tǒng)的自由空間不足以滿足物理容量的情況下,分布式存儲(chǔ)系統(tǒng)管理器135可以從多個(gè)存儲(chǔ)系統(tǒng)分配DSU 141的紡錘體盤(pán)區(qū)。在已經(jīng)分配了分區(qū)之后,分布式存儲(chǔ)系統(tǒng)管理器135(例如,經(jīng)由容器管理器308)用唯一容器ID、<系統(tǒng)編號(hào)、DSU ID、盤(pán)區(qū)編號(hào)>的有序列表和被許可訪問(wèn)存儲(chǔ)容器的計(jì)算機(jī)系統(tǒng)的上下文ID更新容器數(shù)據(jù)庫(kù)316。
根據(jù)這里描述的實(shí)施例,存儲(chǔ)容量簡(jiǎn)檔(例如,SLA或者服務(wù)質(zhì)量(QoS))可以在每vvol基礎(chǔ)上由分布式存儲(chǔ)系統(tǒng)管理器135(例如,代表請(qǐng)求計(jì)算機(jī)系統(tǒng)100)配置。因此,有可能讓具有不同存儲(chǔ)能力簡(jiǎn)檔的vvol是相同存儲(chǔ)容器的部分。在一個(gè)實(shí)施例中,系統(tǒng)管理員定義默認(rèn)存儲(chǔ)能力簡(jiǎn)檔(或者多個(gè)可能存儲(chǔ)能力簡(jiǎn)檔),該(或者這些)存儲(chǔ)能力簡(jiǎn)檔在創(chuàng)建存儲(chǔ)容器時(shí)用于新創(chuàng)建的vvol并且被存儲(chǔ)于容器數(shù)據(jù)庫(kù)316的元數(shù)據(jù)分節(jié)中。如果未對(duì)于在存儲(chǔ)容器內(nèi)創(chuàng)建的新vvol顯式地指定存儲(chǔ)能力簡(jiǎn)檔,則新vvol將繼承與存儲(chǔ)容器關(guān)聯(lián)的默認(rèn)存儲(chǔ)能力簡(jiǎn)檔。
圖5A是在圖2A的存儲(chǔ)系統(tǒng)群集上主控的被配置用來(lái)實(shí)施虛擬卷的計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖。可以在包括一個(gè)或者多個(gè)中央處理單元(CPU)501、存儲(chǔ)器502、一個(gè)或者多個(gè)網(wǎng)絡(luò)接口卡(NIC)503和一個(gè)或者多個(gè)主機(jī)總線適配器(HBA)504的通常為服務(wù)器類(lèi)的常規(guī)硬件平臺(tái)500上構(gòu)造計(jì)算機(jī)系統(tǒng)101。HBA 504使計(jì)算機(jī)系統(tǒng)101能夠通過(guò)在存儲(chǔ)設(shè)備130中配置的PE向虛擬卷發(fā)出IO。如圖5A中進(jìn)一步所示,在硬件平臺(tái)500上面安裝操作系統(tǒng)508,并且在操作系統(tǒng)508上面執(zhí)行多個(gè)應(yīng)用5121-512N。操作系統(tǒng)508的示例包括熟知的商用操作系統(tǒng)(比如Microsoft Windows、Linux等)中的任何操作系統(tǒng)。
根據(jù)這里描述的實(shí)施例,每個(gè)應(yīng)用512具有與之關(guān)聯(lián)的一個(gè)或者多個(gè)vvol并且向由操作系統(tǒng)508按照由應(yīng)用512向操作系統(tǒng)508中的“創(chuàng)建設(shè)備”調(diào)用來(lái)創(chuàng)建的vvol的塊設(shè)備實(shí)例發(fā)出IO。在塊設(shè)備數(shù)據(jù)庫(kù)533中維護(hù)在塊設(shè)備名稱(chēng)與vvol ID之間的關(guān)聯(lián)。來(lái)自應(yīng)用5121-512N的IO由文件系統(tǒng)驅(qū)動(dòng)器510接收,文件系統(tǒng)驅(qū)動(dòng)器510將它們轉(zhuǎn)換成塊IO,并且向虛擬卷設(shè)備驅(qū)動(dòng)器532提供塊IO。在另一方面,來(lái)自應(yīng)用5121的IO被示出為繞過(guò)文件系統(tǒng)驅(qū)動(dòng)器510并且被直接提供給虛擬卷設(shè)備驅(qū)動(dòng)器532,這表示應(yīng)用5121以在通過(guò)這里引用將全部?jī)?nèi)容結(jié)合、名稱(chēng)為“Providing Access to a Raw Data Storage Unit in a Computer System”的美國(guó)專(zhuān)利7,155,558中描述的方式直接訪問(wèn)它的塊設(shè)備作為原始存儲(chǔ)設(shè)備,例如,作為數(shù)據(jù)庫(kù)盤(pán)、日志盤(pán)、備份存檔和內(nèi)容貯存庫(kù)。在虛擬卷設(shè)備驅(qū)動(dòng)器532接收塊IO時(shí),它訪問(wèn)塊設(shè)備數(shù)據(jù)庫(kù)533以引用在IO中指定的塊設(shè)備名稱(chēng)與PE ID(PE LUN的WWN)和SLLID之間的映射,該P(yáng)E ID和SLLID定義通向與塊設(shè)備名稱(chēng)關(guān)聯(lián)的vvol的IO連接路徑。在這里所示的示例中,塊設(shè)備名稱(chēng)archive對(duì)應(yīng)于為應(yīng)用5121創(chuàng)建的塊設(shè)備實(shí)例vvol12,并且塊設(shè)備名稱(chēng)foo、dbase和log分別對(duì)應(yīng)于為應(yīng)用5122-512N中的一個(gè)或者多個(gè)應(yīng)用創(chuàng)建的塊設(shè)備實(shí)例vvol1、vvol16和vvol17。在塊設(shè)備數(shù)據(jù)庫(kù)533中存儲(chǔ)的其他信息包括用于每個(gè)塊設(shè)備的活躍位值,該活躍位值指示塊設(shè)備是否活躍,并且包括CIF(在飛行中的命令,commands-in-flight)值?;钴S位“1”表示可以向塊設(shè)備發(fā)出IO?;钴S位“0”表示塊設(shè)備不活躍并且不能向塊設(shè)備發(fā)出IO。CIF值提供多少I(mǎi)O在飛行中(即,被發(fā)出但是尚未完成)的指示。在這里所示的示例中,塊設(shè)備foo活躍并且具有一些在飛行中的命令。塊設(shè)備archive不活躍并且將不會(huì)接受更加新的命令。然而,它等待2個(gè)在飛行中的命令完成。塊設(shè)備dbase不活躍而無(wú)未完成的命令。最后,塊設(shè)備log活躍,但是應(yīng)用當(dāng)前沒(méi)有向設(shè)備的未決IO。虛擬卷設(shè)備驅(qū)動(dòng)器532可以選擇在任何時(shí)間從它的數(shù)據(jù)庫(kù)533去除這樣的設(shè)備。
除了執(zhí)行以上描述的映射之外,虛擬卷設(shè)備驅(qū)動(dòng)器532還向數(shù)據(jù)訪問(wèn)層540發(fā)出原始?jí)K級(jí)IO。數(shù)據(jù)訪問(wèn)層540包括設(shè)備訪問(wèn)層534和用于HBA 504的設(shè)備驅(qū)動(dòng)器536,設(shè)備訪問(wèn)層534將命令排隊(duì)和調(diào)度策略應(yīng)用于原始?jí)K級(jí)IO,并且設(shè)備驅(qū)動(dòng)器536在符合協(xié)議的格式中格式化原始?jí)K級(jí)IO并且向HBA 504發(fā)送它們以用于經(jīng)由帶內(nèi)路徑向PE轉(zhuǎn)發(fā)。在其中使用SCSI協(xié)議的實(shí)施例中,在如在SAM-5(SCSI架構(gòu)模型-5)中指定的SCSI LUN數(shù)據(jù)字段中編碼vvol信息,該數(shù)據(jù)字段是8字節(jié)結(jié)構(gòu)。在前2個(gè)字節(jié)中編碼常規(guī)地用于LUN ID的PE ID,并且利用剩余6個(gè)字節(jié)(的一部分)在SCSI第二級(jí)LUN ID中編碼vvol信息,特別地為SLLID。
如圖5A中進(jìn)一步所示,數(shù)據(jù)訪問(wèn)層540也包括用于處置通過(guò)帶內(nèi)路徑從存儲(chǔ)系統(tǒng)接收的IO錯(cuò)誤的錯(cuò)誤處置單元542。在一個(gè)實(shí)施例中,由I/O管理器304通過(guò)PE傳播由錯(cuò)誤處置單元542接收的IO錯(cuò)誤。IO錯(cuò)誤類(lèi)的示例包括在計(jì)算機(jī)系統(tǒng)101與PE之間的路徑錯(cuò)誤、PE錯(cuò)誤和vvol錯(cuò)誤。錯(cuò)誤處置單元542將所有檢測(cè)到的錯(cuò)誤分類(lèi)為前述類(lèi)。在遇到通向PE的路徑錯(cuò)誤并且通向PE的另一路徑存在時(shí),數(shù)據(jù)訪問(wèn)層540沿著通向PE的不同路徑傳輸IO。在IO錯(cuò)誤是PE錯(cuò)誤時(shí),錯(cuò)誤處置單元542更新塊設(shè)備數(shù)據(jù)庫(kù)533以指示用于通過(guò)PE發(fā)出IO的每個(gè)塊設(shè)備的錯(cuò)誤狀況。在IO錯(cuò)誤是vvol錯(cuò)誤時(shí),錯(cuò)誤處置單元542更新塊設(shè)備數(shù)據(jù)庫(kù)533以指示用于與vvol關(guān)聯(lián)的每個(gè)塊設(shè)備的錯(cuò)誤狀況。錯(cuò)誤處置單元542也可以發(fā)出報(bào)警或者系統(tǒng)事件,從而使得將拒絕向具有錯(cuò)誤狀況的塊設(shè)備的進(jìn)一步IO。
圖5B是圖5A的計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)已經(jīng)被配置用于與圖2B的存儲(chǔ)系統(tǒng)群集而不是圖2A的存儲(chǔ)系統(tǒng)群集對(duì)接。在這一實(shí)施例中,數(shù)據(jù)訪問(wèn)層540包括NFS客戶端545和用于NIC503的設(shè)備驅(qū)動(dòng)器546。NFS客戶端545將塊設(shè)備名稱(chēng)映射到PE ID(NAS存儲(chǔ)系統(tǒng)的IP地址)和SLLID,該SLLID是與塊設(shè)備對(duì)應(yīng)的NFS文件句柄。如圖5B中所示在塊設(shè)備數(shù)據(jù)庫(kù)533中存儲(chǔ)這一映射。應(yīng)當(dāng)注意,活躍和CIF列仍然存在,但是在圖5B中所示的塊設(shè)備數(shù)據(jù)庫(kù)533中未被圖示。如以下將描述的那樣,NFS文件句柄在NAS存儲(chǔ)系統(tǒng)內(nèi)唯一標(biāo)識(shí)文件對(duì)象,并且可以在綁定過(guò)程期間被生成。備選地,響應(yīng)于對(duì)于綁定vvol的請(qǐng)求,NAS存儲(chǔ)系統(tǒng)返回PE ID和SLLID,并且使用普通帶內(nèi)機(jī)制(例如,查找或者readdirplus)的vvol的開(kāi)放將給予NFS文件句柄。NFS客戶端545也將從虛擬卷設(shè)備驅(qū)動(dòng)器532接收的原始?jí)K級(jí)IO轉(zhuǎn)譯成基于NFS文件的IO。用于NIC 503的設(shè)備驅(qū)動(dòng)器546然后在符合協(xié)議的格式中格式化基于NFS文件的IO并且將它們與NFS句柄一起發(fā)送到NIC 503以用于經(jīng)由帶內(nèi)路徑向PE之一轉(zhuǎn)發(fā)。
圖5C是被配置用于實(shí)施虛擬卷的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。在這一實(shí)施例中,向計(jì)算機(jī)系統(tǒng)102配置這里被表示為管理程序560的虛擬化軟件。在硬件平臺(tái)550上面安裝管理程序560,硬件平臺(tái)550包括CPU 551、存儲(chǔ)器552、NIC 553和HBA 554并且支持虛擬機(jī)執(zhí)行空間570,可以在虛擬機(jī)執(zhí)行空間570內(nèi)并行實(shí)例化和執(zhí)行多個(gè)虛擬機(jī)(VM)5711-571N。在一個(gè)或者多個(gè)實(shí)施例中,使用由加利福尼亞州帕羅奧圖市的VMware公司分發(fā)的VMware產(chǎn)品來(lái)實(shí)施管理程序560和虛擬機(jī)571。每個(gè)虛擬機(jī)571實(shí)施虛擬硬件平臺(tái)573,虛擬硬件平臺(tái)573支持安裝能夠執(zhí)行應(yīng)用579的客戶操作系統(tǒng)(OS)572??蛻鬙S 572的示例包括熟知的商用操作系統(tǒng)(比如Microsoft Windows、Linux等)中的任何操作系統(tǒng)。在每個(gè)實(shí)例中,客戶OS 572包括本機(jī)文件系統(tǒng)層(在圖5C中未示出),例如,NTFS或者ext3FS類(lèi)型的文件系統(tǒng)層。這些文件系統(tǒng)層與虛擬硬件平臺(tái)573對(duì)接以從客戶OS 572的觀點(diǎn)來(lái)看訪問(wèn)數(shù)據(jù)存儲(chǔ)裝置HBA,數(shù)據(jù)存儲(chǔ)裝置HBA在現(xiàn)實(shí)中是由虛擬硬件平臺(tái)573實(shí)施的虛擬HBA 574,虛擬HBA 574提供表現(xiàn)盤(pán)存儲(chǔ)支持(在現(xiàn)實(shí)中為虛擬盤(pán)或者虛擬盤(pán)575A-575X)以實(shí)現(xiàn)執(zhí)行客戶OS 572。在某些實(shí)施例中,虛擬盤(pán)575A-575X可以表現(xiàn)為從客戶OS 572的觀點(diǎn)來(lái)看支持用于連接到虛擬機(jī)的SCSI標(biāo)準(zhǔn)或者本領(lǐng)域普通技術(shù)人員已知的包括IDE、ATA和ATAPI的任何其他適當(dāng)硬件連接接口標(biāo)準(zhǔn)。雖然從客戶OS 572的觀點(diǎn)來(lái)看,由這樣的客戶OS 572發(fā)起的用于實(shí)施與文件系統(tǒng)有關(guān)的數(shù)據(jù)傳送和控制操作的文件系統(tǒng)調(diào)用表現(xiàn)為向虛擬盤(pán)575A-575X尋路由以用于最終執(zhí)行,但是在現(xiàn)實(shí)中,通過(guò)虛擬HBA 574處理和傳遞這樣的調(diào)用以調(diào)整虛擬機(jī)監(jiān)視器(VMM)5611-561N,這些虛擬機(jī)監(jiān)視器(VMM)5611-561N實(shí)施為了與管理程序560協(xié)調(diào)操作而需要的虛擬系統(tǒng)支持。具體而言,HBA仿真器562在功能上使數(shù)據(jù)傳送和控制操作能夠由管理程序560正確處置,管理程序560通過(guò)它的各種層向連接到存儲(chǔ)系統(tǒng)130的HBA 554最終傳遞這樣的操作。
根據(jù)這里描述的實(shí)施例,每個(gè)VM 571具有與之關(guān)聯(lián)的一個(gè)或者多個(gè)vvol并且向由管理程序560按照由VM 571向管理程序560中的“創(chuàng)建設(shè)備”調(diào)用來(lái)創(chuàng)建的vvol的塊設(shè)備實(shí)例發(fā)出IO。在塊設(shè)備數(shù)據(jù)庫(kù)580中維護(hù)在塊設(shè)備名稱(chēng)與vvol ID之間的關(guān)聯(lián)。來(lái)自VM5712-571N的IO由SCSI虛擬化層563接收,SCSI虛擬化層563將它們轉(zhuǎn)換成虛擬機(jī)文件系統(tǒng)(VMFS)驅(qū)動(dòng)器564理解的文件IO。VMFS驅(qū)動(dòng)器的564然后將文件IO轉(zhuǎn)換成塊IO,并且向虛擬卷設(shè)備驅(qū)動(dòng)器565提供塊IO。在另一方面,來(lái)自VM 5711的IO被示出為繞過(guò)VMFS驅(qū)動(dòng)器564并且被直接提供給虛擬卷設(shè)備驅(qū)動(dòng)器565,這表示VM5711以在美國(guó)專(zhuān)利7,155,558中描述的方式直接訪問(wèn)它的塊設(shè)備作為原始存儲(chǔ)設(shè)備,例如,作為數(shù)據(jù)庫(kù)盤(pán)、日志盤(pán)、備份存檔和內(nèi)容貯存庫(kù)。
在虛擬卷設(shè)備驅(qū)動(dòng)器565接收塊IO時(shí),它訪問(wèn)塊設(shè)備數(shù)據(jù)庫(kù)580以引用在IO中指定的塊設(shè)備名稱(chēng)與PE ID和SLLID之間的映射,PE ID和SLLID定義通向與塊設(shè)備名稱(chēng)關(guān)聯(lián)的vvol的IO會(huì)話。在這里所示的示例中,塊設(shè)備名稱(chēng)dbase和log分別對(duì)應(yīng)于為VM 5711創(chuàng)建的塊設(shè)備實(shí)例vvol1和vvol4,并且塊設(shè)備名稱(chēng)vmdk2、vmdkn和snapn分別對(duì)應(yīng)于為VM 5712-571N中的一個(gè)或者多個(gè)VM創(chuàng)建的塊設(shè)備實(shí)例vvol12、vvol16和vvol17。在塊設(shè)備數(shù)據(jù)庫(kù)580中存儲(chǔ)的其他信息包括用于每個(gè)塊設(shè)備的活躍位值,該活躍位值指示塊設(shè)備是否活躍,并且包括CIF(在飛行中的命令)值。活躍位“1”表示可以向塊設(shè)備發(fā)出IO?;钴S位“0”表示塊設(shè)備不活躍并且不能向塊設(shè)備發(fā)出IO。CIF值提供多少I(mǎi)O在飛行中(即,被發(fā)出但是尚未完成)的指示。
除了執(zhí)行以上描述的映射之外,虛擬卷設(shè)備驅(qū)動(dòng)器565還向數(shù)據(jù)訪問(wèn)層566發(fā)出原始?jí)K級(jí)IO。數(shù)據(jù)訪問(wèn)層566包括設(shè)備訪問(wèn)層567和用于HBA 554的設(shè)備驅(qū)動(dòng)器568,設(shè)備訪問(wèn)層567將命令排隊(duì)和調(diào)度策略應(yīng)用于原始?jí)K級(jí)IO,并且設(shè)備驅(qū)動(dòng)器568在符合協(xié)議的格式中格式化原始?jí)K級(jí)IO并且向HBA 554發(fā)送它們以用于經(jīng)由帶內(nèi)路徑向PE轉(zhuǎn)發(fā)。在其中使用SCSI協(xié)議的實(shí)施例中,在如在SAM-5(SCSI架構(gòu)模型-5)中指定的SCSI LUN數(shù)據(jù)字段中編碼vvol信息,SCSI LUN數(shù)據(jù)字段是8字節(jié)結(jié)構(gòu)。在前2個(gè)字節(jié)中編碼常規(guī)地用于LUN ID的PE ID,并且利用剩余6個(gè)字節(jié)(的一部分)在SCSI第二級(jí)LUN ID中編碼vvol信息,特別地為SLLID。如圖5C中進(jìn)一步所示,數(shù)據(jù)訪問(wèn)層566也包括以與錯(cuò)誤處置單元542相同的方式工作的錯(cuò)誤處置單元569。
圖5D是圖5C的計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)已經(jīng)被配置用于與圖2B的存儲(chǔ)系統(tǒng)群集而不是圖2A的存儲(chǔ)系統(tǒng)群集對(duì)接。在這一實(shí)施例中,數(shù)據(jù)訪問(wèn)層566包括NFS客戶端585和用于NIC553的設(shè)備驅(qū)動(dòng)器586。NFS客戶端585將塊設(shè)備名稱(chēng)映射到PE ID(IP地址)和與塊設(shè)備對(duì)應(yīng)的SLLID(NFS文件句柄)。如圖5D中所示在塊設(shè)備數(shù)據(jù)庫(kù)580中存儲(chǔ)這一映射。應(yīng)當(dāng)注意,活躍和CIF列仍然存在但是在圖5D中所示的塊設(shè)備數(shù)據(jù)庫(kù)580中未被圖示。如以下將描述的那樣,NFS文件句柄在NAS內(nèi)唯一標(biāo)識(shí)文件對(duì)象,并且在一個(gè)實(shí)施例中在綁定過(guò)程期間被生成。NFS客戶端585也將從虛擬卷設(shè)備驅(qū)動(dòng)器565接收的原始?jí)K級(jí)IO轉(zhuǎn)譯成基于NFS文件的IO。用于NIC 553的設(shè)備驅(qū)動(dòng)器586然后在符合協(xié)議的格式中格式化基于NFS文件的IO并且將它們與NFS句柄一起發(fā)送到NIC 553以用于經(jīng)由帶內(nèi)路徑向PE之一轉(zhuǎn)發(fā)。
應(yīng)當(dāng)認(rèn)識(shí)到,可以不同地引用用來(lái)描述圖5A-圖5D中的部件的各種術(shù)語(yǔ)、層和分類(lèi)而未脫離它們的功能或者本發(fā)明的精神實(shí)質(zhì)和范圍。例如,VMM 561可以被視為在VM 571與管理程序560之間的分離的虛擬化部件(在這樣的概念中可以本身被視為虛擬化“內(nèi)核”部件),因?yàn)榇嬖谟糜诿總€(gè)實(shí)例化的VM的分離的VMM。備選地,每個(gè)VMM 561可以被視為它的對(duì)應(yīng)虛擬機(jī)的部件,因?yàn)檫@樣的VMM包括用于虛擬機(jī)的硬件仿真部件。在這樣的備選概念中,例如,被描述為虛擬硬件平臺(tái)573的概念層可以與VMM 561合并和合并到VMM 561中,從而使得從圖5C和圖5D去除虛擬主機(jī)總線適配器574(即,因?yàn)樗墓δ苡芍鳈C(jī)總線適配器仿真器562實(shí)現(xiàn))。
圖6是圖示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用來(lái)管理vvol的部件和通信路徑的計(jì)算機(jī)環(huán)境的簡(jiǎn)化框圖。如先前描述的那樣,用于IO協(xié)議流量的通信路徑被稱(chēng)為帶內(nèi)路徑并且在圖6中被示出為虛線601,虛線601連接計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)訪問(wèn)層540(通過(guò)在計(jì)算機(jī)系統(tǒng)中提供的HBA或者NIC)與在存儲(chǔ)系統(tǒng)130中配置的一個(gè)或者多個(gè)PE。用來(lái)管理vvol的通信路徑是帶外路徑(如先前定義的那樣,不是“在帶內(nèi)”的路徑)并且在圖6中被示出為實(shí)線602。根據(jù)這里描述的實(shí)施例,可以通過(guò)在管理服務(wù)器610中提供的插件612和/或在計(jì)算機(jī)系統(tǒng)103中的每個(gè)計(jì)算機(jī)系統(tǒng)中提供的插件622管理vvol,在圖6中僅示出這些插件之一。在存儲(chǔ)設(shè)備側(cè)上,管理接口625由存儲(chǔ)系統(tǒng)管理器131配置,并且管理接口626由存儲(chǔ)系統(tǒng)管理器132配置。此外,管理接口624由分布式存儲(chǔ)系統(tǒng)管理器135配置。每個(gè)管理接口與插件612、622通信。為了有助于發(fā)出和處置管理命令,已經(jīng)開(kāi)發(fā)了特殊應(yīng)用編程接口(API)。應(yīng)當(dāng)認(rèn)識(shí)到,在一個(gè)實(shí)施例中,定制兩個(gè)插件612、622以與來(lái)自特定存儲(chǔ)系統(tǒng)銷(xiāo)售商的存儲(chǔ)硬件通信。因此,管理服務(wù)器610和計(jì)算機(jī)系統(tǒng)103將在與用于不同存儲(chǔ)系統(tǒng)銷(xiāo)售商的存儲(chǔ)硬件通信時(shí)運(yùn)用不同插件。在另一實(shí)施例中,可以有與任何銷(xiāo)售商的管理接口交互的單個(gè)插件。這將需要將存儲(chǔ)系統(tǒng)管理器編程為熟知接口(例如,借助由計(jì)算機(jī)系統(tǒng)和/或管理服務(wù)器發(fā)布)。
還向管理服務(wù)器610配置用于關(guān)聯(lián)計(jì)算機(jī)系統(tǒng)的系統(tǒng)管理器611。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)執(zhí)行虛擬機(jī),并且系統(tǒng)管理器611管理在計(jì)算機(jī)系統(tǒng)中運(yùn)行的虛擬機(jī)。管理虛擬機(jī)的系統(tǒng)管理器611的一個(gè)示例是由VMware公司分發(fā)的產(chǎn)品。如所示,系統(tǒng)管理器611與在計(jì)算機(jī)系統(tǒng)103中運(yùn)行的主機(jī)后臺(tái)程序(daemon)(hostd)621通信(通過(guò)在管理服務(wù)器610和計(jì)算機(jī)系統(tǒng)103二者的適當(dāng)硬件接口)以從計(jì)算機(jī)系統(tǒng)103接收資源使用報(bào)告并且對(duì)在計(jì)算機(jī)系統(tǒng)103中運(yùn)行的應(yīng)用發(fā)起各種管理操作。
圖7是用于向圖2A或者圖2B的存儲(chǔ)系統(tǒng)群集認(rèn)證計(jì)算機(jī)系統(tǒng)的方法步驟的流程圖。在計(jì)算機(jī)系統(tǒng)通過(guò)向存儲(chǔ)系統(tǒng)傳輸它的安全套接字層(SSL)證書(shū)來(lái)請(qǐng)求認(rèn)證時(shí)發(fā)起這些方法步驟。在步驟710,存儲(chǔ)系統(tǒng)向請(qǐng)求認(rèn)證的計(jì)算機(jī)系統(tǒng)發(fā)出用于認(rèn)證證書(shū)的提示(例如,用戶名和口令)。當(dāng)在步驟712接收認(rèn)證證書(shū)時(shí),存儲(chǔ)系統(tǒng)在步驟714比較它們與存儲(chǔ)的證書(shū)。如果提供了正確證書(shū),則存儲(chǔ)系統(tǒng)在關(guān)鍵字存儲(chǔ)庫(kù)中存儲(chǔ)認(rèn)證的計(jì)算機(jī)系統(tǒng)的SSL證書(shū)(步驟716)。如果提供了不正確證書(shū),則存儲(chǔ)系統(tǒng)忽略SSL證書(shū)并且返回適當(dāng)錯(cuò)誤消息(步驟718)。在被認(rèn)證之后,計(jì)算機(jī)系統(tǒng)可以調(diào)用API以通過(guò)SSL鏈路向存儲(chǔ)系統(tǒng)發(fā)出管理命令,并且在SSL證書(shū)中包括的唯一上下文ID由存儲(chǔ)系統(tǒng)用來(lái)實(shí)行某些策略,比如定義哪些計(jì)算機(jī)系統(tǒng)可以訪問(wèn)哪些存儲(chǔ)容器。在一些實(shí)施例中,可以在管理計(jì)算機(jī)系統(tǒng)批準(zhǔn)的權(quán)限時(shí)使用它們的上下文ID。例如,主機(jī)計(jì)算機(jī)可以被許可創(chuàng)建vvol,但是可以不被許可刪除vvol或者vvol的快照,或者主機(jī)計(jì)算機(jī)可以被許可創(chuàng)建vvol的快照,但是可以不被許可克隆vvol。此外,權(quán)限可以根據(jù)登錄到認(rèn)證的計(jì)算機(jī)系統(tǒng)的用戶的用戶級(jí)特權(quán)變化。
圖8是用于使用創(chuàng)建虛擬卷API命令來(lái)創(chuàng)建虛擬卷的方法步驟的流程圖。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)103在計(jì)算機(jī)系統(tǒng)103在步驟802從它的應(yīng)用之一接收對(duì)于創(chuàng)建具有某個(gè)大小和存儲(chǔ)能力簡(jiǎn)檔(比如最小IOPS和平均延時(shí))的vvol的請(qǐng)求時(shí)經(jīng)由帶外路徑602向存儲(chǔ)系統(tǒng)發(fā)出創(chuàng)建虛擬卷API命令。作為響應(yīng),計(jì)算機(jī)系統(tǒng)103在步驟804(在計(jì)算機(jī)系統(tǒng)103和請(qǐng)求應(yīng)用被許可訪問(wèn)的并且具有充分空閑容量以適應(yīng)請(qǐng)求的存儲(chǔ)容器之中)選擇存儲(chǔ)容器并且經(jīng)由插件622向存儲(chǔ)系統(tǒng)發(fā)出創(chuàng)建虛擬卷API命令。API命令包括vvol的存儲(chǔ)容器ID、vvol大小和存儲(chǔ)能力簡(jiǎn)檔。在另一實(shí)施例中,API命令包括應(yīng)用要求存儲(chǔ)系統(tǒng)與新創(chuàng)建的vvol一起存儲(chǔ)的關(guān)鍵字-值對(duì)集合。在另一實(shí)施例中,管理服務(wù)器610經(jīng)由帶外路徑602向存儲(chǔ)系統(tǒng)發(fā)出創(chuàng)建虛擬卷API命令(經(jīng)由插件612)。
在步驟806,存儲(chǔ)系統(tǒng)管理器經(jīng)由管理接口(例如,管理接口624、625或者626)接收對(duì)于生成vvol的請(qǐng)求并且訪問(wèn)選擇的存儲(chǔ)容器的在容器數(shù)據(jù)庫(kù)316中的元數(shù)據(jù)分節(jié)以驗(yàn)證包括計(jì)算機(jī)系統(tǒng)103和應(yīng)用的請(qǐng)求上下文具有充分權(quán)限以在選擇的存儲(chǔ)容器中創(chuàng)建vvol。在一個(gè)實(shí)施例中,如果權(quán)限級(jí)別不充分,則向計(jì)算機(jī)系統(tǒng)103返回錯(cuò)誤消息。如果權(quán)限級(jí)別充分,則在步驟810生成唯一vvol ID。然后,在步驟812,存儲(chǔ)系統(tǒng)管理器掃描容器數(shù)據(jù)庫(kù)316的元數(shù)據(jù)分節(jié)中的分配位圖以確定選擇的存儲(chǔ)容器的空閑分區(qū)。存儲(chǔ)系統(tǒng)管理器分配選擇的存儲(chǔ)容器的足以適應(yīng)請(qǐng)求的vvol大小的空閑分區(qū)并且更新存儲(chǔ)容器的在容器數(shù)據(jù)庫(kù)316的元數(shù)據(jù)分節(jié)中的分配位圖。存儲(chǔ)系統(tǒng)管理器也用新vvol條目更新vvol數(shù)據(jù)庫(kù)314。新vvol條目包括在步驟810生成的vvol ID、新分配的存儲(chǔ)容器盤(pán)區(qū)的有序列表和新vvol的被表達(dá)為關(guān)鍵字-值對(duì)的元數(shù)據(jù)。然后,在步驟814,存儲(chǔ)系統(tǒng)管理器向計(jì)算機(jī)系統(tǒng)103傳輸vvol ID。在步驟816,計(jì)算機(jī)系統(tǒng)103關(guān)聯(lián)vvol ID與請(qǐng)求創(chuàng)建vvol的應(yīng)用。在一個(gè)實(shí)施例中,為每個(gè)應(yīng)用維護(hù)一個(gè)或者多個(gè)vvol描述符文件,并且向?yàn)檎?qǐng)求創(chuàng)建vvol的應(yīng)用而維護(hù)的vvol描述符文件中寫(xiě)入vvol ID。
如圖2A和圖2B中所示,并非所有vvol連接到PE。未連接到PE的vvol不知道由對(duì)應(yīng)應(yīng)用發(fā)出的IO,因?yàn)槲聪騰vol建立IO會(huì)話。在可以向vvol發(fā)出IO之前,vvol經(jīng)歷綁定過(guò)程,作為該綁定過(guò)程的結(jié)果,vvol將被綁定到特定PE。一旦vvol被綁定到PE,就可以向vvol發(fā)出IO直至從PE解綁定vvol。
在一個(gè)實(shí)施例中,由計(jì)算機(jī)系統(tǒng)130使用綁定虛擬卷API經(jīng)由帶外路徑602向存儲(chǔ)系統(tǒng)發(fā)出綁定請(qǐng)求。綁定請(qǐng)求標(biāo)識(shí)待綁定的vvol(使用vvol ID),并且作為響應(yīng),存儲(chǔ)系統(tǒng)將vvol綁定到計(jì)算機(jī)系統(tǒng)103經(jīng)由帶內(nèi)路徑連接到的PE。圖9A是用于計(jì)算機(jī)系統(tǒng)經(jīng)由帶內(nèi)路徑發(fā)現(xiàn)它連接到的PE的方法步驟的流程圖。使用標(biāo)準(zhǔn)SCSI命令REPORT_LUNS經(jīng)由帶內(nèi)路徑發(fā)現(xiàn)在基于SCSI協(xié)議的存儲(chǔ)設(shè)備中配置的PE。使用API經(jīng)由帶外路徑發(fā)現(xiàn)在基于NFS協(xié)議的存儲(chǔ)設(shè)備中配置的PE。由計(jì)算機(jī)系統(tǒng)為每個(gè)連接的存儲(chǔ)系統(tǒng)執(zhí)行圖9A的方法步驟。
在步驟910,計(jì)算機(jī)系統(tǒng)確定連接的存儲(chǔ)系統(tǒng)是否基于SCSI協(xié)議或者基于NFS協(xié)議。如果存儲(chǔ)系統(tǒng)基于SCSI協(xié)議,則由計(jì)算機(jī)系統(tǒng)向存儲(chǔ)系統(tǒng)帶內(nèi)發(fā)出SCSI命令REPORT_LUNS(步驟912)。然后,在步驟913,計(jì)算機(jī)系統(tǒng)檢查來(lái)自存儲(chǔ)系統(tǒng)的響應(yīng),特別地為與返回的PE ID中的每個(gè)PE ID關(guān)聯(lián)的PE位,以在與PE有關(guān)的LUN與常規(guī)數(shù)據(jù)LUN之間區(qū)分。如果存儲(chǔ)系統(tǒng)基于NFS協(xié)議,則由計(jì)算機(jī)系統(tǒng)從插件622向管理接口(例如,管理接口624、625或者626)帶外發(fā)出API調(diào)用以獲得可用PE的ID(步驟914)。在跟隨步驟913和步驟914的步驟916,計(jì)算機(jī)系統(tǒng)存儲(chǔ)由存儲(chǔ)系統(tǒng)返回的與PE有關(guān)的LUN的PE ID或者由管理接口返回的PE ID以用于在綁定過(guò)程期間使用。應(yīng)當(dāng)認(rèn)識(shí)到,由基于SCSI協(xié)議的存儲(chǔ)設(shè)備返回的PE ID各自包括WWN,并且由基于NFS協(xié)議的存儲(chǔ)設(shè)備返回的PE ID各自包括IP地址和裝配點(diǎn)。
圖9B是用于存儲(chǔ)系統(tǒng)管理器131或者存儲(chǔ)系統(tǒng)管理器132或者分布式存儲(chǔ)系統(tǒng)管理器135(下文稱(chēng)為“存儲(chǔ)系統(tǒng)管理器”)發(fā)現(xiàn)給定的計(jì)算機(jī)系統(tǒng)103經(jīng)由帶內(nèi)路徑連接到的PE的方法步驟的流程圖。由存儲(chǔ)系統(tǒng)管理器發(fā)現(xiàn)這樣的PE使存儲(chǔ)系統(tǒng)能夠響應(yīng)于來(lái)自請(qǐng)求計(jì)算機(jī)系統(tǒng)的綁定請(qǐng)求向計(jì)算機(jī)系統(tǒng)返回計(jì)算機(jī)系統(tǒng)可以被實(shí)際連接到其上的有效PE ID。在步驟950,存儲(chǔ)系統(tǒng)管理器經(jīng)由管理接口和插件622向計(jì)算機(jī)系統(tǒng)103發(fā)出帶外“Discovery_Topology(發(fā)現(xiàn)_拓?fù)?”API調(diào)用。計(jì)算機(jī)系統(tǒng)103返回它的系統(tǒng)ID和它經(jīng)由圖9A的流程圖發(fā)現(xiàn)的所有PE ID的列表。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)管理器通過(guò)經(jīng)由管理接口和插件612向管理服務(wù)器610發(fā)出“Discovery_Topology”API調(diào)用來(lái)執(zhí)行步驟950。在這樣的實(shí)施例中,存儲(chǔ)系統(tǒng)將接收響應(yīng),該響應(yīng)包含多個(gè)計(jì)算機(jī)系統(tǒng)ID和關(guān)聯(lián)的PE ID,一個(gè)計(jì)算機(jī)系統(tǒng)ID和關(guān)聯(lián)的PE ID用于管理服務(wù)器610管理的每個(gè)相應(yīng)計(jì)算機(jī)系統(tǒng)103。然后,在步驟952,存儲(chǔ)系統(tǒng)管理器處理來(lái)自步驟950的結(jié)果。例如,存儲(chǔ)系統(tǒng)管理器清除未在它的當(dāng)前控制之下的所有PE ID的列表。例如,由存儲(chǔ)系統(tǒng)管理器135在發(fā)出Discovery_Topology調(diào)用時(shí)接收的某些PE ID可以對(duì)應(yīng)于連接到相同計(jì)算機(jī)系統(tǒng)的另一存儲(chǔ)系統(tǒng)。相似地,某些接收的PE ID可以對(duì)應(yīng)于自從被存儲(chǔ)系統(tǒng)管理員刪除起的更舊PE,等等。在步驟954,存儲(chǔ)系統(tǒng)管理器高速緩存處理的結(jié)果以用于在后續(xù)綁定請(qǐng)求期間使用。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)管理器周期性地運(yùn)行圖9B的步驟以用進(jìn)行中的計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)拓?fù)涓淖兏滤母咚倬彺娴慕Y(jié)果。在另一實(shí)施例中,存儲(chǔ)系統(tǒng)管理器每當(dāng)它接收新vvol創(chuàng)建請(qǐng)求時(shí)運(yùn)行圖9B的步驟。在又另一實(shí)施例中,存儲(chǔ)系統(tǒng)管理器在運(yùn)行圖7的認(rèn)證步驟之后運(yùn)行圖9B的步驟。
圖10是用于使用綁定虛擬卷API來(lái)發(fā)出和執(zhí)行虛擬卷綁定請(qǐng)求的方法步驟的流程圖。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)103在它的應(yīng)用之一請(qǐng)求IO訪問(wèn)與尚未被綁定到PE的vvol關(guān)聯(lián)的塊設(shè)備時(shí)經(jīng)由帶外路徑602向存儲(chǔ)系統(tǒng)發(fā)出綁定請(qǐng)求。在另一實(shí)施例中,管理服務(wù)器610結(jié)合某些VM管理操作發(fā)出綁定請(qǐng)求,這些VM管理操作包括VM通電和從一個(gè)存儲(chǔ)容器向另一存儲(chǔ)容器的vvol遷移。
繼續(xù)以上描述的示例,在該示例中,應(yīng)用請(qǐng)求IO訪問(wèn)與尚未被綁定到PE的vvol關(guān)聯(lián)的塊設(shè)備,計(jì)算機(jī)系統(tǒng)103在步驟1002從塊設(shè)備數(shù)據(jù)庫(kù)533(或者580)確定vvol的vvol ID。然后,在步驟1004,計(jì)算機(jī)系統(tǒng)103通過(guò)帶外路徑602向存儲(chǔ)系統(tǒng)發(fā)出對(duì)于綁定vvol的請(qǐng)求。
存儲(chǔ)系統(tǒng)管理器在步驟1006經(jīng)由管理接口(例如,管理接口624、625或者626)接收對(duì)于綁定vvol的請(qǐng)求,并且然后執(zhí)行步驟1008,步驟1008包括選擇vvol將被綁定到的PE、生成用于選擇的PE的SLLID和生成數(shù)以及更新連接數(shù)據(jù)庫(kù)312(例如,經(jīng)由IO管理器304)。根據(jù)連通(即,僅具有與計(jì)算機(jī)系統(tǒng)103的現(xiàn)有帶內(nèi)連接的PE可用于選擇)以及其他因素(比如通過(guò)可用PE的當(dāng)前IO流量)進(jìn)行選擇vvol將被綁定到的PE。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)根據(jù)圖9B的方法從計(jì)算機(jī)系統(tǒng)103向它發(fā)送的處理和高速緩存的PE列表選擇。SLLID生成在運(yùn)用圖2A的存儲(chǔ)系統(tǒng)群集的實(shí)施例與運(yùn)用圖2B的存儲(chǔ)系統(tǒng)群集的實(shí)施例之間不同。在前一情況下,生成對(duì)于選擇的PE唯一的SLLID。在后一情況下,生成通向與vvol對(duì)應(yīng)的文件對(duì)象的文件路徑作為SLLID。在已經(jīng)對(duì)于選擇的PE生成了SLLID和生成數(shù)之后,更新連接數(shù)據(jù)庫(kù)312以包括與vvol的新生成的IO會(huì)話。然后,在步驟1010,向計(jì)算機(jī)系統(tǒng)103返回選擇的PE的ID、生成的SLLID和生成數(shù)??蛇x地,在運(yùn)用圖2B的存儲(chǔ)系統(tǒng)群集的實(shí)施例中,可以對(duì)于與vvol對(duì)應(yīng)的文件對(duì)象生成并且與選擇的PE的ID、生成的SLLID和生成數(shù)一起向計(jì)算機(jī)系統(tǒng)103返回唯一NFS文件句柄。在步驟1012,計(jì)算機(jī)系統(tǒng)103更新塊設(shè)備數(shù)據(jù)庫(kù)533(或者580)以包括從存儲(chǔ)系統(tǒng)返回的PE ID、SLLID(以及可選地,NFS句柄)和生成數(shù)。特別地,將向塊設(shè)備數(shù)據(jù)庫(kù)533(或者580)添加從存儲(chǔ)系統(tǒng)返回的PE ID、SLLID(以及可選地,NFS句柄)和生成數(shù)的每個(gè)集合作為新條目。應(yīng)當(dāng)認(rèn)識(shí)到,生成數(shù)用來(lái)防范重放攻擊。因此,在其中未考慮重放攻擊的實(shí)施例中,未使用生成數(shù)。
在由希望向相同vvol發(fā)出IO的不同應(yīng)用發(fā)起的向相同vvol的后續(xù)綁定請(qǐng)求時(shí),存儲(chǔ)系統(tǒng)管理器可以將vvol綁定到相同或者不同PE。如果將vvol綁定到相同PE,則存儲(chǔ)系統(tǒng)管理器返回相同PE的ID和先前生成的SLLID,并且遞增與數(shù)據(jù)庫(kù)312結(jié)合存儲(chǔ)的這一IO連接路徑的參考計(jì)數(shù)。在另一方面,如果將vvol綁定到不同PE,則存儲(chǔ)系統(tǒng)管理器生成新SLLID并且返回不同PE的ID和新生成的SLLID并且向連接數(shù)據(jù)庫(kù)312添加與vvol的這一新IO連接路徑作為新條目。
可以使用解綁定虛擬卷API來(lái)發(fā)出虛擬卷解綁定請(qǐng)求。解綁定請(qǐng)求包括如下IO連接路徑的PE ID和SLLID,先前已經(jīng)通過(guò)該IO連接路徑綁定了vvol。然而,建議處理解綁定請(qǐng)求。存儲(chǔ)系統(tǒng)管理器空閑以立即或者在延遲之后從PE解綁定vvol。通過(guò)更新連接數(shù)據(jù)庫(kù)312以遞減包含PE ID和SLLID的條目的參考計(jì)數(shù)來(lái)處理解綁定請(qǐng)求。如果將參考計(jì)數(shù)遞減至零,則可以刪除條目。在這一情況下,應(yīng)當(dāng)注意,vvol繼續(xù)存在,但是不再可用于使用給定的PE ID和SLLID的IO。
在實(shí)施VM的虛擬盤(pán)的vvol的情況下,用于這一vvol的參考計(jì)數(shù)將至少為一。在使VM斷電并且與之結(jié)合發(fā)出解綁定請(qǐng)求時(shí),參考計(jì)數(shù)將被遞減一。如果參考計(jì)數(shù)為零,則可以從連接數(shù)據(jù)庫(kù)312去除vvol條目。一般而言,從連接數(shù)據(jù)庫(kù)312去除條目是有益的,因?yàn)镮/O管理器304管理更少數(shù)據(jù)并且也可以回收SLLID。這樣的益處在由存儲(chǔ)系統(tǒng)存儲(chǔ)的vvol總數(shù)大(例如,vvol在百萬(wàn)級(jí)),但是由應(yīng)用活躍地訪問(wèn)的vvol總數(shù)小(例如,VM為數(shù)萬(wàn)個(gè))時(shí)變得顯著。此外,在vvol未被綁定到任何PE時(shí),存儲(chǔ)系統(tǒng)在選擇在DSU141中何處存儲(chǔ)vvol時(shí)具有更大靈活性。例如,可以用非對(duì)稱(chēng)、分級(jí)DSU 141實(shí)施存儲(chǔ)系統(tǒng),其中一些DSU 141提供更快數(shù)據(jù)訪問(wèn)并且其他DSU 141提供更慢數(shù)據(jù)訪問(wèn)(例如,以節(jié)省存儲(chǔ)成本)。在一個(gè)實(shí)現(xiàn)方式中,在vvol未被綁定到任何PE(這可以通過(guò)檢查vvol的在連接數(shù)據(jù)庫(kù)312中的條目的參考計(jì)數(shù)來(lái)確定)時(shí),存儲(chǔ)系統(tǒng)可以向更慢和/或更廉價(jià)類(lèi)型的物理存儲(chǔ)裝置遷移vvol。然后,一旦將vvol綁定到PE,則存儲(chǔ)系統(tǒng)可以向更快類(lèi)型的物理存儲(chǔ)裝置遷移vvol。應(yīng)當(dāng)認(rèn)識(shí)到,可以通過(guò)改變vvol數(shù)據(jù)庫(kù)314中的組成給定的vvol的容器位置的有序列表的一個(gè)或者多個(gè)元素并且更新容器數(shù)據(jù)庫(kù)316的元數(shù)據(jù)分節(jié)中的對(duì)應(yīng)盤(pán)區(qū)分配位圖來(lái)實(shí)現(xiàn)這樣的遷移。
向PE綁定和解綁定vvol使存儲(chǔ)系統(tǒng)管理器能夠確定vvol活性。存儲(chǔ)系統(tǒng)管理器可以利用這一信息以對(duì)非IO服務(wù)(消極)和IO服務(wù)(活躍)vvol執(zhí)行存儲(chǔ)系統(tǒng)銷(xiāo)售商專(zhuān)屬優(yōu)化。例如,存儲(chǔ)系統(tǒng)管理器可以被配置用于如果vvol在消極狀態(tài)中保持超出特定閾值時(shí)間則將它從低延時(shí)(高成本)SSD重新定位到中延時(shí)(低成本)硬驅(qū)動(dòng)。
圖11A和11B是根據(jù)一個(gè)實(shí)施例的用于向虛擬卷發(fā)出IO的方法步驟的流程圖。圖11A是用于從應(yīng)用向原始?jí)K設(shè)備直接發(fā)出IO的方法步驟1100的流程圖并且圖11B是用于從應(yīng)用通過(guò)文件系統(tǒng)驅(qū)動(dòng)器發(fā)出IO的方法步驟1120的流程圖。
方法1100在步驟1102開(kāi)始,其中應(yīng)用(比如圖5A-圖5B中所示的應(yīng)用512或者圖5C-圖5D中所示的VM 571向原始?jí)K設(shè)備發(fā)出IO。在步驟1104,虛擬卷設(shè)備驅(qū)動(dòng)器532或者565根據(jù)由應(yīng)用發(fā)出的IO生成原始?jí)K級(jí)IO。在步驟1106,原始?jí)K設(shè)備的名稱(chēng)由虛擬卷設(shè)備驅(qū)動(dòng)器532或者565轉(zhuǎn)譯成PE ID和SLLID(并且在運(yùn)用圖2B的存儲(chǔ)設(shè)備的實(shí)施例中也由NFS客戶端545或者585轉(zhuǎn)譯成NFS句柄)。在步驟1108,數(shù)據(jù)訪問(wèn)層540或者566執(zhí)行將PE ID和SLLID(并且在運(yùn)用圖2B的存儲(chǔ)設(shè)備的實(shí)施例中也將NFS句柄)編碼成原始?jí)K級(jí)IO。然后,在步驟1110,HBA/NIC發(fā)出原始?jí)K級(jí)IO。
對(duì)于非VM應(yīng)用(比如圖5A-圖5B中所示的應(yīng)用512),方法1120在步驟1121開(kāi)始。在步驟1121,應(yīng)用向在基于vvol的塊設(shè)備上存儲(chǔ)的文件發(fā)出IO。然后,在步驟1122,文件系統(tǒng)驅(qū)動(dòng)器(例如,文件系統(tǒng)驅(qū)動(dòng)器510)根據(jù)文件IO生成塊級(jí)IO。在步驟1122之后,執(zhí)行與步驟1106、1108和1110相同的步驟1126、1128和1130。
對(duì)于VM應(yīng)用(比如圖5C-圖5D中所示的VM 571),方法1120在步驟1123開(kāi)始。在步驟1123,VM向它的虛擬盤(pán)發(fā)出IO。然后,在步驟1124,這一IO例如由SCSI虛擬化層563轉(zhuǎn)譯成文件IO。文件系統(tǒng)驅(qū)動(dòng)器(例如,VMFS驅(qū)動(dòng)器564)然后在步驟1125根據(jù)文件IO生成塊級(jí)IO。在步驟1125之后,執(zhí)行與步驟1106、1108和1110相同的步驟1126、1128和1130。
圖12是根據(jù)一個(gè)實(shí)施例的用于在存儲(chǔ)系統(tǒng)執(zhí)行IO的方法步驟的流程圖。在步驟1210,通過(guò)在存儲(chǔ)系統(tǒng)中配置的PE之一接收由計(jì)算機(jī)系統(tǒng)發(fā)出的IO。IO管理器304在步驟1212解析IO。在步驟1212之后,如果存儲(chǔ)系統(tǒng)群集是圖2A中所示類(lèi)型,則由IO管理器304執(zhí)行步驟1214a,并且如果存儲(chǔ)系統(tǒng)群集是圖2B中所示類(lèi)型,則由IO管理器304執(zhí)行步驟1214b。在步驟1214a,IO管理器304從解析的IO提取SLLID并且訪問(wèn)連接數(shù)據(jù)庫(kù)312以確定與PE ID和提取的SLLID對(duì)應(yīng)的vvol ID。在步驟1214b,IO管理器304從解析的IO提取NFS句柄并且使用PE ID和NFS句柄作為SLLID來(lái)標(biāo)識(shí)vvol。在步驟1214a和1214b之后執(zhí)行步驟1216。在步驟1216,卷管理器306和容器管理器308分別訪問(wèn)vvol數(shù)據(jù)庫(kù)314和容器數(shù)據(jù)庫(kù)316以獲得將對(duì)其執(zhí)行IO的物理存儲(chǔ)位置。然后,在步驟1218,數(shù)據(jù)訪問(wèn)層310對(duì)在步驟1216獲得的物理存儲(chǔ)位置執(zhí)行IO。
在一些情形中,應(yīng)用(應(yīng)用512或者VM 571)、管理服務(wù)器610和/或存儲(chǔ)系統(tǒng)管理器可以確定vvol到特定PE的綁定比如在PE由于太多綁定而變成超負(fù)荷時(shí)經(jīng)歷問(wèn)題。作為解決這樣的問(wèn)題的方式,即使在IO命令被引向vvol之時(shí),存儲(chǔ)系統(tǒng)管理器仍然可以將綁定的vvol重新綁定到不同PE。圖13是根據(jù)一個(gè)實(shí)施例的用于使用重新綁定API來(lái)發(fā)出和執(zhí)行vvol重新綁定請(qǐng)求的方法步驟1300的流程圖。
如所示,方法1300在步驟1302開(kāi)始,其中存儲(chǔ)系統(tǒng)管理器確定應(yīng)當(dāng)將vvol綁定到與vvol當(dāng)前被綁定到的第一PE不同的第二PE。在步驟1304,存儲(chǔ)系統(tǒng)管理器經(jīng)由帶外路徑向計(jì)算機(jī)系統(tǒng)(例如,計(jì)算機(jī)系統(tǒng)103)發(fā)出對(duì)于重新綁定vvol的請(qǐng)求,該計(jì)算機(jī)系統(tǒng)運(yùn)行向vvol發(fā)出IO的應(yīng)用。在步驟1306,計(jì)算機(jī)系統(tǒng)103從存儲(chǔ)系統(tǒng)管理器接收重新綁定請(qǐng)求,并且作為響應(yīng),發(fā)出對(duì)于將vvol綁定到新PE的請(qǐng)求。在步驟1308,存儲(chǔ)系統(tǒng)管理器接收重新綁定請(qǐng)求,并且作為響應(yīng),將vvol綁定到新PE。在步驟1310,存儲(chǔ)系統(tǒng)管理器如以上結(jié)合圖10描述的那樣向計(jì)算機(jī)系統(tǒng)傳輸vvol現(xiàn)在也被綁定到的新PE的ID和用于訪問(wèn)vvol的SLLID。
在步驟1312,計(jì)算機(jī)系統(tǒng)從存儲(chǔ)系統(tǒng)管理器接收新PE ID和SLLID。在塊設(shè)備數(shù)據(jù)庫(kù)533或者580中,初始地將新PE連接的活躍位設(shè)置成1,這意味著已經(jīng)建立了經(jīng)由新PE的用于vvol的新IO會(huì)話。計(jì)算機(jī)系統(tǒng)也將第一PE連接的活躍位設(shè)置成0,這表示不能通過(guò)這一PE連接向vvol發(fā)出更多IO。應(yīng)當(dāng)認(rèn)識(shí)到,不應(yīng)在去激活時(shí)立即解綁定這一PE連接,因?yàn)榭赡苡型ㄟ^(guò)這一PE連接的向vvol的IO,這些IO可能在飛行中,即,被發(fā)出但是未完成。因此,在步驟1314,計(jì)算機(jī)系統(tǒng)訪問(wèn)塊設(shè)備數(shù)據(jù)庫(kù)533或者580以查看是否已經(jīng)完成了通過(guò)第一PE連接向vvol發(fā)出的所有“在飛行中的命令”(CIF),即,是否CIF=0。計(jì)算機(jī)系統(tǒng)在執(zhí)行步驟1318之前等待CIF變成零。同時(shí),通過(guò)新PE發(fā)出向vvol的附加IO,因?yàn)橐呀?jīng)將新PE連接的活躍位設(shè)置成1。在CIF達(dá)到零時(shí),執(zhí)行步驟1318,其中向存儲(chǔ)系統(tǒng)管理器發(fā)出對(duì)于解綁定第一PE連接的請(qǐng)求。然后,在步驟1320,存儲(chǔ)系統(tǒng)管理器從第一PE解綁定vvol。計(jì)算機(jī)系統(tǒng)也在步驟1324通過(guò)新PE向vvol發(fā)出所有附加IO。
圖14是根據(jù)一個(gè)實(shí)施例的虛擬卷的生命周期的概念圖。圖14中所示的所有命令(即,創(chuàng)建、快照、克隆、綁定、解綁定、擴(kuò)展和刪除)形成vvol管理命令集,并且通過(guò)以上結(jié)合圖6描述的插件612、622可訪問(wèn)。如所示,在作為以下命令——?jiǎng)?chuàng)建vvol、快照vvol或者克隆vvol——中的任何命令的結(jié)果生成vvol時(shí),生成的vvol在“消極”狀態(tài)中保持,其中vvol未被綁定到特定PE,并且因此不能接收IO。此外,在vvol在消極狀態(tài)中時(shí)執(zhí)行以下命令——快照vvol、克隆vvol或者擴(kuò)展vvol——中的任何命令時(shí),原有vvol和新創(chuàng)建的vvol(如果有)在消極狀態(tài)中保持。也如所示,當(dāng)在消極狀態(tài)中的vvol被綁定到PE時(shí),vvol進(jìn)入“活躍”狀態(tài)。反言之,在從PE解綁定活躍vvol時(shí),vvol進(jìn)入消極狀態(tài),這假設(shè)vvol未被綁定到任何附加PE。當(dāng)vvol在活躍狀態(tài)中時(shí)執(zhí)行以下命令——快照vvol、克隆vvol、擴(kuò)展vvol或者重新綁定vvol——中的任何命令時(shí),原有vvol在活躍狀態(tài)中保持,并且新創(chuàng)建的vvol(如果有)在消極狀態(tài)中保持。
如以上描述的那樣,VM可以具有多個(gè)虛擬盤(pán),并且為每個(gè)虛擬盤(pán)創(chuàng)建分離的vvol。VM也具有描述VM的配置的元數(shù)據(jù)文件。元數(shù)據(jù)文件包括VM配置文件、VM日志文件、盤(pán)描述符文件、VM交換文件等,每個(gè)盤(pán)描述符文件用于VM的虛擬盤(pán)中的每個(gè)相應(yīng)虛擬盤(pán)。用于虛擬盤(pán)的盤(pán)描述符文件包含涉及虛擬盤(pán)的信息,比如它的vvol ID、它的大小、是否瘦供應(yīng)虛擬盤(pán)和為虛擬盤(pán)創(chuàng)建的一個(gè)或者多個(gè)快照的標(biāo)識(shí)等。VM交換文件提供存儲(chǔ)系統(tǒng)上的VM的交換空間。在一個(gè)實(shí)施例中,在vvol中存儲(chǔ)這些VM配置文件,并且這一vvol這里被稱(chēng)為元數(shù)據(jù)vvol。
圖15是根據(jù)一個(gè)實(shí)施例的用于供應(yīng)VM的方法步驟的流程圖。在這一實(shí)施例中,使用管理服務(wù)器610、主控VM的計(jì)算機(jī)系統(tǒng)(例如,圖5C中所示的計(jì)算機(jī)102(下文稱(chēng)為“主機(jī)計(jì)算機(jī)”))和圖2A的存儲(chǔ)系統(tǒng)群集,特別地為存儲(chǔ)系統(tǒng)管理器131、132或者135。如所示,存儲(chǔ)系統(tǒng)管理器在步驟1502接收對(duì)于供應(yīng)VM的請(qǐng)求。這可以是在使用與管理服務(wù)器610的適當(dāng)用戶接口的VM管理員向管理服務(wù)器610發(fā)出用于供應(yīng)具有某個(gè)大小和存儲(chǔ)能力簡(jiǎn)檔的VM的命令時(shí)生成的請(qǐng)求。響應(yīng)于該命令,在步驟1504,管理服務(wù)器610發(fā)起用于用以上結(jié)合圖8描述的方式創(chuàng)建用于包含VM的元數(shù)據(jù)的vvol(下文稱(chēng)為“元數(shù)據(jù)vvol”)的方法,存儲(chǔ)系統(tǒng)管理器在步驟1508按照該方法創(chuàng)建元數(shù)據(jù)vvol并且向管理服務(wù)器610返回元數(shù)據(jù)vvol的vvol ID。在步驟1514,管理服務(wù)器610向主控VM的計(jì)算機(jī)系統(tǒng)注冊(cè)回元數(shù)據(jù)vvol的vvol ID。在步驟1516,主機(jī)計(jì)算機(jī)發(fā)起用于用以上結(jié)合圖10描述的方式將元數(shù)據(jù)vvol綁定到PE的方法,存儲(chǔ)系統(tǒng)管理器在步驟1518按照該方法將元數(shù)據(jù)vvol綁定到PE并且向主機(jī)計(jì)算機(jī)返回PE ID和SLLID。
在步驟1522,主機(jī)計(jì)算機(jī)使用向主機(jī)計(jì)算機(jī)的操作系統(tǒng)中的“創(chuàng)建設(shè)備”調(diào)用來(lái)創(chuàng)建元數(shù)據(jù)vvol的塊設(shè)備實(shí)例。然后,在步驟1524,主機(jī)計(jì)算機(jī)在塊設(shè)備上創(chuàng)建文件系統(tǒng)(例如,VMFS),響應(yīng)于這一點(diǎn)返回文件系統(tǒng)ID(FSID)。主機(jī)計(jì)算機(jī)在步驟1526裝配具有返回的FSID的文件系統(tǒng),并且向與這一文件系統(tǒng)關(guān)聯(lián)的名稱(chēng)空間中存儲(chǔ)VM的元數(shù)據(jù)。元數(shù)據(jù)的示例包括VM日志文件、盤(pán)描述符文件和VM交換文件,每個(gè)盤(pán)描述符文件用于VM的虛擬盤(pán)中的每個(gè)相應(yīng)虛擬盤(pán)。
在步驟1528,主機(jī)計(jì)算機(jī)發(fā)起用于用以上結(jié)合圖8描述的方式為VM的虛擬盤(pán)中的每個(gè)虛擬盤(pán)創(chuàng)建vvol(每個(gè)這樣的vvol這里被稱(chēng)為“數(shù)據(jù)vvol”)的方法,存儲(chǔ)系統(tǒng)管理器在步驟1530按照該方法創(chuàng)建數(shù)據(jù)vvol并且向主機(jī)計(jì)算機(jī)返回?cái)?shù)據(jù)vvol的vvol ID。在步驟1532,主機(jī)計(jì)算機(jī)在用于虛擬盤(pán)的盤(pán)描述符文件中存儲(chǔ)數(shù)據(jù)vvol的ID。該方法以在已經(jīng)為VM的所有虛擬盤(pán)創(chuàng)建了數(shù)據(jù)vvol之后解綁定元數(shù)據(jù)vvol(未示出)作為結(jié)束。
圖16A是用于在已經(jīng)以結(jié)合圖15描述的方式供應(yīng)了VM之后使VM通電的方法步驟的流程圖。圖16B是在已經(jīng)使VM通電之后使VM斷電的方法步驟的流程圖。這兩種方法由用于VM的主機(jī)計(jì)算機(jī)執(zhí)行。
當(dāng)在步驟1608接收VM通電命令時(shí),在步驟1610取回與VM對(duì)應(yīng)的元數(shù)據(jù)vvol。然后,在步驟1612,元數(shù)據(jù)vvol經(jīng)歷如以上結(jié)合圖10描述的綁定過(guò)程。在步驟1614在元數(shù)據(jù)vvol上裝配文件系統(tǒng),從而使得可以在步驟1616讀取用于數(shù)據(jù)vvol的元數(shù)據(jù)文件(特別地為盤(pán)描述符文件)并且獲得數(shù)據(jù)vvol ID。數(shù)據(jù)vvol然后在步驟1618逐個(gè)經(jīng)歷如以上結(jié)合圖10描述的綁定過(guò)程。
當(dāng)在步驟1620接收VM斷電命令時(shí),在塊設(shè)備數(shù)據(jù)庫(kù)(例如,圖5C的塊設(shè)備數(shù)據(jù)庫(kù)580)標(biāo)記VM的數(shù)據(jù)vvol為不活躍,并且主機(jī)計(jì)算機(jī)等待與數(shù)據(jù)vvol中的每個(gè)vvol關(guān)聯(lián)的CIF達(dá)到零(步驟1622)。在與每個(gè)數(shù)據(jù)vvol關(guān)聯(lián)的CIF達(dá)到零時(shí),主機(jī)計(jì)算機(jī)在步驟1624請(qǐng)求存儲(chǔ)系統(tǒng)解綁定該數(shù)據(jù)vvol。在與所有數(shù)據(jù)vvol關(guān)聯(lián)的CIF達(dá)到零之后,在步驟1626在塊設(shè)備數(shù)據(jù)庫(kù)中標(biāo)記元數(shù)據(jù)為不活躍。然后,在步驟1628,在與元數(shù)據(jù)vvol關(guān)聯(lián)的CIF達(dá)到零時(shí),主機(jī)計(jì)算機(jī)在步驟1630請(qǐng)求解綁定元數(shù)據(jù)vvol。
圖17和圖18是用于重新供應(yīng)VM的方法步驟的流程圖。在這里所示的示例中,圖17是用于擴(kuò)展VM的vvol(特別地為用于VM的虛擬盤(pán)的數(shù)據(jù)vvol)的大小的在主機(jī)計(jì)算機(jī)上執(zhí)行的方法步驟的流程圖,并且圖18是用于在存儲(chǔ)容器之間移動(dòng)VM的vvol的在存儲(chǔ)系統(tǒng)中執(zhí)行的方法步驟的流程圖。
用于擴(kuò)展用于VM的虛擬盤(pán)的數(shù)據(jù)vvol的大小的方法在步驟1708開(kāi)始,其中主機(jī)計(jì)算機(jī)確定VM是否被通電。如果主機(jī)計(jì)算機(jī)在步驟1708確定VM未被通電,則主機(jī)計(jì)算機(jī)在步驟1710取回與VM對(duì)應(yīng)的元數(shù)據(jù)vvol的ID。然后,由主機(jī)計(jì)算機(jī)在步驟1712發(fā)起用于元數(shù)據(jù)vvol的綁定過(guò)程。在綁定之后,在步驟1714,主機(jī)計(jì)算機(jī)在元數(shù)據(jù)vvol上裝配文件系統(tǒng)并且從用于虛擬盤(pán)的盤(pán)描述符文件取回與虛擬盤(pán)對(duì)應(yīng)的數(shù)據(jù)vvol的ID,該盤(pán)描述符文件是在元數(shù)據(jù)vvol上裝配的文件系統(tǒng)中的文件。然后,在步驟1716,主機(jī)計(jì)算機(jī)在步驟1716向存儲(chǔ)系統(tǒng)發(fā)送擴(kuò)展vvol API調(diào)用,其中擴(kuò)展vvol API調(diào)用包括數(shù)據(jù)vvol的ID和數(shù)據(jù)vvol的新大小。
如果VM被通電,則主機(jī)計(jì)算機(jī)在步驟1715取回VM的待擴(kuò)展的虛擬盤(pán)的數(shù)據(jù)vvol的ID。應(yīng)當(dāng)從圖16A的方法認(rèn)識(shí)到,可以從與VM的虛擬盤(pán)關(guān)聯(lián)的盤(pán)描述符文件獲得這一ID。然后,在步驟1716,主機(jī)計(jì)算機(jī)在步驟1716向存儲(chǔ)系統(tǒng)發(fā)送擴(kuò)展vvol API調(diào)用,其中擴(kuò)展vvol API調(diào)用包括數(shù)據(jù)vvol的ID和數(shù)據(jù)vvol的新大小。
擴(kuò)展vvol API調(diào)用造成在存儲(chǔ)系統(tǒng)中更新vvol數(shù)據(jù)庫(kù)和容器數(shù)據(jù)庫(kù)(例如,圖3的vvol數(shù)據(jù)庫(kù)314和容器數(shù)據(jù)庫(kù)316)以反映vvol的增加的地址空間。在接收擴(kuò)展vvol API調(diào)用已經(jīng)完成的確認(rèn)時(shí),主機(jī)計(jì)算機(jī)在步驟1718用新大小更新用于VM的虛擬盤(pán)的盤(pán)描述符文件。然后,在步驟1720,主機(jī)計(jì)算機(jī)確定VM是否被通電。如果不是,則主機(jī)計(jì)算機(jī)在步驟1722拆卸文件系統(tǒng)并且向存儲(chǔ)系統(tǒng)發(fā)送對(duì)于解綁定元數(shù)據(jù)vvol的請(qǐng)求。在另一方面,如果VM被通電,則該方法終止。
用于將VM的當(dāng)前綁定到PE的vvol從源存儲(chǔ)容器移向目的地存儲(chǔ)容器(其中源存儲(chǔ)容器和目的地存儲(chǔ)容器二者在相同存儲(chǔ)系統(tǒng)管理器的范圍內(nèi))的方法在步驟1810開(kāi)始,其中接收源和目的地存儲(chǔ)容器的容器ID(分別為SC1和SC2)以及待移動(dòng)的vvol的vvol ID。然后,在步驟1812,更新vvol數(shù)據(jù)庫(kù)(例如,圖3的vvol數(shù)據(jù)庫(kù)314)和容器數(shù)據(jù)庫(kù)(例如,圖3的容器數(shù)據(jù)庫(kù)316)的盤(pán)區(qū)分配位圖如下。首先,存儲(chǔ)系統(tǒng)管理器從SC1的在容器數(shù)據(jù)庫(kù)316中的條目去除在SC1中的vvol盤(pán)區(qū),并且然后通過(guò)修改SC2的在容器數(shù)據(jù)庫(kù)316中的條目來(lái)向SC2指派這些盤(pán)區(qū)。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)可以通過(guò)向SC1指派新紡錘體盤(pán)區(qū)來(lái)補(bǔ)償SC1中的(由于去除vvol存儲(chǔ)盤(pán)區(qū)的)存儲(chǔ)容量損失,并且通過(guò)從SC2去除一些未使用的紡錘體盤(pán)區(qū)來(lái)彌補(bǔ)SC2中的(由于添加vvol存儲(chǔ)盤(pán)區(qū)的)存儲(chǔ)容量增加。在步驟1814,存儲(chǔ)系統(tǒng)管理器確定當(dāng)前綁定的PE是否能夠最優(yōu)地服務(wù)于向vvol的新位置的IO。在當(dāng)前PE不能服務(wù)于向vvol的新位置的IO時(shí)的示例實(shí)例是如果存儲(chǔ)管理員已經(jīng)靜態(tài)配置了存儲(chǔ)系統(tǒng)管理器以向來(lái)自不同客戶并且因此來(lái)自不同存儲(chǔ)容器的vvol指派不同PE。如果當(dāng)前PE不能服務(wù)于向vvol的IO,則vvol在步驟1815經(jīng)歷以上結(jié)合圖13描述的重新綁定過(guò)程(和對(duì)連接數(shù)據(jù)庫(kù)(例如,圖3的連接數(shù)據(jù)庫(kù)312)的關(guān)聯(lián)的改變)。在步驟1815之后,執(zhí)行步驟1816,其中向主機(jī)計(jì)算機(jī)返回成功移動(dòng)完成的確認(rèn)。如果存儲(chǔ)系統(tǒng)管理器在步驟1814確定當(dāng)前PE能夠服務(wù)于向vvol的新位置的IO,則繞過(guò)步驟1815并且接著執(zhí)行步驟1816。
當(dāng)在不兼容存儲(chǔ)容器之間(例如,在不同制造商的存儲(chǔ)設(shè)備中創(chuàng)建的存儲(chǔ)容器之間)移動(dòng)vvol時(shí),除了對(duì)容器數(shù)據(jù)庫(kù)316、vvol數(shù)據(jù)庫(kù)314和連接數(shù)據(jù)庫(kù)312的改變之外還在存儲(chǔ)容器之間執(zhí)行數(shù)據(jù)移動(dòng)。在一個(gè)實(shí)施例中,運(yùn)用在通過(guò)這里引用將全部?jī)?nèi)容結(jié)合于此、提交于2008年5月29日并且名稱(chēng)為“Offloading Storage Operations to Storage Hardware”的第12/129,323號(hào)美國(guó)專(zhuān)利申請(qǐng)中描述的數(shù)據(jù)移動(dòng)技術(shù)。
圖19是用于從模板VM克隆VM的在主機(jī)計(jì)算機(jī)和存儲(chǔ)系統(tǒng)中執(zhí)行的方法步驟的流程圖。這一方法在步驟1908開(kāi)始,其中主機(jī)計(jì)算機(jī)向存儲(chǔ)系統(tǒng)發(fā)送對(duì)于為新VM創(chuàng)建元數(shù)據(jù)vvol的請(qǐng)求。在1910,存儲(chǔ)系統(tǒng)根據(jù)以上結(jié)合圖8描述的方法為新VM創(chuàng)建元數(shù)據(jù)并且向主機(jī)計(jì)算機(jī)返回新元數(shù)據(jù)vvol ID。然后,在步驟1914,對(duì)于屬于模板VM的所有數(shù)據(jù)vvol ID從主機(jī)計(jì)算機(jī)經(jīng)由帶外路徑601向存儲(chǔ)系統(tǒng)發(fā)出克隆vvol API調(diào)用。在步驟1918,存儲(chǔ)系統(tǒng)管理器檢查以查看模板VM和新VM的數(shù)據(jù)vvol是否兼容。應(yīng)當(dāng)認(rèn)識(shí)到,如果克隆在不同制造商的存儲(chǔ)系統(tǒng)中創(chuàng)建的存儲(chǔ)容器之間出現(xiàn),則數(shù)據(jù)vvol可能不兼容。如果存在兼容性,則執(zhí)行步驟1919。在步驟1919,存儲(chǔ)系統(tǒng)管理器通過(guò)生成新數(shù)據(jù)vvol ID、更新容器數(shù)據(jù)庫(kù)316中的分配位圖并且向vvol數(shù)據(jù)庫(kù)314添加新vvol條目來(lái)創(chuàng)建新數(shù)據(jù)vvol并且向新VM的數(shù)據(jù)vvol復(fù)制在模板VM的數(shù)據(jù)vvol中存儲(chǔ)的內(nèi)容。在步驟1920,存儲(chǔ)系統(tǒng)管理器向主機(jī)計(jì)算機(jī)返回新數(shù)據(jù)vvol ID。接收新數(shù)據(jù)vvol ID向主機(jī)計(jì)算機(jī)提供數(shù)據(jù)vvol克隆完成而無(wú)錯(cuò)誤的確認(rèn)。然后,在步驟1925,主機(jī)計(jì)算機(jī)向新VM的元數(shù)據(jù)vvol發(fā)出IO以用新生成的數(shù)據(jù)vvol ID更新元數(shù)據(jù)文件,特別地為盤(pán)描述符文件。由存儲(chǔ)系統(tǒng)在步驟1926執(zhí)行由主機(jī)計(jì)算機(jī)向存儲(chǔ)系統(tǒng)發(fā)出的IO,作為這一點(diǎn)的結(jié)果,用新生成的數(shù)據(jù)vvol ID更新新VM的盤(pán)描述符文件。
如果存儲(chǔ)系統(tǒng)管理器在步驟1918確定模板VM和新VM的數(shù)據(jù)vvol不兼容,則向主機(jī)計(jì)算機(jī)返回錯(cuò)誤消息。在接收這一錯(cuò)誤消息時(shí),主機(jī)計(jì)算機(jī)在步驟1921向存儲(chǔ)系統(tǒng)發(fā)出創(chuàng)建vvol API調(diào)用以創(chuàng)建新數(shù)據(jù)vvol。在步驟1922,存儲(chǔ)系統(tǒng)管理器通過(guò)生成新數(shù)據(jù)vvol ID、更新容器數(shù)據(jù)庫(kù)316中的分配位圖并且向vvol數(shù)據(jù)庫(kù)314添加新vvol條目來(lái)創(chuàng)建新數(shù)據(jù)vvol,并且向主機(jī)計(jì)算機(jī)返回新數(shù)據(jù)vvol ID。在步驟1923,主機(jī)計(jì)算機(jī)根據(jù)在通過(guò)這里引用將全部?jī)?nèi)容結(jié)合于、提交于2009年1月21日并且名稱(chēng)為“Data Mover for Computer System”的第12/356,694號(hào)美國(guó)專(zhuān)利申請(qǐng)中描述的技術(shù)執(zhí)行數(shù)據(jù)移動(dòng)(步驟1923)。在步驟1923之后,如以上描述的那樣執(zhí)行步驟1925和1926。
圖20是根據(jù)另一實(shí)施例的用于供應(yīng)VM的方法步驟的流程圖。在這一實(shí)施例中,使用管理服務(wù)器610、主控VM的計(jì)算機(jī)系統(tǒng)(例如,圖5D中所示的計(jì)算機(jī)系統(tǒng)102(下文稱(chēng)為“主機(jī)計(jì)算機(jī)”))和圖2B的存儲(chǔ)系統(tǒng)群集(特別地為存儲(chǔ)系統(tǒng)管理器131或者存儲(chǔ)系統(tǒng)管理器132或者存儲(chǔ)系統(tǒng)管理器135)。如所示,在步驟2002接收對(duì)于供應(yīng)VM的請(qǐng)求。這可以是在使用與管理服務(wù)器610的適當(dāng)用戶接口的VM管理員向管理服務(wù)器610發(fā)出用于供應(yīng)具有某個(gè)大小和存儲(chǔ)能力簡(jiǎn)檔的VM的命令時(shí)生成的請(qǐng)求。響應(yīng)于該命令,在步驟2004,管理服務(wù)器610發(fā)起用于用以上結(jié)合圖8描述的方式創(chuàng)建用于包含VM的元數(shù)據(jù)的vvol(特別地為元數(shù)據(jù)vvol)的方法,存儲(chǔ)系統(tǒng)管理器在步驟2008按照該方法創(chuàng)建元數(shù)據(jù)vvol(該元數(shù)據(jù)vvol是在NAS設(shè)備中的文件),并且向管理服務(wù)器610返回元數(shù)據(jù)vvol ID。在步驟2020,管理服務(wù)器610向主機(jī)計(jì)算機(jī)注冊(cè)回元數(shù)據(jù)vvol的vvol ID。在步驟2022,主機(jī)計(jì)算機(jī)向存儲(chǔ)系統(tǒng)發(fā)出對(duì)于元數(shù)據(jù)vvol ID的綁定請(qǐng)求,響應(yīng)于該綁定請(qǐng)求,存儲(chǔ)系統(tǒng)在步驟2023分別返回IP地址和目錄路徑作為PE ID和SLLID。在步驟2024,主機(jī)計(jì)算機(jī)在指定的IP地址和目錄路徑裝配目錄,并且在裝配的目錄中存儲(chǔ)元數(shù)據(jù)文件。在使用NFS的實(shí)施例中,NFS客戶端545或者585可以將給定的IP地址和目錄路徑分解成NFS句柄以便向這樣的目錄發(fā)出NFS請(qǐng)求。
在步驟2026,主機(jī)計(jì)算機(jī)發(fā)起用于用以上結(jié)合圖8描述的方式為VM的虛擬盤(pán)中的每個(gè)虛擬盤(pán)創(chuàng)建數(shù)據(jù)vvol的方法,存儲(chǔ)系統(tǒng)管理器在步驟2030按照該方法創(chuàng)建數(shù)據(jù)vvol并且向主機(jī)計(jì)算機(jī)返回?cái)?shù)據(jù)vvol的vvol ID。在步驟2032,主機(jī)計(jì)算機(jī)在用于虛擬盤(pán)的盤(pán)描述符文件中存儲(chǔ)數(shù)據(jù)vvol的ID。該方法以在已經(jīng)對(duì)于VM的所有虛擬盤(pán)創(chuàng)建了數(shù)據(jù)vvol之后解綁定元數(shù)據(jù)vvol(未示出)作為結(jié)束。
如以上結(jié)合圖8描述的那樣,在從存儲(chǔ)容器創(chuàng)建新vvol并且未為新vvol顯式地指定存儲(chǔ)能力簡(jiǎn)檔時(shí),新vvol將繼承與存儲(chǔ)容器關(guān)聯(lián)的存儲(chǔ)能力簡(jiǎn)檔??梢詮娜舾刹煌?jiǎn)檔之一選擇與存儲(chǔ)容器關(guān)聯(lián)的存儲(chǔ)能力簡(jiǎn)檔。例如,如圖21中所示,不同簡(jiǎn)檔包括生產(chǎn)(prod)簡(jiǎn)檔2101、開(kāi)發(fā)(dev)簡(jiǎn)檔2102和測(cè)試簡(jiǎn)檔2103(這里被統(tǒng)稱(chēng)為“簡(jiǎn)檔2100”)。應(yīng)當(dāng)認(rèn)識(shí)到,可以定義許多其他簡(jiǎn)檔。如所示,特定簡(jiǎn)檔的每個(gè)簡(jiǎn)檔條目為固定類(lèi)型或者可變類(lèi)型,并且具有名稱(chēng)和與它關(guān)聯(lián)的一個(gè)或者多個(gè)值。固定類(lèi)型的簡(jiǎn)檔條目具有固定數(shù)目的可選擇項(xiàng)目。例如,可以將簡(jiǎn)檔條目“復(fù)制”設(shè)置成真或者假。對(duì)照而言,可變類(lèi)型的簡(jiǎn)檔條目無(wú)預(yù)定義選擇。作為替代,為可變類(lèi)型的簡(jiǎn)檔條目設(shè)置默認(rèn)值和值范圍,并且用戶可以選擇在范圍內(nèi)的任何值。如果未指定值,則使用默認(rèn)值。在圖21中所示的示例簡(jiǎn)檔2100中,可變類(lèi)型的簡(jiǎn)檔條目具有被逗號(hào)分離的三個(gè)數(shù)。第一個(gè)數(shù)是指定的范圍的更低端,并且第二個(gè)數(shù)是指定的范圍的更高端。第三個(gè)數(shù)是默認(rèn)值。因此,將復(fù)制vvol,該vvol繼承在生產(chǎn)簡(jiǎn)檔2101中定義的存儲(chǔ)能力簡(jiǎn)檔(復(fù)制.值=真),并且可以在范圍0.1到24小時(shí)(默認(rèn)為1小時(shí))中定義用于復(fù)制的恢復(fù)時(shí)間目標(biāo)(RTO)。此外,對(duì)于這一vvol(復(fù)制.值=真)允許快照。保持的快照數(shù)目在范圍1至100中,默認(rèn)為1,并且快照頻率在范圍每小時(shí)一次至每24小時(shí)一次中,默認(rèn)為每小時(shí)一次。SnapInherit列指示在快照給定的vvol以創(chuàng)建作為衍生vvol的新vvol時(shí)是否應(yīng)當(dāng)向衍生vvol傳播給定的簡(jiǎn)檔屬性(及其值)。在生產(chǎn)簡(jiǎn)檔2101的示例中,可以用生成簡(jiǎn)檔2101向給定的vvol的快照vvol傳播僅前兩個(gè)簡(jiǎn)檔條目(復(fù)制和RTO)??煺誺vol的所有其他屬性的值將被設(shè)置成在簡(jiǎn)檔中指定的默認(rèn)值。換言之,這些其他屬性在給定的vvol上的任何定制(例如,快照頻率的非默認(rèn)值)將由于它們的對(duì)應(yīng)SnapInherit列為假而不會(huì)被向快照vvol傳播。簡(jiǎn)檔也包含其他列(比如CloneInherit(未示出))和ReplicaInherit(未示出),這兩列控制分別向給定的vvol的克隆和復(fù)制傳播哪些屬性值。
在根據(jù)圖4的方法創(chuàng)建存儲(chǔ)容器時(shí),可以設(shè)置可以對(duì)于從存儲(chǔ)容器創(chuàng)建的vvol定義的存儲(chǔ)能力簡(jiǎn)檔的類(lèi)型。圖21中的流程圖圖示圖4中所示的用于創(chuàng)建存儲(chǔ)容器的方法,其中在步驟412與413之間插入步驟2110。在步驟2110,存儲(chǔ)管理員選擇用于創(chuàng)建的存儲(chǔ)容器的簡(jiǎn)檔2100中的一個(gè)或者多個(gè)簡(jiǎn)檔。例如,為一個(gè)客戶創(chuàng)建的存儲(chǔ)容器可以與生產(chǎn)簡(jiǎn)檔2101和開(kāi)發(fā)簡(jiǎn)檔2102關(guān)聯(lián),從而使得為生產(chǎn)類(lèi)型的vvol將如情況可以是的那樣繼承用默認(rèn)值或者客戶指定的值在生產(chǎn)簡(jiǎn)檔2101中定義的存儲(chǔ)能力簡(jiǎn)檔,并且為開(kāi)發(fā)類(lèi)型的vvol將如情況可以是那樣繼承用默認(rèn)值或者客戶指定的值在開(kāi)發(fā)簡(jiǎn)檔2102中定義的存儲(chǔ)能力簡(jiǎn)檔。
圖22是圖示用于創(chuàng)建vvol并且定義用于vvol的存儲(chǔ)能力簡(jiǎn)檔的由存儲(chǔ)系統(tǒng)管理器131、132或者135執(zhí)行的方法步驟的流程圖。圖22的方法步驟(特別地為方法步驟2210、2212、2218和2220)分別對(duì)應(yīng)于圖8中所示的步驟806、810、812和814。此外,圖22的方法步驟包括步驟2214、2215和2216,這些步驟定義用于創(chuàng)建的vvol的存儲(chǔ)能力簡(jiǎn)檔。
在步驟2214,存儲(chǔ)系統(tǒng)管理器確定是否已經(jīng)在對(duì)于創(chuàng)建vvol的請(qǐng)求中指定了將在存儲(chǔ)能力簡(jiǎn)檔中使用的值。如果它們不是,則存儲(chǔ)系統(tǒng)管理器在步驟2215運(yùn)用與vvol的存儲(chǔ)容器關(guān)聯(lián)的存儲(chǔ)能力簡(jiǎn)檔作為vvol的具有默認(rèn)值的存儲(chǔ)能力簡(jiǎn)檔。如果已經(jīng)指定了將在存儲(chǔ)能力簡(jiǎn)檔中使用的值,則存儲(chǔ)系統(tǒng)管理器在步驟2216運(yùn)用與vvol的存儲(chǔ)容器關(guān)聯(lián)的存儲(chǔ)能力簡(jiǎn)檔作為vvol的具有指定的值而不是默認(rèn)值的存儲(chǔ)能力簡(jiǎn)檔。
在一個(gè)實(shí)施例中,在vvol數(shù)據(jù)庫(kù)314中存儲(chǔ)vvol的存儲(chǔ)能力簡(jiǎn)檔為關(guān)鍵字-值對(duì)。一旦已經(jīng)定義了并且在vvol數(shù)據(jù)庫(kù)314中存儲(chǔ)了vvol的存儲(chǔ)能力簡(jiǎn)檔為關(guān)鍵字-值對(duì),并且只要與復(fù)制和快照有關(guān)的屬性和值如圖21的示例簡(jiǎn)檔中所示是這一簡(jiǎn)檔的部分,存儲(chǔ)系統(tǒng)就能夠執(zhí)行用于vvol的復(fù)制和快照而無(wú)需由主機(jī)計(jì)算機(jī)發(fā)出的進(jìn)一步指令。
圖23是圖示用于從母vvol創(chuàng)建快照的由存儲(chǔ)系統(tǒng)管理器131、132或者135執(zhí)行的方法步驟的流程圖。在一個(gè)實(shí)施例中,運(yùn)用快照跟蹤數(shù)據(jù)結(jié)構(gòu)以根據(jù)在給定的vvol的存儲(chǔ)能力簡(jiǎn)檔中的快照定義調(diào)度快照。在達(dá)到用于快照的調(diào)度的時(shí)間時(shí),存儲(chǔ)系統(tǒng)管理器在步驟2310從快照跟蹤數(shù)據(jù)結(jié)構(gòu)取回vvol ID。然后,在步驟2312,存儲(chǔ)系統(tǒng)管理器生成用于快照的唯一vvol ID。存儲(chǔ)系統(tǒng)管理器在步驟2315運(yùn)用母vvol(即具有從快照跟蹤數(shù)據(jù)結(jié)構(gòu)取回的vvol ID的vvol)的存儲(chǔ)能力簡(jiǎn)檔作為快照vvol的存儲(chǔ)能力簡(jiǎn)檔。應(yīng)當(dāng)注意,由于這是由存儲(chǔ)系統(tǒng)驅(qū)動(dòng)的自動(dòng)化簡(jiǎn)檔驅(qū)動(dòng)的快照過(guò)程,所以用戶未獲得用于指定將在快照vvol的存儲(chǔ)能力簡(jiǎn)檔中使用的定制值的機(jī)會(huì)。在步驟2318,存儲(chǔ)系統(tǒng)管理器通過(guò)更新容器數(shù)據(jù)庫(kù)316中的分配位圖以及向vvol數(shù)據(jù)庫(kù)314添加用于快照vvol的新vvol條目在母vvol的存儲(chǔ)容器內(nèi)創(chuàng)建快照vvol。然后,在步驟2320,存儲(chǔ)系統(tǒng)管理器通過(guò)調(diào)度用于生成用于母vvol的下一快照的時(shí)間來(lái)更新快照跟蹤數(shù)據(jù)結(jié)構(gòu)。應(yīng)當(dāng)認(rèn)識(shí)到,存儲(chǔ)系統(tǒng)管理器必須對(duì)于所有如下vvol并行維護(hù)快照跟蹤數(shù)據(jù)結(jié)構(gòu)并且執(zhí)行圖23的方法步驟,這些vvol的存儲(chǔ)能力簡(jiǎn)檔規(guī)定調(diào)度的快照。
在用以上描述的方式創(chuàng)建快照之后,更新在vvol數(shù)據(jù)庫(kù)314中存儲(chǔ)的關(guān)鍵字-值對(duì)以指示快照vvol為類(lèi)型=快照。同樣,在其中為快照維護(hù)生成數(shù)(每當(dāng)拍攝或者設(shè)置快照時(shí)遞增生成數(shù)或者將其設(shè)置成等于日期+時(shí)間)的實(shí)施例中,存儲(chǔ)生成數(shù)為關(guān)鍵字-值對(duì)。也在快照vvol條目中存儲(chǔ)快照vvol的母vvol ID為關(guān)鍵字-值對(duì)。作為結(jié)果,主機(jī)計(jì)算機(jī)可以向vvol數(shù)據(jù)庫(kù)314查詢(xún)與特定vvol ID對(duì)應(yīng)的快照。也有可能讓主機(jī)計(jì)算機(jī)向vvol數(shù)據(jù)庫(kù)發(fā)出對(duì)于與特定vvol ID和特定生成數(shù)對(duì)應(yīng)的快照的查詢(xún)。
這里描述的各種實(shí)施例可以運(yùn)用各種由計(jì)算機(jī)實(shí)施的操作,這些操作涉及到在計(jì)算機(jī)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)。例如,這些操作通常但是未必可以需要物理操縱物理數(shù)量,這些數(shù)量可以采用電或者磁信號(hào)的形式,其中能夠存儲(chǔ)、傳送、組合、比較或者以其他方式操縱它們或者它們的表示。另外,經(jīng)常在術(shù)語(yǔ)(比如產(chǎn)生、標(biāo)識(shí)、確定或者比較)中引用這樣的操縱。這里描述的任何形成一個(gè)或者多個(gè)實(shí)施例的部分的操作可以是有用的機(jī)器操作。此外,一個(gè)或者多個(gè)實(shí)施例也涉及一種用于執(zhí)行這些操作的設(shè)備或者裝置。該裝置可以被特別地構(gòu)造用于具體的所需目的,或者它可以是通用計(jì)算機(jī),該通用計(jì)算機(jī)由在計(jì)算機(jī)中存儲(chǔ)的計(jì)算機(jī)程序有選擇地激活或者配置。特別地,各種通用機(jī)器可以與根據(jù)這里的教導(dǎo)編寫(xiě)的計(jì)算機(jī)程序一起被使用,或者構(gòu)造更專(zhuān)門(mén)化的裝置以執(zhí)行所需操作可以更方便。
可以用包括手持設(shè)備、微處理器系統(tǒng)、基于微處理器或者可編程的客戶電子裝置、小型計(jì)算機(jī)、大型機(jī)計(jì)算機(jī)等的其他計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn)這里描述的各種實(shí)施例。
可以將一個(gè)或者多個(gè)實(shí)施例實(shí)施為一個(gè)或者多個(gè)計(jì)算機(jī)程序或者為在一個(gè)或者多個(gè)計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的一個(gè)或者多個(gè)計(jì)算機(jī)程序模塊。術(shù)語(yǔ)計(jì)算機(jī)可讀介質(zhì)是指可以存儲(chǔ)數(shù)據(jù)的任何數(shù)據(jù)存儲(chǔ)設(shè)備,該數(shù)據(jù)隨后可以向計(jì)算機(jī)系統(tǒng)輸入。計(jì)算機(jī)可讀介質(zhì)可以基于用于以使計(jì)算機(jī)程序能夠被計(jì)算機(jī)讀取的方式體現(xiàn)計(jì)算機(jī)程序的任何現(xiàn)有或者以后開(kāi)發(fā)的技術(shù)。計(jì)算機(jī)可讀介質(zhì)的示例包括硬驅(qū)動(dòng)、網(wǎng)絡(luò)附著存儲(chǔ)裝置(NAS)、只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器(例如,閃存設(shè)備)、CD(緊致盤(pán))、CD-ROM、CD-R或者CD-RW、DVD(數(shù)字萬(wàn)用盤(pán))、磁帶以及其他光學(xué)和非光學(xué)數(shù)據(jù)存儲(chǔ)設(shè)備。也可以通過(guò)耦合網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)分發(fā)計(jì)算機(jī)可讀介質(zhì),從而使得以分布式方式存儲(chǔ)和執(zhí)行計(jì)算機(jī)可讀代碼。
雖然為了理解清楚而已經(jīng)用一些細(xì)節(jié)描述一個(gè)或者多個(gè)實(shí)施例,但是將清楚的是,可以在權(quán)利要求的范圍內(nèi)進(jìn)行某些改變和修改。例如,運(yùn)用SCSI作為用于SAN設(shè)備的協(xié)議以及使用NFS作為用于NAS設(shè)備的協(xié)議。可以使用SCSI協(xié)議的任何備選(比如光纖信道),并且可以使用NFS協(xié)議的任何備選(比如CIFS(公共因特網(wǎng)文件系統(tǒng))協(xié)議)。因而,描述的實(shí)施例將被視為例示性而非限制性,并且權(quán)利要求的范圍將不限于這里給出的細(xì)節(jié),而是可以在權(quán)利要求的范圍和等效含義內(nèi)被修改。在權(quán)利要求中,單元和/或步驟除非在權(quán)利要求中明確聲明否則并不意味著任何特定操作順序。
此外,盡管描述的虛擬化方法已經(jīng)主要假設(shè)虛擬機(jī)呈現(xiàn)與特定硬件系統(tǒng)一致的接口,但是可以結(jié)合未與任何特定硬件系統(tǒng)直接對(duì)應(yīng)的虛擬化使用描述的方法。根據(jù)各種實(shí)施例的虛擬化系統(tǒng)都被設(shè)想,這些實(shí)施例被實(shí)施為主控的實(shí)施例、非主控的實(shí)施例或者為往往模糊在二者之間的區(qū)分的實(shí)施例。另外,可以全部或者部分地在硬件中實(shí)施各種虛擬化操作。例如,硬件實(shí)現(xiàn)方式可以將查找表用于修改存儲(chǔ)訪問(wèn)請(qǐng)求以使非盤(pán)數(shù)據(jù)安全。
許多變化、修改、添加和改進(jìn)無(wú)論虛擬化程度如何都是可能的。虛擬化軟件因此可以包括執(zhí)行虛擬化功能的主機(jī)、控制臺(tái)或者客戶操作系統(tǒng)的部件。可以提供多個(gè)實(shí)例以用于這里被描述為單個(gè)實(shí)例的部件、操作或者結(jié)構(gòu)。最后,在各種部件、操作和數(shù)據(jù)存儲(chǔ)庫(kù)之間的邊界有些任意,并且在具體例示性配置的上下文中例示特定操作。其他功能分配被設(shè)想并且可以落入這里描述的實(shí)施例的范圍內(nèi)。一般而言,在示例配置中被呈現(xiàn)為分離部件的結(jié)構(gòu)和功能可以被實(shí)施為組合的結(jié)構(gòu)或者部件。類(lèi)似地,被呈現(xiàn)為單個(gè)部件的結(jié)構(gòu)和功能可以被實(shí)施為分離部件。這些和其他變化、修改、添加和改進(jìn)可以落入所附權(quán)利要求的范圍內(nèi)。