本發(fā)明涉及計算機存儲系統(tǒng),并且更具體地,涉及用使用鏈克隆的時間點拷貝(point-in-timecopy)進行存儲。
背景技術:
在計算機存儲系統(tǒng)的領域中,對已被描述為“高級功能”的需求日益增長。這樣的功能超過常規(guī)存儲控制器系統(tǒng)的簡單輸入/輸出(i/o)功能。高級功能取決于用于保持關于存儲在系統(tǒng)中的真實或“用戶”數據的狀態(tài)數據的元數據的控制。使用高級功能可獲得的操作能夠將各種動作快速地應用于數據的虛擬圖像,同時使真實數據可用于由用戶應用程序使用。
一種這樣的高級功能是時間點拷貝。時間點拷貝的一個例子是
時間點拷貝是在各種存儲設備上支持的特征,其允許進行完整邏輯卷或數據集的近似即時時間點拷貝。時間點功能能夠進行數據的完整卷拷貝,拷貝立即可用于讀或寫訪問。拷貝可以與在計算環(huán)境中可用于在磁帶上創(chuàng)建備份拷貝的標準備份工具一起使用。
“快照”是表示能夠在任何指定時刻記錄存儲設備的狀態(tài)并且將該快照保存為用于在其故障的情況下恢復存儲設備的向導的一般行業(yè)術語??煺罩饕獎?chuàng)建數據的時間點拷貝。典型地,快照拷貝立即完成并且可用于由其他應用程序使用,例如數據保護、數據分析和報告和數據復制應用程序。數據的原始拷貝繼續(xù)可用于應用程序而不中斷,而快照拷貝用于對數據執(zhí)行其他功能??煺湛梢允且蕾囉谥鞔疟P的時間點拷貝。
快照可以使用包括寫時拷貝程序或重定向寫程序的各種實現方式實現。如果有多層環(huán)境,則寫時拷貝是相對于特定卷所使用的層提供最佳穩(wěn)定性的解決方案。在寫時拷貝程序中,當對主磁盤上的區(qū)域進行寫時,主磁盤上的區(qū)域中的當前存在的數據寫到備份磁盤。因此,備份磁盤將包含在主磁盤上被覆蓋的數據,與主磁盤的完全拷貝不同。該類型的備份拷貝典型地導致可能減小存儲的精簡配置卷。
為了最小化每秒生產卷輸入/輸出操作(iops),解決方案使用‘級聯(lián)’方法以允許進行單個生產卷的多個不同時間點拷貝而不導致物理存儲的iops的增加。
一系列快照拷貝可以一起級聯(lián)以表示各時間的主磁盤。然而,快照拷貝典型地依賴于主磁盤保持以重新組裝主磁盤的完整拷貝。所以,快照是時間點拷貝,其中目標僅僅保持展現源的時間點拷貝所必需的變化數據。如果數據在源上變化,則數據僅僅拷貝到目標磁盤。目標磁盤一般依賴于源磁盤上的一些數據以便展現時間點拷貝。
本發(fā)明涉及克隆卷及其所有快照的問題。如果用戶想要將卷及其所有快照移動到另一存儲池或者如果他們想要卷及其快照的新拷貝,這將是需要的。目的是立即克隆卷、其快照(保持任何空間效率)和保持這些快照所需的所有元數據。由于這些操作不能自動執(zhí)行但是可能似乎已自動完成,因此當拷貝過程進行時需要保持圖像,同時也處理原始卷及其快照和克隆及其快照的i/o。
技術實現要素:
根據本發(fā)明的第一方面提供一種使用鏈克隆進行存儲拷貝的方法,其包括:以依賴鏈的形式提供具有一個或多個快照的卷,其中所述卷和所述一個或多個快照是所述依賴鏈中的卷節(jié)點并且提供保持所述一個或多個快照所需的關聯(lián)元數據;克隆所述依賴鏈以創(chuàng)建包括導致稀疏卷節(jié)點的所述卷和所述一個或多個快照的稀疏拷貝的至少一個稀疏拷貝鏈,導致卷節(jié)點的依賴鏈和被克隆卷節(jié)點的一個或多個稀疏拷貝鏈的網格結構;限定從所述依賴鏈中的源和目標卷節(jié)點和所述稀疏拷貝鏈中的稀疏源和稀疏目標卷節(jié)點到卷節(jié)點的映射;以及限定每個卷節(jié)點的元數據,其包括指示數據是否在目標卷節(jié)點上的狀態(tài)和指示如果數據不在目標卷上則轉向所述依賴鏈和所述一個或多個稀疏拷貝鏈中的哪一個的高水印。
方法可以包括在卷節(jié)點操作期間保持所述映射和所述元數據,并且當所述卷是被克隆稀疏拷貝鏈的一部分時使用所述映射和所述元數據修改輸入/輸出操作。
所述元數據也可以包括用于在卷節(jié)點拷貝和清理操作期間使用的稀疏拷貝鏈的頭卷節(jié)點的指示。所述元數據狀態(tài)可以是如果數據在目標卷節(jié)點上則設置為真的位圖。
方法可以包括重復克隆步驟以在原始卷依賴鏈和先前被克隆的鏡鏈之間加入新的稀疏拷貝鏈。
所述網格結構可以具有在第一方向上的依賴鏈操作和在垂直于所述第一方向的第二方向上的稀疏拷貝鏈操作。
方法可以包括執(zhí)行卷節(jié)點的讀操作,包括:確定是否存在從源卷節(jié)點或稀疏拷貝卷節(jié)點到卷節(jié)點的映射;檢查卷節(jié)點元數據以確定卷節(jié)點是否具有指示的目標狀態(tài);以及檢查卷節(jié)點元數據以確定目標節(jié)點的正確鏈的高水印指示。
方法可以包括執(zhí)行卷節(jié)點的寫操作,包括:在執(zhí)行寫操作之前參考映射和元數據,如果需要則執(zhí)行對映射的寫操作;以及在寫操作之后更新映射和元數據。
方法可以包括執(zhí)行卷節(jié)點的拷貝操作,包括:需要時執(zhí)行寫操作以將卷節(jié)點的網格讀寫到卷節(jié)點。
方法可以包括執(zhí)行卷節(jié)點的清理操作,包括執(zhí)行寫操作以清理元數據。
根據本發(fā)明的第二方面提供一種用鏈克隆進行存儲拷貝的系統(tǒng),其包括:處理器和存儲器,所述存儲器配置成將計算機程序指令提供給所述處理器以執(zhí)行以下部件的功能;時間點拷貝部件,用于以依賴鏈的形式提供具有一個或多個快照的卷,其中所述卷和所述一個或多個快照是所述依賴鏈中的卷節(jié)點并且提供保持所述一個或多個快照所需的關聯(lián)元數據;克隆部件,用于克隆所述依賴鏈以創(chuàng)建包括導致稀疏卷節(jié)點的所述卷和所述一個或多個快照的稀疏拷貝的至少一個稀疏拷貝鏈;網格結構部件,用于創(chuàng)建卷節(jié)點的依賴鏈和被克隆卷節(jié)點的一個或多個稀疏拷貝鏈的網格結構;映射部件,用于限定從所述依賴鏈中的源和目標卷節(jié)點和所述稀疏拷貝鏈中的稀疏源和稀疏目標卷節(jié)點到卷節(jié)點的映射;以及元數據部件,用于限定每個卷節(jié)點的元數據,其包括指示數據是否在目標卷節(jié)點上的狀態(tài)和指示如果數據不在目標卷上則轉向所述依賴鏈和所述一個或多個稀疏拷貝鏈中的哪一個的高水印。
所述映射部件和所述元數據部件可以在卷節(jié)點操作期間保持所述映射和所述元數據并且當所述卷是被克隆稀疏拷貝鏈的一部分時使用所述映射和所述元數據修改輸入/輸出操作。
所述元數據部件可以限定包括用于在卷節(jié)點拷貝和清理操作期間使用的稀疏拷貝鏈的頭卷節(jié)點的指示的元數據。
所述克隆部件可以能夠重復克隆步驟以在原始卷依賴鏈和先前被克隆的鏡鏈之間加入新的稀疏拷貝鏈。
所述網格結構可以具有在第一方向上的依賴鏈操作和在垂直于所述第一方向的第二方向上的稀疏拷貝鏈操作。
系統(tǒng)可以包括用于執(zhí)行卷節(jié)點的讀操作的讀操作部件。系統(tǒng)可以包括用于執(zhí)行卷節(jié)點的寫操作的寫操作部件。系統(tǒng)可以包括用于執(zhí)行卷節(jié)點的拷貝操作的拷貝操作部件。系統(tǒng)可以包括用于執(zhí)行卷節(jié)點的清理操作的清理操作部件。
根據本發(fā)明的第三方面提供一種用鏈克隆進行存儲拷貝的計算機程序產品,所述計算機程序產品包括具有隨其體現的程序指令的計算機可讀存儲介質,所述程序指令由處理器可執(zhí)行以導致所述處理器:以依賴鏈的形式提供具有一個或多個快照的卷,其中所述卷和所述一個或多個快照是所述依賴鏈中的卷節(jié)點并且提供保持所述一個或多個快照所需的關聯(lián)元數據;克隆所述依賴鏈以創(chuàng)建包括導致稀疏卷節(jié)點的所述卷和所述一個或多個快照的稀疏拷貝的至少一個稀疏拷貝鏈,導致卷節(jié)點的依賴鏈和被克隆卷節(jié)點的一個或多個稀疏拷貝鏈的網格結構;限定從所述依賴鏈中的源和目標卷節(jié)點和所述稀疏拷貝鏈中的稀疏源和稀疏目標卷節(jié)點到卷節(jié)點的映射;以及限定每個卷節(jié)點的元數據,其包括指示數據是否在目標卷節(jié)點上的狀態(tài)和指示如果數據不在目標卷上則轉向所述依賴鏈和所述一個或多個稀疏拷貝鏈中的哪一個的高水印。
本發(fā)明的所述方面提供能夠在保持元數據的同時克隆卷及其所有快照的優(yōu)點。這使用戶能夠將卷及其所有快照移動到另一存儲池,如果用戶需要卷及其所有快照的新拷貝。
當拷貝過程進行時有利地保持拷貝圖像,同時也能夠處理原始卷及其快照和克隆及其快照的i/o。
附圖說明
包括在本發(fā)明中的附圖包含到說明書中并且形成說明書的一部分。它們示出本發(fā)明的實施例并且與描述一起用于解釋本發(fā)明的原理。附圖僅僅是某些實施例的舉例說明并且不限制本發(fā)明。
圖1a是顯示根據各種實施例的使用存儲控制器和兩個存儲磁盤的備份過程的示意圖。
圖1b是顯示根據各種實施例的三個存儲卷的時間點拷貝級聯(lián)的示意圖。
圖1c是顯示根據各種實施例的映射的級聯(lián)的示意圖。
圖1d是顯示根據各種實施例的映射的級聯(lián)的示意圖。
圖2是根據各種實施例的方法的示例性實施例的流程圖。
圖3a是顯示根據各種實施例的示例性網格結構的示意圖。
圖3b是顯示根據各種實施例的卷的映射的示意圖。
圖3c至3f是顯示根據各種實施例的卷的映射的示意圖。
圖4a和4b是根據各種實施例的讀操作的流程圖。
圖5a至5c是根據各種實施例的方法的寫操作的例子的流程圖。
圖6a和6b是根據各種實施例的方法的拷貝操作的流程圖。
圖7a和7b是根據各種實施例的方法的清理操作的流程圖。
圖8是根據各種實施例的系統(tǒng)的框圖。
圖9是根據各種實施例的計算環(huán)境中的存儲系統(tǒng)的框圖。
圖10是根據各種實施例的計算機系統(tǒng)或云服務器的實施例的框圖。
圖11是根據各種實施例的云計算環(huán)境的示意圖。
圖12是根據各種實施例的云計算環(huán)境的抽象模型層的圖。
盡管本發(fā)明易于進行各種修改和替代形式,但是其細節(jié)在附圖中已通過例子被顯示并且將詳細地進行描述。然而應當理解,本發(fā)明不將本發(fā)明限制到所述的特定實施例。相反地,本發(fā)明將涵蓋落在本發(fā)明的精神和范圍內的所有修改、等效物和替代。
具體實施方式
所述的方法和系統(tǒng)通過將依賴鏈擴展到網格結構解決克隆卷及其所有快照的問題。而且,它實現該目標而不將元數據占位增加到超過已知方法。
時間點拷貝實現方式通過將尋址到第二圖像(今后目標)的讀i/o重定向到原始圖像(今后源)獲得第二圖像的存在的幻覺,除非區(qū)域已受到寫。在區(qū)域已成為寫的對象(到源或目標)的情況下,然后為了保持源和目標都擁有它們自身的數據拷貝的幻覺,調用懸停寫命令的操作的過程,并且在它不生效的情況下,發(fā)出從源讀被影響區(qū)域,用寫將讀數據應用到目標,然后(并且只有在所有步驟成功的時候)釋放懸停寫。后續(xù)寫到相同區(qū)域不需要被懸停,原因是目標將已經具有其自身的數據拷貝??梢栽谠S多環(huán)境中使用該寫時拷貝技術。
時間點的實現方式依靠管理上述決策(即,關于在目標處接收的讀是發(fā)出到源還是目標的決策,和關于是否可以懸停寫以允許發(fā)生寫時拷貝的決策)的數據結構。數據結構實質上跟蹤已從源拷貝到目標的數據的區(qū)域或顆粒,不同于還未拷貝的那些。在其最簡單形式中,該數據結構以位圖的形式被保持,其顯示哪些顆粒已被寫和哪些未被寫活動觸及。
一些存儲控制器允許用戶配置指定源的一個以上目標。這具有許多應用。例如,可以針對目標的每一個進行不同實驗。在另一例子中,目標可以在不同時間(例如一周中的不同天)被獲取,并且允許磁盤的歷史訪問,目的可能是從例如可能由病毒導致的一些數據損壞恢復。
美國專利no.7,386,695b2(fuente,carlosf.“具有多個拷貝目標的存儲系統(tǒng)(storagesystemwithmultiplecopytargeting)”,2008年6月10日)中提供一種具有多個拷貝目標的存儲系統(tǒng),其公開與主計算機裝置和多個受控存儲裝置可協(xié)作的存儲控制器,其包括可操作地在多個受控存儲裝置的一個處將數據對象寫到源數據圖像的主機寫部件:第一拷貝部件,其響應第一元數據狀態(tài)并且可操作地控制在多個受控存儲裝置中的一個處將數據對象拷貝到第一目標數據圖像;第二拷貝部件,其響應第二元數據狀態(tài)并且可操作地執(zhí)行下列中的一個:控制在多個受控存儲裝置中的一個處將數據對象拷貝到第二目標數據圖像;以及導致第一拷貝部件執(zhí)行第二目標數據圖像拷貝到第一目標數據圖像。
us7,386,695b2描述存儲卷的級聯(lián)配置,其包括實現以目標i/o為代價優(yōu)化源寫的時間點拷貝功能。
圖1a描繪使用存儲控制器8和兩個存儲磁盤10、12的備份過程。磁盤10和12可以形成磁盤的較大陣列的一部分,并且可以形成企業(yè)存儲解決方案的一部分。例如,磁盤10和12可以是與商業(yè)網站相關的存儲解決方案的一部分。如果在任何時間需要進行vdisk1的內容的備份,則時間點拷貝指令可以從存儲卷控制器8發(fā)送到限定源磁盤10(vdisk1)的磁盤10,并且也發(fā)送到作為時間點拷貝的目標的目標磁盤12(vdisk2)。時間點拷貝指令創(chuàng)建作為源磁盤10的特定vdisk的圖像的時間點拷貝。
在圖1a的實施例中,第一時間點拷貝指令的源磁盤10是vdisk1,并且目標磁盤12是vdisk2。時間點拷貝指令開始時間點拷貝過程,其創(chuàng)建從源磁盤10到目標磁盤12的映射。該映射在圖1中標示map1。在該特定時間點的vdisk1的圖像現在在vdisk2可獲得。這在vdisk1上創(chuàng)建數據的備份,并且可以允許在vdisk1的數據上進行測試和其他管理任務,而沒有丟失任何原始數據的伴隨風險,原因是它保存在原始源磁盤上。
當進行時間點拷貝時,它創(chuàng)建由映射14限定的兩個磁盤10和12之間的鏈接。數據現在可以在背景中被交叉拷貝,附加要求是對vdisk2(作為目標磁盤12)的任何訪問可以立即導致vdisk1的圖像的相關部分被交叉拷貝,并且將導致由磁盤10存儲的圖像的變化的對vdisk1的任何訪問也將導致未改變的數據在進行變化之前立即交叉拷貝到目標磁盤12。以該方式,到外部用戶,vdisk2可以存儲vdisk1的時間點拷貝,但是數據可以僅僅在上述的情況下物理地被交叉拷貝。
作為諸如時間點拷貝功能的備份過程的目標卷的存儲卷也可以是另一備份過程的源卷,因此創(chuàng)建存儲卷的級聯(lián)。
圖1b描繪由時間點拷貝映射14鏈接的三個存儲卷10、12和16的時間點拷貝級聯(lián)的例子。每個映射限定從源卷到目標卷的備份過程。磁盤b提供磁盤a10的備份,并且磁盤c16也通過磁盤b12提供磁盤a10的備份。鏈接不同存儲卷的時間點拷貝功能14可以在不同時間開始,其創(chuàng)建由相應存儲卷存儲的圖像的不同時間點拷貝,或者可以同時開始。
在a→b→c的時間點拷貝級聯(lián)中,其中a10、b12和c16是級聯(lián)中的磁盤,如圖1b中所示,并且箭頭是時間點拷貝映射,然后將(a,b)表示為從磁盤a10到磁盤b12的時間點拷貝映射,級聯(lián)具有映射(a,b)和(b,c)。在級聯(lián)的該實現方式中,對磁盤a10的任何新數據寫將根據保持磁盤b12上的圖像所需的相應的時間點拷貝功能導致對磁盤b12的寫,也就是“拷貝寫”。該寫到磁盤b12將導致磁盤b12的進一步讀,常常稱為“清理讀”,接著是對磁盤c16的另一拷貝寫。以該方式對級聯(lián)中的第一存儲卷10的一次寫可以導致遍布級聯(lián)的多個i/o清理操作。
當創(chuàng)建級聯(lián)時,新映射和新存儲卷插入級聯(lián)中,不加入到級聯(lián)的末端。在圖1b所示的級聯(lián)中,開始的第一備份過程將是a→c。當然后開始備份過程a→b時,新目標存儲卷b12有效地“插入”現有的源存儲卷a10和現有的目標存儲卷c16之間。該“插入”是純邏輯指令,表明磁盤c16將接收來自磁盤b12而不是磁盤a10的數據寫的事實。這是級聯(lián)實現方式與將具有來自磁盤a10的兩個獨立映射的常規(guī)布置的區(qū)別之處。
級聯(lián)可以用于實現單個數據源的多個時間點拷貝。例如,對于數據源p和在時間t1、t2和t3獲得的p的時間點拷貝,然后在時間t1使用數據目標t1獲得時間點拷貝,導致級聯(lián):p→t1。然后在時間t2使用數據目標t2獲得第二時間點拷貝,導致級聯(lián):p→t2→t1。實際上,t1作為t2的拷貝被建立,其在該時刻與p相同,并且t2是p的拷貝。描述其與p的區(qū)別的由t2保持的位圖也正確地描述其與t1的區(qū)別。對p的更新僅僅需要從p拷貝到t2的拷貝操作。相反地,對t2的更新可能需要兩個拷貝操作:從p到t2,和從t2到t1。這是由于對鏈的中間的更新強制對兩側的關系的拷貝。在t3加入第三備份t3產生級聯(lián):p→t3→t2→t1。
圖1c是顯示根據各種實施例的映射的級聯(lián)的示意圖。
更具體地,圖1c描繪兩個磁盤105和110的表示。如圖1c中所示,磁盤的上部分指示從相應磁盤展現給例如主機的數據。展現給主機的磁盤被稱為“vdisk”。vdisk是在存儲虛擬化中用于表示主計算機或主計算機應用程序用其執(zhí)行i/o操作的虛擬邏輯磁盤或卷的術語。圖1c也描繪磁盤的表示的下部分,其指示實際包含在相應磁盤上的數據。磁盤的這些下部分被稱為“pdisk”。pdisk是直接連接到物理存儲的對象。熟練技術人員將理解pdisk可以自身是位于獨立磁盤冗余陣列(raid)上的虛擬卷。熟練技術人員也將領會存儲控制器8在虛擬級管理拷貝,但是對邏輯磁盤的讀和寫不相應地導致對物理磁盤的讀和寫。磁盤1105將四個數據顆粒(或磁道)a、b、c、d展現給用戶并且實際上將那些顆粒a、b、c、d存儲在磁盤1105上。相比之下,磁盤2110將四個數據顆粒a、f、c、d展現給用戶。然而,如磁盤2110的底部分中所示,磁盤2110可以實際上僅僅將顆粒二和四(相應地,f和d)存儲在其上并且可以依靠存儲在磁盤1105中的數據來為主機展現顆粒a和c。第四顆粒(d)存儲在磁盤2110上,即使相同數據在磁盤1105上可用,例如由于先前數據d重寫到磁盤1105上。
如圖1c中附加地所示,映射2120是磁盤1105和磁盤2110之間的增量。也就是說,映射2120包括分裂位圖(split)122和區(qū)別位圖(diff)124。分裂位圖122在時間點過程中用于跟蹤數據的位置。更具體地,分裂位圖122中的“0”指示數據位于源磁盤上并且分裂位圖122中的“1”指示數據位于目標磁盤上。此外,區(qū)別位圖124在時間點拷貝過程中用于跟蹤源和目標磁盤(例如,虛擬磁盤)之間的區(qū)別。更具體地,區(qū)別位圖421中的“0”指示位于源磁盤和目標磁盤上的數據之間沒有區(qū)別,并且區(qū)別位圖124中的“1”指示位于源磁盤上的數據和位于目標磁盤上的數據之間有區(qū)別。
因此,參照圖1c的例子,映射2120的分裂位圖122指示顆粒a和c位于源磁盤(磁盤1105)上并且顆粒f和d位于目標磁盤(磁盤2110)上。而且,映射2120的區(qū)別位圖124指示源磁盤(磁盤1105)和目標磁盤(磁盤2110)的第一、第三和第四顆粒之間沒有區(qū)別。也就是說,第一、第三和第四顆粒在源磁盤和目標磁盤之間保持相同,即,相應地,a、c和d。然而,映射2120的區(qū)別位圖124指示第二顆粒在源磁盤(磁盤1105)和目標磁盤(磁盤2110)之間有區(qū)別。也就是說,如圖1中所示,第二顆粒已從磁盤1105上的b變?yōu)榇疟P2110上的f。因此,指示器125示出目標磁盤110基于分裂位圖122的內容指的是源磁盤105而不是映射2120的物理內容。
有利地,位圖122、124的使用允許存儲控制器8管理對存儲磁盤卷的虛擬和物理拷貝的訪問,包括當加入或從系統(tǒng)刪除拷貝時管理數據內容。當從鏈刪除拷貝時,表示數據更新的內容可以基于位圖122、124的內容“清理”到剩余鏈中的另一拷貝上。
圖1d是顯示根據各種實施例的映射的級聯(lián)的示意圖。
參照圖1d,a是源邏輯單元150,并且b和c顯示在過去的某個時間獲得的兩個目標160、170,c比b時間更近。
假設a150和b160已經處于時間點關系,并且c170作為a150的拷貝被加入。描述其與a150的區(qū)別的由b160保持的位圖161也正確地描述其與c170的區(qū)別,原因是在該點c170與a150相同,并且具有空位圖171。
對a150的更新可能需要從a150到c170拷貝數據的拷貝操作。相反地,對c170的更新可能需要兩個拷貝操作,從a到c,和從c到b。這是由于對鏈的中間的更新強制對兩側的關系的拷貝。
在b160處的位圖161和在c170處的位圖171可以被更新以指示數據映射并且跟蹤每個時間點拷貝的進度。
在當前描述的方法和系統(tǒng)中,具有快照的級聯(lián)的卷形成可能需要克隆的鏈。當具有快照的鏈的卷將被克隆時,鏈被鏡象并且被克隆鏈被創(chuàng)建。重復該過程將新鏈加入源鏈和先前鏈之間,并且以該方式,可以構造網格。
圖2是根據各種實施例的方法的示例性實施例的流程圖200。
描述一種用鏈克隆進行存儲拷貝的方法,其以依賴鏈或級聯(lián)的形式提供201具有多個快照的卷。
卷及其快照的依賴鏈可以立即被克隆以創(chuàng)建202包括卷、多個快照和保持快照所需的關聯(lián)映射和元數據的鏡鏈。
重復203克隆步驟以加入新鏡鏈,在原始卷依賴鏈和先前被克隆鏡鏈之間加入新鏡鏈??寺〉闹貜?03可以根據需要發(fā)生多次。
克隆可以創(chuàng)建204原始依賴鏈和被克隆鏡鏈的卷和快照的網格結構或表示。網格結構可以是虛擬結構,原因在于它不是卷和快照的物理布置,而是代表性布置。網格結構可以表示為具有在第一方向上的正常鏈操作和在垂直于第一方向的第二方向上的鏡象拷貝鏈。鏡象鏈被稱為稀疏拷貝鏈。稀疏拷貝是物理地駐留在快照上的數據而不是快照的整個邏輯圖像的拷貝。
卷節(jié)點被定義為卷、快照、稀疏拷貝卷和稀疏拷貝快照中的任何一個。每個卷節(jié)點具有針對依賴鏈中的源、依賴鏈中的目標、稀疏拷貝源和稀疏拷貝目標限定的關聯(lián)映射205。
每個卷節(jié)點具有關聯(lián)元數據206從而當執(zhí)行操作時保證到網格中的正確源或目標的映射。元數據呈目標狀態(tài)和高水印敘述的形式。每個卷節(jié)點的目標狀態(tài)指示數據是否在目標卷節(jié)點上。目標狀態(tài)可以作為位圖被提供并且該元數據在本文中作為“.bit”被參考。高水印是指示稀疏拷貝過程是否考慮磁盤的該區(qū)域的元數據。高水印用于指示轉向鏈中的哪一個。如果僅僅有磁盤的一個顆粒,高水印可以作為位圖被提供。對于多顆粒磁盤,高水印敘述將是不等式。高水印敘述元數據在本文中作為“.hwm”被參考。元數據可以附加地包括稱為“sparsehead”的稀疏鏈的鏈頭的指示,其用于背景拷貝和清理操作。
參考映射和元數據執(zhí)行對卷節(jié)點的讀和寫的輸入和輸出操作207。另外,執(zhí)行208背景拷貝和清理操作以保持卷節(jié)點的映射和元數據。
方法保持由網格中的卷節(jié)點展現的圖像,同時匹配由每個快照及其克隆使用的空間。這可以被實現而不限制對網格中的任何卷的i/o訪問。
圖3a是顯示根據各種實施例的示例性網格結構的示意圖。
參照圖3a,假設有具有兩個快照a1302和a2303的卷a301。如果鏈被克隆到鏈b311上并且然后被克隆到鏈c321上,則將有如圖3a中所示的網格。
‘正?!蕾囨滐@示為水平,例如從a301到a2303到a1302。用于鏈克隆的鏈顯示為豎直,例如從a301到c321到b311,從a2303到c2323到b2313,和從a1302到c1322到b1312。豎直鏈被稱為稀疏拷貝鏈。稀疏拷貝是物理地駐留在快照上的數據而不是快照的整個邏輯圖像的拷貝。
通過使用位圖限定數據是否在目標卷節(jié)點上和附加高水印,該解決方案描述可以如何保持由網格中的所有卷展現的圖像。
可以一次執(zhí)行多個鏈克隆,導致稀疏拷貝鏈豎直向下定向和正常鏈操作水平的示例性網格結構。
圖3b是顯示根據各種實施例的卷的映射的示意圖。操作的基本單元是圖3b中所示的結構。
卷v351是網格中的卷,s352是正常依賴鏈中的源,并且t353是正常依賴鏈中的目標。顯示稀疏拷貝源bs354和稀疏拷貝目標bt355。因此基本單元或映射具有形式map(v)=(s,t,bs,bt)。
在示例性網格中,如上面限定的映射是:
在圖3c至3f中顯示以上映射。圖3c顯示沿著網格的水平鏈從源到卷的映射360。圖3d顯示沿著網格的水平鏈從目標到卷的映射370。
圖3e顯示沿著網格的豎直鏈從稀疏源到卷的映射380。圖3f顯示沿著網格的豎直鏈從稀疏目標到卷的映射390。
當卷是稀疏鏈的一部分時修改i/o操作。當卷v具有稀疏源卷時,元數據被提供并且解釋為:
1.指示邏輯塊地址(lba)是否在目標上的分裂位圖。
2.指示是讀稀疏鏈(或讀哪個稀疏鏈)還是正常鏈的高水印。
這意味著如果分裂位圖中的位被設置,則數據在目標卷上。如果數據不在目標卷上,則高水印指示轉向哪個鏈。
在網格中有多個高水印,在我們的例子中將有在a和c、c和b、a2和c2、c2和b2、a1和c1以及最后c1和b1之間的高水印。一般當稀疏拷貝進行時高水印將增加以指示物理磁盤的不同區(qū)域必要時已被拷貝并且因此改變未來i/o的決策。
在以下例子中,假設每個卷具有僅僅一個顆粒。可以進行該假設而不損失一般性,原因是所有顆粒彼此獨立。另外,根據各種實施例,假設所有寫是全顆粒寫。將該算法擴展到部分顆粒寫可能是簡單的,但是這使基本算法被在該階段不必要的細節(jié)遮掩。
對于多顆粒磁盤,高水印敘述將是不等式。例如,如果有3顆粒磁盤(顆粒0到2)并且如果在1顆粒處詢問高水印,則詢問將是hwm<1。類似地,如果在顆粒2處詢問位圖,則詢問將考慮第二位是否被設置。
在以下示例性算法中,以下屬性用于映射,map(v)=(s,t,bs,bt):
1.map(v).hwm指的是卷map.bs和v之間的高水印。這可以是位圖或實際高水印。由于在該解釋中假設僅僅1個顆粒,因此可以假設位圖。
如果map(v).bs=null則hwm返回真。
2.map(v).bit表示卷map.s和v之間的位圖的內容。如果位被設置則這返回真,否則為假。
如果map(v).s=null則bit返回真。
3.read(v)表示讀卷v的內容。
4.write(v,d)表示將d寫到卷v。
5.如果x=null則empty(x)為真,否則為假。
針對卷v存儲的映射和元數據可以包括:
映射map(v)=(s,t,bs,bt),其元素可以寫為:
map(v).s
map(v).t
map(v).bs
map(v).bt
分裂位圖–如果‘數據’在目標上沒有映射在目標上,包括下列:
map(v).bit–在卷源(map.s)和v之間,用于網格讀操作;
map(map(v).t).bit–在卷目標(map.t)和v之間,用于網格寫操作;
map(map(v).bt).bit–在卷稀疏目標(map.bt)和v之間,用于網格寫操作;
map(map(map(v).t).bs).bit–用于網格清理操作;以及
map(sparsehead(v)).bit–返回稀疏鏈的鏈頭,用于網格拷貝操作。
高水印–指示使用稀疏鏈或正常鏈的哪個,包括:
map(v).hwm–在卷稀疏源(map.bs)和v之間,用于網格讀操作;
map(map(v).t).hwm–在卷目標(map.t)和v之間,用于網格寫操作;
map(map(v).bt).hwm–在卷稀疏目標(map.bt)和v之間,用于網格寫操作。
讀算法
當主機提交對網格中的卷的讀時,使用讀算法,其被稱為網格讀或lread。因此卷v的讀的算法變?yōu)橛上铝邢薅ǖ膌read(v):
寫算法
當主機提交對網格中的卷的寫時,使用寫算法,其被稱為網格寫或lwrite。數據x到卷v的寫的算法變?yōu)橛上铝邢薅ǖ膌write(v,x):
背景拷貝算法
為了限定背景拷貝算法,可以首先介紹一些記法。需要返回該稀疏鏈的鏈頭的功能,sparsehead(v)。在圖3a中,這可以是:
sparsehead(b)=sparsehead(c)=sparsehead(a)=a
sparsehead(b2)=sparsehead(c2)=sparsehead(a2)=a2
sparsehead(b1)=sparsehead(c1)=sparsehead(a1)=a1
使用該功能,算法、網格拷貝或lcopy為
清理算法
網格清理算法或lclean保證顆粒不由任何其他目標卷依賴。lclean算法為
使用這些算法,卷及其快照的鏈可以在使用級聯(lián)方法的寫時拷貝環(huán)境中被克隆以便保持源卷i/o性能預期。
從這些算法,本領域的技術人員可以操作中間未克隆鏈元素。在鏈中可以有在該鏈的克隆中不需要的卷。
在稀疏拷貝過程完成之前也可以操作網格中的快照的停止。
在稀疏拷貝過程完成之前也可以恢復主卷。
參照圖4a,流程圖400示出根據各種實施例的讀操作。
針對卷節(jié)點執(zhí)行401網格讀操作??梢源_定402是否有從源或稀疏源節(jié)點到所需卷節(jié)點的映射。如果沒有映射,則可以讀403卷節(jié)點。
然而,如果有映射,可以讀404卷節(jié)點的元數據以通過讀分裂位圖確認卷節(jié)點是否在目標上。元數據也可以指示可以根據需要讀405元數據的高水印以確認讀正確鏈。
參照圖4b,流程圖410示出根據上面給出的網格讀算法和使用上面介紹的記法的讀操作的詳細示例性實施例。
針對卷v執(zhí)行網格讀操作,421。確定411empty(map(v).s)是否為真。如果是,則沒有從源到卷的映射。然后確定412empty(map(v).bs)是否為真。如果是,則沒有從稀疏源到卷的映射。所以讀413卷,read(v)。
如果在412確定empty(map(v).bs)為假,則檢查414map(v).bit的位圖和高水印并且如果任一為真則讀413卷,read(v)。如果任一不為真,則讀415被映射稀疏源的網格讀,lread(map(v).bs)。
如果在411確定empty(map(v).s)為假,則確定416empty(map(v).bs)是否為真。如果是則檢查417map(v).bit的位圖,并且如果為真,則讀在目標上并且讀卷413,read(v)。如果map(v).bit的位圖417不為真,則讀418的被映射源的網格讀,lread(map(v).s)。
如果在411確定empty(map(v).s)為假,并且然后確定416empty(map(v).bs)為假,則檢查419map(v).bit的位圖,并且如果為真,則讀在目標上并且讀卷413,read(v)。
如果在411確定empty(map(v).s)為假,并且然后確定416empty(map(v).bs)為假,則檢查419map(v).bit的位圖,并且如果為假,則讀不在目標上并且檢查420map(v).hwm的高水印,并且如果為真,則網格讀被映射源418,lread(map(v).s)。如果map(v).hwm為假則方法網格讀被映射稀疏源415,lread(map(v).bs)。
參照圖5a,流程圖500示出根據各種實施例的寫操作的例子。
針對卷節(jié)點執(zhí)行501網格寫操作。根據需要參考502呈目標位圖和高水印的形式的映射和元數據。需要時這可以包括對映射的寫操作503。更新505呈目標位圖和高水印的形式的映射和元數據。
參照圖5b和5c,流程圖510和530示出根據上面給出的網格寫算法和使用上面介紹的記法的寫操作的詳細示例性實施例。
針對卷節(jié)點v執(zhí)行511網格寫操作以寫x??梢源_定512empty(map(v).bs)是否為真。如果它為假,則方法進入下面所述的圖5c。
如果確定512empty(map(v).bs)為真,則可以確定513empty(map(v).t)是否為真。如果empty(map(v).bt)為假,則確定514map(map(v).t).bit是否為真。如果它為真,則方法循環(huán)回到步驟517,但是如果它為假,則可以執(zhí)行515write(map(v).t,lread(v))的寫操作。如果map(map(v).t).bit設置516為真,則方法可以循環(huán)回到步驟517。
在步驟517,可以確定empty(map(v).bt)是否為真。如果在517empty(map(v).bt)為真,則方法將x寫到卷節(jié)點v518,write(v,x)。如果empty(map(v).bt)為假,則確定519map(map(v).bt).bit是否為真。如果在519map(map(v).bt).bit為真,則方法將x寫到卷節(jié)點v518,write(v,x)。如果在519map(map(v).bt).bit為假,則確定520map(map(v).bt).hwm是否為真。如果在520map(map(v).bt).hwm為真,則方法將x寫到卷節(jié)點v518,write(v,x)。如果在520map(map(v).bt).hwm為假,則執(zhí)行521write(map(v).bt,lread(v))的寫操作并且設置522map(map(v).bt).bit,并且然后方法循環(huán)回到將x寫到卷節(jié)點v518,write(v,x)。
一旦在518執(zhí)行write(v,x),確定523empty(map(v).s)是否為真。如果它為真則在524確定empty(map(v).bs)是否為真。如果524為真,則方法結束526。如果523或524為假,則map(v).bit設置525為真并且然后方法結束526。
參照圖5c,流程圖530顯示圖5b內的方法,當在512確定empty(map(v).bs)為假時執(zhí)行所述方法。
確定531empty(map(v).t)是否為真。如果它為假,則確定532map(map(v).t).bit是否為真。如果它為真,則方法循環(huán)回到步驟533。如果它為假,則確定534map(map(map(v).t).bs).hwm是否為真。如果534為真則確定535map(map(v).t).hwm是否為真。如果535為真或534為假則對write(map(v).t,lread(v))執(zhí)行536寫操作并且將map(map(v).t).bit設置537為真。如果535為假,則方法進入步驟533。
如果在531empty(map(v).t)為真,或在532map(map(v).t).bit為真,或在步驟537之后,方法進入步驟533。
步驟533確定empty(map(v).bt)是否為真。如果它為真,則方法進入圖5b。如果empty(map(v).bt)為假,則確定538map(map(v).bt).hwm是否為真,如果是則方法循環(huán)回到圖5b。如果538為假,則對write(map(v).bt,lread(map(v).bt)執(zhí)行539寫操作并且將map(map(v).bt).bit設置540為真。然后方法循環(huán)回到圖5b。
參照圖6a,流程圖600示出根據各種實施例的拷貝操作的一般化例子。
可以針對卷節(jié)點執(zhí)行601網格背景拷貝操作。
如果有從稀疏源到卷的映射602并且卷不是高水印并且卷不是目標,則進行下一步驟。
如果有稀疏鏈的鏈頭的空映射603并且源或稀疏鏈的鏈頭在卷處的目標上,則進行下一步驟。
寫操作604將卷的網格讀寫到卷。針對卷設置605位圖和高水印。
參照圖6b,流程圖610示出根據上面給出的網格拷貝算法和使用上面介紹的記法的背景拷貝操作的詳細示例性實施例。
可以針對卷v執(zhí)行611網格拷貝操作。
確定612empty(map(v).bs)是否為真,如果是則方法結束613。如果empty(map(v).bs)為假,則確定614map(v).hwm是否為真,如果是則方法結束613。如果map(v).hwm為假,則確定615map(v).bit是否為真,如果是則方法結束613。
如果map(v).bit為假,則確定616empty(map(map(sparsehead(v)).s)是否為真。這確定是否沒有到稀疏鏈的鏈頭的映射。如果是,則進行對卷v的lread(v)的寫617,write(v.lread(v))。另外,將map(v).bit設置為真618并且將map(v).hwm設置為真619,并且方法結束613。
如果在616確定empty(map(map(sparsehead(v)).s)為假,則確定620map(sparsehead(v)).bit是否為真。如果是,則進行對卷v的lread(v)的寫617,write(v.lread(v))。另外,將map(v).bit設置為真618并且將map(v).hwm設置為真619,并且方法結束613。
如果在620確定map(sparsehead(v)).bit為假,則將map(v).bit設置為真619并且方法結束613。
參照圖7a,流程圖700示出根據各種實施例的方法的清理操作。
針對卷節(jié)點執(zhí)行701網格清理操作。如果有從稀疏源節(jié)點到卷節(jié)點的映射和從稀疏目標或從目標節(jié)點到卷節(jié)點的映射,則需要清理操作702。清理操作包括寫操作和元數據的更新703。
參照圖7b,流程圖720示出根據上面給出的網格清理算法和使用上面介紹的記法的清理操作的更詳細示例性實施例。
可以針對卷節(jié)點v執(zhí)行網格清理操作721。可以確定722empty(map(v).bt)是否為真。如果它為真,則確定723empty(map(v).t)是否為真。如果是,則方法結束723,原因是不需要清理。
如果確定722empty(map(v).bt)為假,則確定723map(v).bit是否為真。如果在733map(v).bit為假,則方法循環(huán)回到723的下一步驟。如果在733map(v).bit為真,則確定734(map(v).bt).hwm是否為真,并且如果是,則方法循環(huán)回到723的下一步驟。如果在734map(v).bt).hwm為假,則確定735(map(v).bt).bit是否為真,并且如果是,則方法循環(huán)回到723的下一步驟。如果在735(map(v).bt).bit為假,則方法執(zhí)行write(map(v).bt,lread(v))的寫736并且將map(map(v).bt).bit設置737為真。然后方法循環(huán)回到723的下一步驟。
如果確定722empty(map(v).bt)為真但是確定723empty(map(v).t)為假,則方法進入步驟726。如果確定723empty(map(v).t)為真,則方法在724結束。
在步驟726確定map(map(v).t).bit是否為真。如果它為真,則方法結束724。
如果確定726map(map(v).t).bit為假,則確定727map(map(v).t).hwm是否為假。如果它為假,則方法結束724。
然而,如果高水印為真,則確定728map(v).bit是否為真。如果它為真則執(zhí)行729write(map(v).t,lread(map(v).t))的寫操作。在步驟730,將map(map(v).t).bit設置為真,并且方法結束724。
如果在728map(v).bit為假,則確定731map(v).hwm是否為真,并且如果是,則方法結束724。如果map(v).hwm為假,則確定732map(sparsehead(v)).bit是否為真,指示節(jié)點是稀疏鏈的鏈頭。如果為真,則方法繼續(xù)寫729和730,如果為假則方法結束724。
圖8是根據各種實施例的系統(tǒng)的框圖??驁D示出包括所述的功能性的存儲控制器800的示例性實施例。
存儲控制器可以包括至少一個處理器801,硬件模塊,或用于執(zhí)行所述部件的功能的電路,所述部件可以是在至少一個處理器上執(zhí)行的軟件單元。存儲器802可以配置成將計算機指令803提供給至少一個處理器801以執(zhí)行部件的功能性。
存儲控制器800可以包括用于創(chuàng)建卷節(jié)點的閃速拷貝圖像的閃速拷貝部件810。
克隆部件811可以被提供用于克隆卷及其快照以創(chuàng)建包括保持快照所需的任何關聯(lián)元數據的鏡鏈??寺〔考?11可以創(chuàng)建多個克隆。
網格結構部件812可以被提供用于結構化原始依賴鏈和被克隆鏡鏈的卷和快照的網格。
映射部件813可以保持網格結構的節(jié)點之間的映射。元數據部件814可以保持和讀與網格結構中的卷節(jié)點關聯(lián)的元數據。元數據部件814可以包括目標指示器部件815和高水印元數據部件816。
讀操作部件821可以被提供用于執(zhí)行網格讀操作。寫操作部件822可以被提供用于執(zhí)行網格寫操作??截惒僮鞑考?23可以被提供用于執(zhí)行網格拷貝操作。清理操作部件824可以被提供用于執(zhí)行網格清理操作。
即時虛擬拷貝指令開始即時虛擬拷貝過程,其可以創(chuàng)建從源卷到目標卷的映射。在該特定時間點的源卷的圖像現在在目標卷上可獲得。這在源卷上創(chuàng)建數據的備份,并且也允許在源卷的數據上進行測試和其他管理任務,而沒有丟失任何原始數據的伴隨風險。
圖9是根據各種實施例的計算環(huán)境中的存儲系統(tǒng)的框圖。
存儲控制器900在網絡990上接收來自生產計算機950a,b,…k的輸入/輸出(i/o)請求,其指向配置成相應地具有卷(例如,邏輯單元號,邏輯器件等)922a,b…n和942a,b…l的存儲裝置920、940,其中n和l可以是不同整數值或相同整數值。卷可以是存儲裝置的任何邏輯或物理元件。
存儲控制器900還包括級聯(lián)引擎910。級聯(lián)引擎910執(zhí)行數據(例如,從生產計算機950a、950b、950k)即時虛擬拷貝到存儲裝置920、940或存儲裝置920、940之間。在某些實施例中,級聯(lián)引擎910可以在連接到存儲控制器900的另一存儲控制器處被執(zhí)行,作為在存儲控制器900處執(zhí)行的替代或附加。
實施例可應用于在任何存儲介質之間傳送數據。例如,可以使用存儲介質位于單個存儲控制器處的某些實施例,然而,可以使用存儲介質位于不同存儲控制器、不同物理地點等處的某些替代實施例。每個存儲設備可以是用于即時虛擬拷貝的源或目標。
在某些實施例中,可移動存儲裝置(作為存儲裝置920、940的替代或附加)可以用于保持拷貝??梢苿哟鎯ρb置可以位于存儲控制器900處。
存儲控制器900還可以包括處理器聯(lián)合體(未顯示)并且可以包括本領域中已知的任何存儲控制器或服務器。
生產計算機950a,b,…k可以包括本領域中已知的任何計算設備。存儲控制器900和(一個或多個)生產計算機系統(tǒng)950a,b,…k經由網絡990通信,所述網絡可以包括任何類型的網絡,例如,存儲區(qū)域網(san),局域網(lan),廣域網(wan),因特網,內聯(lián)網等。存儲裝置920、940均可以包括存儲設備的陣列,例如直接存取存儲設備(dasds),簡單磁盤捆綁(jbod),獨立磁盤冗余陣列(raid),虛擬化設備等。
另外,盡管圖9示出單個存儲控制器900,但是本領域的技術人員將知道多個存儲控制器可以經由網絡(例如,局域網(lan),廣域網(wan),因特網等)被連接,并且多個存儲控制器中的一個或多個可以實現所述方法和系統(tǒng)。
用于實現所述系統(tǒng)的方面的計算系統(tǒng)可以被提供,如關于圖10所述,其在云計算實現方式的背景下給出,但是同樣可以適用于非云計算實現方式。
本發(fā)明可以被實現為系統(tǒng)、方法和/或計算機程序產品。計算機程序產品可以包括計算機可讀存儲介質,其上載有用于使處理器實現本發(fā)明的各個方面的計算機可讀程序指令。
計算機可讀存儲介質可以是可以保持和存儲由指令執(zhí)行設備使用的指令的有形設備。計算機可讀存儲介質例如可以是――但不限于――電存儲設備、磁存儲設備、光存儲設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、靜態(tài)隨機存取存儲器(sram)、便攜式壓縮盤只讀存儲器(cd-rom)、數字多功能盤(dvd)、記憶棒、軟盤、機械編碼設備、例如其上存儲有指令的打孔卡或凹槽內凸起結構、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸的電信號。
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/處理設備,或者通過網絡、例如因特網、局域網、廣域網和/或無線網下載到外部計算機或外部存儲設備。網絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網關計算機和/或邊緣服務器。每個計算/處理設備中的網絡適配卡或者網絡接口從網絡接收計算機可讀程序指令,并轉發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計算機可讀存儲介質中。
用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(isa)指令、機器指令、機器相關指令、微代碼、固件指令、狀態(tài)設置數據、或者以一種或多種編程語言的任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言—諸如smalltalk、c++等,以及常規(guī)的過程式編程語言—諸如“c”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡—包括局域網(lan)或廣域網(wan)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現場可編程門陣列(fpga)或可編程邏輯陣列(pla),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現本發(fā)明的各個方面。
這里參照根據本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或框圖描述了本發(fā)明的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數據處理裝置的處理器執(zhí)行時,產生了實現流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指令使得計算機、可編程數據處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的計算機可讀介質則包括一個制造品,其包括實現流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
也可以把計算機可讀程序指令加載到計算機、其它可編程數據處理裝置、或其它設備上,使得在計算機、其它可編程數據處理裝置或其它設備上執(zhí)行一系列操作步驟,以產生計算機實現的過程,從而使得在計算機、其它可編程數據處理裝置、或其它設備上執(zhí)行的指令實現流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
附圖中的流程圖和框圖顯示了根據本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現,或者可以用專用硬件與計算機指令的組合來實現。
事先應當理解盡管本發(fā)明包括對云計算的詳細描述,但是本文中所述的教導的實現方式不限于云計算環(huán)境。而是,本發(fā)明的實施例能夠與現在已知或以后發(fā)展的任何其他類型的計算環(huán)境結合實現。
云計算是能夠方便、按需網絡訪問可配置計算資源(例如,網絡、網絡帶寬、服務器、處理、存儲器、存儲裝置、應用程序、虛擬機和服務)的共享池的一種服務交付的模式,其可以快速地被提供和釋放,管理工作或與服務提供商的交互很少。該云模式可以包括至少五個特性,至少三個服務模式,和至少四個部署模式。
特性如下:
按需自助服務:云顧客可以根據需要自動地單方提供計算能力,例如服務器時間和網絡存儲,而不需要與服務提供商人工交互。
寬網絡訪問:能力在網絡上可用并且通過標準機構訪問,其通過不同種類的瘦或胖客戶平臺(例如,移動電話、膝上型電腦和pdas)促進使用。
資源池化:提供商的計算資源被池化以使用多用戶模式服務多個顧客,動態(tài)地分配和根據需要重新分配不同物理和虛擬資源。有一種位置獨立感,原因在于顧客一般不能控制或知道被提供資源的實際位置,但是可以能夠以更高抽象水平指定位置(例如,國家、州或數據中心)。
快速彈性:能力可以快速地和彈性地并且在一些情況下自動地被提供以快速地向外擴展和快速地釋放以快速地向內擴展。對于顧客,可用于提供的能力似乎不受限制并且可以在任何時間以任何量被購買。
計量服務:云系統(tǒng)通過以適合于服務類型(例如,存儲、處理、帶寬和活動用戶帳戶)的某個抽象水平杠桿調節(jié)計量能力自動地控制和優(yōu)化資源使用。資源使用可以被監(jiān)測、控制和報告,為被使用服務的提供商和顧客提供透明性。
服務模式如下:
軟件即服務(saas):提供給顧客的能力是使用在云基礎設施上運行的提供商的應用程序。應用程序通過諸如網頁瀏覽器(例如,基于網頁的電子郵件)的瘦客戶接口從各種客戶裝置可訪問。顧客不管理或控制包括網絡、服務器、操作系統(tǒng)、存儲乃至單獨的應用能力的底層云基礎設施,可能的例外是有限的用戶特定應用配置設置。
平臺即服務(paas):提供給顧客的能力是將使用提供商支持的編程語言和工具創(chuàng)建的顧客創(chuàng)建的或獲取的應用程序部署到云基礎設施上。顧客不管理或控制包括網絡、服務器、操作系統(tǒng)或存儲的底層云基礎設施,但是能控制部署的應用程序和可能的應用托管環(huán)境配置。
基礎設施即服務(iaas):提供給顧客的能力是提供處理、存儲、網絡和其他基礎計算資源,其中顧客能夠部署和運行可以包括操作系統(tǒng)和應用程序的任意軟件。顧客不管理或控制底層云基礎設施,但是能控制操作系統(tǒng)、存儲、部署的應用程序,并且可能有限控制選擇聯(lián)網部件(例如,主機防火墻)。
部署模式如下:
私有云:云基礎設施僅僅供組織操作。它可以由組織或第三方管理并且可以以本地部署或外部部署存在。
團體云:云基礎設施由若干組織共享并且支持具有共同關心的問題(例如,任務、安全性要求、政策和合規(guī)考慮)的特定團體。它可以由組織或第三方管理并且可以以本地部署或外部部署存在。
公共云:云基礎設施可用于一般公眾或大產業(yè)集群并且由銷售云服務的組織擁有。
混合云:云基礎設施是兩個或更多個云(私有、團體或公共)的組合,其保持唯一實體,但是由允許數據和應用便攜性的標準化或專有技術(例如,用于云之間的負荷平衡的云爆發(fā))捆綁在一起。
云計算環(huán)境是目標集中于無國界、低耦合、模塊性和語義互操作性的服務。云計算的核心是包括互連節(jié)點的網絡的基礎設施。
圖10是根據各種實施例的計算機系統(tǒng)或云服務器的實施例的框圖。
顯示可以實現為云計算節(jié)點1000的計算機系統(tǒng)或服務器的例子的示意圖。
云計算節(jié)點1000僅僅是合適的云計算節(jié)點的一個例子并且不旨在提出關于本文中所述的發(fā)明的實施例的使用或功能的范圍的任何限制。無論如何,云計算節(jié)點1000能夠實現和/或執(zhí)行上文中所述的任何功能性。
在云計算節(jié)點1000中有計算機系統(tǒng)/服務器1012,其可用許多其他通用或專用計算系統(tǒng)環(huán)境或配置操作??梢赃m合與計算機系統(tǒng)/服務器1012一起使用的公知的計算系統(tǒng)、環(huán)境和/或配置的例子包括、但不限于個人計算機系統(tǒng),服務器計算機系統(tǒng),瘦客戶端,胖客戶端,手持式或膝上型設備,多處理器系統(tǒng),基于微處理器的系統(tǒng),機頂盒,可編程消費電子產品,網絡pcs,微計算機系統(tǒng),主計算機系統(tǒng),和包括以上系統(tǒng)或設備的任何一個的分布式云計算環(huán)境,等等。
可以在由計算機系統(tǒng)執(zhí)行的諸如程序模塊的計算機系統(tǒng)可執(zhí)行指令的一般背景下描述計算機系統(tǒng)/服務器1012。一般而言,程序模塊可以包括執(zhí)行特定任務或實現特定抽象數據類型的例程、程序、對象、部件、邏輯、數據結構等。計算機系統(tǒng)/服務器1012可以在分布式云計算環(huán)境中實施,其中任務由通過通信網絡鏈接的遠程處理設備執(zhí)行。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲器存儲設備的本地和遠程計算機系統(tǒng)存儲介質中。
如圖10中所示,以通用計算設備的形式顯示云計算節(jié)點1000中的計算機系統(tǒng)/服務器1012。計算機系統(tǒng)/服務器1012的部件可以包括、但不限于一個或多個處理器或處理單元1016,系統(tǒng)存儲器1028,和將包括系統(tǒng)存儲器1028的各種系統(tǒng)部件聯(lián)接到處理器1016的總線1018。
總線1018表示總線結構的若干類型中的任何一種或多種,包括存儲器總線或存儲器控制器,外圍總線,加速圖形端口,和處理器或本地總線,其使用各種總線架構中的任何一種。作為例子,并且非限制地,這樣的架構包括工業(yè)標準架構(isa)總線,微通道架構(mca)總線,加強isa(eisa)總線,視頻電子標準協(xié)會(vesa)本地總線,和外圍設備互連(pci)總線。
計算機系統(tǒng)/服務器1012典型地包括各種計算機系統(tǒng)可讀介質。這樣的介質可以是由計算機系統(tǒng)/服務器1012可訪問的任何可用的介質,并且它包括易失性和非易失性介質、可移動和不可移動介質。
系統(tǒng)存儲器1028可以包括呈易失性存儲器的形式的計算機系統(tǒng)可讀介質,例如隨機存取存儲器(ram)1030和/或高速緩沖存儲器1032。計算機系統(tǒng)/服務器1012還可以包括其他可移動/不可移動、易失性/非易失性計算機系統(tǒng)存儲介質。僅僅作為例子,存儲系統(tǒng)1034可以被提供用于對不可移動、非易失性磁性介質(未顯示并且典型地稱為“硬盤驅動器”)進行讀和寫。盡管未顯示,但是用于對不可移動、非易失性磁盤(例如,“軟盤”)進行讀和寫的磁盤驅動器和用于對可移動、非易失性光盤(例如cd-rom、dvd-rom或其他光介質)進行讀或寫的光盤驅動器可以被提供。在這樣的情況下,每個可以通過一個或多個數據媒體接口連接到總線1018。如下面將進一步所示和所述,存儲器1028可以包括至少一個程序產品,其具有配置成執(zhí)行各種實施例的功能的一組(例如,至少一個)程序模塊。
作為例子并且非限制地,具有一組(例如,至少一個)程序模塊1042的程序/實用程序1040可以存儲在存儲器1028中,以及操作系統(tǒng),一個或多個應用程序,其他程序模塊,和程序數據。操作系統(tǒng)、一個或多個應用程序、其他程序模塊和程序數據或其某個組合的每一個可以包括聯(lián)網環(huán)境的實現方式。程序模塊1042一般執(zhí)行實施例的功能和/或方法,如本文中所述。
計算機系統(tǒng)/服務器1012也可以與下列通信:一個或多個外部設備1014,例如鍵盤,定點設備,顯示器1024等;能夠使用戶與計算機系統(tǒng)/服務器1012交互的一個或多個設備;和/或能夠使計算機系統(tǒng)/服務器1012與一個或多個其他計算設備通信的任何設備(例如,網卡、調制解調器等)。這樣的通信可以經由輸入/輸出(i/o)接口1022發(fā)生。更進一步地,計算機系統(tǒng)/服務器1012可以經由網絡適配器1020與一個或多個網絡通信,例如局域網(lan),廣域網(wan),和/或公用網(例如,因特網)。如圖所示,網絡適配器1020經由總線1018與計算機系統(tǒng)/服務器1012的其他部件通信。應當理解盡管未顯示,其他硬件和/或軟件部件可以與計算機系統(tǒng)/服務器1012結合使用。例子包括、但不限于:微碼,設備驅動器,冗余處理單元,外部磁盤驅動陣列,raid系統(tǒng),磁帶驅動器,和數據檔案存儲系統(tǒng)等。
圖11是根據各種實施例的云計算環(huán)境的示意圖。
描繪示例性云計算環(huán)境1150。如圖所示,云計算環(huán)境1150包括一個或多個云計算節(jié)點1000,由云顧客使用的本地計算設備可以與其通信,例如,個人數字助理(pda)或蜂窩電話1154a,桌上型計算機1154b,膝上型計算機1154c,和/或汽車計算機系統(tǒng)1154n。節(jié)點1000可以彼此通信。它們可以在一個或多個網絡中物理地或虛擬地分組(未顯示),例如,如上文中所述的私有、團體、公共或混合云,或它們的組合。這允許云計算環(huán)境1150提供基礎設施、平臺和/或軟件作為服務,對于所述服務云顧客不需要保持本地計算設備上的資源。應當理解圖11中所示的計算設備1154a-n的類型旨在僅僅是示例性的并且計算節(jié)點1000和云計算環(huán)境1150可以在任何類型的網絡和/或網絡可尋址連接上與任何類型的計算機化設備通信(例如,使用網頁瀏覽器)。
圖12是根據各種實施例的云計算環(huán)境的抽象模型層的圖。
顯示由云計算環(huán)境1150(圖11)提供的一組功能抽象層。事先應當理解圖12中所示的部件、層和功能旨在僅僅是示例性的并且本發(fā)明的實施例不限于此。如圖所示,提供以下層和相應功能:
硬件和軟件層1260包括硬件和軟件部件。硬件部件的例子包括:主機1261;基于risc(精簡指令集計算機)架構的服務器1262;服務器1263;刀片式服務器1264;存儲設備1265;以及網絡和聯(lián)網部件1266。在一些實施例中,軟件部件包括網絡應用服務器軟件1267和數據庫軟件1268。
虛擬化層1270提供可以從其提供虛擬實體的以下例子的抽象層:虛擬服務器1271;虛擬存儲裝置1272;虛擬網絡1273,其包括虛擬私有網絡;虛擬應用和操作系統(tǒng)1274;以及虛擬客戶端1275。
在一個例子中,管理層1280可以提供下面所述的功能。資源配置1281提供計算資源和用于在云計算環(huán)境中執(zhí)行任務的其他資源的動態(tài)采購。計量和定價1282在云計算環(huán)境中使用資源時提供成本跟蹤,并且為這些資源的消耗記帳或計價。在一個例子中,這些資源可以包括應用軟件許可證。安全措施提供云顧客和任務的身份驗證,以及數據和其他資源的保護。用戶門戶1283為顧客和系統(tǒng)管理員提供對云計算環(huán)境的訪問。服務水平管理1284提供云計算資源分配和管理使得滿足所需的服務水平。服務水平協(xié)議(sla)計劃和實施1285提供根據sla預期未來需求的云計算資源的預先安排和采購。
工作負荷層1290提供可以使用云計算環(huán)境的功能性的例子??梢詮脑搶犹峁┑墓ぷ髫摵珊凸δ艿睦影ǎ河成浜蛯Ш?291;軟件開發(fā)和生命周期管理1292;虛擬課堂教育交付1293;數據分析處理1294;交易處理1295;以及本發(fā)明的實施例的存儲控制器900處理1296。替代地,存儲控制器900處理可以在管理層1280被執(zhí)行。
本發(fā)明的各種實施例的描述為了舉例說明已被展現,但是不旨在窮盡或限制到所公開的實施例。許多修改和變化將是本領域普通技術人員顯而易見的,而不脫離所述實施例的范圍和精神。本文中使用的術語被選擇以解釋實施例的原理,技術應用或對市場中發(fā)現的技術的技術改進,或使本領域的普通技術人員能夠理解本文中公開的實施例。