新四季網

源清除級聯卷的製作方法

2023-10-08 12:30:54 2

源清除級聯卷的製作方法
【專利摘要】本發明公開了源清除級聯卷。各個系統、處理和產品可被用於源清除級聯卷。在特定實現中,系統、處理和產品可包括保存許多級聯備份卷並準備接收的寫入以便存儲的能力。系統、處理和產品還可包括為寫入檢查與卷區域相關聯的元數據集,以確定另一個卷是否依賴於該區域,如果另一個卷不依賴於該區域,則把新數據寫入該區域的能力。系統、處理和產品還可包括確定寫入是否針對作為規範源的卷區域,如果是,則遞減與所述區域相關聯的元數據集中的引用計數,並對於與新的元數據集位置標識符相關聯的元數據集,把所述區域的卷設立為規範源的能力。
【專利說明】源清除級聯卷
【技術領域】
[0001 ] 本發明涉及管理計算機數據,更具體地說,涉及清除級聯卷。
【背景技術】
[0002]存儲系統通常在由於硬體故障和/或自然災難而受損的情況下備份磁碟。可以利用各種技術創建備份磁碟。例如,可以利用快照或克隆技術來產生備份磁碟。
[0003]快照是一種依賴於主磁碟的時間點拷貝。例如,可以利用寫時拷貝進程來完成快照,在寫時拷貝進程中,在對主磁碟上的某個區域進行寫入時,主磁碟上的所述區域中的現有數據被寫入備份磁碟。從而,與主磁碟的完整拷貝相反,備份磁碟將包含主磁碟上已被蓋寫的數據。這種備份拷貝一般導致精簡配置的卷,從而減小存儲空間。一系列的快照拷貝可被級聯在一起,以代表在各個時間的主磁碟。然而,快照拷貝一般仍然要依賴於主磁碟來重組主磁碟的完整拷貝。
[0004]克隆是一種與主磁碟無關的時間點拷貝。例如,可通過執行後臺拷貝進程並執行寫時拷貝進程來創建克隆,在後臺拷貝進程中,磁碟的各個區域被順序拷貝到備份磁碟,寫時拷貝進程立刻拷貝由於寫操作而將被蓋寫但還未被後臺拷貝進程處理的任意主磁碟區域。一般在需要拷貝並且相對於拷貝的輸入/輸出(IO)無論如何不得影響對主卷的IO時,使用克隆。當拷貝不會受到源的可用性的影響時,也可使用克隆。克隆也可用在級聯中。

【發明內容】

[0005]在一種實現中,用於源清除級聯卷的處理可包括:保存主卷和所述主卷的若干級聯備份卷;從外部源接收對至少一個卷的寫入;以及為存儲器準備所述寫入。該處理還可包括:確定所述寫入是否針對作為規範源的卷區域,如果所述寫入針對不是規範源的區域,則遞減與所述區域相關聯的元數據集中的引用計數;確定元數據集位置標識符;對於與元數據集位置標識符相關聯的元數據集,把所述區域的卷設立為規範源;以及設立元數據集的引用計數,以指示所述元數據集被一個卷區域引用。該處理還可包括:如果所述寫入針對作為規範源的區域,則檢查與所述區域相關聯的元數據集,以確定另一個卷是否依賴於所述區域中的數據,如果另一個卷不依賴於所述區域中的數據,則把新數據寫入所述區域中。
[0006]以下的說明連同附圖一起將傳達各種實現的細節和特徵。
【專利附圖】

【附圖說明】
[0007]圖1是圖解說明用於源清除級聯卷的例證系統的方框圖。
[0008]圖2是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。
[0009]圖3是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。
[0010]圖4是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。
[0011]圖5是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。
[0012]圖6是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。[0013]圖7是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。
[0014]圖8是圖解說明用於源清除級聯卷的例證級聯元數據的線圖。
[0015]圖9A-B是圖解說明用於源清除級聯卷的例證處理的流程圖。
[0016]圖10A-B是圖解說明用於源清除級聯卷的另一個例證處理的流程圖。
[0017]圖11是圖解說明用於源清除級聯卷的例證計算機系統的方框圖。
【具體實施方式】
[0018]可利用各種技術來實現源清除級聯卷。在特定的實現中,級聯卷可包括主卷和若干級聯的備份卷。級聯卷的源清除可包括確定跟蹤建立和跟蹤卷之間的相關性。例如可在每個卷區域的基礎上把所述相關性記錄在元數據集中。跟蹤所述相關性可減少卷間拷貝的數量,因為可以確定對於將被蓋寫的數據是否存在多個源,如果是,則可以重新映射任何相關性。當需要清除卷之一時(例如,因為該卷被去除或者重新啟動),可以分析級聯元數據,以確定待清除的卷上的哪些數據需要被移動到另一個卷,以保持剩餘卷的數據完整性。
[0019]所屬【技術領域】的技術人員知道,本公開的各個方面可以實現為系統、方法或電腦程式產品。因此,本公開的各個方面可以具體實現為以下形式,即:完全的硬體環境、完全的軟體實施方式(包括固件、駐留軟體、微代碼等),或硬體和軟體方面結合的實施方式,這裡可以統稱為「電路」、「模塊」或「系統」。此外,本公開的各個方面還可以實現為在一個或多個計算機可讀介質中的電腦程式產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0020]可以採用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限於——電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、可攜式計算機盤、硬碟、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或快閃記憶體)、光纖、可攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本公開的上下文中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。
[0021]計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以採用多種形式,包括——但不限於——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發送、傳播或者傳輸用於由指令執行系統、裝置或者器件使用或者與其結合使用的程序。
[0022]計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括一但不限於一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0023]可以以一種或多種程序設計語言的任意組合來編寫用於執行本公開的各方面的操作的電腦程式代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++等,還包括常規的過程式程序設計語言一諸如「C」語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟體包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或伺服器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括區域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用網際網路服務提供商來通過網際網路連接)。
[0024]下面將參照根據本發明實施例的方法、裝置(系統)和電腦程式產品的流程圖和/或框圖描述本公開的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由電腦程式指令實現。這些電腦程式指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些電腦程式指令在通過計算機或其它可編程數據處理裝置的處理器執行時,產生了實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的裝置。
[0025]也可以把這些電腦程式指令存儲在計算機可讀介質中,這些指令使得計算機、其它可編程數據處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的指令就產生出包括實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的指令的製造品(article of manufacture)0
[0026]電腦程式指令也可被加載到計算機、其它可編程數據處理設備或其它裝置上,使得在所述計算機、其它可編程設備或其它裝置上進行一系列的操作步驟,從而產生計算機實現的處理,以致在計算機或其它可編程設備上執行的指令提供實現在流程圖和/或框圖的一個或多個方框中規定的功能/動作的處理。
[0027]圖1圖解說明了用於源清除級聯卷的例證系統100。系統100包括外部系統110、存儲系統120和通信網絡130。
[0028]外部系統110通常可以是通過產生對存儲系統120的寫入,使其一些數據被保存的任何計算機系統。例如,外部系統110可以是產生需要被保存的數據的伺服器系統。例證的伺服器系統包括Web伺服器。如果外部系統是伺服器系統,則伺服器系統可包括一個或多個伺服器,所述多個伺服器可以共處一地或者是分布式的。
[0029]存儲系統120為在本地或者遠離存儲系統的各個外部系統(例如,運行高級交互執行程序(AIX)或Windows的伺服器系統)保存數據。在特定的實現中,存儲系統120為例證系統提供主存儲,而其它存儲系統(未示出)提供災難恢復存儲(例如,利用同步或異步複製)。存儲系統120可包括例如存儲區域網、RAID陣列、硬碟驅動器、磁帶驅動器或者保存數據的任何其它裝置。例如,存儲系統120可按塊陣列的格式來保存數據。
[0030]存儲系統120包括存儲控制器122和存儲器124 (例如,硬碟、磁帶等)。存儲控制器122負責把數據放入存儲器124中。為了說明起見,存儲器124包括主卷125和主卷的備份卷126。然而,存儲器124 —般可被配置成包括任意數目的卷。卷125-126可以是例如存儲器24(例如,硬碟驅動器)中的實際物理裝置、物理裝置的各個部分、或者物理裝置的表示。存儲器124還可具有它正保存的若干其它卷。
[0031]外部系統110和存儲系統120通過通信網絡130相互通信耦接。通信網絡130可以是例如區域網(LAN)、廣域網(WAN)或網際網路。外部系統110和存儲系統120通過通信鏈路132耦接到通信網絡130,通信鏈路132可包括一條或多條有線鏈路(例如,電纜或光纖)和/或無線鏈路(例如,射頻)。
[0032]備份卷126可利用各種技術來提供主卷125的備份。例如,可利用快照和/或克隆技術進行備份。如前所述,快照是一種時間點拷貝,其中在對主卷上的某個區域進行寫入時,該主卷上的所述區域中的現有數據被寫入備份卷中。從而,與主卷的完整拷貝相反,備份卷將包含主卷上已被蓋寫的數據,並且通常將仍然依賴於主卷上的某些數據(例如,未被改變的數據),以便呈現所述拷貝。區域可以是例如卷的扇區或者其它可尋址部分。在特定的實現中,區域的大小可約為64KB。
[0033]這種備份拷貝一般導致精簡配置的卷,從而減小存儲空間,在主卷上發生數據破壞的情況下是有益的。通常,存在同時存在的單個源的許多快照,從而其減小的大小是有益的。快照可持續相當長的時間(數月或數年)存在於卷的級聯中,但一般僅僅被保持數小時或數天。
[0034]克隆拷貝是一種其中當開始拷貝時,備份卷應停止保持主卷上的數據的完整拷貝的時間點拷貝。例如,可通過執行後臺拷貝進程來創建克隆拷貝,在後臺拷貝進程中,主卷的各個區域被順序拷貝,並執行寫時拷貝進程,以立刻拷貝由於寫操作而將被蓋寫但是還未被後臺拷貝進程處理的任意卷區域。一般在需要拷貝並且相對於拷貝的輸入/輸出(IO)無論如何不得影響對主卷的IO時,使用克隆拷貝。當拷貝不會受源的可用性的影響時,也可使用克隆。即,克隆拷貝可從級聯中被去除,並且仍然正確地起作用。例如,可以利用克隆拷貝把資料庫轉移到另一個地點。一旦克隆拷貝完成,克隆拷貝通常被拷貝到磁帶。
[0035]通過相互級聯,備份卷126可為主卷125提供備份。在級聯中,備份卷可保存單個數據源的多個時間點拷貝。這種方法使得當啟動新的備份卷時,利用主卷作為其源卷的現有備份卷被修改,以利用新備份的目標卷作為其源卷。
[0036]例如,對例示的實現來說,假定期望在時間Tl、T2和T3獲得主卷125的時間點拷貝。在時間Tl,可以利用使用目標備份卷126a的時間點拷貝,導致主卷125->備份卷126a(下面表示成PV->BVa)的級聯。隨後,在時間T2,可以利用使用備份卷126b的時間點拷貝,導致PV->BVb->BVa的級聯。這種安排起作用,因為如果在Tl和T2之間在備份卷126a或主卷125上數據已被改變,則數據將在備份卷126a上,而如果數據未被改變,則備份卷126a和備份卷126b都能夠讀取相同數據。類似地,在T3,可以啟動利用備份卷126c的時間點拷貝,導致PV->BVc->BVb->BVa的級聯。諸如Armonk,NY的國際商用機器公司的SAN Volume Controller FlashCopy的存儲控制器可利用級聯實現來用備份卷擴充源卷。
[0037]假定備份卷126a利用快照技術工作,備份卷126a通過保存自在Tl開始備份以來主卷125的變化來提供備份。在這種兩元件級聯中,主卷125是源,而備份卷126a是目標。因此,主卷125可被稱為PV->BVa映射的有效源。
[0038]如前所述,這種備份可通過利用寫時拷貝來完成。從而,對主卷125的寫入可涉及把主卷125上的待寫區域中的數據拷貝到備份卷126a,隨後把新數據寫入主卷125的被拷貝區域。因此,當到備份卷126a的備份在Tl變得有效時在主卷125上的數據將被保存在主卷125上(即,對於未被寫入的卷區域)和備份卷126a上(即,對於已被寫入的區域)。
[0039]如果需要對備份卷126a進行讀取(例如,為了確定在Tl時在主卷125上的數據),則可通過首先嘗試定位數據備份卷126a來進行讀取。如果數據不在該卷上(即,該數據在主卷125上從未被蓋寫),則可從主卷125讀取該數據。
[0040]主卷125有時需要被恢復到其在Tl時的狀態。例如,歸因於數據破壞,可能發生這種情況。可從備份卷126a取回自備份卷126a變得有效以來在主卷125上被蓋寫的數據,以把主卷125恢復到其在Tl時的狀態。[0041]在稍後的時間點T2,到備份卷126b的備份變得有效,從而保存從T2開始主卷125的表示。此時,不再需要更新備份卷126a,因為備份卷126b將包含主卷125在T2時的數據。因此,備份鏈變成主卷125->備份卷126b->備份卷126a (或者PV->BVb_>BVa)。從而現在主卷125->備份卷126a的映射把源備份卷126b作為有效源。這種變換是有效的,因為備份卷126b是主卷125在該時間點的準確拷貝(至少對於它保存的數據區域)。
[0042]備份卷126b可利用快照或克隆技術工作。如果它利用快照技術工作,則對主卷125的寫入可被看作它們用於PV->BVa級聯,除了在主卷125上被蓋寫的數據將被放在備份卷126b上之外。如果備份卷126b利用克隆技術工作,則將利用花費相當長的一段時間的順序讀取和按需寫入(例如,由於對主卷125的寫入而數據被蓋寫)的組合,把主卷125的各個區域寫到備份卷126b。
[0043]為了保持該級聯的數據,可以使用IO算法。例如,對讀取來說:1)如果請求備份卷126a的讀取,則如果請求的數據在備份卷126a上(例如,按照區域),則讀取備份卷126a,否則如果請求的數據在備份卷126b上,則讀取備份卷126b,否則讀取主卷125 ;2)如果請求備份卷126b的讀取,則如果請求的數據在備份卷126b上,則讀取備份卷126b,否則讀取主卷125 ;和3)如果請求主卷125的讀取,則讀取主卷125。
[0044]對寫入來說:1)如果請求對備份卷126a的寫入,則寫入備份卷126a ;2)如果請求對備份卷126b的寫入,則:a)如果備份卷126a需要保持在主卷125上的數據(例如,由於對被寫區來說,在主卷125和備份卷126上的數據相同),則讀取主卷,把結果寫入備份卷126a,並把新數據寫入備份卷126b ;b)否則如果備份卷126a需要保持在備份卷126b上的數據,則讀取備份卷126b,把結果寫入備份卷126a,並把新數據寫入備份卷126b ;或者c)否則寫入備份卷126b ;以及3)如果請求對主卷125的寫入,則:a)如果備份卷126b需要保持在主卷125上的數據,則讀取讀取主卷125,把結果寫入備份卷126b,隨後把新數據寫入主卷125 ;和b)否則寫入主卷125。
[0045]這種IO算法允許級聯多個目標(例如,兩個或者更多個目標)。此外,對主卷125的寫入導致對備份卷的最多一次額外寫入,而與主卷125的備份卷的數目無關。因此,備份映射對源/產品IO性能的影響較小,而且受到限制。
[0046]在T2之後的某個時刻,備份卷126a—般依賴於備份卷126b。例如,如果數據區未在Tl和T2之間被轉移到備份卷126a(例如,由於在該時間內不存在對主卷125的寫入),而是在時間T2之後被轉移到備份卷126b (例如,由於在T2之後存在對主卷125的寫入),則備份卷126a會需要該數據,以使主卷125恢復到其在Tl時的狀態。
[0047]如果在該時刻之後要從級聯中去除備份卷126b,而不影響備份卷126a,則應清除備份卷126b。即,就對備份卷126a的讀取(例如,來自外部系統)而言所需的備份卷126b上的數據必須首先被拷貝到備份卷126a。該過程會花費相當長的時間。此外,如果備份卷126b是利用可能已導致備份卷126b完全被分配的克隆技術構成的,而備份卷126a是利用快照技術構成的,則清除操作會確定大部分的備份卷126b需要被轉移到備份卷126a,這會顯著增加保存在備份卷126a上的數據的量,尤其是如果它變得完全被分配的話。
[0048]在稍後的時間點T3,到備份卷126c的備份可變得有效,從而保存從T3開始的主卷125的表示。此時,不再需要更新備份卷126b,因為備份卷126c將包含主卷125在T3時的數據。因此,備份鏈變成主卷125->備份卷126c->備份卷126b->備份卷126a (下面也表示成PV->BVc->BVb->BVa)。從而現在PV->BVb_>BVa的映射把源備份卷126c作為有效源。這種變換是有效的,因為備份卷126c是主卷125在該時間點的準確拷貝(至少對於它保存的數據區域)。
[0049]備份卷126c可利用快照或克隆技術工作。如果它利用快照技術工作,則對主卷125的寫入可被看作它們用於PV->BVb->BVa級聯,除了在主卷125上被蓋寫的數據將被放在備份卷126c上之外。如果備份卷126c利用克隆技術工作,則將利用花費相當長的一段時間的順序讀取和按需寫入(例如,由於因對主卷125的寫入數據被蓋寫)的組合,把主卷125的各個區域寫到備份卷126c。
[0050]為了保持該級聯的數據,可以使用IO算法。例如,對讀取來說:1)如果請求備份卷126a的讀取,則如果請求的數據在備份卷126a上(例如,按照區域),則讀取備份卷126a,否則如果請求的數據在備份卷126b上,則讀取備份卷126b,否則如果請求的數據在備份卷126c上,則讀取備份卷126c,否則讀取主卷125 ;2)如果請求備份卷126b的讀取,則如果請求的數據在備份卷126b上,則讀取備份卷126b,如果請求的數據在備份卷126c上,則讀取備份卷126c,否則讀取主卷125 ;3)如果請求備份卷126c的讀取,則如果請求的數據在備份卷126c上,則讀取備份卷126c,否則讀取主卷125 ;和4)如果請求主卷125的讀取,則讀取主卷125。
[0051]對寫入來說:1)如果請求對備份卷126a的寫入,則寫入備份卷126a ;2)如果請求對備份卷126b的寫入,則:a)如果備份卷126a需要保持在主卷125上的數據,意味著對主卷125和備份卷126來說,被寫區相同,則讀取主卷,把結果寫入備份卷126a,然後把新數據寫入備份卷126b ;b)否則如果備份卷126a需要保持在備份卷126c上的數據,意味著對備份卷126來說,被寫區相同,則讀取備份卷126c,把結果寫入備份卷126a,然後把新數據寫入備份卷126b ;c)否則如果備份卷126a需要保持在備份卷126b上的數據,則讀取備份卷126b,把結果寫入備份卷126a,然後把新數據寫入備份卷126b ;或者d)否則寫入備份卷126b ;3)如果請求對備份卷126c的寫入,則:a)如果備份卷126b需要保持在主卷125上的數據,意味著對主卷125和備份卷126b-c來說,被寫區相同,則讀取主卷125,把結果寫入備份卷126b,然後把新數據寫入備份卷126c (如果備份卷126a需要保持在主卷125上的數據,則必須存在從備份卷126a到主卷125的相關性的完整級聯,意味著對所有捲來說,被寫區相同,並且備份卷126b也應依賴於該區域);b)否則如果備份卷126b需要保持在備份卷126c上的數據,則讀取備份卷126c,把結果寫入備份卷126b,然後把新數據寫入備份卷126c (如果備份卷126a需要保持在備份卷126c上的數據,則必須存在從備份卷126a到備份卷126c的相關性的完整級聯,意味著對備份卷126來說,被寫區相同,備份卷126b也應依賴於該區域);或者c)否則寫入備份卷126c ;或者4)如果請求對主卷125的寫入,則:a)如果備份卷126c需要保持在主卷125上的數據,則讀取讀取主卷125,把結果寫入備份卷126c,隨後把新數據寫入主卷125 ;和b)否則寫入主卷125。
[0052]這種IO算法允許級聯多個目標(例如,3個或者更多個目標)。此外,對主卷125的寫入導致對備份卷的最多一次額外寫入,而與主卷125的備份卷的數目無關。因此,備份映射對源/產品IO性能的影響相當小,而且受到限制。
[0053]在T3之後的某個時刻,備份卷126b —般依賴於備份卷126c。例如,如果數據區未在T2和T3之間被轉移到備份卷126b (例如,由於在該時間內不存在對主卷125的寫入),而是在時間T3之後被轉移到備份卷126c (例如,由於在T3之後存在對主卷125的寫入),則備份卷126b會需要該數據,以使主卷125恢復到其在T2時的狀態。
[0054]如果在該時刻之後要從級聯中去除備份卷126c而不影響備份卷126b,則應清除備份卷126c。即,就對備份卷126b的讀取(例如,來自外部系統)而言所需的備份卷126c上的數據必須首先被拷貝到備份卷126b。該過程會花費相當長的時間。此外,如果備份卷126c是利用可能已導致備份卷126c完全被分配的克隆技術構成的,而備份卷126b是利用快照技術構成的,則清除操作會確定大部分的備份卷126c需要被轉移到備份卷126b,這會顯著增加保存在備份卷126b上的數據的量,尤其是如果它變得完全被分配的話。
[0055]在某些操作模式下,各個卷上的數據區域可被分類,以確定保存在所述區域中的數據是否必須被清除,或者即使當居間的卷(例如,備份卷126b)被去除時,數據(例如,在主卷125上)是否仍然對於相關卷(例如,備份卷126a)可訪問。
[0056]存儲控制器122包括級聯元數據123,級聯元數據123可保存關於卷125-126上的各個區域的數據。特別地,級聯元數據123可定義區域的數據是否是其它卷上的其它區域的源或者是否依賴於其它卷的其它區域。
[0057]進一步考慮上述PV->BVc->BVb->BVa級聯,考慮當目標被寫入時對它們發生了什麼。就這個例子來說,假定備份卷126是精簡配置的(例如,只為已被寫入的各個區域分配存儲空間),因為這可很好地例示幾個問題。主卷125被認為是全配置的,因為這是最常見的結構。
[0058]如果在主卷125上某個區域被寫入,則所述寫入不會導致在主卷上分配任何空間,但是它需要在備份卷126c上分配相同的區域,因為寫時拷貝進程把主卷125上的現有數據移動到級聯中的備份卷126c。對備份卷126c上的區域的寫入導致在備份卷126c上分配該區域(用於新的寫入),另外也在備份卷126b上分配該區域,用於備份卷126c過去依賴並且備份卷126b仍然依賴的主卷125上的現有數據。同樣地,對備份卷126b上的區域的寫入導致在備份卷126b和備份卷126a上分配該區域。對備份卷126a上的區域的寫入只導致在備份卷126a上分配該區域。
[0059]在稍後的某個時間點,可能需要從級聯中去除備份卷之一。例如,備份卷的存儲空間可能需要被用於不同目的(例如,時間點拷貝可能需要被更新的拷貝刷新)。
[0060]例如,如果在稍後的某個時間需要從級聯中去除備份卷126b,則在從級聯中去除備份卷126b並用於不同目的之前,應當把備份卷126b中備份卷126a所依賴的各個區域拷貝到備份卷126a。在去除備份卷126b之後,將由於對備份卷126a_c的任意寫入而在備份卷126a上分配各個區域,而不管是否存在包含備份卷126a所需數據的早先在級聯中已被分配的區域。這種額外的分配要求往往成本相當高,同時需要額外的物理存儲空間,以及額外的系統管理,和伴隨而來的物理空間、電力和冷卻成本。它還意味著會超過需要地更頻繁地訪問存儲空間,不必要地沿著級聯拷貝數據。這種增多的存儲空間內訪問會顯著降低系統的性能,因為進一步沿著級聯用它所依賴的數據更新卷所需的每個拷貝會把單個寫入變成一個讀取和兩個寫入,可能把存儲系統將支持的每秒的寫入總數降低到對於不需要這種拷貝的卷它將支持的每秒的寫入總數的1/3。
[0061]如果備份卷126a_c是全配置的,而不是精簡配置的,則數據的額外拷貝將只產生性能影響,而不產生存儲空間影響,因為整個卷已被分配。[0062]存儲系統120可以利用卷125-126的級聯元數據123來克服這些問題。特別地,級聯元數據123可以是關於保存在級聯中的各個卷上的數據和依賴於該數據的各個卷區域的一組位置細節。可跨越存儲系統120獲得所述元數據。
[0063]級聯元數據123可包括多組數據,使得每一組包括卷的標識符、卷內的區域的標識符、和對於保存在卷的區域中的數據的引用計數。每一組可通過唯一標識符來尋址。在一些實現中,例如,所述唯一標識符可以是長度64位或者更大的數字,以避免重複使用的問題。元數據可被保存為陣列、鍊表、散列表、樹、或者使系統可以根據所述唯一標識符來定位數據集的任何其它方法。每一組可涉及被存儲系統時間點拷貝的存儲空間的一個區域,從而,可以存在足夠的這些實體,以滿足對可被時間點拷貝的存儲空間的量的要求。
[0064]從可以是普通卷(例如,邏輯塊的陣列)的單個卷PV,比如主卷125開始,當在存儲系統中創建該卷時,分配下面將被稱為卷目錄的另一組元數據,所述卷目錄大到足以保存該卷的每個區域的唯一標識符之一。對於該卷的每個區域,卷目錄可被分配一個元數據集。可以利用任何常見的方法來支持這一點,比如保持自由的或者當前未用的元數據集的列表。為某個區域分配的元數據集可保存該區域的卷標識符、該區域在卷中的位置、和對於該區域中的數據的引用計數,此時,所述引用計數可被設定為1,因為它被使用一次。關於該區域的條目的元數據集的唯一標識符可被保存在卷目錄中。
[0065]因此,為了確定主卷上的給定區域的元數據集的位置,可以找出卷目錄中該區域的條目,所述條目提供用於查找適當的元數據集的唯一標識符,所述適當的元數據集有給出卷標識符和卷內的位置。當然,就單個獨立捲來說,這一般將回指主卷上的相同區域。因此,對於與時間點拷貝無關的單個卷,可以推遲設置該元數據,直到該卷首次與時間點拷貝有關。
[0066]圖2圖解說明了單個卷,比如主卷125的例證級聯元數據200。如圖所示,元數據200包括元數據集210和卷目錄220。
[0067]用包括3列212的表格形式例示了元數據集210。列212a包括卷標識符,列212b包括卷位置(例如,區域號),列212c包括區域數據的引用計數。從而,表格的每一行構成卷區域的元組,並且可被唯一地尋址(例如,通過利用行號)。
[0068]還以表格的形式例示了卷目錄220,它包括一列222。列222包含元數據集210的位置標識符。即,卷目錄220中的每個標識符識別特定的元數據集210。為了使例示簡化,卷目錄220中的每個標識符是直接對應於元數據集210的整數。也可以使用其它標識方案。另外,卷目錄220中的每個條目直接對應於卷上的一個區域。在這個例子中,第一個條目對應於區域0,第二個條目對應於區域1,第三個條目對應於區域2,而第四個條目對應於區域
3。在其它實現中,在卷目錄中可以使用除直接關聯以外的關聯。
[0069]當從主卷PV到第一個備份卷BVa,比如備份卷126a進行第一次拷貝時,也可為該備份卷分配一個卷目錄。備份卷的目錄中的每個條目被初始化成與主卷的目錄中的匹配條目中的值相同的值,並且相關聯的元數據集中關於該區域的引用計數被遞增。在這種情況下,引用計數將增大到2,因為現在依賴於該底層數據的區域有兩個。將如前關於主卷所述那樣地確定備份卷的區域的位置,現在指的是主卷上的匹配區域。
[0070]圖3圖解說明了諸如主卷125的主卷和諸如備份卷126a的第一個備份卷的一組例證級聯元數據300。如圖所示,元數據300包括元數據集210、主卷目錄220和第一備份卷目錄230。如同剛剛提及的那樣,歸因於第一個備份卷,已增加了第一個備份卷目錄230,並且這裡用各行表示的它的各個區域被映射到和主卷的區域相同的元數據集。此外,列212c中的引用計數已被更新,以反映該備份卷的啟用。
[0071]當在主卷或第一個備份卷上,某個區域被寫入時,存儲系統檢查被關於該區域的卷目錄條目引用的元數據集中的引用計數。由於剛剛進行了拷貝,因此引用計數為2,如圖3中圖解所示。由於該值大於1,因此能夠確定該寫入將影響不止一個拷貝。這可根據所述寫入將被應用於哪個卷而不同地實現。由於數據實際上被保存在主卷上,因此主卷將被稱為該數據的規範源。在本公開中,規範源是保存數據的卷區域。卷目錄中關於不保存數據的卷區域的條目引用不同卷上的所述數據的規範源。可以通過識別元數據集引用哪個捲來確定規範源。附圖中,在卷目錄中用陰影表示規範源,以便於理解。
[0072]如果寫入將被應用於不是規範源的卷(例如,圖3中的第一個備份卷),則可以確定該卷上用於那個區域的物理存儲空間不被用於該卷或者任何其它卷,因為相關聯的元數據集並不引用所述被寫入的卷。因此,可以在不把數據拷貝到不同卷的情況下,對該卷進行寫入。所述寫入然後可被應用於該卷。
[0073]如果寫入不覆蓋整個區域,則可以利用寫時拷貝方案照常進行數據與規範源上的數據的任何合併。例如,如果寫入針對的是長度為128個扇區的區域,但是橫跨該區域中的扇區20-49,則應當從規範源讀出扇區0-19和50-127,與用於新的寫入的扇區20-49合併,隨後寫出所有128個扇區。應當為不是規範卷的卷創建完整區域數據價值。
[0074]在完成向存儲系統發送所述寫入的外部系統的寫入之前,必須更新相關聯的元數據集和卷目錄。由於該卷現在將在被寫區域上包含不同數據,因此存儲系統可為其分配一個新的元數據集。利用對其應用所述寫入的所述卷和區域來初始化該新的元數據集。另夕卜,遞減該區域的卷目錄先前引用的元數據集的引用計數,更新被寫卷的卷目錄,以引用新分配的元數據集,以及新分配的元數據集的引用計數被設定為I。可以記錄這3個操作的日誌,並且如果中斷的話,可以重新進行這3個操作,或者以其它方式使所述3個操作成為原子操作,以確保引用計數保持一致。這導致剛剛被寫的區域變成規範源。
[0075]圖4圖解說明了對於該處理,應當如何更新級聯元數據300。在本例中,寫入被應用於主卷的第二個區域(即,區域I)和備份卷的第三個區域(即,區域2),儘管目前將只討論後者。對備份卷的第三個區域的寫入導致存儲系統修改關於主卷的第三個區域的元數據集,並生成關於第一個備份卷的第三個區域的元數據集。特別地,與主卷的第三個區域相關聯的元數據集表格的條目現在指示引用計數已被遞減為I。另外,在卷目錄230中,第一個備份卷的第三個區域已被賦予新的標識符(即,5),以及檢查元數據集210時可以看出,相應的元數據集(即,第五個元數據集)指示相關聯的卷是第一個備份卷,該卷上的關聯區域是第三個區域(即,區域2),並且引用計數為I。
[0076]相反,如果寫入被應用於規範源(即,圖3的例子中的主卷),並且引用計數大於1,則存儲系統可確定主卷的該區域上的數據是至少一個其它卷所需的,從而數據應被拷貝到另一個卷。存儲系統可按級聯中的順序來檢查卷的列表,以找出級聯中在規範源之後的在其卷目錄中的匹配條目中引用相關聯的元數據集的第一個卷。在這種情況下,這將是第一個備份卷,因為第一個備份卷是級聯中的唯一的其它卷。該區域的數據隨後從規範源被拷貝到備份卷(即,從主卷拷貝到第一個備份卷),並且元數據集被更新,以指向找出的備份卷,從而使所述備份捲成為新的規範源。由於老的規範源現在不再是規範源,因此其數據可被改變,而不影響級聯中的任何其它卷,從而可如前所述繼續進行各個操作。即,可為新被寫區域分配新的卷目錄條目。
[0077]圖4還圖解說明了對於該處理,應當如何更新級聯元數據300。在本例中,還對主卷的第二個區域(即,區域I)應用寫入。對主卷的第二個區域的寫入導致存儲系統更新相關聯的元數據集(即,第二個元數據集),以指向找出的備份卷,從而使之成為新的規範源,並為主卷的第二個區域分配新的卷目錄條目,因為它不再是規範源,它表現為第六個元數據集210。
[0078]級聯內關於給定區域的規範源的數目和不同數據集的數目一樣多。例如,如果在主卷和第一個備份卷上修改了 PV->BVc->BVb->BVa級聯,則主卷、第一個備份卷和第三個備份卷將是該區域的規範源。每個元數據集存在一個規範源。
[0079]圖5圖解說明了主卷和3個備份卷的例證級聯元數據500。特別地,級聯元數據500始於利用圖4中的級聯元數據300建立的數據,隨後增加另外兩個備份卷,所述另外兩個備份卷的卷目錄被標記為540和550。
[0080]如同對級聯時間點拷貝來說典型的那樣,主卷的新的備份卷都是緊跟在主卷之後插入級聯中的,以正確地表示拷貝之間的相關性。如前所述,卷目錄540、550都是用主卷當時的目錄的內容初始化的。在本例中,在觸發從主卷到第二個備份卷的時間點拷貝的時間和觸發從主卷到第三個備份卷的時間點拷貝的時間之間,主卷沒有接收到任何寫入。因此,卷目錄520、540、550相同。另外,在表格510中調整引用計數,以反映另外的卷依賴於該數據的事實。
[0081]圖6圖解說明了當已對主卷的第四個區域和第一個備份卷的第四個區域應用寫入時的級聯元數據500。對主卷的第四個區域的寫入使存儲控制器把該區域處的數據移到第三個備份卷。因此,第四個元數據集510已被調整成使卷標識符現在把第三個備份卷識別成該數據的規範源。此外,關於該數據的引用計數已被減1,因為卷(即,主卷)不再依賴於它。另外,為被寫入主卷的數據創建了另一個元數據集510。該條目表現為第七個元數據集510,並指示主卷是該數據的規範源,所述數據位於主卷的第四個區域(即,區域3),並且只有一個卷依賴於該數據。主卷的目錄520中的第四個條目也被改變成包括指示第七個元數據集510的標識符。因此,第一個備份卷的新的元數據集可從其卷目錄中找到。在第二個備份卷或第三個備份卷上的區域數據的標識符無變化,從而不存在對卷目錄540、550作出的任何變化。
[0082]對第一個備份卷的第四個區域的寫入導致該區域處的數據被蓋寫(不存在寫時拷貝,因為在級聯中不存在另外的卷)。因此,第四個元數據集510已被調整成使關於該數據的引用計數減1,因為卷(即,第一個備份卷)不再依賴於它。另外,為被寫入第一個備份卷的數據創建元數據集。該條目表現為第八個元數據集510,並指示第一個備份卷是該數據的規範源,數據位於該卷的第四個區域(即,區域3),並且只有一個卷依賴於該數據。第一個備份卷的目錄530中的第四個條目也被改變成包括指示第八個元數據集510的標識符。
[0083]如果對其來說相關聯的元數據集的引用計數為I的區域被寫入,則所述寫入可正常進行,而不存在對卷目錄或元數據集的任何變化,因為只有在引用該區域的卷上,數據才變化。例如,如果在圖6中,第一個備份卷上的第二個區域(即,區域I)被寫入,或者具有為I的引用計數的任何其它區域被寫入,則會發生這種情況。
[0084]如前所述,每個元數據集存在一個規範源。因此,可在逐個區域的基礎上確定規範源。例如,對於圖6中的4卷級聯的具有3個規範源的第四個區域,可了解這一點。
[0085]如果卷被刪除(例如,主卷或備份卷之一需要被刪除,以收回它們的存儲空間),則對於相關聯的卷目錄中的每個條目,在相關聯的元數據集中遞減引用計數。如果引用計數達到0,則存儲系統可確定它正在刪除需要該數據的唯一卷,從而不需要任何進一步的動作。例如,如果刪除圖6中的主卷,則對於所述主卷的第四個區域,會發生這種情況。
[0086]如果計數不為0,則存在兩種選項。如果被刪除的卷不是規範源,則不同的卷包含繼續存在的卷所需的信息,從而不需要任何進一步的動作。例如,如果刪除第二個備份卷,則對於第二個備份卷的第四個區域,會發生這種情況。如果被刪除的卷是該區域的規範源,則存儲系統應當把數據拷貝到另一個卷。為了實現這一點,存儲系統可按級聯中的順序檢查卷的列表,以找出該規範源之後的在其卷目錄中的關聯條目中目前引用該元數據集的第一個卷。隨後把該區域的數據從規範源拷貝到識別出的卷,並且元數據集被更新,以指向識別出的卷,從而使該捲成為新的規範源。由於老的規範源現在不再是規範源,因此它可被刪除,而不影響級聯中的任何其它卷。因此,對該區域來說,不需要任何進一步的動作。例如,如果刪除第三個備份卷的第四個區域,則對於所述區域,會發生這種情況,數據被移動到第二個備份卷,並使該捲成為規範源。
[0087]如果拷貝不被刪除而是被重啟(例如,用數據的更新拷貝來刷新卷),則這可被視為拷貝的刪除,並且可以進行對其來說,該拷貝是規範源,並且引用計數大於I的區域的拷貝。拷貝隨後可被重新添加到級聯中,緊跟在主卷之後被重新插入級聯中,卷目錄被初始化成主卷的目錄的當前內容。
[0088]該寫入處理還可提供一種清除。例如,假定級聯具有主卷和3個備份卷-PV->BVc->BVb->BVa,並且備份卷都引用對其來說主卷是規範源的相同元數據集,賦予該元數據集為4的引用計數。如果對中間卷之一(即,BVc或BVb)進行寫入,則可以進行對該卷的寫入,而不必把數據從主卷移動到在所述寫入的下遊的卷,因為下遊的卷仍然向後引用主卷。因此,通過除非實際的數據(即,主卷上的數據)被蓋寫,否則避免拷貝數據,該處理已進行智能清除。即使存在具有所需數據的上遊卷,現有的級聯時間點拷貝實現一般也把數據拷貝(或者「清除」)到級聯中的下一個下遊卷,如果該下遊卷需要該數據的話。
[0089]上面的例證實現假定不存在後臺拷貝(例如,PV->BVc->BVb->BVa級聯中的數據只有在必要時才被拷貝)。這通常被稱為快照技術,這意味著第一個備份卷將依賴於第二個備份卷,直到第二個備份卷被刪除或者被完全寫入。這種行為適用於限制存儲系統必須執行以支持卷的級聯的IO操作的數目,而對於精簡配置的捲來說,這種行為限制存儲要求。然而,考慮到恢復力或者為了在多個物理存儲設備之間分布外部系統的10,一些拷貝需要具有它們自己的數據拷貝。這些拷貝一般被稱為克隆。
[0090]一般對克隆進行的後臺拷貝處理把數據從源複製到該克隆。這種處理一般始於卷的一端,並進行到另一端。當所述處理拷貝每個區域時,克隆不再依賴於該區域的源卷。假定PV->BVc->BVb->BVa級聯中的第二個備份卷是克隆,由於後臺拷貝處理把區域從主卷複製到第二個備份卷,第二個備份卷不再依賴於被拷貝區域的主卷。然而,就當前的實現來說,對於所有這些被拷貝區域,第一個備份卷現在依賴於第二個備份卷,如果隨後刪除第二個備份卷,則即使主卷仍然包含相同的數據,系統也必須把所有區域從第二個備份卷拷貝到第一個備份卷。這意味著試圖僅僅記錄一小組變化的第一個備份卷現在必須記錄該卷的大部分(可能記錄整個卷,如果後臺拷貝處理已充分進行的話)。
[0091]上面討論的例證實現可被擴展,以允許數據的每個拷貝的多個規範源。例如,可向每個元數據集添加「鏈中的下一個」標識符。因此,如果某個區域已被後臺拷貝,使得相同的數據存在於不止一個卷的物理存儲空間上,則可為具有物理存儲空間的第二個卷分配另一個位置細節對象,並且第一個卷的元數據集的鏈中的下一個標識符可被設定成第二個卷的元數據集的標識符。用新拷貝區域的卷和位置初始化第二個卷的元數據集。然而,不為第二個卷的元數據集保留引用計數,因為第一個卷的引用計數包括該拷貝。不具有備用規範源或者是指向備用規範源的對象鏈中的最後對象的元數據集可把所述下一個欄位設定成無效值,所述無效值可以是通常不用的定義明確的唯一標識符。新拷貝區域的卷目錄繼續引用原始元數據集,從所述原始元數據集可以沿著下一個欄位的鏈找出所有的備用規範源,包括新拷貝的區域。
[0092]圖7圖解說明了關於擴展情形的例證元數據級聯700。該情形始於圖6中所示結構中的卷。因此,存在具有相關聯的卷目錄720的主卷,具有相關聯的卷目錄730的第一個備份卷,具有相關聯的卷目錄740的第二個備份卷,和具有相關聯的卷目錄750的第三個備份卷。另外,原始元數據集已被修改成包括這裡例示為列712d的鏈中的下一個條目,列712d包含與元數據集中的規範源相關聯的規範源的元數據集標識符。
[0093]此外,第二個備份卷是已後臺拷貝主卷的前兩個區域的克隆。因此,當主卷的第一個區域被拷貝到第二個備份卷時,在倒數第二個元數據集710創建一個新的條目。如同剛剛討論的一樣,該條目指示第二個備份卷的第一個區域(即,區域O)充當規範源。另外,數據的原始元數據集(它是第一個元數據集710)已被更新,以引用鏈中的下一個列712d中的新條目。對卷目錄720-750沒有作出任何改變。
[0094]類似地,當主卷的第二個區域被拷貝到第二個備份卷時,創建一個新的條目,作為最後的元數據集710。該條目指示第二個備份卷的第二個區域充當規範源。另外,數據的原始元數據集(它是第六個元數據集710)已被更新,以引用鏈中的下一個欄位712d中的新條目。
[0095]之後,存儲系統的表現和前面的實現中一樣,然而具有以下差別。當需要確定區域是否是規範源時,存儲系統檢查卷目錄引用其第一個條目的元數據集的鏈。如果某個規範源被寫入,並且對其來說在鏈中存在更早的規範源(例如,引用被寫規範源的規範源),則存儲系統不拷貝物理存儲器上的任何數據。而是,存儲系統從備用規範源的鏈中去除次規範源的標識符,使得它是獨立的元數據集,把與備用規範源相關聯的數據集的引用計數設定為1,遞減從中去除次規範源的鏈中的元數據集的引用計數,並更新備用規範源的卷目錄,以直接指向與備用規範源相關聯的數據集。
[0096]如果作為鏈中的主規範源的規範源(例如,卷目錄所引用的規範源)被寫入,則存儲系統不能容易地識別引用所討論的元數據集的卷目錄條目。因此,存儲系統可分配利用卷標識符和被寫的卷位置以及為I的引用計數被初始化的新的元數據集,並更新主規範源的卷目錄,以引用新的元數據集。存儲系統還可更新在鏈的起點的元數據集,以指向該卷和鏈中的第二個卷(例如,第二個規範源)的位置,從鏈中去除第二個元數據集,並遞減在鏈的起點的元數據集的引用計數。通過使元數據集引用未被改變的數據,系統不需要為未被更改的區域更新卷目錄。此外,即使規範源被蓋寫,存儲系統也不必把數據移動到另一個卷。
[0097]圖8圖解說明了就兩個寫入來說,按照這種情形修改的元數據模型700。第一個寫入是對第二個備份卷的第一個區域(即,區域O)的寫入,而第二個寫入是對主卷的第二個區域(即,區域I)的寫入。
[0098]第一個寫入例示了對在鏈中存在更早的規範源的規範源的寫入。因此,存儲系統不拷貝物理存儲器上的任何數據。而是,存儲系統在原始元數據集中,從備用規範源的鏈中去除與次規範源的關聯,使得連結的元數據集是獨立的元數據集,把與備用規範源相關聯的元數據集的引用計數設定為1,遞減從中去除次規範源的鏈中的第一個條目的引用計數,以及更新備用規範源的卷目錄,以直接指向與備用規範源相關聯的數據集。
[0099]由於所述鏈是普通鍊表,因此普通的去除技術行得通,其中鏈中緊接在被去除的對象之前的對象的下一個值被設定成被去除的對象的下一個值,被去除的對象的下一個值又被設定成無效值。對第二個備份卷的第一個區域的新寫入顯示了這一點。此外,即使規範源正被蓋寫,存儲系統也不必把數據移動到另一個卷。
[0100]第二個寫入例示了對鏈中的主規範源的寫入。在這種情況下,存儲系統分配具有卷標識符和被寫的卷位置以及為I的引用計數的元數據集,並更新主規範源的卷目錄,以引用新的元數據集。在本實現中,存儲系統已重用第10個元數據集710,因為該元數據集不再被需要。存儲系統還更新在鏈的起點的元數據集(例如,第六個元數據集710),以引用該卷和鏈中的次規範源卷的位置,從鏈中去除第二個元數據集,並且遞減在鏈的起點的元數據集的引用計數。通過使元數據集引用未被改變的數據,存儲系統不需要為未被更改的區域更新卷目錄。此外,即使主規範源被蓋寫,存儲系統也不必把數據移動到另一個卷。
[0101]如果具有多個關聯規範源的卷區域被刪除,則存儲系統可以與仿佛該區域被寫入一樣地工作,除了它不需要保持關於該區域的數據集。因此,如果在鏈中存在更早規範源的規範源被刪除,則存儲系統不拷貝物理存儲器上的任何數據。而是,存儲系統從次規範源的鏈中去除該次規範源的標識符,使得它是獨立的元數據集,並且遞減從中去相關次規範源的鏈中的第一個條目的引用計數。存儲系統還可去除與被清除的卷相關聯的元數據集。此夕卜,即使規範源正在被清除,存儲系統也不必把數據移到另一個卷。
[0102]如果作為鏈中的第一個規範源的規範源正被清除,則存儲系統可更新在鏈的起點的元數據集,以引用該卷和鏈中的第二個卷的位置,從鏈中去除第二個元數據集,並遞減地鏈的起點處的元數據集的引用計數。通過使鏈中的第一個元數據集引用未被改變的數據,存儲系統不需要為未被更改的區域更新卷目錄。此外,即使規範源被刪除,存儲系統也不必把數據移到另一個卷。
[0103]如果只存在與元數據集相關聯的一個規範源,則當所述規範源被寫入或者被刪除時,存儲系統可以像在不存在任何備用規範源的情況下那樣工作。因此,存儲系統可把數據拷貝到依賴它的級聯中的第一個卷。
[0104]當前的實現具有各種特徵。例如,通過除非在級聯中的任何卷上都不存在數據的物理拷貝,否則不需要為相關卷拷貝該數據,改善了清除。例如,通過除非存在作為對其來說在級聯中的任何剩餘卷上都不存在數據的物理拷貝的規範源的區域,否則不需要為相關卷拷貝該數據,改善了當刪除拷貝時的清除。
[0105]與適用於多目標拷貝(其中多個拷貝源自單個源)一樣,這些實現同樣適用於拷貝的真實級聯(其中拷貝源自拷貝),同樣適用於任意組合的這兩者的混合。這些實現依賴於基礎的級聯時間點拷貝特徵,但是通過不再要求用於拷貝的區域的物理存儲空間的位置處於該拷貝或者緊接在前的上遊拷貝(對該區域來說,不存在包含不同數據的居間拷貝),改進了這些基礎的級聯時間點拷貝特徵。
[0106]圖9圖解說明了源清除級聯卷的例證處理900。處理900可由例如與存儲系統120類似的存儲系統進行。
[0107]處理900確定是否收到對卷的寫入(操作904)。例如,對卷的寫入可來自外部系統。如果未收到對卷的寫入,則處理900等待對卷的寫入。
[0108]一旦收到對卷的寫入,處理900確定所述卷對於被寫區域是否是規範源(操作908)。
[0109]如果所述卷對於被寫區域不是規範源,則處理900遞減與該區域相關聯的元數據集中的引用計數(操作912),並確定元數據集位置標識符(操作916)。元數據集位置標識符可以是新的標識符或者重複利用的標識符。處理900還對於在元數據位置的元數據集,把被寫卷設立為規範源(操作920),並設立引用計數,以指示一個卷區域引用所述新的元數據集(操作924)。例如,引用計數可被設定為I。另外,處理900把新數據寫入所述卷(操作928)。然後處理900結束。
[0110]然而,如果該卷對於被寫區域是規範源,則處理900確定對於該區域是否存在另一個規範源(操作932)。例如,可通過搜索元數據集中的元數據集標識符,來實現確定是否存在另一個規範源。
[0111]如果對於被寫區域不存在另一個規範源,則處理900確定另一個卷是否依賴於該區域中的數據(操作936)。例如,可通過檢查相關聯的元數據集中的引用計數,來實現確定另一個卷是否依賴於該區域中的數據。如果另一個卷不依賴於該區域中的數據,則處理900把新的數據寫入該卷(操作928)。處理900然後結束。
[0112]然而,如果另一個卷確實依賴於該區域中的數據,則處理900檢查卷目錄,以確定具有與被寫區域相關聯的區域的下一個卷(操作940)。例如,可通過搜索卷目錄以查找與被寫區域相關聯的元數據集的標識符,來實現檢查卷目錄以查找與被寫區域相關聯的區域。在特定實現中,這可通過在被寫區域在其卷目錄中所佔據的相同位置檢查卷目錄來實現。
[0113]處理900還把被寫區域的現有數據拷貝到識別出的卷(操作944),並在相關聯的元數據集中把識別出的卷指定為所述現有數據的規範源(操作948)。另外,處理900遞減相關聯的元數據集中的引用計數(操作912),確定元數據位置標識符(操作916),對於在新的元數據位置的元數據集,把被寫卷設立為規範源(操作920),對於所述新的元數據集,把引用計數設定為I (操作924),並把新數據寫入該卷(操作928)。隨後結束處理900。
[0114]然而,如果對於被寫區域存在另一個規範源,則處理900確定被寫卷對於該區域是否是次規範源(操作952)。如果某個卷不是規範源鏈中的第一個,則它可被確定為次規範源。
[0115]如果被寫卷對於被寫區域是次規範源,則處理900去除該卷和主規範源卷之間的關聯(操作956)。例如,可通過從主卷的元數據集中刪除次規範源卷的標識符來實現所述關聯的去除。處理900還遞減關於主卷的關聯區域的元數據集中的引用計數(操作960),更新被寫卷的卷目錄以引用(例如,指向)與被寫區域相關聯的元數據集(操作962),對於與被寫卷相關聯的元數據集,把引用計數設定為I (操作924),並把新數據寫入被寫卷(操作928)。隨後結束處理900。
[0116]如果被寫卷對於被寫區域不是次規範源,則處理900檢查至少一個元數據集以識別另一個規範源(操作964)。例如,識別另一個規範源可包括在與被寫區域相關聯的元數據集中找出另一個元數據集的標識符。處理900還在與被寫區域相關聯的元數據集中去除被寫卷和識別出的卷之間的關聯(操作968)。例如,可通過從主規範源卷的元數據集中刪除與識別出的卷相關聯的元數據集的標識符來實現去除所述關聯。另外,處理900在元數據集中把識別出的卷指定為現有數據的主規範源(操作972),並遞減元數據集中的引用計數(操作976)。處理900還確定新數據的元數據集位置標識符(操作980),對於與元數據位置標識符相關聯的元數據集,把被寫卷設立為新數據的規範源(操作984),更新被寫卷的卷目錄,以引用與被寫區域相關聯的元數據集(操作962),對於與被寫卷相關聯的元數據集,把引用計數設定為I (操作924),以及把新數據寫入被寫卷(操作928)。隨後結束處理 900。
[0117]只要備份卷有效,就可進行處理900。因此,在正常操作期間,處理900可被重複許多次。
[0118]儘管處理900舉例說明了源清除級聯卷的一個例子,源清除級聯卷的其它處理可包括更少的操作、另外的操作和/或操作的不同安排。例如,處理可不包括確定是否存在另一個規範源。當不利用克隆拷貝來生成級聯卷時,可發生這種情況。再例如,處理可包括在檢查待寫區域是否是規範源之前,檢查另一個卷是否依賴於該待寫區域。如果沒有其它區域依賴於待寫區域,則該區域可被寫入,而不存在影響其它卷的顧慮。又例如,可在更新元數據集之前進行新數據的寫入,除非需要在進行寫入之前移動待寫區域中的數據。
[0119]圖10A-B圖解說明了源清除級聯卷的另一個例證處理1000。例如,處理1000可由與存儲系統120類似的系統進行。此外,可以與處理900結合地使用處理1000。
[0120]處理1000確定某個卷是否將被清除(操作1004)。例如,如果某個卷將被從級聯中去除或者將被重啟,則該卷需要被清除。如果卷不將被清除,則處理1000等待要被清除的卷。
[0121]一旦某個卷將被清除,處理1000就選擇待清除卷的區域(操作1008)。這可通過例如選擇卷上的第一個區域、卷上的最後一個區域、或者中間的某個區域來實現。處理1000還確定另一個卷是否依賴於該區域中的數據(操作1012)。例如,這可通過遞減與該區域相關聯的引用計數(所述引用計數例如可被保存在與卷區域相關聯的元數據集中),並確定所述引用計數是否達到O來實現。
[0122]如果另一個卷不依賴於該區域中的數據,則處理1000刪除相關聯的元數據集(操作1016),把該區域指定為完全的(操作1018),並確定在卷中是否存在另一個區域(操作1020)。即,如果沒有其它卷依賴於所選區域,則所選區域可被刪除,而不存在對其它級聯卷的影響。例如,可通過在陣列中設定指示符(例如,數字或標記)或者向另一個處理通知所選區域已被清除,把所述區域指定為完全的。例如,完全的區域可使其相關聯存儲空間被釋放(例如,如果磁碟被虛擬化)。如果卷中不存在另一個區域,則處理1000結束。如果在卷中存在另一個區域,則處理1000選擇另一個區域(操作1008),並確定另一個卷是否依賴於該區域中的數據(操作1012)。
[0123]如果另一個卷依賴於該區域中的數據,則處理1000確定被清除的卷對於所選區域是否是規範源(操作1024)。如果被清除的卷對於該區域不是規範源,則處理1000遞減相關聯的元數據集的引用計數(操作1028),再次把該區域指定為完全的(操作1018),並確定在卷中是否存在另一個區域(操作1020)。這是可能的,因為另一個卷區域保存相關聯的數據。
[0124]如果被清除的卷對於所選區域是規範源,則處理1000確定對於該區域是否存在另一個規範源。如果對於該區域存在另一個規範源,則處理1000對於相關聯的元數據集的標識符檢查卷目錄(操作1036)。處理1000還把被寫區域中的數據拷貝到識別的卷(操作1040),並在相關聯的元數據集中把識別的卷指定為規範源(操作1044)。處理1000另外遞減相關聯的元數據集的引用計數(操作1028),並再次把該區域指定為完全的(操作1018),以及確定卷中是否存在另一個區域(操作1020)。
[0125]然而,如果對於被清除區域存在另一個規範源,則處理1000確定被清除卷對於該區域是否是次規範源(操作1048)。如果被清除卷是次規範源,則處理1000對於與主規範源卷相關聯的至少一個元數據集,去除被清除卷和主規範源卷之間的關聯(操作1052)。處理1000還去除指示被清除的卷區域是規範源的元數據集(操作1056),並遞減與主規範源卷相關聯的元數據集中的引用計數(操作1060)。處理1000另外把該區域指定為完全的(操作1018),並檢查待清除的另一個卷區域(操作1020)。
[0126]如果被清除卷不是次規範源,則處理1000檢查一個或多個元數據集以識別另一個規範源(操作1064)。例如,可對於另一個規範源的元數據集的標識符,檢查與被清除區域相關聯的元數據集。再例如,可以個別地檢測元數據集,以識別另一個規範源的元數據集。一旦識別出適當的元數據集,就可從識別出的元數據集中提取卷和區域。處理1000還可去除指示被清除卷區域是所選區域的規範源的元數據集(操作1068),並把識別出的卷指定為現有數據的規範源(操作1072)。例如,識別出的卷的標識符可代替相關聯的元數據集中的被去除卷的標識符。
[0127]處理1000另外在至少一個元數據集中去除被清除卷和識別出的卷之間的關聯(操作1076),並遞減剛剛被更新的與主規範源卷相關聯的元數據集中的引用計數(操作1060)。處理1000另外把該區域指定為完全的(操作1018),並檢查要清除的另一個卷區域(操作 1020)。
[0128]只要備份卷有效,就可進行處理1000。因此,在正常操作期間,處理1000可被重複
許多次。
[0129]儘管處理1000舉例說明了源清除級聯卷的一個例證處理,然而源清除級聯卷的其它處理可包括更少的操作、另外的操作和/或操作的不同安排。例如,處理可不包括確定是否存在另一個規範源。例如,當克隆拷貝不被用於生成級聯卷時,可發生這種情況。再例如,處理可包括在檢查另一個區域是否依賴於所選區域之前,檢查卷是否是規範源。如果區域不是規範源,則它可被刪除,而不影響其它卷。又例如,可不必去除元數據集。例如,元數據集可在稍後某個時刻變得無效和/或被蓋寫。[0130]附圖中的流程圖和框圖圖解說明了本公開的各種實現的系統、方法和電腦程式產品的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在一些備選實現中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個連續的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。
[0131]圖11圖解說明了用於管理級聯卷的源清除的例證計算機系統1100。例如,計算機系統1100可例示存儲系統的存儲控制器的一些組件。
[0132]系統1100包括利用網絡1140耦接在一起的處理器1110、輸入/輸出系統1120和存儲器1130。如圖所示,計算機系統1100充當存儲系統的存儲控制器。
[0133]處理器1110—般包括在程序指令(例如,來自軟體和/或固件)的指示下處理數據的邏輯處理單元(例如,算術邏輯單元)。例如,處理器1110可以是微處理器、微控制器或者專用集成電路。處理器可依據精簡指令集計算機(RISC)或者複雜指令集計算機(CISC)原理工作。通常,處理器可以按照邏輯方式操縱數據的任何裝置。
[0134]輸入/輸出系統1120可包括一個或多個通信接口和/或一個或多個其它用戶接口。通信接口可以是例如網絡接口卡(無線或有線)或者數據機。用戶接口可以是例如用戶輸入裝置(例如,鍵盤、小鍵盤、觸摸板、鐵筆、滑鼠或麥克風)或者用戶輸出裝置(例如,監視器、顯示器或揚聲器)。通常,輸入-輸出系統1120可以是計算機系統能夠用其接收和輸出數據的各種裝置的任意組合。
[0135]存儲器1130可包括例如隨機存取存儲器(RAM)、只讀存儲器(ROM)、快閃記憶體和/或磁碟存儲器。各個項目可在不同的時間被保存在存儲器的不同部分中。通常,存儲器1130可以是用於保存數據的裝置的任意組合。
[0136]存儲器1130包括指令1132和數據1136。指令1132包括作業系統1133 (例如,Windows、Linux或Unix)和應用程式1134,應用程式1134包括備份管理器1135。數據1136包括應用程式1134所需和/或產生的數據,包括寫入數據1137和級聯元數據1138。
[0137]網絡1140負責在處理器1110、輸入/輸出系統1120和存儲器1130之間傳送數據。網絡1140可包括例如許多不同種類的總線(例如,串行總線和並行總線)。
[0138]在一些操作模式下,處理器1110能夠接收寫入(例如,從外部系統),並為計算機系統所管理的存儲器準備所述寫入。另外,處理器1110可按照備份管理器1135,在存儲器中生成主卷的備份卷,並生成關於每個卷區域的元數據,所述元數據指示哪些區域彼此引用以及哪些區域是規範區域。例如,在特定實現中,每個級聯卷可具有相關聯的卷目錄,所述卷目錄把卷的各個區域映射到許多元數據集之一,卷目錄和元數據集一起構成級聯元數據 1138。
[0139]通過利用級聯元數據1138,處理器1110可在級聯卷被寫入時,確定數據是否需要被拷貝,等等。例如,如果被寫卷區域不是規範源,則其中的數據不必被拷貝。再例如,如果被寫卷區域是規範源,但是沒有其它卷依賴於它,則可不必拷貝其中的數據。另外,如果被寫卷是規範源,但是存在備用的規範源,則可不必拷貝數據。[0140]在清除卷時(例如,在刪除該卷時),處理器1110也可利用級聯數據。例如,處理器可利用該數據來確定沒有其它區域依賴於卷區域,因此,該卷區域可被刪除,而不影響級聯的剩餘部分。再例如,處理器可以利用級聯元數據來確定被刪除的卷區域不是規範源,從而同樣地可被刪除,而不影響級聯的剩餘部分。再例如,處理器可利用級聯元數據來確定卷是規範源,從而其中的數據應被拷貝到另一個卷。然而,在一些實現中,處理器還可利用級聯元數據來確定對於卷區域來說是否存在備選的規範源,這可避免拷貝該卷區域中的數據。
[0141]處理器1110可通過實現上面討論的任意技術,包括處理900-1000中的一個或多個部分,來完成這些操作。
[0142]這裡使用的術語只是用於說明特定的實現,並不意圖限制本發明。這裡使用的單數形式意圖還包括複數形式,除非上下文明確地另有所示。另外要明白當用在說明書中時,術語「包括」和/或「包含」指定記載的特徵、整數、步驟、操作、元件和/或組件的存在,但不排除一個或多個其它特徵、整數、步驟、操作、元件、組件和/或它們的群體的存在或增加。
[0143]以下的權利要求中的所有裝置或步驟加功能要素的對應結構、材料、動作和等同物意圖包括與明確主張的其它要求保護的要素結合地實現功能的任何結構、材料或動作。當前實現的說明只是出於舉例說明的目的給出的,而不是窮盡的,也不意圖局限於公開的實現形式。對本領域的普通技術人員來說,許多修改和變化是顯而易見的,而不脫離本公開的範圍和精神。選擇和說明這些實現是為了解釋本公開的原理和實際應用,和使本領域的其他人或普通技術人員能夠關於具有適合於預期的特定應用的各種修改的各種實現,理解本公開。
[0144]說明了源清除級聯卷的多種實現,並且提到或者暗示了幾種其它實現。此外,本領域的技術人員易於認識到可對這些實現作出各種增加、刪除、修改和替代,同時仍然實現源清除級聯卷。從而,受保護的主題的範圍應根據以下權利要求判斷,以下權利要求記載了一種或多種實現的一個或多個概念。
【權利要求】
1.一種系統,包括: 存儲器,所述存儲器包括主卷和所述主卷的多個級聯備份卷;和存儲控制器,所述存儲控制器適於從外部源接收對於各個卷中的至少一個卷的寫入,並準備所述寫入以便存儲,其中所述存儲控制器進一步適於: 確定所述寫入是否針對作為規範源的卷區域; 如果所述寫入針對不是規範源的區域,則: 遞減與所述區域相關聯的元數據集中的引用計數, 確定元數據集位置標識符, 對於與所述元數據集位置標識符相關聯的元數據集,把所述區域的卷設立為規範源,和 設立所述元數據集的引用計數,以指示所述元數據集被一個卷區域引用;以及 如果所述寫入針對作為規範源的區域,則: 檢查與所述區域相關聯的元數據集,以確定另一個卷是否依賴於所述區域中的數據,和 如果另一個卷不依賴於所述區域中的數據,則把新數據寫入所述區域。
2.按照權利要求1所述的系 統,其中,所述元數據集包含卷標識符、卷區域標識符和引用計數。
3.按照權利要求1所述的系統,其中,所述存儲控制器進一步適於: 如果另一個卷確實依賴於所述區域中的數據,則檢查至少一個卷的目錄,以確定具有與待寫區域相關聯的區域的下一個卷; 把所述待寫區域中的數據拷貝到識別出的卷; 遞減與所述待寫區域相關聯的元數據集中的引用計數;以及 把識別出的卷指定為被拷貝數據的規範源。
4.按照權利要求3所述的系統,其中,所述存儲控制器進一步適於: 確定元數據集位置標識符; 對於與所述元數據集位置標識符相關聯的元數據集,把待寫區域的卷設立為規範源;和 設立所述元數據集的引用計數,以指示所述元數據集被一個卷區域引用。
5.按照權利要求1所述的系統,其中,所述存儲控制器進一步適於: 確定另一個規範源是否與待寫區域相關聯; 如果另一個規範源與待寫區域相關聯,則確定待寫卷對於待寫區域是否是次規範源;和 如果待寫卷對於待寫區域是次規範源,則: 去除待寫卷和主規範源卷之間的關聯, 遞減與和待寫區域相關聯的主規範源卷的區域相關聯的元數據集的引用計數, 對於與待寫區域相關聯的元數據集,設立引用計數,以指示一個引用卷區域,和 更新待寫卷的卷目錄,以識別與待寫區域相關聯的元數據集。
6.按照權利要求5所述的系統,其中,所述存儲控制器進一步適於: 如果待寫卷是待寫區域的主規範源,則檢查至少一個元數據集,以識別另一個規範源; 在與待寫卷相關聯的元數據集中,去除待寫卷和識別出的卷之間的關聯; 在相關聯的元數據集中,把識別出的卷指定為主規範源;和 遞減相關聯的元數據集中的引用計數。
7.按照權利要求6所述的系統,其中,所述存儲系統進一步適於: 為待寫數據確定元數據集位置標識符;和 在位於確定的元數據集位置標識符的元數據集中,對於待寫區域,把待寫卷設立為規範源。
8.按照權利要求1所述的系統,其中,所述存儲系統進一步適於: 確定級聯中的卷需要被清除; 如果某個卷需要被清除,則選擇該卷的區域; 確定另一個卷是否依賴於所選區域; 把所選區域指定為完全的;和 如果另一個卷不依賴於所選區域,則確定另一個卷區域是否需要被清除。
9.按照權利要求8所述的系統,其中,所述存儲系統進一步適於: 如果另一個卷依賴於所選區域,則確定待清除卷對於所選區域是否是規範源; 如果待清除卷對於所選區域不是規範源,則遞減與所選區域相關聯的元數據集中的引用計數;和 把所選區域指定為完全的。
10.按照權利要求9所述的系統,其中,所述存儲系統進一步適於: 如果待清除卷對於所選區域是規範源,則檢查其它卷的卷目錄,以查找與所選區域相關聯的元數據集的標識符; 把所選區域中的數據拷貝到識別出的卷; 在與所選區域相關聯的元數據集中,把識別出的卷指定為數據的規範源;和 遞減相關聯的元數據集中的引用計數。
11.按照權利要求9所述的系統,其中,所述存儲系統進一步適於: 如果待清除卷對於所選區域是規範源,則確定對於所選區域是否存在另一個規範源; 如果存在另一個規範源,則確定待清除卷對於所選區域是否是次規範源; 如果被清除卷對於所選區域是次規範源,則在與主規範源卷相關聯的元數據集中,去除所選區域和主規範源卷之間的關聯;以及 遞減與主規範源卷相關聯的元數據集中的引用計數。
12.按照權利要求11所述的系統,其中,所述存儲系統進一步適於: 如果待清除卷對於所選區域是主規範源,則檢查至少一個元數據集,以確定另一個規範源卷; 在與所選區域相關聯的元數據集中,去除被清除卷和識別出的卷之間的關聯; 對於相關聯的元數據集,把識別出的卷指定為主規範源卷;和 遞減相關聯的元數據集中的引用計數。
13.—種方法,包括: 保存主卷和主卷的多個級聯備份卷;從外部源接收對各個卷中的至少一個卷的寫入,並準備所述寫入以便存儲; 確定所述寫入是否針對作為規範源的卷區域; 如果所述寫入針對不是規範源的區域,則: 遞減與所述區域相關聯的元數據集中的引用計數, 確定元數據集位置標識符, 對於與所述元數據集位置標識符相關聯的元數據集,把所述區域的卷設立為規範源,和 設立所述元數據集的引用計數,以指示所述元數據集被一個卷區域引用;和 如果所述寫入針對作為規範源的區域,則: 檢查與所述區域相關聯的元數據集,以確定另一個卷是否依賴於所述區域中的數據,和 如果另一個卷不依賴於所述區域中的數據,則把新數據寫入所述區域。
14.按照權利要求13所述的方法,進一步包括: 如果另一個卷確實依賴於所述區域中的數據,則檢查至少一個卷的目錄,以確定具有與待寫區域相關聯的區域的下一個卷; 把所述待寫區域中的數據拷貝到識別出的卷; 遞減與所述待寫區域相關聯的元數據集中的引用計數;和 把識別出的卷指定為被拷貝數據的規範源。
15.按照權利要求13所述的方法,進一步包括: 確定另一個規範源是否與待寫區域相關聯; 如果另一個規範源與待寫區域相關聯,則確定待寫卷對於待寫區域是否是次規範源;和 如果待寫卷對於待寫區域是次規範源,則: 去除待寫卷和主規範源卷之間的關聯, 遞減與和待寫區域相關聯的主規範源卷的區域相關聯的元數據集的引用計數, 對於與待寫區域相關聯的元數據集,設立引用計數,以指示一個引用卷區域,和 更新待寫卷的卷目錄,以識別與待寫區域相關聯的元數據集。
16.按照權利要求13所述的方法,進一步包括: 確定級聯中的卷需要被清除; 如果某個卷需要被清除,則選擇該卷的區域; 確定另一個卷是否依賴於所選區域; 如果另一個卷不依賴於所選區域,則把所選區域指定為完全的;和 確定另一個卷區域是否需要被清除。
17.按照權利要求16所述的方法,進一步包括: 如果另一個卷依賴於所選區域,則確定待清除卷對於所選區域是否是規範源; 如果待清除卷對於所選區域不是規範源,則遞減與所選區域相關聯的元數據集中的引用計數;和 把所選區域指定為完全的。
18.按照權利要求17所述的方法,進一步包括:如果待清除卷對於所選區域是規範源,則檢查其它卷的卷目錄,以查找與所選區域相關聯的元數據集的標識符; 把所選區域中的數據拷貝到識別出的卷; 對於與所選區域相關聯的元數據集,把識別出的卷指定為規範源;和 遞減相關聯的元數據集中的引用計數。
19.按照權利要求17所述的方法,進一步包括: 如果待清除卷對於所選區域是規範源,則確定對於所選區域是否存在另一個規範源; 如果存在另一個規範源,則確定待清除卷對於所選區域是否是次規範源; 如果被清除卷對於所選區域是次規範源,則在與主規範源卷相關聯的元數據集中,去除所選區域和主規範源卷之間的關聯;和 遞減與主規範源卷相關聯的元數據集中的引用計數。
20.一種用於源清除級聯卷的電腦程式產品,所述電腦程式產品包括: 計算機可讀存儲介質; 第一程序指令,用於確定接收的對卷的級聯中的某個卷的寫入是否針對作為規範源的卷區域; 第二程序指令,用於如果所述寫入針對不是規範源的區域,則遞減與該區域相關聯的元數據集中的引用計數,確定元數據集位置標識符,對於與元數據集位置標識符相關聯的元數據集,把所述區域的卷設立為規範源,以及設立所述元數據集的引用計數,以指示所述元數據集被一個卷區域引用;和` 第三程序指令,用於如果所述寫入針對作為規範源的區域,則檢查與該區域相關聯的元數據集,以確定另一個卷是否依賴於所述區域中的數據,以及如果另一個卷不依賴於所述區域中的數據,則把新數據寫入所述區域中, 其中,所述程序指令被保存在所述計算機可讀存儲介質上。
21.按照權利要求20所述的電腦程式產品,進一步包括第四程序指令,用於: 如果另一個卷不依賴於所述區域中的數據,則檢查至少一個卷的目錄,以確定具有與待寫區域相關聯的區域的下一個卷; 把待寫區域中的數據拷貝到識別出的卷; 遞減與待寫區域相關聯的元數據集中的引用計數;和 把識別出的卷指定為被拷貝數據的規範源。
22.按照權利要求20所述的電腦程式產品,進一步包括第五程序指令,用於: 確定另一個規範源是否與待寫區域相關聯; 如果另一個規範源與待寫區域相關聯,則確定待寫卷對於待寫區域是否是次規範源;和 如果待寫卷對於待寫區域是次規範源,則: 去除待寫卷和主規範源卷之間的關聯, 遞減與和待寫區域相關聯的主規範源卷的區域相關聯的元數據集的引用計數, 對於與所述待寫區域關聯的元數據集,設立引用計數,以指示一個引用卷區域,和 更新待寫卷的卷目錄,以識別與待寫區域相關聯的元數據集。
23.按照權利要求20所述的電腦程式產品,進一步包括第六程序指令,用於:確定級聯中的卷需要被清除; 如果某個卷需要被清除,則選擇該卷的區域; 確定另一個卷是否依賴於所選區域; 如果另一個卷不依賴於所選區域,則把所選區域指定為完全的;和 確定另一個卷區域是否需要被清除。
24.按照權利要求23所述的電腦程式產品,進一步包括第七程序指令,用於: 如果另一個卷依賴於所選區域,則確定待清除卷對於所選區域是否是規範源; 如果待清除卷對於所選區域不是規範源,則遞減與所選區域相關聯的元數據集中的引用計數;和 把所選區域指定為完全的。
25.按照權利要求24所述的電腦程式產品,進一步包括: 如果待清除卷對於所選區域是規範源,則檢查其它卷的卷目錄,以查找與所選區域相關聯的元數據集的標識符; 把所選區域中的數據拷貝到識別出的卷; 在與所選區域相關聯的元數據集中,把識別出的卷指定為數據的規範源;和 遞減相關聯的元數據集中的引用計數。
【文檔編號】G06F11/14GK103514114SQ201310254337
【公開日】2014年1月15日 申請日期:2013年6月25日 優先權日:2012年6月25日
【發明者】C·B·貝肯, J·P·維爾金松 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀