配置用于輸入/輸出操作的對象存儲系統(tǒng)的制作方法
【專利摘要】本發(fā)明的各實施例總體上涉及配置用于輸入/輸出操作的對象存儲系統(tǒng)。具體地,存儲系統(tǒng)導出被調(diào)配為存儲對象的邏輯存儲卷。連接的計算機系統(tǒng)通過在存儲系統(tǒng)中配置的用于協(xié)議流量的邏輯端點、使用標準協(xié)議、比如SCSI和NFS按照需求訪問這些存儲對象。當在存儲系統(tǒng)接收輸入?輸出命令(IO)時,從IO接收標識符并且將標識符轉(zhuǎn)譯成邏輯存儲卷標識符,并且對與邏輯存儲卷標識符對應(yīng)的邏輯存儲卷引用的存儲位置執(zhí)行IO。
【專利說明】
配置用于輸入/輸出操作的對象存儲系統(tǒng)
[00011 分案申請說明
[0002] 本申請是申請日為2012年8月22日、申請?zhí)枮?01280041490.9、發(fā)明名稱為"配置 用于輸入/輸出操作的對象存儲系統(tǒng)"的中國發(fā)明專利申請的分案申請。
技術(shù)領(lǐng)域
[0003] 本公開內(nèi)容總體上涉及計算機領(lǐng)域,具體地涉及配置用于輸入/輸出操作的對象 存儲系統(tǒng)。
【背景技術(shù)】
[0004] 隨著計算機系統(tǒng)伸縮至企業(yè)級,特別是在支持大規(guī)模數(shù)據(jù)中心的背景中,下層數(shù) 據(jù)存儲系統(tǒng)經(jīng)常運用存儲區(qū)域網(wǎng)絡(luò)(SAN)或者網(wǎng)絡(luò)附接存儲(NAS)。如在常規(guī)上適當理解的 那樣,SAN或者NAS提供諸多技術(shù)能力和操作益處,這些技術(shù)能力和操作益處基本上包括數(shù) 據(jù)存儲設(shè)備的虛擬化、具有透明的容錯故障恢復和故障保護控制的物理設(shè)備的冗余性、在 地理上分布和復制的存儲以及從以客戶端為中心的計算機系統(tǒng)管理解耦合的集中式監(jiān)督 和存儲配置管理。
[0005] 在架構(gòu)上,在SAN存儲系統(tǒng)中的存儲設(shè)備(例如,盤陣列等)通常連接到網(wǎng)絡(luò)交換機 (例如,光纖信道交換機等),這些網(wǎng)絡(luò)交換機然后連接到服務(wù)器或者"主機",這些服務(wù)器或 者"主機"需要訪問存儲設(shè)備中的數(shù)據(jù)。在SAN中的服務(wù)器、交換機和存儲設(shè)備通常使用小型 計算機系統(tǒng)接口(SCSI)協(xié)議來通信,該SCSI協(xié)議在盤數(shù)據(jù)塊級跨越網(wǎng)絡(luò)傳送數(shù)據(jù)。對照而 言,NAS設(shè)備通常是如下設(shè)備,該設(shè)備內(nèi)部包含一個或者多個存儲設(shè)備并且通過網(wǎng)絡(luò)協(xié)議、 比如以太網(wǎng)連接到主機(或者居間交換機)。除了包含存儲設(shè)備之外,NAS設(shè)備也已經(jīng)根據(jù)基 于網(wǎng)絡(luò)的文件系統(tǒng)、比如網(wǎng)絡(luò)文件系統(tǒng)(NFS)或者公共因特網(wǎng)文件系統(tǒng)(CIFS)預先格式化 它的存儲設(shè)備。這樣,如與向主機暴露盤(稱為LUN并且以下進一步具體描述)一一這些盤然 后需要根據(jù)主機利用的文件系統(tǒng)來格式化、然后裝配一一的SAN比對,NAS設(shè)備的基于網(wǎng)絡(luò) 的文件系統(tǒng)(該系統(tǒng)需要由主機的操作系統(tǒng)支持)使NAS設(shè)備向主機的操作系統(tǒng)表現(xiàn)為文件 服務(wù)器,該文件服務(wù)器然后裝配或者映射NAS設(shè)備例如為操作系統(tǒng)可訪問的網(wǎng)絡(luò)驅(qū)動。應(yīng)當 認識,隨著存儲系統(tǒng)銷售商不斷創(chuàng)新和發(fā)布新產(chǎn)品,在SAN與NAS存儲系統(tǒng)之間的清晰差別 繼續(xù)減弱而實際存儲系統(tǒng)實現(xiàn)方式經(jīng)常表現(xiàn)二者的特性、在相同系統(tǒng)中賦予文件級協(xié)議 (NAS)和塊級協(xié)議(SAN)二者。例如,在備選NAS架構(gòu)中,NAS "首領(lǐng)"或者"網(wǎng)關(guān)"設(shè)備聯(lián)網(wǎng)到主 機而不是傳統(tǒng)NAS設(shè)備。這樣的NAS網(wǎng)關(guān)設(shè)備并非本身包含存儲驅(qū)動、但是使外部存儲設(shè)備 能夠連接到NAS網(wǎng)關(guān)設(shè)備(例如,經(jīng)由光纖信道接口等)。被主機以相似方式感知為傳統(tǒng)NAS 設(shè)備的這樣的NAS網(wǎng)關(guān)設(shè)備提供一種用于顯著增加基于NAS的存儲架構(gòu)的容量(例如,在更 傳統(tǒng)上由SAN支持的存儲容量級)而又保持文件級存儲訪問的簡單性的能力。
[0006] SCSI和其它基于塊協(xié)議的存儲設(shè)備、比如圖1A中所示存儲系統(tǒng)30利用代表一個或 者多個編程的存儲處理器的存儲系統(tǒng)管理器31以聚合存儲設(shè)備中的存儲單元或者驅(qū)動并 且將它們呈現(xiàn)為各自具有唯一可標識編號的一個或者多個LUN(邏輯單元編號)34兒· 34 通過網(wǎng)絡(luò)20(例如,光纖信道等)由一個或者多個計算機系統(tǒng)10通過物理主機總線適配器 (HBA) 11來訪問。在計算機系統(tǒng)10內(nèi)和在HBA 11以上,通過從低級設(shè)備驅(qū)動器層12開始并且 在操作系統(tǒng)專屬文件系統(tǒng)層15中結(jié)束的一系列軟件層有特點地實施存儲訪問抽象化。實現(xiàn) 對LUN 34的基本訪問的設(shè)備驅(qū)動器層12通常專屬于存儲系統(tǒng)使用的通信協(xié)議(例如,SCSI 等)。在設(shè)備驅(qū)動器層12以上實施數(shù)據(jù)訪問層13以支持通過HBA 11以及其它數(shù)據(jù)訪問控制 和管理功能可見的LUN 34的多徑合并。通常在數(shù)據(jù)訪問層13與常規(guī)操作系統(tǒng)文件系統(tǒng)層15 之間實施的邏輯卷管理器14支持通過HBA 11可訪問的LUN 34的面向卷的虛擬化和管理。可 以在邏輯卷管理器14的控制之下將多個LUN 34-起聚集和管理為卷,用于向文件系統(tǒng)層15 呈現(xiàn)并且由文件系統(tǒng)層15用作邏輯設(shè)備。
[0007] 存儲系統(tǒng)管理器31實施在存儲系統(tǒng)30中駐留的、在圖1A中稱為紡錘體(spindle) 32的通?;诒P驅(qū)動的物理存儲單元的可視化。從邏輯觀點來看,這些紡錘體32中的每個 紡錘體可以視為固定大小的盤區(qū)( extent)33的依次陣列。存儲系統(tǒng)管理器31通過向連接的 計算機系統(tǒng)、比如計算機系統(tǒng)10暴露連續(xù)邏輯存儲空間一一該邏輯存儲空間被劃分成被稱 為LUN 34的虛擬SCSI設(shè)備的集合一一來抽象化掉使讀取和寫入操作以盤驅(qū)動的實際紡錘 體和盤區(qū)的地址為目標的復雜性。每個LUN借助存在這樣的LUN并且向計算機系統(tǒng)10呈現(xiàn)這 樣的LUN來代表被指派用于由計算機系統(tǒng)10使用的某個容量。存儲系統(tǒng)管理器31維護元數(shù) 據(jù),該元數(shù)據(jù)包括用于每個這樣的LUN到盤區(qū)有序列表的映射,其中每個這樣的盤區(qū)可以被 標識為紡錘體-盤區(qū)對〈紡錘體#,盤區(qū)#>并且因此可以位于各種紡錘體32中的任何紡錘體 中。
[0008] 圖1B是通過網(wǎng)絡(luò)21(例如,因特網(wǎng))經(jīng)由網(wǎng)絡(luò)接口卡(NIC)ll'連接到一個或者多個 計算機系統(tǒng)10的基于NAS或者文件級的常規(guī)存儲系統(tǒng)40的框圖。存儲系統(tǒng)40包括代表一個 或者多個編程的存儲處理器的存儲系統(tǒng)管理器41。存儲系統(tǒng)管理器41在存儲系統(tǒng)40中駐留 的、在圖1B中稱為紡錘體42的通?;诒P驅(qū)動的物理存儲單元上面實施文件系統(tǒng)45。從邏 輯觀點來看,這些紡錘體中的每個紡錘體可以視為固定大小的盤區(qū)43的依次陣列。文件系 統(tǒng)45通過向連接的計算機系統(tǒng)、比如計算機系統(tǒng)10暴露包括目錄和文件一一這些目錄和文 件可以被組織成文件系統(tǒng)級卷44(下文稱為"FS卷"),這些FS卷通過它們的相應(yīng)裝配點來訪 問一一的命名空間來抽象化掉使讀取和寫入操作以盤驅(qū)動的實際紡錘體和盤區(qū)的地址為 目標的復雜性。
[0009] 即使有以上描述的存儲系統(tǒng)進步,仍然已經(jīng)廣泛地認識它們未充分可伸縮以滿足 虛擬化的計算機系統(tǒng)的特定需要。例如,服務(wù)器機器群集可以服務(wù)于多達1〇,〇〇〇個虛擬機 (VM),每個VM使用數(shù)目為多個的"虛擬盤"和數(shù)目為多個的"快照",每個虛擬盤和快照可以 例如被存儲為特定LUN或者FS卷上的文件。即使按比例縮減的估計為每VM有2個虛擬盤和2 個快照,如果VM直接連接到物理盤(即,每物理盤有1個虛擬盤或者快照),這仍然總計為存 儲系統(tǒng)支持60,000個不同盤。此外,在這一規(guī)模的存儲設(shè)備和拓撲管理已知有困難。因此, 開發(fā)比如在通過這里引用而結(jié)合的、標題為"Providing Multiple Concurrent Access to a File System"的美國專利7,849,098中描述的數(shù)據(jù)存儲庫這一概念,在這些數(shù)據(jù)存儲庫 中,將VM復用到物理存儲實體(例如,基于LUN的VMFS群集文件系統(tǒng)或者FS卷)的更小集合 上。
[0010]在運用LUN或者FS卷的常規(guī)存儲系統(tǒng)中,來自多個VM的工作量通常由單個LUN或者 單個FS卷服務(wù)。因此,來自一個VM工作量的資源需求將影響在相同LUN或者FS卷上向另一 VM 工作量提供的服務(wù)水平。用于存儲的效率測量、比如延時和每秒輸入/輸出操作(10)或者 Ι0Ρ姻此根據(jù)在給定的LUN或者FS卷中的工作量數(shù)目變化并且不能被保障。因而,不能在每 VM基礎(chǔ)上執(zhí)行用于運用LUN或者FS卷的存儲系統(tǒng)的存儲策略,并且不能在每VM基礎(chǔ)上給定 服務(wù)水平協(xié)定(SLA)保障。此外,以LUN或者FS卷的粒度而不是以VM的虛擬盤的粒度提供由 存儲系統(tǒng)銷售商提供的數(shù)據(jù)服務(wù)、比如快照、復制、加密和解重復。因此,可以使用存儲系統(tǒng) 銷售商提供的數(shù)據(jù)服務(wù)來為整個LUN或者整個FS卷創(chuàng)建快照,但是不能從其中存儲虛擬盤 的LUN或者文件系統(tǒng)分離地創(chuàng)建用于VM的單個虛擬盤的快照。
【發(fā)明內(nèi)容】
[0011] -個或者多個實施例涉及一種存儲系統(tǒng),該存儲系統(tǒng)被配置用于隔離在其中運行 的工作量、從而可以每工作量提供SLA保障并且可以每工作量提供存儲系統(tǒng)的數(shù)據(jù)服務(wù)而 無需存儲系統(tǒng)的激進重新設(shè)計。在存儲用于多個虛擬機的虛擬盤的存儲系統(tǒng)中,可以在每 虛擬盤基礎(chǔ)上提供SLA保障,并且可以在每虛擬盤基礎(chǔ)上提供存儲系統(tǒng)的數(shù)據(jù)服務(wù)。
[0012] 根據(jù)本發(fā)明的一個實施例,存儲系統(tǒng)從這里稱為"存儲容器"的邏輯存儲容量指派 之中導出在每工作量基礎(chǔ)上被調(diào)配為存儲對象的、這里稱為"虛擬卷"的邏輯存儲卷。對于 VM,可以對于VM的虛擬盤和快照中的每個虛擬盤和快照創(chuàng)建虛擬卷。在一個實施例中,連接 的計算機系統(tǒng)通過在存儲系統(tǒng)中配置的稱為"協(xié)議端點"的用于協(xié)議流量的邏輯端點、使用 標準協(xié)議、比如SCSI和NFS按照需求訪問虛擬卷。
[0013] 根據(jù)本發(fā)明的一個實施例的一種用于在存儲系統(tǒng)中處理輸入-輸出命令(10)的方 法包括以下步驟:在存儲系統(tǒng)接收1〇,1〇包括第一標識符和第二標識符,其中第一標識符用 來將10引向存儲系統(tǒng);從10獲取第二標識符并且將第二標識符轉(zhuǎn)譯成邏輯存儲卷標識符; 并且對與邏輯存儲卷標識符對應(yīng)的邏輯存儲卷引用的存儲位置執(zhí)行10。
[0014] 根據(jù)本發(fā)明的一個實施例的一種用于預備存儲系統(tǒng)以執(zhí)行10的方法包括以下步 驟:接收對于預備邏輯存儲卷的請求;選擇在存儲系統(tǒng)中配置的協(xié)議端點,用于邏輯存儲卷 的10將通過協(xié)議端點來接收;并且生成將在用于邏輯存儲卷的10中包括的標識符并且向發(fā) 出請求的計算機系統(tǒng)返回標識符。
[0015] 根據(jù)本發(fā)明的一個實施例的一種用于預備存儲系統(tǒng)以執(zhí)行在主機計算機上運行 的虛擬機發(fā)出的10的方法包括以下步驟:接收對于預備用于虛擬機的元數(shù)據(jù)邏輯存儲卷的 請求;選擇在存儲系統(tǒng)中配置的協(xié)議端點,用于元數(shù)據(jù)邏輯存儲卷的10將通過協(xié)議端點來 接收;通過協(xié)議端點接收讀取10并且返回讀取的數(shù)據(jù),讀取的數(shù)據(jù)包括用于數(shù)據(jù)邏輯存儲 卷的標識符;接收對于預備用于虛擬機的數(shù)據(jù)邏輯存儲卷的請求;并且對于每個數(shù)據(jù)邏輯 存儲卷,選擇在存儲系統(tǒng)中配置的協(xié)議端點,用于邏輯存儲卷的10將通過協(xié)議端點來接收。
[0016] 本發(fā)明的各實施例還包括一種存儲指令的非瞬態(tài)計算機可讀存儲介質(zhì),這些指令 在由計算機系統(tǒng)執(zhí)行時使計算機系統(tǒng)執(zhí)行以上闡述的方法之一。
【附圖說明】
[0017] 圖1A是通過網(wǎng)絡(luò)連接到一個或者多個計算機系統(tǒng)的基于塊協(xié)議的常規(guī)存儲設(shè)備 的框圖。
[0018] 圖1B是通過網(wǎng)絡(luò)連接到一個或者多個計算機系統(tǒng)的常規(guī)NAS設(shè)備的框圖。
[0019] 圖2A是根據(jù)本發(fā)明的一個實施例的實施虛擬卷的基于塊協(xié)議的存儲系統(tǒng)群集的 框圖。
[0020] 圖2B是根據(jù)本發(fā)明的一個實施例的實施虛擬卷的基于NAS的存儲系統(tǒng)群集的框 圖。
[0021] 圖3是根據(jù)本發(fā)明的一個實施例的圖2A或者圖2B的存儲系統(tǒng)群集的用于管理虛擬 卷的部件框圖。
[0022] 圖4是用于創(chuàng)建存儲容器的方法步驟的流程圖。
[0023] 圖5A是在基于SAN的存儲系統(tǒng)上主控的被配置用于實施虛擬卷的計算機系統(tǒng)的一 個實施例的框圖。
[0024]圖5B是在基于NAS的存儲系統(tǒng)上主控的被配置用于虛擬卷的圖5A的計算機系統(tǒng)的 框圖。
[0025]圖5C是在基于SAN的存儲系統(tǒng)上主控的被配置用于實施虛擬卷的計算機系統(tǒng)的另 一實施例的框圖。
[0026]圖5D是在基于NAS的存儲系統(tǒng)上主控的被配置用于虛擬卷的圖5C的計算機系統(tǒng)的 框圖。
[0027]圖6是圖示根據(jù)本發(fā)明的一個實施例的用來管理虛擬卷的部件和通信路徑的計算 機環(huán)境的簡化框圖。
[0028]圖7是用于向圖2A或者圖2B的存儲系統(tǒng)群集認證計算機系統(tǒng)的方法步驟的流程 圖。
[0029]圖8是根據(jù)一個實施例的用于創(chuàng)建虛擬卷的方法步驟的流程圖。
[0030]圖9A是用于發(fā)現(xiàn)可用于計算機系統(tǒng)的協(xié)議端點的方法步驟的流程圖。
[0031] 圖9B是用于存儲系統(tǒng)發(fā)現(xiàn)計算機系統(tǒng)經(jīng)由帶內(nèi)路徑連接到的協(xié)議端點的方法步 驟的流程圖。
[0032] 圖10是根據(jù)一個實施例的用于發(fā)出和執(zhí)行虛擬卷綁定請求的方法步驟的流程圖。 [0033]圖11A和圖11B是根據(jù)一個實施例的用于向虛擬卷發(fā)出10的方法步驟的流程圖。
[0034] 圖12是根據(jù)一個實施例的用于在存儲系統(tǒng)執(zhí)行10的方法步驟的流程圖。
[0035] 圖13是根據(jù)一個實施例的用于發(fā)出和執(zhí)行虛擬卷重新綁定請求的方法步驟的流 程圖。
[0036] 圖14是虛擬卷的生命周期的概念圖。
[0037]圖15是根據(jù)一個實施例的使用圖2A的存儲系統(tǒng)的來調(diào)配VM的方法步驟的流程圖。 [0038]圖16A是用于使VM通電的方法步驟的流程圖。
[0039]圖16B是用于使VM斷電的方法步驟的流程圖。
[0040] 圖17是用于擴展VM的vvol的大小的方法步驟的流程圖。
[0041] 圖18是用于在存儲容器之間移動VM的vvol的方法步驟的流程圖。
[0042]圖19是用于從模板VM克隆VM的方法步驟的流程圖。
[0043]圖20是根據(jù)另一實施例的用于調(diào)配VM的方法步驟的流程圖。
[0044]圖21圖示采樣存儲能力簡檔和用于創(chuàng)建存儲容器的方法,該方法包括簡檔選擇步 驟。
[0045] 圖22是圖示用于創(chuàng)建vvol并且定義用于vvol的存儲能力簡檔的方法步驟的流程 圖。
[0046] 圖23是圖示用于創(chuàng)建快照的方法步驟的流程圖。
【具體實施方式】
[0047] 圖2A和圖2B是根據(jù)本發(fā)明的實施例的實施"虛擬卷"的存儲系統(tǒng)群集的框圖。存儲 系統(tǒng)群集包括一個或者多個存儲系統(tǒng)、例如存儲系統(tǒng)1301和1302,這些存儲系統(tǒng)可以是盤 陣列,每個存儲系統(tǒng)具有多個數(shù)據(jù)存儲單元(DSU),在圖中標注這些DSU之一為141,并且存 儲系統(tǒng)群集包括存儲系統(tǒng)管理器131和132,這些存儲系統(tǒng)管理器控制存儲系統(tǒng)130的各種 操作以實現(xiàn)這里描述的本發(fā)明的實施例。在一個實施例中,兩個或者更多存儲系統(tǒng)130可以 實施分布式存儲系統(tǒng)管理器135,該分布式存儲系統(tǒng)管理器135控制存儲系統(tǒng)群集的操作如 同它們是單個邏輯存儲系統(tǒng)一樣。分布式存儲系統(tǒng)管理器135的操作域可以跨越在相同數(shù) 據(jù)中心中或者跨越多個數(shù)據(jù)中心安裝的存儲系統(tǒng)。例如,在一個這樣的實施例中,分布式存 儲系統(tǒng)管理器135可以包括存儲系統(tǒng)管理器131,存儲系統(tǒng)管理器131在與用作"從屬"管理 器的存儲系統(tǒng)管理器132通信時用作"主控"管理器,但是應(yīng)當認識,可以實施用于實施分布 式存儲系統(tǒng)管理器的多種備選方法。DSU代表物理存儲單元、比如基于盤或者閃存的存儲單 元、比如旋轉(zhuǎn)盤或者固態(tài)盤。根據(jù)實施例,存儲系統(tǒng)群集創(chuàng)建并且向連接的計算機系統(tǒng)、比 如計算機系統(tǒng)1001和1002暴露如這里進一步具體描述的"虛擬卷"(vvol)。在計算機系統(tǒng) 100中運行的應(yīng)用(例如,VM等,這些VM訪問它們的虛擬盤)使用標準協(xié)議、比如在圖2A的實 施例中為SCSI和在圖2B的實施例中為NFS、通過在存儲系統(tǒng)130中配置的、稱為"協(xié)議端點" (PE)的用于SCSI或者NFS協(xié)議流量的邏輯端點按需訪問vvol。從計算機系統(tǒng)100到存儲系統(tǒng) 130的用于與應(yīng)用有關(guān)的數(shù)據(jù)操作的通信路徑這里被稱為"帶內(nèi)"路徑。在計算機系統(tǒng)100的 主機總線適配器(HBA)與在存儲系統(tǒng)130中配置的PE之間以及在計算機系統(tǒng)100的網(wǎng)絡(luò)接口 卡(NIC)與在存儲系統(tǒng)130中配置的PE之間的通信路徑是帶內(nèi)路徑的示例。從計算機系統(tǒng) 100到存儲系統(tǒng)130的不是在帶內(nèi)并且通常用來執(zhí)行管理操作的通信路徑這里被稱為"帶 外"路徑。在圖6中從帶內(nèi)路徑分離地圖示帶外路徑的示例、比如在計算機系統(tǒng)100與存儲系 統(tǒng)130之間的以太網(wǎng)網(wǎng)絡(luò)連接。為了簡化,示出計算機系統(tǒng)100直接連接到存儲系統(tǒng)130。然 而,應(yīng)當理解,它們可以通過多個路徑和一個或者多個交換機連接到存儲系統(tǒng)130。
[0048]分布式存儲系統(tǒng)管理器135或者單個存儲系統(tǒng)管理器131或者132可以從代表物理 DSU的邏輯聚合的邏輯"存儲容器"創(chuàng)建vvol(例如,在計算機系統(tǒng)100請求時等)。一般而言, 存儲容器可以跨越多于一個存儲系統(tǒng),并且許多存儲容器可以由單個存儲系統(tǒng)管理器或者 分布式存儲系統(tǒng)管理器創(chuàng)建。相似地,單個存儲系統(tǒng)可以包含許多存儲容器。在圖2A和圖2B 中,示出分布式存儲系統(tǒng)管理器135創(chuàng)建的存儲容器142A為跨越存儲系統(tǒng)1301和存儲系統(tǒng) 1302,而示出存儲容器142B和存儲容器142C為包含于單個存儲系統(tǒng)內(nèi)(即,分別為存儲系統(tǒng) 1301和存儲系統(tǒng)1302)。應(yīng)當認識,由于存儲容器可以跨越多個一個存儲系統(tǒng),所以存儲系 統(tǒng)管理員可以向其客戶調(diào)配超過任一存儲系統(tǒng)的存儲容量的存儲容量。還應(yīng)當認識,由于 可以在單個存儲系統(tǒng)內(nèi)創(chuàng)建多個存儲容器,所以存儲系統(tǒng)管理員可以使用單個存儲系統(tǒng)來 向多個客戶調(diào)配存儲裝置。
[0049]在圖2A的實施例中,從基于塊的存儲系統(tǒng)調(diào)配每個vvol。在圖2B的實施例中,基于 NAS的存儲系統(tǒng)在DSU 141上面實施文件系統(tǒng)145,并且每個vvol向計算機系統(tǒng)100暴露為在 這一文件系統(tǒng)內(nèi)的文件對象。此外,如以下將進一步具體描述的那樣,在計算機系統(tǒng)100上 運行的應(yīng)用通過PE訪問用于10的vvo 1。例如,如圖2A和圖2B中的虛線所示,vvo 1 151和vvo 1 152 經(jīng)由 PE161 可訪問;vvol 153 和 vvol 155 經(jīng)由 PE 162 可訪問;vvol 154 經(jīng)由 PE 163 和 PE 164可訪問;并且vvol 156經(jīng)由PE 165可訪問。應(yīng)當認識,來自多個存儲容器的vvol、比如在 存儲容器142A中的vvol 153和在存儲容器142C中的vvol 155可以在任何給定的時間經(jīng)由 單個PE、比如PE 162可訪問。還應(yīng)當認識,PE、比如PE 166可以在不存在經(jīng)由它們可訪問的任 何vvol時存在。
[0050] 在圖2A的實施例中,存儲系統(tǒng)130使用已知的用于設(shè)立LUN的方法來實施PE為特殊 類型的LUN。與LUN-樣,存儲系統(tǒng)130向每個UE提供稱為WWN(世界范圍名稱)的唯一標識符。 在一個實施例中,在創(chuàng)建PE時,存儲系統(tǒng)130未指定用于特殊LUN的大小,因為這里描述的PE 不是實際數(shù)據(jù)容器。在一個這樣的實施例中,存儲系統(tǒng)130可以指派零值或者很小的值為與 PE有關(guān)的LUN的大小,從而如以下進一步討論的那樣,管理員可以在請求存儲系統(tǒng)提供LUN (例如,傳統(tǒng)數(shù)據(jù)LUN和與PE有關(guān)的LUN)列表時快速標識PE。相似地,存儲系統(tǒng)130可以向PE 指派大于255的LUN編號為用于LUN的標識編號以用人性化方式指示它們不是數(shù)據(jù)LUN。作為 用于在PE與LUN之間區(qū)分的另一方式,可以向擴展查詢數(shù)據(jù)VH)頁面(頁面86h)添加 PE位。在 LUN是PE時將PE位設(shè)置成1,并且在它是普通數(shù)據(jù)LUN時設(shè)置成0。計算機系統(tǒng)100可以通過發(fā) 出SCSI命令REP0RT_LUNS(報告_LUN)來經(jīng)由帶內(nèi)路徑發(fā)現(xiàn)PE并且通過檢查指示的PE位來確 定它們是否為根據(jù)這里描述的實施例的PE或者常規(guī)數(shù)據(jù)LUN。計算機系統(tǒng)100可以可選地檢 查LUN大小和LUN編號屬性以進一步確認LUN是否為PE或者常規(guī)LUN。應(yīng)當認識,以上描述的 技術(shù)中的任何技術(shù)可以用來區(qū)分與PE有關(guān)的LUN與普通數(shù)據(jù)LUN。在一個實施例中,PE位技 術(shù)是用來區(qū)分與PE有關(guān)的LUN與普通數(shù)據(jù)LUN的僅有技術(shù)。
[0051] 在圖2B的實施例中,使用已知的用于設(shè)立指向FS卷的裝配點的方法在存儲系統(tǒng) 130中創(chuàng)建PE。在圖2B的實施例中創(chuàng)建的每個PE由也常規(guī)地一起稱為"裝配點"的IP地址和 文件系統(tǒng)路徑唯一標識。然而,不同于常規(guī)裝配點,PE未與FS卷相關(guān)聯(lián)。另外,不同于圖2A的 PE,圖2B的PE除非虛擬卷綁定到給定的PE則不可經(jīng)由帶內(nèi)路徑被計算機系統(tǒng)100發(fā)現(xiàn)。因 此,圖2B的PE經(jīng)由帶外路徑由存儲系統(tǒng)報告。
[0052]圖3是根據(jù)一個實施例的圖2A或者圖2B的存儲系統(tǒng)群集的用于管理虛擬卷的部件 的框圖。部件包括在一個實施例中在存儲系統(tǒng)130中執(zhí)行的存儲系統(tǒng)管理器131和132的軟 件模塊或者在另一實施例中的分布式存儲系統(tǒng)管理器135的軟件模塊、即輸入/輸出(1/0) 管理器304、卷管理器306、容器管理器308和數(shù)據(jù)訪問層310。在這里的實施例的描述中,應(yīng) 當理解,分布式存儲系統(tǒng)管理器135采取的任何動作可以根據(jù)實施例由存儲系統(tǒng)管理器131 或者存儲系統(tǒng)管理器132采取。
[0053] 在圖3的示例中,分布式存儲系統(tǒng)管理器135已經(jīng)從DSU 141創(chuàng)建三個存儲容器 SC1、SC2和SC3,示出這些存儲容器中的每個存儲容器具有標注為P1至Pn的紡錘體盤區(qū) (spindle extent)。一般而言,每個存儲容器具有固定物理大小并且與DSU的具體盤區(qū)相關(guān) 聯(lián)。在圖3中所示示例中,分布式存儲系統(tǒng)管理器135具有對容器數(shù)據(jù)庫316的訪問,該容器 數(shù)據(jù)庫316為每個存儲容器存儲其容器ID、物理布局信息和一些元數(shù)據(jù)。容器數(shù)據(jù)庫316由 容器管理器308管理和更新,該容器管理器308在一個實施例中是分布式存儲系統(tǒng)管理器 135的部件。容器ID是在創(chuàng)建存儲容器時向存儲容器給定通用唯一標識符。物理布局信息由 與給定的存儲容器相關(guān)聯(lián)并且存儲為〈系統(tǒng)ID,DSU ID,盤區(qū)編號〉有序列表的DSU 141的紡 錘體盤區(qū)構(gòu)成。元數(shù)據(jù)分節(jié)可以包含一些公共和一些存儲系統(tǒng)銷售商專屬元數(shù)據(jù)。例如,元 數(shù)據(jù)分節(jié)可以包含被允許訪問存儲容器的計算機系統(tǒng)或者應(yīng)用或者用戶的ID。作為另一示 例,元數(shù)據(jù)分節(jié)包含分配位圖,該分配位圖用于表示已經(jīng)向現(xiàn)有vvol分配存儲容器的哪些〈 系統(tǒng)ID,DSU ID,盤區(qū)編號〉盤區(qū)并且哪些盤區(qū)自由。在一個實施例中,存儲系統(tǒng)管理員可以 創(chuàng)建用于不同業(yè)務(wù)單元的分離存儲容器,從而不從相同存儲容器調(diào)配不同業(yè)務(wù)單元的 vvol??梢詰?yīng)用其它用于隔離vvol的策略。例如,存儲系統(tǒng)管理員可以采用將從不同存儲容 器調(diào)配云服務(wù)的不同客戶的vvol這樣的策略。vvol也可以根據(jù)它們的所需服務(wù)水平來分組 并且從存儲容器來調(diào)配。此外,存儲系統(tǒng)管理員可以創(chuàng)建、刪除和另外管理存儲容器、比如 定義可以創(chuàng)建的存儲容器數(shù)目并且設(shè)置可以每存儲容器設(shè)置的最大物理大小。
[0054]同樣在圖3的示例中,分布式存儲系統(tǒng)管理器135已經(jīng)調(diào)配(代表請求計算機系統(tǒng) 100)各來自不同存儲容器的多個vvol。一般而言,vvol可以具有固定物理大小或者可以被 瘦(thinly)調(diào)配,并且每個vvol具有vvol ID,該vvol ID是在創(chuàng)建vvol時向vvol給定的通 用唯一標識符。對于每個vvol,vvol數(shù)據(jù)庫314為每個vvol存儲其vvol ID、其中創(chuàng)建vvol的 存儲容器的容器ID和在該存儲容器內(nèi)的包括vvol的地址空間的〈偏移,長度〉值有序列表。 vvol數(shù)據(jù)庫314由卷管理器306管理和更新,該卷管理器在一個實施例中是分布式存儲系統(tǒng) 管理器135的部件。在一個實施例中,vvol數(shù)據(jù)庫314也存儲關(guān)于vvol的少量元數(shù)據(jù)。這一元 數(shù)據(jù)在vvol數(shù)據(jù)庫314中被存儲為關(guān)鍵字-值對的集合并且可以在vvol的存在期間的任何 時間經(jīng)由帶外路徑由計算機系統(tǒng)100更新和查詢。存儲的關(guān)鍵字-值對落入三個類別。第一 類別是:熟知的值一一某些值的定義(并且因此它們的值的解釋)公開地可用。一個示例是 與虛擬卷類型(例如,在虛擬機實施例中,vvol是否包含VM的元數(shù)據(jù)或者VM的數(shù)據(jù))對應(yīng)的 關(guān)鍵字。另一示例是App ID,該App ID是在vvol中存儲數(shù)據(jù)的應(yīng)用的ID。第二類別是:計算 機系統(tǒng)專屬關(guān)鍵字一一計算機系統(tǒng)或者其管理模塊存儲某些關(guān)鍵字和值為虛擬卷的元數(shù) 據(jù)。第三類別是:存儲系統(tǒng)銷售商專屬關(guān)鍵字一一這些允許存儲系統(tǒng)銷售商存儲與虛擬卷 的元數(shù)據(jù)相關(guān)聯(lián)的某些關(guān)鍵字。存儲系統(tǒng)銷售商將這一關(guān)鍵字-值存儲用于它的元數(shù)據(jù)的 一個原因是所有這些關(guān)鍵字經(jīng)由用于vvol的帶外信道容易可用于存儲系統(tǒng)銷售商插件和 其它擴展。用于關(guān)鍵字-值對的存儲操作是虛擬卷創(chuàng)建和其它過程的一部分,因此存儲操作 應(yīng)當合理地快。存儲系統(tǒng)也被配置用于基于與在具體關(guān)鍵字上提供的值的確切匹配來實現(xiàn) 虛擬卷的搜索。
[0055] 10管理器304是維護連接數(shù)據(jù)庫312的軟件模塊(在某些實施例中也為分布式存儲 系統(tǒng)管理器135的部件),該連接數(shù)據(jù)庫312存儲在PE與vvol之間的當前有效10連接路徑。在 圖3中所示示例中,示出七個當前有效10會話。每個有效會話具有相關(guān)聯(lián)的PE ID、次級標識 符(SLLID)、vvol ID和參考計數(shù)(RefCnt),該參考計數(shù)指示通過這一 10會話執(zhí)行10的不同 應(yīng)用的數(shù)目。分布式存儲系統(tǒng)管理器135(例如,在計算機系統(tǒng)100請求時)在PE與vvol之間 建立有效10會話的過程這里稱為"綁定"過程。對于每個綁定,分布式存儲系統(tǒng)管理器135 (例如,經(jīng)由10管理器304)向連接數(shù)據(jù)庫312添加條目。分布式存儲系統(tǒng)管理器135隨后拆除 10會話的過程這里稱為"解綁"過程。對于每個解綁,分布式存儲系統(tǒng)管理器135(例如,經(jīng)由 10管理器304)將10會話的參考計數(shù)遞減一。在10會話的參考計數(shù)為零時,分布式存儲系統(tǒng) 管理器135(例如,經(jīng)由10管理器304)可以從連接數(shù)據(jù)庫312刪除用于該10連接路徑的條目。 如先前討論的那樣,在一個實施例中,計算機系統(tǒng)100生成并且經(jīng)由帶外路徑向分布式存儲 系統(tǒng)管理器135發(fā)送綁定和解綁請求。備選地,計算機系統(tǒng)100可以通過使現(xiàn)有錯誤路徑超 負荷來生成并且經(jīng)由帶內(nèi)路徑發(fā)送解綁請求。在一個實施例中,在參考計數(shù)從0改變成1或 者相反時將生成數(shù)改變成單調(diào)增加的數(shù)或者隨機生成的數(shù)。在另一實施例中,生成數(shù)是隨 機生成的數(shù),并且從連接數(shù)據(jù)庫312消除RefCnt列,并且對于每個綁定,即使在綁定請求是 對已經(jīng)綁定的vvol時,分布式存儲系統(tǒng)管理器135仍然(例如,經(jīng)由10管理器304)向連接數(shù) 據(jù)庫312添加條目。
[0056]在圖2A的存儲系統(tǒng)群集中,10管理器304使用連接數(shù)據(jù)庫312來處理通過PE接收的 來自計算機系統(tǒng)1〇〇的10請求(1〇)。當在PE之一接收10時,10管理器304解析10以標識在10 中包含的PE ID和SLLID以便確定10被期望用于的vvo 1。通過訪問連接數(shù)據(jù)庫314,10管理器 304繼而能夠獲取與解析的PE ID和SLLID相關(guān)聯(lián)的vvol ID。在圖3和后續(xù)附圖中,為了簡化 而示出PE ID為PE_A、PE_B等。在一個實施例中,實際PE ID是PE的WWN。此外,SLLID被示為 S000US0002等。實際SLLID由分布式存儲系統(tǒng)管理器135生成為在與連接數(shù)據(jù)庫312中的給 定的PE ID相關(guān)聯(lián)的SLLID之中的任何唯一數(shù)。在具有vvol ID的虛擬卷的邏輯地址空間與 DSU 141的物理位置之間的映射由卷管理器306使用vvol數(shù)據(jù)庫314并且由容器管理器308 使用容器數(shù)據(jù)庫316來執(zhí)行。一旦已經(jīng)獲得DSU 141的物理位置,數(shù)據(jù)訪問層310(在一個實 施例中,也為分布式存儲系統(tǒng)管理器135的部件)在這些物理位置上執(zhí)行10。
[0057]在圖2B的存儲系統(tǒng)群集中,10通過PE接收,并且每個這樣的10包括10已經(jīng)被發(fā)到 的NFS句柄(或者相似文件系統(tǒng)句柄)。在一個實施例中,用于這樣的系統(tǒng)的連接數(shù)據(jù)庫312 包含存儲系統(tǒng)的NFS接口的IP地址為PE ID并且文件系統(tǒng)路徑為SLLID?;趘vol在文件系 統(tǒng)145中的位置生成SLLID。在vvol的邏輯地址空間與DSU 141的物理位置之間的映射由卷 管理器306使用vvol數(shù)據(jù)庫314并且由容器管理器308使用容器數(shù)據(jù)庫316來執(zhí)行。一旦已經(jīng) 獲得DSU 141的物理位置,數(shù)據(jù)訪問層在這些物理位置上執(zhí)行10。應(yīng)當認識,對于圖2B的存 儲系統(tǒng),容器數(shù)據(jù)庫312可以在用于給定的vvol的容器位置條目中包含文件:〈偏移.長度〉 條目有序列表(即,vvol可以包括在文件系統(tǒng)145中存儲的多個文件段)。
[0058]在一個實施例中,在易失性存儲器中維護連接數(shù)據(jù)庫312,而在持久存儲裝置、比 如DSU 141中維護vvol數(shù)據(jù)庫314和容器數(shù)據(jù)庫316。在其它實施例中,可以在持久存儲裝置 中維護所有數(shù)據(jù)庫312、314、316。
[0059]圖4是用于創(chuàng)建存儲容器的方法步驟410的流程圖。在一個實施例中,這些步驟在 存儲管理員的控制之下由存儲系統(tǒng)管理器131、存儲系統(tǒng)管理器132或者分布式存儲系統(tǒng)管 理器135執(zhí)行。如以上指出的那樣,存儲容器代表物理DSU的邏輯聚合并且可以跨越來自多 于一個存儲系統(tǒng)的物理DSU。在步驟411,存儲管理員(經(jīng)由分布式存儲系統(tǒng)管理器135等)設(shè) 置存儲容器的物理容量。在云或者數(shù)據(jù)中心內(nèi),這一物理容量可以例如代表客戶租賃的物 理存儲容量。這里公開的存儲容器提供的靈活性是不同客戶的存儲容器可以由存儲管理員 從相同存儲系統(tǒng)調(diào)配,并且用于單個客戶的存儲容器可以例如在任何一個存儲設(shè)備的物理 容量不足以滿足客戶請求的大小的情況下或者在比如vvol的物理存儲覆蓋區(qū)將自然地跨 越多個存儲系統(tǒng)這樣的復制的情況下從多個存儲系統(tǒng)調(diào)配。在步驟412,存儲管理員設(shè)置用 于訪問存儲容器的權(quán)限級別。例如,在多租戶數(shù)據(jù)中心中,客戶僅可以訪問已經(jīng)向他或者她 租賃的存儲容器。在步驟413,分布式存儲系統(tǒng)管理器135生成用于存儲容器的唯一標識符。 然后,在步驟414,分布式存儲系統(tǒng)管理器135(例如,在一個實施例中經(jīng)由容器管理器308) 以充分數(shù)量向存儲容器分配DSU 141的自由紡錘體盤區(qū)以滿足在步驟411設(shè)置的物理容量。 如以上指出的那樣,在任何一個存儲系統(tǒng)的自由空間不足以滿足物理容量的情況下,分布 式存儲系統(tǒng)管理器135可以從多個存儲系統(tǒng)分配DSU 141的紡錘體區(qū)段。在已經(jīng)分配分區(qū)之 后,分布式存儲系統(tǒng)管理器135(例如,經(jīng)由容器管理器308)用唯一容器ID、〈系統(tǒng)編號、DSU ID、盤區(qū)編號〉有序列表和被允許訪問存儲容器的計算機系統(tǒng)的上下文ID更新容器數(shù)據(jù)庫 316〇
[0060] 根據(jù)這里描述的實施例,存儲容量簡檔、例如SLA或者服務(wù)質(zhì)量(QoS)可以在每 vvol基礎(chǔ)上由分布式存儲系統(tǒng)管理器135(例如,代表請求計算機系統(tǒng)100)配置。因此,有可 能讓具有不同存儲能力簡檔的 vv〇l是相同存儲容器的一部分。在一個實施例中,系統(tǒng)管理 員定義默認存儲能力簡檔(或者多個可能存儲能力簡檔),所述存儲能力簡檔在創(chuàng)建存儲容 器時用于新創(chuàng)建的vvol并且存儲于容器數(shù)據(jù)庫316的元數(shù)據(jù)分節(jié)中。如果未對于在存儲容 器以內(nèi)創(chuàng)建的新vvol顯式地指定存儲能力簡檔,則新vvol將繼承與存儲容器相關(guān)聯(lián)的默認 存儲能力簡檔。
[0061] 圖5A是在圖2A的存儲系統(tǒng)群集上主控的被配置用來實施虛擬卷的計算機系統(tǒng)的 一個實施例的框圖。可以在包括一個或者多個中央處理單元(CPU)501、存儲器502、一個或 者多個網(wǎng)絡(luò)接口卡(NIC)503和一個或者多個主機總線適配器(HBA)504的通常為服務(wù)器類 的常規(guī)硬件平臺500上構(gòu)造計算機系統(tǒng)101。冊六504使計算機系統(tǒng)101能夠通過在存儲設(shè)備 130中配置的PE向虛擬卷發(fā)出10。如圖5A中進一步所示,在硬件平臺500上面安裝操作系統(tǒng) 508,并且在操作系統(tǒng)508上面執(zhí)行多個應(yīng)用5121-512N。操作系統(tǒng)508的示例包括熟知的商 用操作系統(tǒng)、比如Microsoft Windows、Linux等中的任何操作系統(tǒng)。
[0062] 根據(jù)這里描述的實施例,每個應(yīng)用512具有與之相關(guān)聯(lián)的一個或者多個vvol并且 向操作系統(tǒng)508按照應(yīng)用512向操作系統(tǒng)508中的"創(chuàng)建設(shè)備"調(diào)用創(chuàng)建的vvol的塊設(shè)備實例 發(fā)出10。在塊設(shè)備數(shù)據(jù)庫53 3中維護在塊設(shè)備名稱與vvo 1 ID之間的關(guān)聯(lián)。來自應(yīng)用5121 -512N的10由文件系統(tǒng)驅(qū)動器510接收,并將其轉(zhuǎn)換成塊10并且向虛擬卷設(shè)備驅(qū)動器532提供 塊10。在另一方面,來自應(yīng)用5121的10被示出用于繞過文件系統(tǒng)驅(qū)動器510并且被直接提供 給虛擬卷設(shè)備驅(qū)動器532,這表示應(yīng)用5121以在通過這里引用將全部內(nèi)容結(jié)合、標題為 "Providing Access to a Raw Data Storage Unit in a Computer System" 的美國專利 7,155,558中描述的方式直接訪問其塊設(shè)備作為原始存儲設(shè)備、例如作為數(shù)據(jù)庫盤、日志 盤、備份存檔和內(nèi)容貯存庫。在虛擬卷設(shè)備驅(qū)動器532接收塊10時,它訪問塊設(shè)備數(shù)據(jù)庫533 以引用在10中指定的塊設(shè)備名稱與PE ID(PE LUN的WWN)和SLLID之間的映射,該PE ID和 SLLID定義通向與塊設(shè)備名稱相關(guān)聯(lián)的vvol的10連接路徑。在這里所示示例中,塊設(shè)備名稱 archive對應(yīng)于為應(yīng)用5121創(chuàng)建的塊設(shè)備實例vvol 12,并且塊設(shè)備名稱f 〇〇、dbase和log分 別對應(yīng)于為應(yīng)用5122-512N中的一個或者多個應(yīng)用創(chuàng)建的塊設(shè)備實例vvol 1、vvol 16和 VV〇117。在塊設(shè)備數(shù)據(jù)庫533中存儲的其它信息包括用于每個塊設(shè)備的活躍位值,該活躍位 值指示塊設(shè)備是否活躍,并且包括CIF(在飛行中的命令)值?;钴S位"Γ表示可以向塊設(shè)備 發(fā)出10?;钴S位"0"表示塊設(shè)備不活躍并且不能向塊設(shè)備發(fā)出I0XIF值提供多少10在飛行 中、即,被發(fā)出、但是尚未完成的指示。在這里所示示例中,塊設(shè)備f〇〇活躍并且具有一些在 飛行中的命令。塊設(shè)備archive不活躍并且不會接受較新的命令。然而,它等待2個在飛行中 的命令完成。塊設(shè)備dbase不活躍而無未完成的命令。最后,塊設(shè)備log活躍,但是應(yīng)用當前 沒有向設(shè)備的未決10。虛擬卷設(shè)備驅(qū)動器532可以選擇在任何時間從它的數(shù)據(jù)庫533去除這 樣的設(shè)備。
[0063]除了執(zhí)行以上描述的映射之外,虛擬卷設(shè)備驅(qū)動器532還向數(shù)據(jù)訪問層540發(fā)出原 始塊級10。數(shù)據(jù)訪問層540包括設(shè)備訪問層534和用于HBA 504的設(shè)備驅(qū)動器536,該設(shè)備訪 問層534將命令排隊和調(diào)度策略應(yīng)用于原始塊級10,并且該設(shè)備驅(qū)動器536在符合協(xié)議的格 式中格式化原始塊級10并且向HBA 504發(fā)送它們用于經(jīng)由帶內(nèi)路徑向PE轉(zhuǎn)發(fā)。在其中使用 SCSI協(xié)議的實施例中,在如在SAM-5(SCSI架構(gòu)模型-5)中指定的SCSI LUN數(shù)據(jù)字段中編碼 vvol信息,該數(shù)據(jù)字段是8字節(jié)結(jié)構(gòu)。在前2個字節(jié)中編碼常規(guī)地用于LUN ID的PE ID,并且 利用剩余6個字節(jié)(的一部分)在SCSI第二級LUN ID中編碼vvol信息、具體為SLLID。
[0064]如圖5A中進一步所示,數(shù)據(jù)訪問層540也包括用于處置通過帶內(nèi)路徑從存儲系統(tǒng) 接收的10錯誤的錯誤處置單元542。在一個實施例中,I/O管理器304通過PE傳播錯誤處置單 元542接收的10錯誤。10錯誤類的示例包括在計算機系統(tǒng)101與PE之間的路徑錯誤、PE錯誤 和vvol錯誤。錯誤處置單元542將所有檢測到的錯誤分類為前述類。在遇到通向PE的路徑錯 誤并且通向PE的另一路徑存在時,數(shù)據(jù)訪問層540沿著通向PE的不同路徑發(fā)送10。在10錯誤 是PE錯誤時,錯誤處置單元542更新塊設(shè)備數(shù)據(jù)庫533以指示用于通過PE發(fā)出10的每個塊設(shè) 備的錯誤狀況。在10錯誤是vvol錯誤時,錯誤處置單元542更新塊設(shè)備數(shù)據(jù)庫533以指示用 于與vvol關(guān)聯(lián)的每個塊設(shè)備的錯誤狀況。錯誤處置單元542也可以發(fā)出報警或者系統(tǒng)事件, 從而將拒絕向具有錯誤狀況的塊設(shè)備的進一步10。
[0065]圖5B是圖5A的計算機系統(tǒng)的框圖,該計算機系統(tǒng)已經(jīng)被配置用于與圖2B的存儲系 統(tǒng)群集而不是圖2A的存儲系統(tǒng)群集對接。在這一實施例中,數(shù)據(jù)訪問層540包括NFS客戶端 545和用于NIC 503的設(shè)備驅(qū)動器546 JFS客戶端545將塊設(shè)備名稱映射到PE ID(NAS存儲系 統(tǒng)的IP地址)和SLLID,該SLLID是與塊設(shè)備對應(yīng)的NFS文件句柄。如圖5B中所示在塊設(shè)備數(shù) 據(jù)庫533中存儲這一映射。應(yīng)當注意,活躍和CIF列仍然存在、但是在圖5B中所示塊設(shè)備數(shù)據(jù) 庫533中未被圖示。如以下將描述的那樣,NFS文件句柄在NAS存儲系統(tǒng)內(nèi)唯一標識文件對象 并且可以在綁定過程期間被生成。備選地,響應(yīng)于對于綁定vvol的請求,NAS存儲系統(tǒng)返回 PE ID和SLLID,并且使用普通帶內(nèi)機制(例如,查找或者readdirplus)的vvol的開放將給定 NFS文件句柄。NFS客戶端545也將從虛擬卷設(shè)備驅(qū)動器532接收的原始塊級10轉(zhuǎn)譯成基于 NFS文件的10。用于NIC 503的設(shè)備驅(qū)動器546然后以符合協(xié)議的格式格式化基于NFS文件的 10并且將它們與NFS句柄一起發(fā)送到NIC 503用于經(jīng)由帶內(nèi)路徑向PE之一轉(zhuǎn)發(fā)。
[0066]圖5C是被配置用于實施虛擬卷的計算機系統(tǒng)的另一實施例的框圖。在這一實施例 中,向計算機系統(tǒng)102配置這里表示為管理程序560的虛擬化軟件。在硬件平臺550上面安裝 管理程序560,該硬件平臺包括CPU 551、存儲器552、NIC 553和HBA 554并且支持虛擬機執(zhí) 行空間570,可以在該虛擬機執(zhí)行空間570內(nèi)并行實例化和執(zhí)行多個虛擬機(VM)5711-571N。 在一個或者多個實施例中,使用加利福尼亞州帕羅奧圖市的VMware公司分發(fā)的VMware vSphere?產(chǎn)品來實施管理程序560和虛擬機571。每個虛擬機571實施虛擬硬件平臺573, 該虛擬硬件平臺573支持安裝能夠執(zhí)行應(yīng)用579的客戶操作系統(tǒng)(0S)572??蛻?S 572的示 例包括熟知的商用操作系統(tǒng)、比如Microsoft Windows、Linux等中的任何操作系統(tǒng)。在每個 實例中,客戶OS 572包括本機文件系統(tǒng)層(在圖5C中未示出)、例如NTFS或者ext3FS類型的 文件系統(tǒng)層。這些文件系統(tǒng)層與虛擬硬件平臺573對接以從客戶0S 572的觀點來看訪問數(shù) 據(jù)存儲裝置HBA,該數(shù)據(jù)存儲裝置HBA在現(xiàn)實中是虛擬硬件平臺573實施的虛擬HBA 574,該 虛擬HBA提供盤存儲支持的表現(xiàn)(在現(xiàn)實中為虛擬盤或者虛擬盤575A-575X)以實現(xiàn)執(zhí)行客 戶0S 572。在某些實施例中,虛擬盤575A-575X可以表現(xiàn)為從客戶0S 572的觀點來看支持用 于連接到虛擬機的SCSI標準或者本領(lǐng)域普通技術(shù)人員已知的包括IDE、ATA和ATAPI的任何 其它適當硬件連接接口標準。雖然,從客戶0S 572的觀點來看,這樣的客戶0S 572發(fā)起的用 于實施與文件系統(tǒng)有關(guān)的數(shù)據(jù)傳送和控制操作的文件系統(tǒng)調(diào)用表現(xiàn)為向虛擬盤575A-575X 尋路由用于最終執(zhí)行,但是在現(xiàn)實中,通過虛擬HBA 574處理和傳遞這樣的調(diào)用至附屬的虛 擬機監(jiān)視器(VMM)5611-561N,這些虛擬機監(jiān)視器(VMM)實施為了與管理程序560協(xié)調(diào)操作而 需要的虛擬系統(tǒng)支持。具體而言,HBA仿真器562在功能上使數(shù)據(jù)傳送和控制操作能夠由管 理程序560正確處置,該管理程序560通過其各種層向連接到存儲系統(tǒng)130的HBA 554最終傳 遞這樣的操作。
[0067]根據(jù)這里描述的實施例,每個VM 571具有與之關(guān)聯(lián)的一個或者多個vvol并且向管 理程序560按照VM 571向管理程序560中的"創(chuàng)建設(shè)備"調(diào)用來創(chuàng)建的vvol的塊設(shè)備實例發(fā) 出10。在塊設(shè)備數(shù)據(jù)庫580中維護在塊設(shè)備名稱與vvol ID之間的關(guān)聯(lián)。來自VM 5712-571N 的10由SCSI虛擬化層563接收,該SCSI虛擬化層563將它們轉(zhuǎn)換成虛擬機文件系統(tǒng)(VMFS)驅(qū) 動器564理解的文件10 JMFS驅(qū)動器564然后將文件10轉(zhuǎn)換成塊10,并且向虛擬卷設(shè)備驅(qū)動 器565提供塊10。在另一方面,來自VM 5711的10被示出用于繞過VMFS驅(qū)動器564并且被直接 提供給虛擬卷設(shè)備驅(qū)動器565,這表示VM 5711以在美國專利7,155,558中描述的方式直接 訪問其塊設(shè)備作為原始存儲設(shè)備、例如作為數(shù)據(jù)庫盤、日志盤、備份存檔和內(nèi)容貯存庫。 [0068]在虛擬卷設(shè)備驅(qū)動器565接收塊10時,它訪問塊設(shè)備數(shù)據(jù)庫580以引用在10中指定 的塊設(shè)備名稱與PE ID和SLLID之間的映射,該PE ID和SLLID定義通向與塊設(shè)備名稱關(guān)聯(lián)的 vvol的10會話。在這里所示示例中,塊設(shè)備名稱dbase和log分別對應(yīng)于為VM 5711創(chuàng)建的塊 設(shè)備實例vvoll和vv〇14,并且塊設(shè)備名稱vmdk2、vmdkn和snapn分別對應(yīng)于為VM 5712-571N 中的一個或者多個VM創(chuàng)建的塊設(shè)備實例VV〇112、VV〇116和vvoll7。在塊設(shè)備數(shù)據(jù)庫580中存 儲的其它信息包括用于每個塊設(shè)備的活躍位值,該活躍位值指示塊設(shè)備是否活躍,并且包 括CIF(在飛行中的命令)值。活躍位"Γ表示可以向塊設(shè)備發(fā)出10?;钴S位"0"表示塊設(shè)備不 活躍并且不能向塊設(shè)備發(fā)出I0XIF值提供多少10在飛行中、即,被發(fā)出、但是尚未完成的指 示。在這里所示示例中,塊設(shè)備f 〇〇活躍并且具有一些在飛行中的命令。
[0069]除了執(zhí)行以上描述的映射之外,虛擬卷設(shè)備驅(qū)動器565還向數(shù)據(jù)訪問層566發(fā)出原 始塊級10。數(shù)據(jù)訪問層566包括設(shè)備訪問層567和用于HBA 554的設(shè)備驅(qū)動器568,該設(shè)備訪 問層將命令排隊和調(diào)度策略應(yīng)用于原始塊級10,并且該設(shè)備驅(qū)動器在符合協(xié)議的格式中格 式化原始塊級10并且向HBA 554發(fā)送它們用于經(jīng)由帶內(nèi)路徑向PE轉(zhuǎn)發(fā)。在其中使用SCSI協(xié) 議的實施例中,在如在SAM-5(SCSI架構(gòu)模型-5)中指定的SCSI LUN數(shù)據(jù)字段中編碼vvol信 息,該數(shù)據(jù)字段是8字節(jié)結(jié)構(gòu)。在前2個字節(jié)中編碼常規(guī)地用于LUN ID的PE ID,并且利用剩 余6個字節(jié)(的一部分)在SCSI第二級LUN ID中編碼vvol信息、具體為SLLID。如圖5C中進一 步所示,數(shù)據(jù)訪問層566也包括以與錯誤處置單元542相同的方式工作的錯誤處置單元569。 [0070]圖5D是圖5C的計算機系統(tǒng)的框圖,該計算機系統(tǒng)已經(jīng)被配置用于與圖2B的存儲系 統(tǒng)群集而不是圖2A的存儲系統(tǒng)群集對接。在這一實施例中,數(shù)據(jù)訪問層566包括NFS客戶端 585和用于NIC 553的設(shè)備驅(qū)動器586AFS客戶端585將塊設(shè)備名稱映射到PE ID(IP地址)和 與塊設(shè)備對應(yīng)的SLLID(NFS文件句柄)。如圖?中所示在塊設(shè)備數(shù)據(jù)庫580中存儲這一映射。 應(yīng)當注意,活躍和CIF列仍然存在、但是在圖f5D中所示塊設(shè)備數(shù)據(jù)庫580中未被圖示。如以下 將描述的那樣,NFS文件句柄在NAS內(nèi)唯一標識文件對象并且在一個實施例中在綁定過程期 間被生成。NFS客戶端585也將從虛擬卷設(shè)備驅(qū)動器565接收的原始塊級10轉(zhuǎn)譯成基于NFS文 件的10。用于NIC 553的設(shè)備驅(qū)動器586然后在符合協(xié)議的格式中格式化基于NFS文件的10 并且將它們與NFS句柄一起發(fā)送到NIC 553用于經(jīng)由帶內(nèi)路徑向PE之一轉(zhuǎn)發(fā)。
[0071] 應(yīng)當認識,可以不同地引用用來描述圖5A至圖5D中的部件的各種術(shù)語、層和分類 而未脫離它們的功能或者本發(fā)明的精神實質(zhì)和范圍。例如VMM 561可以視為在VM 571與管 理程序560之間的分離虛擬化部件(在這樣的概念中可以本身視為虛擬化"內(nèi)核"部件),因 為存在有用于每個實例化的VM的分離VMM。備選地,每個VMM 561可以視為它的對應(yīng)虛擬機 的部件,因為這樣的VMM包括用于虛擬機的硬件仿真部件。在這樣的備選概念中,例如描述 為虛擬硬件平臺573的概念層可以與VMM 561合并和合并到VMM 561中,從而從圖5C和圖5D 去除虛擬主機總線適配器574(即,因為它的功能由主機總線適配器仿真器562實現(xiàn))。
[0072] 圖6是圖示根據(jù)本發(fā)明的一個實施例的用來管理vvol的部件和通信路徑的計算機 環(huán)境的簡化框圖。如先前描述的那樣,用于10協(xié)議流量的通信路徑稱為帶內(nèi)路徑并且在圖6 中表示為虛線601,該虛線連接計算機系統(tǒng)的數(shù)據(jù)訪問層540(通過在計算機系統(tǒng)中提供的 HBA或者NIC)與在存儲系統(tǒng)130中配置的一個或者多個PE。用來管理vvol的通信路徑是帶外 路徑(如先前定義的那樣,不是"在帶內(nèi)"的路徑)并且在圖6中表示為實線602。根據(jù)這里描 述的實施例,可以通過在管理服務(wù)器610中提供的插件612和/或在計算機系統(tǒng)103中的每個 計算機系統(tǒng)中提供的插件622管理vvol,在圖6中僅示出這些插件之一。在存儲設(shè)備側(cè)上,管 理接口 625由存儲系統(tǒng)管理器131配置,并且管理接口 626由存儲系統(tǒng)管理器132配置。此外, 管理接口 624由分布式存儲系統(tǒng)管理器135配置。每個管理接口與插件612、622通信。為了有 助于發(fā)出和處置管理命令,已經(jīng)開發(fā)特殊應(yīng)用編程接口(API)。應(yīng)當認識,在一個實施例中, 定制兩個插件612、622以與來自特定存儲系統(tǒng)銷售商的存儲硬件通信。因此,管理服務(wù)器 610和計算機系統(tǒng)103將在與用于不同存儲系統(tǒng)銷售商的存儲硬件通信時運用不同插件。在 另一實施例中,可以有與任何銷售商的管理接口交互的單個插件。這將需要將存儲系統(tǒng)管 理器編程為熟知接口(例如,借助由計算機系統(tǒng)和/或管理服務(wù)器發(fā)布)。
[0073]還向管理服務(wù)器610配置用于關(guān)聯(lián)計算機系統(tǒng)的系統(tǒng)管理器611。在一個實施例 中,計算機系統(tǒng)執(zhí)行虛擬機,并且系統(tǒng)管理器611管理在計算機系統(tǒng)中運行的虛擬機。管理 虛擬機的系統(tǒng)管理器611的一個示例是VMware公司分發(fā)的vSphere?產(chǎn)品。如圖所示,系 統(tǒng)管理器611與在計算機系統(tǒng)103中運行的主機后臺程序(daemon) (hostd)621通信(通過在 管理服務(wù)器610和計算機系統(tǒng)103二者的適當軟件界面)以從計算機系統(tǒng)103接收資源使用 報告并且對在計算機系統(tǒng)103中運行的應(yīng)用發(fā)起各種管理操作。
[0074]圖7是用于使用認證相關(guān)API向圖2A或者圖2B的存儲系統(tǒng)群集認證計算機系統(tǒng)的 方法步驟的流程圖。在計算機系統(tǒng)通過向存儲系統(tǒng)發(fā)送它的安全套接字層(SSL)證書來請 求認證時發(fā)起這些方法步驟。在步驟710,存儲系統(tǒng)向請求認證的計算機系統(tǒng)發(fā)出用于認證 證書的提示(例如,用戶名和口令)。在步驟712接收認證證書時,存儲系統(tǒng)在步驟714比較它 們與存儲的證書。如果提供正確證書,則存儲系統(tǒng)在關(guān)鍵字存儲庫(步驟716)中存儲認證的 計算機系統(tǒng)的SSL證書。如果提供不正確證書,則存儲系統(tǒng)忽略SSL證書并且返回適當錯誤 消息(步驟718)。在被認證之后,計算機系統(tǒng)可以調(diào)動API以通過SSL鏈路向存儲系統(tǒng)發(fā)出管 理命令,并且在SSL證書中包括的唯一上下文ID由存儲系統(tǒng)用來實行某些策略、比如定義哪 些計算機系統(tǒng)可以訪問哪些存儲容器。在一些實施例中,在管理計算機系統(tǒng)批準的權(quán)限時 使用它們的上下文ID。例如,主機計算機可以被允許創(chuàng)建vvol、但是不可以被允許刪除vvol 或者vvol的快照,或者主機計算機可以被允許創(chuàng)建vvol的快照、但是不可以被允許克隆 vvol。此外,權(quán)限可以根據(jù)登錄到認證的計算機系統(tǒng)的用戶的用戶級特權(quán)變化。
[0075]圖8是用于使用創(chuàng)建虛擬卷API命令來創(chuàng)建虛擬卷的方法步驟的流程圖。在一個實 施例中,計算機系統(tǒng)103在計算機系統(tǒng)103在步驟802從它的應(yīng)用之一接收對于創(chuàng)建具有某 個大小和存儲能力簡檔、比如最小I0PS和平均延時的vvol的請求時經(jīng)由帶外路徑602向存 儲系統(tǒng)發(fā)出創(chuàng)建虛擬卷API命令。作為響應(yīng),計算機系統(tǒng)103在步驟804(在計算機系統(tǒng)103和 請求應(yīng)用被允許訪問的并且具有充分自由容量以適應(yīng)請求的存儲容器之中)選擇存儲容器 并且經(jīng)由插件622向存儲系統(tǒng)發(fā)出創(chuàng)建虛擬卷API命令。API命令包括vvol的存儲容器ID、 vvo 1大小和存儲能力簡檔。在另一實施例中,API命令包括應(yīng)用要求存儲系統(tǒng)與新創(chuàng)建的 vvol存儲的關(guān)鍵字-值對集合。在另一實施例中,管理服務(wù)器610經(jīng)由帶外路徑602向存儲系 統(tǒng)發(fā)出創(chuàng)建虛擬卷API命令(經(jīng)由插件612)。
[0076]在步驟806,存儲系統(tǒng)管理器經(jīng)由管理接口(管理接口624、625或者626)接收對于 生成vvol的請求并且訪問選擇的存儲容器的在容器數(shù)據(jù)庫316中的元數(shù)據(jù)分節(jié)以驗證包括 計算機系統(tǒng)103和應(yīng)用的請求上下文具有充分權(quán)限以在選擇的存儲容器中創(chuàng)建vvol。在一 個實施例中,如果權(quán)限級別不充分,則向計算機系統(tǒng)103返回錯誤消息。如果權(quán)限級別充分, 則在步驟810生成唯一vvol ID。然后在步驟812,存儲系統(tǒng)管理器掃描容器數(shù)據(jù)庫316的元 數(shù)據(jù)分節(jié)中的分配位圖以確定選擇的存儲容器的自由分區(qū)。存儲系統(tǒng)管理器分配選擇的存 儲容器的足以適應(yīng)請求的vvol大小的自由分區(qū)并且更新存儲容器的在容器數(shù)據(jù)庫316的元 數(shù)據(jù)分節(jié)中的分配位圖。存儲系統(tǒng)管理器也用新vvol條目更新vvol數(shù)據(jù)庫314。新vvol條目 包括在步驟810生成的vvol條目、新分配的存儲容器盤區(qū)有序列表和新vvol的表達為關(guān)鍵 字-值對的元數(shù)據(jù)。然后,在步驟814,存儲系統(tǒng)管理器向計算機系統(tǒng)103發(fā)送vvol ID。在步 驟816計算機系統(tǒng)103關(guān)聯(lián)vvol ID與請求創(chuàng)建vvol的應(yīng)用。在一個實施例中,為每個應(yīng)用維 護一個或者多個vvol描述符文件,并且向為請求創(chuàng)建vvol的應(yīng)用維護的vvol描述符文件中 寫入vvol ID〇
[0077] 如圖2A和圖2B中所示,并非所有vvol連接到PE。未連接到PE的vvol未知對應(yīng)應(yīng)用 發(fā)出的10,因為未向vvol建立10會話。在可以向發(fā)出10之前,vvol經(jīng)歷綁定過程,作為該綁 定過程的結(jié)果,vvol將被綁定到特定PE。一旦vvol綁定到PE,可以向vvol發(fā)出10直至從PE解 綁vvol〇
[0078] 在一個實施例中,計算機系統(tǒng)130使用綁定虛擬卷API經(jīng)由帶外路徑602向存儲系 統(tǒng)發(fā)出綁定請求。綁定請求標識待綁定的vvol(使用vvol ID),并且作為響應(yīng),存儲系統(tǒng)將 vvo 1綁定到計算機系統(tǒng)103經(jīng)由帶內(nèi)路徑連接到的PE。圖9A是用于計算機系統(tǒng)經(jīng)由帶內(nèi)路 徑發(fā)現(xiàn)它連接到的PE的方法步驟的流程圖。使用標準SCSI命令REP0RT_LUNS經(jīng)由帶內(nèi)路徑 發(fā)現(xiàn)在基于SCSI協(xié)議的存儲設(shè)備中配置的PE。使用API經(jīng)由帶外路徑發(fā)現(xiàn)在基于NFS協(xié)議的 存儲設(shè)備中配置的PE。計算機系統(tǒng)為每個連接的存儲系統(tǒng)執(zhí)行圖9A的方法步驟。
[0079]在步驟910,計算機系統(tǒng)確定連接的存儲系統(tǒng)是否基于SCSI協(xié)議或者基于NFS協(xié) 議。如果存儲系統(tǒng)基于SCSI協(xié)議,則計算機系統(tǒng)向存儲系統(tǒng)帶內(nèi)發(fā)出SCSI命令REP0RT_LUNS (步驟912)。然后在步驟913,計算機系統(tǒng)檢查來自存儲系統(tǒng)的響應(yīng)、具體為與返回的PE ID 中的每個PE ID關(guān)聯(lián)的PE位以在與PE有關(guān)的LUN與常規(guī)數(shù)據(jù)LUN之間區(qū)分。如果存儲系統(tǒng)基 于NFS協(xié)議,則計算機系統(tǒng)從插件622向管理接口(例如,管理接口 624、625或者626)帶外發(fā) 出API調(diào)用以獲得可用PE的ID(步驟914)。在跟隨步驟913和914的步驟916,計算機系統(tǒng)存儲 由存儲系統(tǒng)返回的與PE有關(guān)的LUN的PE ID或者管理接口返回的PE ID用于在綁定過程期間 使用。應(yīng)當認識,基于SCSI協(xié)議的存儲設(shè)備返回的PE ID各自包括WWN,并且基于NFS協(xié)議的 存儲設(shè)備返回的PE ID各自包括IP地址和裝配點。
[0080] 圖9B是用于存儲系統(tǒng)管理器131或者存儲系統(tǒng)管理器132或者分布式存儲系統(tǒng)管 理器135(下文稱為"存儲系統(tǒng)管理器")發(fā)現(xiàn)給定的計算機系統(tǒng)103經(jīng)由帶內(nèi)路徑連接到的 PE的方法步驟的流程圖。存儲系統(tǒng)管理器發(fā)現(xiàn)這樣的PE使存儲系統(tǒng)能夠響應(yīng)于來自請求計 算機系統(tǒng)的綁定請求向計算機系統(tǒng)返回計算機系統(tǒng)可以被實際連接到其上的有效PE ID。 在步驟950,存儲系統(tǒng)管理器經(jīng)由管理接口和插件622向計算機系統(tǒng)103發(fā)出帶外 "Discovery_Topology (發(fā)現(xiàn)_拓撲)"API調(diào)用。計算機系統(tǒng)103返回它的系統(tǒng)ID和它經(jīng)由圖 9A的流程圖發(fā)現(xiàn)的所有PE ID的列表。在一個實施例中,存儲系統(tǒng)管理器通過經(jīng)由管理接口 和插件612向管理服務(wù)器610發(fā)出"Discovery_Topology"API調(diào)用來執(zhí)行步驟950。在這樣的 實施例中,存儲系統(tǒng)將接收響應(yīng),該響應(yīng)包含多個計算機系統(tǒng)ID和關(guān)聯(lián)PE ID,一個計算機 系統(tǒng)ID和關(guān)聯(lián)PE ID用于關(guān)聯(lián)服務(wù)器610管理的每個相應(yīng)計算機系統(tǒng)103。然后,在步驟952, 存儲系統(tǒng)管理器處理來自步驟950的結(jié)果。例如存儲系統(tǒng)管理器清除未在它的當前控制之 下的所有PE ID的列表。例如,存儲系統(tǒng)管理器135在發(fā)出DiSC〇Very_T〇p〇l 〇gy調(diào)用時接收 的某些PE ID可以對應(yīng)于連接到相同計算機系統(tǒng)的另一存儲系統(tǒng)。相似地,某些接收的PE ID可以對應(yīng)于自從被存儲系統(tǒng)管理員刪除起的更老的PE,等等。在步驟954,存儲系統(tǒng)管理 器高速緩存處理的結(jié)果用于在后續(xù)綁定過程期間使用。在一個實施例中,存儲系統(tǒng)管理器 周期性地運行圖9B的步驟以用進行中的計算機系統(tǒng)和網(wǎng)絡(luò)拓撲改變更新它的高速緩存的 結(jié)果。在另一實施例中,存儲系統(tǒng)管理器每當它接收新vvol創(chuàng)建請求時運行圖9B的步驟。在 更多另一實施例中,存儲系統(tǒng)管理器在運行圖7的認證步驟之后運行圖9B的步驟。
[0081] 圖10是用于使用綁定虛擬卷API來發(fā)出和執(zhí)行虛擬卷綁定請求的方法步驟的流程 圖。在一個實施例中,計算機系統(tǒng)103在它的應(yīng)用之一請求10訪問與尚未綁定到PE的vvol關(guān) 聯(lián)的塊設(shè)備時經(jīng)由帶外路徑602向存儲系統(tǒng)發(fā)出綁定請求。在另一實施例中,管理服務(wù)器 610結(jié)合某些VM管理操作發(fā)出綁定請求,這些VM管理操作包括VM通電和從一個存儲容器向 另一存儲容器的vvol迀移。
[0082]繼續(xù)以上描述的示例,在該示例中,應(yīng)用請求10訪問與尚未綁定到PE的vvol關(guān)聯(lián) 的塊設(shè)備,計算機系統(tǒng)103在步驟1002從塊設(shè)備數(shù)據(jù)庫533(或者580)確定vvol的vvol ID。 然后在步驟1004,計算機系統(tǒng)1003通過帶外路徑602向計算機系統(tǒng)發(fā)出對于綁定vvol的請 求。
[0083]存儲系統(tǒng)管理器接收在步驟1006經(jīng)由管理接口(例如,管理接口624、625或者626) 接收對于綁定vvol的請求、然后執(zhí)行步驟1008,該步驟包括選擇vvol將被綁定到的PE、生成 用于選擇的PE的SLLID和生成數(shù)并且更新連接數(shù)據(jù)庫312(例如,經(jīng)由10管理器304)。根據(jù)連 通進行選擇vvol將被綁定到的ΡΕ、即僅具有與計算機系統(tǒng)103的現(xiàn)有帶內(nèi)連接的ΡΕ可用于 選擇。在一個實施例中,存儲系統(tǒng)根據(jù)圖9B的方法從計算機系統(tǒng)103向它發(fā)送的處理和高速 緩存的PE列表選擇。SLLID生成在運用圖2A的存儲系統(tǒng)群集的實施例與運用圖2B的存儲系 統(tǒng)群集的實施例之間的不同。在前一情況下,生成對于選擇的PE唯一的SLLID。在后一情況 下,生成通向與vvol對應(yīng)的文件對象的文件路徑作為SLLID。在已經(jīng)對于選擇的TO生成 SLLID和生成數(shù)之后,更新連接數(shù)據(jù)庫312以包括與vvol的新生成的10會話。然后,在步驟 1010,向計算機系統(tǒng)103返回選擇的PE的ID、生成的SLLID和生成數(shù)。可選地,在運用圖2B的 存儲系統(tǒng)群集的實施例中,可以對于與vvol對應(yīng)的文件對象生成并且與選擇的PE的ID、生 成的SLLID和生成數(shù)一起向計算機系統(tǒng)103返回唯一 NFS文件句柄。在步驟1012,計算機系統(tǒng) 103更新塊設(shè)備數(shù)據(jù)庫533(或者580)以包括從存儲系統(tǒng)返回的PE ID、SLLID(以及可選地返 回的NFS句柄)和生成數(shù)。具體而言,可以向塊設(shè)備數(shù)據(jù)庫533(或者580)添加從存儲系統(tǒng)返 回的PE ID、SLLID(以及可選地返回的NFS句柄)和生成數(shù)的每個集合作為新條目。應(yīng)當認 識,生成數(shù)用來防范重放共計。因此,在其中未考慮重放共計的實施例中,未使用生成數(shù)。
[0084]在希望向相同vvol發(fā)出10的不同應(yīng)用發(fā)起的向相同vvol的后續(xù)綁定請求時,存儲 系統(tǒng)管理器可以將vvol綁定到相同或者不同PE。如果將vvol綁定到相同PE,則存儲系統(tǒng)管 理器返回相同PE的ID和先前生成的SLLID并且遞增在連接數(shù)據(jù)庫312中存儲的這一 10連接 路徑的參考計數(shù)。在另一方面,如果將vvol綁定到不同PE,則存儲系統(tǒng)管理器生成新SLLID 并且返回不同PE的ID和新生成的SLLID并且向連接數(shù)據(jù)庫312添加與vvol的這一新10連接 路徑作為新條目。
[0085] 可以使用解綁虛擬卷API來發(fā)出虛擬卷解綁請求。解綁請求包括如下10連接路徑 的PE ID和SLLID,先前已經(jīng)通過該10連接路徑綁定vvol。然而建議處理解綁請求。存儲系統(tǒng) 管理器自由立即或者在延遲之后從PE解綁vvol。通過更新連接數(shù)據(jù)庫312以遞減包含PE ID 和SLLID的條目的參考計數(shù)來處理解綁請求。如果將參考計數(shù)遞減至零,則可以刪除條目。 在這一情況下應(yīng)當注意,vvol繼續(xù)存在、但是不再可用于使用給定的PE ID和SLLID的10。 [0086]在實施VM的虛擬盤的vvol的情況下,用于這一vvol的參考計數(shù)將至少為一。在使 VM斷電并且與之結(jié)合發(fā)出解綁請求時,參考計數(shù)將被遞減一。如果參考計數(shù)為零,則可以從 連接數(shù)據(jù)庫312去除vvol條目。一般而言,從連接數(shù)據(jù)庫312去除條目是有益的,因為1/0管 理器304管理更少數(shù)據(jù)并且也可以回收SLLID。這樣的益處在存儲系統(tǒng)存儲的vvol總數(shù)大 (例如vvol數(shù)以百萬計級)、但是應(yīng)用活躍地訪問的vvol總數(shù)?。ɡ鏥M數(shù)以萬計)時變得顯 著。此外,在vvol未被綁定到任何PE時,存儲系統(tǒng)在選擇在DSU 141中何處存儲vvol時具有 更大靈活性。例如可以用不對稱、分級DSU 141實施存儲系統(tǒng),其中一些DSU 141提供更快數(shù) 據(jù)訪問并且其它DSU 141提供更慢數(shù)據(jù)訪問(例如以節(jié)省存儲成本)。在一個實現(xiàn)方式中,在 vvol未被綁定到任何PE(這可以通過檢查vvol的在連接數(shù)據(jù)庫312中的條目參考計數(shù)來確 定)時,存儲系統(tǒng)可以向更慢和/或更廉價類型的物理存儲裝置迀移vvol。然后,一旦將vvol 綁定到PE,存儲系統(tǒng)可以向更快類型的物理存儲裝置迀移vvol。應(yīng)當認識,可以通過改變 vvol數(shù)據(jù)庫314中的組成給定的vvol的容器位置有序列表的一個或者多個元素并且更新容 器數(shù)據(jù)庫316的元數(shù)據(jù)分節(jié)中的對應(yīng)盤區(qū)分配位圖來實現(xiàn)這樣的迀移。
[0087]向PE綁定和解綁vvol使存儲系統(tǒng)管理器能夠確定vvol活性。存儲系統(tǒng)管理器可以 利用這一信息以對非10服務(wù)(消極)和10服務(wù)(活躍)VV〇l執(zhí)行存儲系統(tǒng)銷售商專屬優(yōu)化。例 如存儲系統(tǒng)管理器可以被配置用于如果vvol在消極狀態(tài)中保持超出特定閾值時間則將它 從低延時(高成本)SSD重新定位到中延時(低成本)硬驅(qū)動。
[0088]圖11A和圖11B是根據(jù)一個實施例的用于向虛擬卷發(fā)出IP的方法步驟的流程圖。圖 11A是用于從應(yīng)用向原始塊設(shè)備直接發(fā)出IP的方法步驟1100的流程圖,并且圖11B是用于從 應(yīng)用通過文件系統(tǒng)驅(qū)動器發(fā)出IP的方法步驟1120的流程圖。
[0089] 方法1100在步驟1102開始,其中應(yīng)用、比如圖5A至圖5B中所示應(yīng)用512或者圖5C至 圖中所示VM 571向原始塊設(shè)備發(fā)出10。在步驟1104,虛擬卷設(shè)備驅(qū)動器532或者565根據(jù) 應(yīng)用發(fā)出的10生成原始塊級10。在步驟1106,原始塊設(shè)備的名稱由虛擬卷設(shè)備驅(qū)動器532或 者565轉(zhuǎn)譯成PE ID和SLLID(并且在運用圖2B的存儲設(shè)備的實施例中也由NFS客戶端545或 者585轉(zhuǎn)譯成NFS句柄)。在步驟1108,數(shù)據(jù)訪問層540或者566執(zhí)行將PE ID和SLLID(并且在 運用圖2B的存儲設(shè)備的實施例中也將NFS句柄)編碼成原始塊級10。然后,在步驟1110,HBA/ NIC發(fā)出原始塊級10。
[0090] 對于非VM應(yīng)用、比如圖5A至圖5B中所示應(yīng)用512,方法1120在步驟1121開始。在步 驟1121,應(yīng)用向在基于vvol的塊設(shè)備上存儲的文件發(fā)出10。然后在步驟1122,文件系統(tǒng)驅(qū)動 器、例如文件系統(tǒng)驅(qū)動器510根據(jù)文件10生成塊級10。在步驟1122,執(zhí)行與步驟1106、1108和 1110相同的步驟1126、1128和1130。
[0091] 對于VM應(yīng)用、比如圖5C至圖5D中所示VM 571,方法1120在步驟1123開始。在步驟 1123,VM向它的虛擬盤發(fā)出10。然后,在步驟1124,這一 10例如由SCSI虛擬化層563轉(zhuǎn)譯成文 件10。文件系統(tǒng)驅(qū)動器、例如VMFS驅(qū)動器564然后在步驟1125根據(jù)文件10生成塊級10。在步 驟1125之后,執(zhí)行與步驟1106、1108和1110相同的步驟1126、1128和1130。
[0092] 圖12是根據(jù)一個實施例的用于在存儲系統(tǒng)執(zhí)行10的方法步驟的流程圖。在步驟 1210,通過在存儲系統(tǒng)中配置的PE之一接收計算機系統(tǒng)發(fā)出的10。10管理器304在步驟1212 解析10。在步驟1212之后,如果存儲系統(tǒng)群集是圖2A中所示類型,則10管理器304執(zhí)行步驟 1214a,并且如果存儲系統(tǒng)群集是圖2B中所示類型,則10管理器304執(zhí)行步驟1214b。在步驟 1214a,10管理器304從解析的10提取SLLID并且訪問連接數(shù)據(jù)庫312以確定與PE ID和提取 的SLLID對應(yīng)的vvol ID。在步驟1214b,10管理器304從解析的10提取NFS并且使用PE ID和 NFS句柄作為SLLID來標識vvol。在步驟1214a和1214b之后執(zhí)行步驟1216。在步驟1216,卷管 理器306和容器管理器308分別訪問vvol數(shù)據(jù)庫314和容器數(shù)據(jù)庫316以獲得將對其執(zhí)行10 的物理存儲位置。然后在步驟1218,數(shù)據(jù)訪問層310對在步驟1216獲得的物理存儲位置執(zhí)行 10。
[0093] 在一些情形中,應(yīng)用(應(yīng)用512或者VM 571)、管理服務(wù)器610和/或存儲系統(tǒng)管理器 可以確定vvol到特定PE的綁定比如在PE由于太多綁定而變成超負荷時經(jīng)歷問題。作為一種 解決這樣的問題的方式,即使在10命令被引向vvol之時,存儲系統(tǒng)管理器仍然可以將綁定 的vvol重新綁定到不同PE。圖13是根據(jù)一個實施例的用于使用重新綁定API來發(fā)出和執(zhí)行 vvo 1重新綁定請求的方法步驟1300的流程圖。
[0094]如圖所示,方法1300在步驟1302開始,其中存儲系統(tǒng)管理器確定應(yīng)當將vvol綁定 到與vvol當前被綁定到的第一 PE不同的第二PE。在步驟1304,存儲系統(tǒng)管理器經(jīng)由帶外請 求向計算機系統(tǒng)(例如計算機系統(tǒng)103)發(fā)出對于重新綁定vvo 1的請求,該計算機系統(tǒng)運行 向vvol發(fā)出10的應(yīng)用。在步驟1306,計算機系統(tǒng)103從存儲系統(tǒng)管理器接收重新綁定請求并 且作為響應(yīng)發(fā)出對于將νν〇1綁定到新ΡΕ的請求。在步驟1308,存儲系統(tǒng)管理器接收重新綁 定請求并且作為響應(yīng)將vvol綁定到新ΡΕ。在步驟1310,存儲系統(tǒng)管理器如以上結(jié)合圖10描 述的那樣向計算機系統(tǒng)發(fā)送vvol現(xiàn)在也被綁定到的新PE的ID和用于訪問vvol的SLLID。 [0095]在步驟1312,計算機系統(tǒng)從存儲系統(tǒng)管理器接收新PE ID和SLLID。在塊設(shè)備數(shù)據(jù) 庫533或者580中,初始地將新PE連接的活躍位設(shè)置成1,這意味著已經(jīng)建立經(jīng)由新PE的用于 vvol的新10會話。計算機系統(tǒng)也將第一 PE連接的活躍位設(shè)置成0,這表示不能通過這一 PE連 接向vvol發(fā)出更多10。應(yīng)當認識,不應(yīng)在去激活時立即解綁這一 PE連接,因為可能有通過這 一PE連接的向vvol的10,這些10可能在非限制、即被發(fā)出、但是未完成。因此,在步驟1314, 計算機系統(tǒng)訪問塊設(shè)備數(shù)據(jù)庫533或者580以查看是否已經(jīng)完成通過第一 PE連接向vvol發(fā) 出的所有"在飛行中的命令"(CIF)、即是否CIF = 0。計算機系統(tǒng)在執(zhí)行步驟1318之前等待 CIF變成零。同時,通過新PE發(fā)出向vvol的附加10,因為已經(jīng)將新PE連接的活躍位設(shè)置成1。 在CIF達到零時,執(zhí)行步驟1318,其中向存儲系統(tǒng)管理器發(fā)出對于解綁第一PE連接的請求。 然后在步驟1320,存儲系統(tǒng)管理器從第一 PE解綁vvol。計算機系統(tǒng)也在步驟1324通過新PE 向vvol發(fā)出所有附加10。
[0096]圖14是根據(jù)一個實施例的虛擬卷的生命周期的概念圖。圖14中所示所有命令、即 創(chuàng)建、快照、克隆、綁定、解綁、擴展和刪除形成vvol命令集并且通過以上結(jié)合圖6描述的插 件612、622可訪問。如圖所示,在作為以下命令--創(chuàng)建vvol、快照vvol或者克隆vvol-- 中的任何命令的結(jié)果生成vvo 1時,生成的vvo 1在"消極"狀態(tài)中保持,其中vvo 1未被綁定到 特定PE、因此不能接收10。此外,在vvo 1在消極狀態(tài)中時執(zhí)行以下命令---決照vvo 1、克隆 vvo 1或者擴展vvo 1--中的任何命令時,原有vvo 1和新創(chuàng)建的vvo 1 (如果有)在消極狀態(tài)中 保持。也如圖所示,當在消極狀態(tài)中的vvol被綁定到PE時,vvol進入"活躍"狀態(tài)。反言之,在 從PE解綁活躍vvol時,vvol進入消極狀態(tài),這假設(shè)vvol未被綁定到任何附加 PE。當vvol在活 躍狀態(tài)中時執(zhí)行以下命令---決照v v〇 1、克隆vvo 1、擴展v v〇 1或者重新綁定v v〇 1--中的 任何命令時,原有vvol在活躍狀態(tài)中保持,并且新創(chuàng)建的vvol(如果有)在消極狀態(tài)中保持。 [0097] 如以上描述的那樣,VM可以具有多個虛擬盤,并且為每個虛擬盤創(chuàng)建分離vvol JM 也具有描述VM的配置的元數(shù)據(jù)文件。元數(shù)據(jù)文件包括VM配置文件、VM日志文件、盤描述符文 件、VM交換文件等,每個盤描述符文件用于VM的虛擬盤中的每個相應(yīng)虛擬盤。用于虛擬盤的 盤描述符文件包含涉及虛擬盤的信息、比如它的vvol ID、它的大小、是否瘦調(diào)配虛擬盤和 為虛擬盤創(chuàng)建的一個或者多個快照的標識等。VM交換文件提供存儲系統(tǒng)上的VM的交換空 間。在一個實施例中,在vvol中存儲這些VM配置文件,并且這一vvol這里稱為元數(shù)據(jù)vvol。 [0098]圖15是根據(jù)一個實施例的用于調(diào)配VM的方法步驟的流程圖。在這一實施例中,使 用管理服務(wù)器610、主控VM的計算機系統(tǒng)、例如圖5C中所示計算機102(下文稱為"主機計算 機")和圖2A的存儲系統(tǒng)群集、具體為存儲系統(tǒng)管理器131、132或者135。如圖所示,存儲系統(tǒng) 管理器在步驟1502接收對于調(diào)配VM的請求。這可以是在使用與管理服務(wù)器610的適當用戶 接口的VM管理員向管理服務(wù)器610發(fā)出用于調(diào)配具有某個大小和存儲能力簡檔的VM的命令 時生成的請求。響應(yīng)于該命令,在步驟1504,管理服務(wù)器610發(fā)起用于用以上結(jié)合圖8描述的 方式創(chuàng)建用于包含VM的元數(shù)據(jù)的vvol (下文稱為"元數(shù)據(jù)vvol")的方法,存儲系統(tǒng)管理器在 步驟1508按照該方法創(chuàng)建元數(shù)據(jù)vvol并且向管理服務(wù)器610返回元數(shù)據(jù)vvol的vvol ID。在 步驟1514,管理服務(wù)器610向主控VM的計算機系統(tǒng)注冊回元數(shù)據(jù)vvol的vvol ID。在步驟 1516,主機計算機發(fā)起用于用以上結(jié)合圖10描述的方式將元數(shù)據(jù)vvol綁定到PE的方法,存 儲系統(tǒng)管理器在步驟1518按照該方法將元數(shù)據(jù)vvol綁定到PE并且向主機計算機返回PE ID 和SLLID。
[0099] 在步驟1522,主機計算機使用向主機計算機的操作系統(tǒng)中的"創(chuàng)建設(shè)備"調(diào)用來創(chuàng) 建元數(shù)據(jù)vvol的塊設(shè)備實例。然后在步驟1524,主機計算機在塊設(shè)備上創(chuàng)建文件系統(tǒng)(例如 VMFS),響應(yīng)于這一點返回文件系統(tǒng)ID(FSID)。主機計算機在步驟1526裝配具有返回的FSID 的文件系統(tǒng)并且向與這一文件系統(tǒng)關(guān)聯(lián)的命名空間中存儲VM的元數(shù)據(jù)。元數(shù)據(jù)的示例包括 VM日志文件、盤描述符文件和VM交換文件,每個盤描述符文件用于VM的虛擬盤中的每個相 應(yīng)虛擬盤。
[0100] 在步驟1528,主機計算機發(fā)起用于用以上結(jié)合圖8描述的方式為VM的虛擬盤中的 每個虛擬盤創(chuàng)建vvol (每個這樣的vvol這里稱為"數(shù)據(jù)vvol")的方法,存儲系統(tǒng)管理器在步 驟1530按照該方法創(chuàng)建數(shù)據(jù)vvol并且向主機計算機返回數(shù)據(jù)vvol的vvol ID。在步驟1532, 主機計算機在用于虛擬盤的盤描述符文件中存儲數(shù)據(jù)vvol的ID。該方法以在已經(jīng)為VM的所 有虛擬盤創(chuàng)建數(shù)據(jù)vvol之后解綁元數(shù)據(jù)vvol (未示出)作為結(jié)束。
[0101]圖16A是用于在已經(jīng)以結(jié)合圖15描述的方式調(diào)配Vm之后使VM通電的方法步驟的流 程圖。圖16B是在已經(jīng)使VM通電之后使VM斷電的方法步驟的流程圖。這兩種方法由用于VM的 主機計算機執(zhí)行。
[0102] 在步驟1608接收VM通電命令時,在步驟1610獲取與VM對應(yīng)的元數(shù)據(jù)vvol。然后在 步驟1612,元數(shù)據(jù)vvol經(jīng)歷如以上結(jié)合圖10描述的綁定過程。在步驟1614在元數(shù)據(jù)vvol上 裝配文件系統(tǒng),從而可以在步驟1616讀取用于數(shù)據(jù)vvol的元數(shù)據(jù)文件、具體為盤描述符文 件并且獲得數(shù)據(jù)vvol ID。數(shù)據(jù)vvol然后在步驟1618逐個經(jīng)歷如以上結(jié)合圖10描述的綁定 過程。
[0103] 在步驟1620接收VM斷電命令時,在塊設(shè)備數(shù)據(jù)庫(例如,圖5C的塊設(shè)備數(shù)據(jù)庫580) 標記VM的數(shù)據(jù)vvol為不活躍,并且主機計算機等待與數(shù)據(jù)vvol中的每個vvol關(guān)聯(lián)的CIF達 到零(步驟1622)。在與每個數(shù)據(jù)vvol關(guān)聯(lián)的CIF達到零時,主機計算機在步驟1624請求存儲 系統(tǒng)解綁該數(shù)據(jù)vvol。在與所有數(shù)據(jù)vvol關(guān)聯(lián)的CIF達到零之后,在步驟1626在塊設(shè)備數(shù)據(jù) 庫中標記元數(shù)據(jù)為不活躍。然后在步驟1628,在與元數(shù)據(jù)vvol關(guān)聯(lián)的CIF達到零時,主機計 算機在步驟1630請求解綁元數(shù)據(jù)vvol。
[0104]圖17和圖18是用于重新調(diào)配VM的方法步驟的流程圖。在這里所不不例中,圖17是 用于擴展VM的vvol、具體為用于VM的虛擬盤的數(shù)據(jù)vvol的大小的在主機計算機上執(zhí)行的方 法步驟的流程圖,并且圖18是用于在存儲容器之間移動VM的vvol的在存儲系統(tǒng)中執(zhí)行的方 法步驟的流程圖。
[0105]用于擴展用于VM的虛擬盤的數(shù)據(jù)vvol的大小的方法在步驟1708開始,其中主機計 算機確定是否使VM通電。如果主機計算機在步驟1708確定未使VM通電,則主機計算機在步 驟1710獲取與VM對應(yīng)的元數(shù)據(jù)vvol的ID。然后,主機計算機在步驟1712發(fā)起用于元數(shù)據(jù) vvol的綁定過程。在綁定之后,在步驟1714,主機計算機在元數(shù)據(jù)vvol上裝配文件系統(tǒng)并且 從用于虛擬盤的盤描述符文件獲取與虛擬盤對應(yīng)的數(shù)據(jù)vvol的ID,該盤描述符文件是在元 數(shù)據(jù)vvo 1上裝配的文件系統(tǒng)中的文件。然后在步驟1716,主機計算機在步驟1716向存儲系 統(tǒng)發(fā)送擴展vvo 1 API調(diào)用,其中擴展vvo 1 API調(diào)用可以包括數(shù)據(jù)V vo 1的ID和數(shù)據(jù)vvo 1的新 大小。
[0106] 如果使VM通電,則主機計算機在步驟1715接收VM的待擴展的虛擬盤的數(shù)據(jù)vvol的 ID。應(yīng)當從圖16A的方法認識,可以從與VM的虛擬盤關(guān)聯(lián)的盤描述符文件獲得這一 ID。然后, 在步驟1716,主機計算機在步驟1716向存儲系統(tǒng)發(fā)送擴展vvol API調(diào)用,其中擴展vvol API調(diào)用包括數(shù)據(jù)vvol的ID和數(shù)據(jù)vvol的新大小。
[0107] 擴展vvol API調(diào)用造成在存儲系統(tǒng)中更新vvol數(shù)據(jù)庫和容器數(shù)據(jù)庫(例如,圖3的 vvol數(shù)據(jù)庫314和容器數(shù)據(jù)庫316)以反映 vvol的增加的地址空間。在接收擴展vvol API調(diào) 用已經(jīng)完成的確認時,主機計算機在步驟1718用新大小更新用于VM的虛擬盤的盤描述符文 件。然后在步驟1720,主機計算機確定是否使VM通電。如果不是,則主機計算機在步驟1722 拆卸文件系統(tǒng)并且向存儲系統(tǒng)發(fā)送對于解綁元數(shù)據(jù)vvol的請求。在另一方面,如果使VM通 電,則該方法終止。
[0108] 用于將VM的當前綁定到PE的vvol從源存儲容器移向目的地存儲容器--其中源 存儲容器和目的地存儲容器二者在相同存儲系統(tǒng)管理器的范圍內(nèi)--的方法在步驟1810 開始,其中接收源和目的地存儲容器的容器ID(分別為SCI和SC2)以及待移動的vvol的vvol ID。然后,在步驟1812,更新vvo 1數(shù)據(jù)庫(例如圖3的vvo 1數(shù)據(jù)庫314)和容器數(shù)據(jù)庫(例如,圖 3的容器數(shù)據(jù)庫316)的盤區(qū)分配位圖如下。首先,存儲系統(tǒng)管理器從SCI的在容器數(shù)據(jù)庫316 中的條目去除SCI中的vvol盤區(qū)、然后通過修改SC2的在容器數(shù)據(jù)庫316中的條目來向SC2指 派這些盤區(qū)。在一個實施例中,存儲系統(tǒng)可以通過向SCI指派新紡錘體盤區(qū)來補償SCI中的 存儲容量損失(由于去除vvol存儲盤區(qū))并且通過從SC2去除一些未使用的紡錘體盤區(qū)來彌 補SC2中的存儲容量增加(由于添加 vvol存儲盤區(qū))。在步驟1814,存儲系統(tǒng)管理器確定當前 綁定的PE是否能夠最優(yōu)地服務(wù)于向vvo 1的新位置的10。其中當前PE不能服務(wù)于向vvo 1的新 位置的10的示例實例是如果存儲管理員已經(jīng)靜態(tài)配置存儲系統(tǒng)管理器以向來自不同客戶 并且因此來自不同存儲容器的vvol指派不同PE。如果當前TO不能服務(wù)于向vvol的10,則 vvol在步驟1815經(jīng)歷以上結(jié)合圖13描述的重新綁定過程(和對連接數(shù)據(jù)庫、例如圖3的連接 數(shù)據(jù)庫312的關(guān)聯(lián)改變)。在步驟1815之后,執(zhí)行步驟1816,其中向主機計算機返回成功移動 完成的確認。如果存儲系統(tǒng)管理器在步驟1814確定當前PE能夠服務(wù)于向vvol的新位置的 10,則繞過步驟1815并且接著執(zhí)行步驟1816。
[0109] 當在不兼容存儲容器之間、例如在不同制造商的存儲設(shè)備中創(chuàng)建的存儲容器之間 移動vvol時,除了對容器數(shù)據(jù)庫316、vvol數(shù)據(jù)庫314和連接數(shù)據(jù)庫312的改變之外還在存儲 容器之間執(zhí)行數(shù)據(jù)移動。在一個實施例中,運用在通過這里引用將全部內(nèi)容結(jié)合于此、提交 于2008年5月29 日并且標題為 "Offloading Storage Operations to Storage Hardware" 的第12/129,323號美國專利申請中描述的數(shù)據(jù)移動技術(shù)。
[0110] 圖19是用于從模板VM克隆VM的在主機計算機和存儲系統(tǒng)中執(zhí)行的方法步驟的流 程圖。這一方法在步驟1908開始,其中主機計算機向存儲系統(tǒng)發(fā)送對于為新VM創(chuàng)建元數(shù)據(jù) vvol的請求。在1910,存儲系統(tǒng)根據(jù)以上結(jié)合圖8描述的方法為新VM創(chuàng)建元數(shù)據(jù)并且向主機 計算機返回新元數(shù)據(jù)vvol ID。然后在步驟1914,對于屬于模板的所有數(shù)據(jù)vvol ID從主機 計算機經(jīng)由帶外路徑601向存儲系統(tǒng)發(fā)出克隆vvol API調(diào)用。在步驟1918,存儲系統(tǒng)檢查以 查看模板VM和新VM的數(shù)據(jù)vvol是否兼容。應(yīng)當認識,如果克隆在不同制造商的存儲系統(tǒng)中 創(chuàng)建的存儲容器之間出現(xiàn),則數(shù)據(jù)vvol不可能兼容。如果有兼容性,則執(zhí)行步驟1919。在步 驟1919,存儲系統(tǒng)管理器通過生成新數(shù)據(jù)vvol ID、更新容器數(shù)據(jù)庫316中的分配位圖并且 向vvol數(shù)據(jù)庫314添加新vvol條目來創(chuàng)建新數(shù)據(jù)vvol并且向新VM的數(shù)據(jù)vvol復制在模板VM 的數(shù)據(jù)vvol中存儲的內(nèi)容。在步驟1920,存儲系統(tǒng)管理器向主機計算機返回新數(shù)據(jù)vvol ID。接收新數(shù)據(jù)vvol ID向主機計算機提供數(shù)據(jù)vvol克隆完成而無錯誤的確認。然后在步驟 1925,主機計算機向新VM的元數(shù)據(jù)vvo 1發(fā)出10以用新生成的數(shù)據(jù)vvo 1 ID更新元數(shù)據(jù)文件、 具體為盤描述符文件。存儲系統(tǒng)在步驟1926執(zhí)行主機計算機向存儲系統(tǒng)發(fā)出的10,作為這 一點的結(jié)果,用新生成的數(shù)據(jù)vvol ID更新新VM的盤描述符文件。
[0111]如果存儲系統(tǒng)管理器在步驟1918確定模板VM和新VM的數(shù)據(jù)vvol不兼容,則向主機 計算機返回錯誤消息。在接收這一錯誤消息時,主機計算機在步驟19 21向存儲系統(tǒng)發(fā)出創(chuàng) 建vvol API調(diào)用以創(chuàng)建新數(shù)據(jù)vvol。在步驟1922,存儲系統(tǒng)管理器通過生成新數(shù)據(jù)vvol ID、更新容器數(shù)據(jù)庫316中的分配位圖并且向vvol數(shù)據(jù)庫314添加新vvol條目來創(chuàng)建新數(shù)據(jù) vvol并且向主機計算機返回新數(shù)據(jù)vvol ID。在步驟1923,主機計算機根據(jù)在通過這里引用 將全部內(nèi)容結(jié)合于、提交于2009年1月21日并且標題為"Data Mover for Computer System"的第12/356,694號美國專利申請中描述的技術(shù)執(zhí)行數(shù)據(jù)移動(步驟1923)。在步驟 1923之后,如以上描述的那樣執(zhí)行步驟1925和1926。
[0112]圖20是根據(jù)另一實施例的用于調(diào)配VM的方法步驟的流程圖。在這一實施例中,使 用管理服務(wù)器610、主控VM的計算機系統(tǒng)、例如圖5D中所示計算機系統(tǒng)102(下文稱為"主機 計算機")和圖2B的存儲系統(tǒng)群集、具體為存儲系統(tǒng)管理器131或者存儲系統(tǒng)管理器132或者 存儲系統(tǒng)管理器135。如圖所示,在步驟2002接收對于調(diào)配VM的請求。這可以是在使用與管 理服務(wù)器610的適當用戶接口的VM管理員向管理服務(wù)器610發(fā)出用于調(diào)配具有某個大小和 存儲能力簡檔的VM的命令時生成的請求。響應(yīng)于該命令,在步驟2004,管理服務(wù)器610發(fā)起 用于用以上結(jié)合圖8描述的方式創(chuàng)建用于包含VM的元數(shù)據(jù)的vvol、具體為元數(shù)據(jù)vvol的方 法,存儲系統(tǒng)管理器在步驟2008按照該方法創(chuàng)建元數(shù)據(jù)vvol,該元數(shù)據(jù)vvol是在NAS設(shè)備中 的文件,并且向管理服務(wù)器610返回元數(shù)據(jù)vvol ID。在步驟2020,管理服務(wù)器610向主機計 算機系統(tǒng)注冊回元數(shù)據(jù)vvol的vvol ID。在步驟2022,主機計算機向存儲系統(tǒng)發(fā)出對于元數(shù) 據(jù)vvol ID的請求,響應(yīng)于該請求,存儲系統(tǒng)在步驟2023分別返回IP地址和目錄路徑作為PE ID和SLLID。在步驟2024,主機計算機在指定的IP地址和目錄路徑裝配目錄并且在裝配的目 錄中存儲元數(shù)據(jù)文件。在使用NFS的實施例中,NFS客戶端545或者585可以將給定的IP地址 和目錄路徑分解成NFS句柄以便向這樣的目錄發(fā)出NFS請求。
[0113] 在步驟2026,主機計算機發(fā)起用于用以上結(jié)合圖8描述的方式為VM的虛擬盤中的 每個虛擬盤創(chuàng)建數(shù)據(jù)vvol的方法,存儲系統(tǒng)管理器在步驟2030按照該方法創(chuàng)建數(shù)據(jù)vvol并 且向主機計算機返回數(shù)據(jù)vvol的vvol ID。在步驟2032,主機計算機在用于虛擬盤的盤描述 符文件中存儲數(shù)據(jù)vvol的ID。該方法以在已經(jīng)對于VM的所有虛擬盤創(chuàng)建數(shù)據(jù)vvol之后解綁 元數(shù)據(jù)vvol (未示出)作為結(jié)束。
[0114] 如以上結(jié)合圖8描述的那樣,在從存儲容器創(chuàng)建新vvol并且未為新vvol顯式地指 定存儲能力簡檔時,新vvol將繼承與存儲容器關(guān)聯(lián)的存儲能力簡檔??梢詮娜舾刹煌啓n 之一選擇與存儲容器關(guān)聯(lián)的存儲能力建檔。例如,如圖21中所示,不同簡檔包括生產(chǎn)(prod) 簡檔2101、開發(fā)(dev)簡檔2102和測試簡檔2103(這里通常為"簡檔2100")。應(yīng)當認識,可以 定義許多其它簡檔。如圖所示,特定建檔的每個簡檔條目為固定類型或者可變類型并且具 有名稱和與它關(guān)聯(lián)的一個或者多個值。固定類型的簡檔條目具有固定數(shù)目的可選擇項目。 例如可以將簡檔條目"復制"設(shè)置成真或者假。對照而言,可變類型的簡檔條目無預定義選 擇。取而代之,為可變類型的簡檔條目設(shè)置默認值和值范圍,并且用戶可以選擇在范圍內(nèi)的 任何值。如果未指定值,則使用默認值。在圖21中所示示例簡檔2100中,可變類型的簡檔條 目具有被逗號分離的三個數(shù)。第一個數(shù)是指定的范圍的更低端,并且第二個數(shù)是指定的范 圍的更高端。第三個數(shù)是默認值。因此,將復制vvol,該vvol繼承在生產(chǎn)簡檔2101中定義id 存儲能力簡檔(復制?值=真),并且可以在范圍0.1到24小時中定義用于復制的恢復時間 目標(RT0),默認為1小時。此外,對于這一vvol(復制?值=真)允許快照。保持的快照數(shù)目 在范圍1至100中,默認為1,并且快照頻率在范圍每小時一次至每24小時一次中,默認為每 小時一次。Snaplnher it列指示在快照給定的vvol以創(chuàng)建作為衍生vvol的新vvol時是否應(yīng) 當向衍生vvo 1傳播給定的簡檔屬性(及其值)。在生產(chǎn)簡檔2101的示例中,可以用生成簡單 2101向給定的vvo 1的快照vvo 1傳播僅前兩個簡檔條目(復制和RT0)??煺誺vo 1的所有其它 屬性的值將被設(shè)置成在簡檔中指定的默認值。換而言之,這些其它屬性在給定的vvol上的 任何定制(例如快照頻率的非默認值)將由于它們的對應(yīng)Snaplnherit列為假而不會向快照 vvol傳播。簡檔也包含其它列、比如Clonelnherit(未示出)和Replicalnherit(未示出),這 兩列控制分別向給定的vvo 1的克隆和復制傳播哪些屬性值。
[0115] 在根據(jù)圖4的方法創(chuàng)建存儲容器時,可以設(shè)置可以對于從存儲容器創(chuàng)建的vvol定 義的存儲能力簡檔類型。圖21中的流程圖圖示圖4中所示用于創(chuàng)建存儲容器的方法而在步 驟412與步驟413之間插入步驟2110。在步驟2110,存儲管理員選擇用于創(chuàng)建的存儲容器的 簡檔2100中的一個或者多個簡檔。例如,為一個客戶創(chuàng)建的存儲容器可以與生產(chǎn)建檔2101 和開發(fā)簡檔2102關(guān)聯(lián),從而為生產(chǎn)類型的vvol將如情況可以是的那樣繼承用默認值或者客 戶指定的值在生產(chǎn)簡檔2101中定義的存儲能力簡檔,并且為開發(fā)類型的vvol將如情況可以 是那樣繼承用默認值或者客戶指定的值在開發(fā)建檔2102中定義的存儲能力簡檔。
[0116] 圖22是用于創(chuàng)建vvol并且定義用于vvol的存儲能力簡檔的由存儲系統(tǒng)管理器 131、132或者135執(zhí)行的所示方法步驟的流程圖。圖22的方法步驟、具體為方法步驟2210、 2212、2218和2220分別地對應(yīng)圖8中所示步驟806、810、812和814。此外,圖22的方法步驟包 括步驟2214、2215和2216,這些步驟定義用于創(chuàng)建的vvol的存儲能力簡檔。
[0117] 在步驟2214,存儲系統(tǒng)管理器確定是否已經(jīng)在對于創(chuàng)建vvol的請求中指定將在存 儲能力簡檔中使用的值。如果它們不是,則存儲系統(tǒng)管理器在步驟2215運用與vvol的存儲 容器關(guān)聯(lián)的存儲能力簡檔作為vvol的具有默認值的存儲能力簡檔。如果已經(jīng)指定將在存儲 能力簡檔中使用的值,則存儲系統(tǒng)管理器在步驟2216運用與vvol的存儲容器關(guān)聯(lián)的存儲能 力簡檔作為vvol的具有指定的值而不是默認值的存儲能力簡檔。
[0118] 在一個實施例中,在vvol數(shù)據(jù)庫314中存儲vvol的存儲能力簡檔為關(guān)鍵字-值對。 一旦已經(jīng)定義并且在vvol數(shù)據(jù)庫314中存儲vvol的存儲能力簡檔為關(guān)鍵字-值對,并且只要 與復制和快照有關(guān)的屬性和值如圖21的示例簡檔中所示是這一簡檔的部分,存儲系統(tǒng)就能 夠執(zhí)行用于vvo 1的復制和快照而無主機計算機發(fā)出的進一步指令。
[0119] 圖23是圖示用于從母vvol創(chuàng)建快照的由存儲系統(tǒng)管理器131、132或者135執(zhí)行的 方法步驟的流程圖。在一個實施例中,運用快照跟蹤數(shù)據(jù)結(jié)構(gòu)以根據(jù)在給定的存儲能力簡 檔中的快照定義調(diào)度快照。在達到用于快照的調(diào)度的時間時,存儲系統(tǒng)管理器在步驟2310 從快照跟蹤數(shù)據(jù)結(jié)構(gòu)獲取vvol ID。然后,在步驟2312,存儲系統(tǒng)管理器生成用于快照的唯 一vvol ID。存儲系統(tǒng)管理器在步驟2315運用母VV〇l(即具有從快照跟蹤數(shù)據(jù)結(jié)構(gòu)獲取的 vvol ID的vvol)的存儲能力簡檔作為快照vvol的存儲能力簡檔。應(yīng)當注意,由于這是存儲 系統(tǒng)驅(qū)動的自動化簡檔驅(qū)動的快照過程,所以用戶未獲得用于指定激昂在快照vvol的存儲 能力簡檔中使用的定制值。在步驟2318,存儲系統(tǒng)管理器通過更新容器數(shù)據(jù)庫316中的分配 位圖并且向vvol數(shù)據(jù)庫314添加用于快照vvol的新vvol條目在母vvol的存儲容器內(nèi)創(chuàng)建快 照vvol。然后,在步驟2320,存儲系統(tǒng)管理器通過調(diào)度用于生成用于母vvol的下一快照的時 間來更新快照跟蹤數(shù)據(jù)結(jié)構(gòu)。應(yīng)當認識,存儲系統(tǒng)管理器必須對于所有如下vvol并行維護 快照跟蹤數(shù)據(jù)結(jié)構(gòu)并且執(zhí)行圖23的方法步驟,這些vvol的存儲能力簡檔規(guī)定調(diào)度的快照。
[0120] 在用以上描述的方式創(chuàng)建快照之后,更新在vvol數(shù)據(jù)庫314中存儲的關(guān)鍵字-值對 以指示快照vvol為類型=快照。也在其中為快照維護生成數(shù)一一每當拍攝或者設(shè)置快照時 遞減生成數(shù)或者設(shè)置成等于日期+時間一一的實施例中,存儲生成數(shù)為關(guān)鍵字-值對。也在 快照VVO1條目中存儲快照VVO1的母VVO1 ID為關(guān)鍵字-值對。因此,主機計算機可以向vvo 1 數(shù)據(jù)庫314查詢與特定vvol ID對應(yīng)的快照。也有可能讓主機計算機向vvol數(shù)據(jù)庫發(fā)出對于 與特定vvol ID和特定生成數(shù)對應(yīng)的快照的查詢。
[0121] 這里描述的各種實施例可以運用各種由計算機實施的操作,這些操作涉及到在計 算機系統(tǒng)中存儲的數(shù)據(jù)。例如這些操作通常、但是未必可能需要物理操縱物理數(shù)量,這些數(shù) 量可以采用電或者磁信號的形式,其中能夠存儲、傳送、組合、比較或者另外操縱它們或者 它們的表示。另外,經(jīng)常在術(shù)語、比如產(chǎn)生、標識、確定或者比較中引用這樣的操縱。這里描 述的任何形成一個或者多個實施例的部分的操作可以是有用機器操作。此外,一個或者多 個實施例也涉及一種用于執(zhí)行這些操作的設(shè)備或者裝置。該裝置可以被特別地構(gòu)造用于具 體所需目的,或者它可以是通用計算機,該通用計算機由在計算機中存儲的計算機程序有 選擇地激活或者配置。具體而言,各種通用機器可以與根據(jù)這里的教導編寫的計算機程序 使用,或者構(gòu)造更專門化的裝置以執(zhí)行所需操作可以更方便。
[0122]可以用包括手持設(shè)備、微處理器系統(tǒng)、基于微處理器或者可編程的客戶電子裝置、 小型計算機、大型機計算機等的其它計算機系統(tǒng)配置實現(xiàn)這里描述的各種實施例。
[0123] 可以實施一個或者多個實施例為一個或者多個計算機程序或者為在一個或者多 個計算機可讀介質(zhì)中體現(xiàn)的一個或者多個計算機程序模塊。術(shù)語計算機可讀介質(zhì)是指可以 存儲數(shù)據(jù)的任何數(shù)據(jù)存儲設(shè)備,該數(shù)據(jù)隨后可以向計算機系統(tǒng)輸入。計算機可讀介質(zhì)可以 基于用于以使計算機程序能夠被計算機讀取的方式體現(xiàn)計算機程序的任何現(xiàn)有或者以后 開發(fā)的技術(shù)。計算機可讀介質(zhì)的示例包括硬驅(qū)動、網(wǎng)絡(luò)附接存儲裝置(NAS)、只讀存儲器、隨 機存取存儲器(例如閃存設(shè)備)、⑶(緊致盤)、⑶-R0M、⑶-R或者⑶-RW、DVD(數(shù)字萬用盤)、磁 帶以及其它光學和非光學數(shù)據(jù)存儲設(shè)備。也可以通過網(wǎng)絡(luò)耦合的計算機系統(tǒng)分發(fā)計算機可 讀介質(zhì),從而以分布式方式存儲和執(zhí)行計算機可讀代碼。
[0124] 雖然為了理解清楚而已經(jīng)用一些細節(jié)描述一個或者多個實施例,但是將清楚可以 在權(quán)利要求的范圍內(nèi)進行某些改變和修改。例如運用SCSI作為用于SAN設(shè)備的協(xié)議,并且使 用NFS作為用于NAS設(shè)備的協(xié)議??梢允褂肧CSI協(xié)議的任何備選、光纖信道,并且可以使用 NFS協(xié)議的任何備選、比如CIFS(公共因特網(wǎng)文件系統(tǒng))協(xié)議。因而,描述的實施例將視為示 例而非限制,并且權(quán)利要求的范圍將不限于這里給定的細節(jié)而是可以在權(quán)利要求的范圍和 等效含義內(nèi)被修改。在權(quán)利要求中,單元和/或步驟除非在權(quán)利要求中陳述則未意味著任何 特定操作順序。
[0125] 此外,盡管描述的可視化方法已經(jīng)主要假設(shè)虛擬機呈現(xiàn)與特定硬件系統(tǒng)一致的接 口,但是可以結(jié)合未與任何特定硬件系統(tǒng)直接對應(yīng)的虛擬化使用描述的方法。根據(jù)各種實 施例的可視化系統(tǒng)都被設(shè)想,實施這些實施例為主控的實施例、非主控的實施例或者為往 往模糊在二者之間的區(qū)分的實施例。另外,可以全部或者部分在硬件中實施各種可視化操 作。例如硬件實現(xiàn)方式可以將查找表用于修改存儲訪問請求以使非盤數(shù)據(jù)安全。
[0126] 許多變化、修改、添加和改進無論可視化程度如何都是可能的??梢暬浖虼丝?以包括執(zhí)行可視化功能的主機、控制臺或者客戶操作系統(tǒng)的部件。可以提供多個實例用于 這里描述為單個實例的部件、操作或者結(jié)構(gòu)。最后,在各種部件、操作和數(shù)據(jù)存儲庫之間的 邊界有些任意,并且在具體示例配置的上下文中舉例說明具體操作。其它功能分配被設(shè)想 并且可以落入這里描述的實施例的范圍內(nèi)。一般而言,可以實施在示例配置中呈現(xiàn)為分離 部件的結(jié)構(gòu)和功能為組合的結(jié)構(gòu)或者部件。類似地,可以實施呈現(xiàn)為單個部件的結(jié)構(gòu)和功 能為分離部件。這些和其它變化、修改、添加和改進可以落入所附權(quán)利要求的范圍內(nèi)。
【主權(quán)項】
1. 一種用于在存儲系統(tǒng)中處理輸入-輸出命令10的方法,所述方法包括: 在存儲系統(tǒng)處接收10,所述10包括第一標識符和第二標識符,其中所述第一標識符用 來將所述10引向與所述存儲系統(tǒng)中的邏輯存儲卷集合相關(guān)聯(lián)的端點; 在所述存儲系統(tǒng)處從所述10獲取所述第二標識符并且將所述第二標識符轉(zhuǎn)譯成與所 述端點相關(guān)聯(lián)的所述邏輯存儲卷集合中的一個邏輯存儲的邏輯存儲卷標識符;以及 在與所述邏輯存儲卷標識符對應(yīng)的邏輯存儲卷引用的存儲位置上執(zhí)行所述10。2. 根據(jù)權(quán)利要求1所述的方法,其中在所述存儲系統(tǒng)中被配置為所述端點的邏輯單元 編號LUN處接收所述10,并且所述第一標識符是用于所述LUN的世界范圍名稱。3. 根據(jù)權(quán)利要求2所述的方法,還包括: 檢測所述邏輯存儲卷或者所述LUN中的錯誤狀況并且向發(fā)出所述10的計算機系統(tǒng)發(fā)送 錯誤消息。4. 根據(jù)權(quán)利要求1所述的方法,其中在所述存儲系統(tǒng)中被配置為所述端點的裝配點處 接收所述10,并且所述第一標識符包括所述存儲系統(tǒng)和所述裝配點的IP地址。5. 根據(jù)權(quán)利要求4所述的方法,還包括: 檢測所述邏輯存儲卷或者所述裝配點中的錯誤狀況并且向發(fā)出所述10的計算機系統(tǒng) 發(fā)送錯誤消息。6. 根據(jù)權(quán)利要求1所述的方法,還包括: 維護一個數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)提供第二標識符到邏輯存儲卷標識符的映射,其中 所述第二標識符是使用所述數(shù)據(jù)結(jié)構(gòu)被轉(zhuǎn)譯成所述邏輯存儲卷標識符的。7. 根據(jù)權(quán)利要求1所述的方法,其中所述端點是在所述存儲系統(tǒng)使用的協(xié)議中用于所 述10的邏輯端點。8. -種用于在存儲系統(tǒng)中處理輸入-輸出命令10的裝置,所述裝置被配置為執(zhí)行根據(jù) 權(quán)利要求1至6中任一項所述的方法。9. 一種存儲系統(tǒng),被配置為由根據(jù)權(quán)利要求8所述的裝置進行控制。
【文檔編號】H04L29/08GK105975214SQ201610331182
【公開日】2016年9月28日
【申請日】2012年8月22日
【發(fā)明人】R·布哈特, S·阿查亞, S·B·瓦哈尼, C-C·施
【申請人】威睿公司