專利名稱:用于管理數(shù)據(jù)版本的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于管理數(shù)據(jù)版本的方法、系統(tǒng)和計算M序產(chǎn)品。
技術(shù)背景數(shù)據(jù)可以隨時間而演變。各種方法和系統(tǒng)被開發(fā)用于管理隨時間演變 的數(shù)據(jù)。下面的美國專利申請和美國專利描述了用于管理數(shù)據(jù)的各種方法,在此通過引用將其全部并入Perry等人的美國專利申請公開序列號 2005/0066118和Stager等人的美國專利申請公開序列號2005/0193272; Rowan等人的美國專利申請公開序列號2005/0066222, Rowan等人的美國 專利申請公開序列號2005/0076262, Rowan等人的美國專利申請公開序列 號2005/0065962; Rowan等人的美國專利申請公開序列號2005/0063374; Rowan等人的美國專利申請公開序列號2005/0076264; Rowan等人的美國 專利申請公開序列號2005/0066225; Rowan等人的美國專利申請7>開序列 號2005/0076261; Perry等人的美國專利申請公開序列號2005/0066118, 以及Kekre等人的美國專利申請公開序列號2005/0071379.對隨時間演變的數(shù)據(jù)的管理可以包括在不同的時間點制作數(shù)據(jù)的副 本。時間點副本(point-in-time copy )可以涉及將所有的數(shù)據(jù)從源巻( source volume)物理復(fù)制到目標(biāo)巻,從而使得目標(biāo)巻具有如時間點上的數(shù)據(jù)的副 本。還可以通it^JE輯上制作數(shù)據(jù)的副本,并且然后僅在必要時復(fù)制完數(shù) 據(jù)(實際上推遲了物理復(fù)制)來制作時間點副本(也被稱為版本)。進(jìn)行 該邏輯復(fù)制操作以便最小化在此期間不可訪問目標(biāo)和源巻的時間。許多直接訪問存儲設(shè)備(DASD)子系統(tǒng)能夠進(jìn)行"即時虛擬復(fù)制 (instant virtual copy)"操作,也被稱為"快速復(fù)制功能"。即時虛擬復(fù)
制操作是通過修改元數(shù)據(jù)(例如關(guān)系表或指示符)而將源數(shù)據(jù)對象視為原 件和副本二者來運(yùn)作的。響應(yīng)于主機(jī)的復(fù)制請求,存儲子系統(tǒng)在還未制作 數(shù)據(jù)的任何物理副本的情況下就立即報告副本的創(chuàng)建。僅僅已創(chuàng)建"虛擬" 副本,并且主機(jī)完全不知道不存在額外的物理副本。隨后,當(dāng)存儲系統(tǒng)接收到對原件或副本的更新時,該更新被分別存儲 并且僅被交叉引用至已更新的數(shù)據(jù)對象。最初的好處在于即時虛擬復(fù)制幾 乎瞬間發(fā)生,比常規(guī)的物理復(fù)制操作完成得快得多。這使主機(jī)和存儲子系 統(tǒng)自由地進(jìn)行其它任務(wù)。主機(jī)或存儲子系統(tǒng)甚至可以在后臺處理期間或在 另外的時間著手創(chuàng)建原始數(shù)據(jù)對象的實際的物理副本。已知的一種這樣的即時虛擬復(fù)制操作是FlashCopy⑧操作(FlashCopy 是國際商業(yè)機(jī)器公司或"IBM"的注冊商標(biāo))。FlashCopy⑧操作涉及在相 同或不同設(shè)備上的源與目標(biāo)巻之間建立邏輯的時間點關(guān)系。FlashCopy⑧操 作保證在已經(jīng)將FlashCopy⑧關(guān)系中的軌道(track)固化到其在目標(biāo)磁 盤上的位置以前,該軌道都駐留于源側(cè)(sourceside)。關(guān)系表用于維護(hù)子系統(tǒng)中所有現(xiàn)有的FlashCopy⑧關(guān)系上的信息。在 FlashCopy⑧關(guān)系的建立階段期間,在源和目標(biāo)關(guān)系表中為參與到正在建立 的FlashCopy⑧的源和目標(biāo)記錄一個條目。每個添加的條目均維護(hù)關(guān)于 FlashCopy⑧關(guān)系的所有需要的信息。當(dāng)已經(jīng)將來自源范圍(source extent) 的所有FlashCopy⑧軌道物理復(fù)制到目標(biāo)范圍(target extents)時,或者當(dāng) 接收到撤消命令時,從關(guān)系表中移除用于關(guān)系的兩個條目.在某些情況中, 即使已經(jīng)將所有的軌道從源范圍復(fù)制到目標(biāo)范圍,也維持該關(guān)系.目標(biāo)關(guān)系表進(jìn)一步包括這樣的位圖,即該位圖標(biāo)識在FlashCopy 關(guān) 系中所涉及的、還未被復(fù)制完并且因而是受保護(hù)的軌道的那些軌道.目標(biāo) 設(shè)備中的每個軌道由位圖中的一個比特來表示,當(dāng)將對應(yīng)的軌道建立為 FlashCopy⑧關(guān)系的目標(biāo)軌道時,設(shè)置目標(biāo)比特。當(dāng)由于在源或目標(biāo)設(shè)備上 的寫入或者后臺復(fù)制任務(wù)而已經(jīng)從源位置復(fù)制了對應(yīng)的軌道并且將其離臺 (destage)至目標(biāo)設(shè)備時,重置目標(biāo)比特。在FlashCopy⑧操作期間,作為邏輯時間點關(guān)系的建立的一部分,應(yīng)當(dāng)將包括在FlashCopy⑧關(guān)系內(nèi)的源高速緩存中的所有軌道離臺至物理源 巻,例如,源DASD。在Micka等人的美國專利6,611,卯l和Werner等人 的美國專利7,000,145中描述了 FlashCopy⑧操作的進(jìn)一步的細(xì)節(jié),在此通 過引用將其并入本文。一旦建立了邏輯關(guān)系,那么主機(jī)就可以立刻訪問源和目標(biāo)巻上的數(shù)據(jù), 并且作為后臺操作的一部分,可以復(fù)制該數(shù)據(jù)。讀取作為FlashCopy⑧關(guān) 系中而非高速緩存中的目標(biāo)的軌道觸發(fā)登臺攔截(stageintercept),其使 得在還未復(fù)制完源軌道時并且在從目標(biāo)高速緩存提供到軌道的訪問之前, 對應(yīng)于所請求的目標(biāo)軌道的源軌道被登臺至目標(biāo)高速緩存.這確保該目標(biāo) 具有來自于在FlashCopy⑧操作的時間點上存在的源的副本。此外,到源 設(shè)備上還未被復(fù)制完的軌道的任何離臺均觸發(fā)離臺攔截(destage intercept),其使得源設(shè)備上的軌道被復(fù)制到目標(biāo)設(shè)備.已經(jīng)(至少部分地)開發(fā)了即時虛擬復(fù)制技術(shù)來快速創(chuàng)建數(shù)據(jù)的重復(fù) 副本,而無需中斷或減速前臺進(jìn)程。諸如FlashCopy⑧操作的即時虛擬復(fù) 制技術(shù)提供了一種時間點副本工具。即時虛擬復(fù)制技術(shù)可以用于各種應(yīng)用, 包括,例如,數(shù)據(jù)備盼、數(shù)據(jù)遷移、數(shù)據(jù)挖掘、測試等。例如,即時虛擬 復(fù)制技術(shù)可以用于創(chuàng)建源數(shù)據(jù)的物理副本,從而有助于災(zāi)難恢復(fù)。在4艮多應(yīng)用中,需勤,J建和保存存儲數(shù)據(jù)的多個只讀快照.這些快照 表示存儲數(shù)據(jù)的版本,并且每個版本均應(yīng)當(dāng)被獨(dú)立地訪問.需要提供用于管理數(shù)據(jù)版本的有效方法、系統(tǒng)和計算M序產(chǎn)品。發(fā)明內(nèi)容依照本發(fā)明的一個方面,提供了一種用于管理數(shù)據(jù)版本的方法。所述 方法包括(i)接收生成源巻的第一版本的第一請求;(ii)響應(yīng)于所述 第一請求,選擇性地更新指示與所述源巻的不同版本關(guān)聯(lián)的數(shù)據(jù)塊的改變 的第一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少一個最近修改的數(shù)據(jù)塊,所述至少一 個最近修改的數(shù)據(jù)塊在與所述第 一版本關(guān)聯(lián)的第 一時間點和與第 一源巻的 第二版本關(guān)聯(lián)的第二時間點之間被修改;其中表示所述源巻的不同版本的 信息存儲在目標(biāo)存儲單元中;并且其中在所述源巻的多個版本之間保持不 變的數(shù)據(jù)塊在這多個版本之間被共享;其中所述第 一 時間點跟隨所述第二 時間點,并且其中所述至少一個數(shù)據(jù)塊屬于所述巻;以及(m)響應(yīng)于所 述第一控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇性地將數(shù)據(jù)塊從所述源巻復(fù)制到目標(biāo)巻。在一個實施例中,所述響應(yīng)于所述第一請求選擇性地更新所述第一控 制數(shù)據(jù)結(jié)構(gòu)包括更新所述控制數(shù)據(jù)結(jié)構(gòu)以反映未存儲在所述目標(biāo)存儲單 元中但卻應(yīng)當(dāng)復(fù)制到所述目標(biāo)存儲單元的數(shù)據(jù)塊。在另 一實施例中,所述第一控制數(shù)據(jù)結(jié)構(gòu)包括每巻的B樹(B-tree per volume),其是通過密鑰加鎖的,所述密鑰包括lt據(jù)塊標(biāo)識符和所請求的 時間點。在又一實施例中,響應(yīng)于所述第一請求選擇性地更新所述第一控制數(shù) 據(jù)結(jié)構(gòu)的階段包括在所述B樹中生成空條目。當(dāng)將對應(yīng)的數(shù)據(jù)塊復(fù)制到 所述目標(biāo)存儲單元時,可以填寫該空條目。在一個實施例中,所述方法進(jìn)一步包括接收檢索所述巻的被請求版 本的請求,以及在以下情況下將屬于所述被請求版本的至少一個數(shù)據(jù)塊復(fù) 制到所述目標(biāo)存儲單元(i)所述至少一個數(shù)據(jù)塊未被復(fù)制到所述目標(biāo)存 儲單元并且(ii)在與所述被請求版本關(guān)聯(lián)的時間點和與至少一個先前的版 本關(guān)聯(lián)的時間點之間修改了所述至少一個數(shù)據(jù)塊。在另一實施例中,建立新的版本包括在源上建立增量快速復(fù)制關(guān)系 (incremental flash copy relation),并且復(fù)制是使用快速復(fù)制服務(wù)(flash copy services )來完成的。在一個實施例中,所述方法進(jìn)一步包括以惰性(lazy)方式更新至 少一個控制數(shù)據(jù)結(jié)構(gòu)的條目。在另一實施例中,所述方法進(jìn)一步包括維護(hù)指示未復(fù)制到所述目標(biāo) 存儲單元的數(shù)據(jù)塊的最舊版本的第三控制數(shù)據(jù)結(jié)構(gòu)。所述第三控制數(shù)據(jù)結(jié) 構(gòu)可以指示屬于多個版本的數(shù)據(jù)塊。在又一實施例中,所述方法進(jìn)一步包括維護(hù)指示未復(fù)制到所述目標(biāo) 存儲單元的數(shù)據(jù)塊的最舊版本的第三控制數(shù)據(jù)結(jié)構(gòu),以及維護(hù)指示未存儲 在所述目標(biāo)存儲單元中的數(shù)據(jù)塊的次舊版本的第四控制數(shù)據(jù)結(jié)構(gòu)。所述第 三和第四控制數(shù)據(jù)結(jié)構(gòu)可以促進(jìn)對其條目的直接訪問。在一個實施例中,所述方法進(jìn)一步包括維護(hù)指示成功復(fù)制到所述目 標(biāo)巻的數(shù)據(jù)塊的最新版本的第六數(shù)據(jù)結(jié)構(gòu)。依照本發(fā)明的第二方面,提供了一種包括計算機(jī)可用介質(zhì)的計算;^ 序產(chǎn)品,所述計算機(jī)可用介質(zhì)包括計算機(jī)可讀程序。當(dāng)所述計算機(jī)可讀程 序在計算機(jī)上執(zhí)行時,其可以使所述計算機(jī)接收生成源巻的第一版本的 第一請求;響應(yīng)于所述第一請求,選擇性地更新指示與所述源巻的不同版 本關(guān)聯(lián)的數(shù)據(jù)塊的改變的第 一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少一個最近修改 的數(shù)據(jù)塊,所述至少一個最近修改的數(shù)據(jù)塊在與所述第一版本關(guān)聯(lián)的第一 時間點和與第 一源巻的第二版本關(guān)聯(lián)的第二時間點之間被修改;其中表示 所述源巻的不同版本的信息存儲在目標(biāo)存儲單元中;以及響應(yīng)于所述第一 控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇性地將數(shù)據(jù)塊從所述源巻復(fù)制到目標(biāo)巻;其中 在所述源巻的多個版本之間保持不變的數(shù)據(jù)塊在這多個版本之間^L共享; 其中所述第 一時間點跟隨所述笫二時間點,并且其中所述至少 一個4St據(jù)塊 屬于所述巻,依照本發(fā)明的第三方面,提供了一種包括系統(tǒng)存儲器、源高速緩存和 目標(biāo)高速緩存的存儲控制器.所述存儲控制器可以適于耦合于源存儲單元 和目標(biāo)存儲單元;其中所述存儲控制器適于接收生成源巻的第一版本的 .笫一請求;響應(yīng)于所述第一請求,選擇性地更新指示與所述源巻的不同版 本關(guān)聯(lián)的數(shù)據(jù)塊的改變的第一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少一個最近修改 的數(shù)據(jù)塊,所述至少 一個最近修改的數(shù)據(jù)塊在與所述第一版本關(guān)聯(lián)的第一 時間點和與第一源巻的第二版本關(guān)聯(lián)的第二時間點之間被修改;以及響應(yīng) 于所述第一控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇性地將數(shù)據(jù)塊從所述源巻復(fù)制到目 標(biāo)巻;其中表示所述源巻的不同版本的信息存儲在所述目標(biāo)存儲單元中; 并且其中在所述源巻的多個版本之間保持不變的數(shù)據(jù)塊在這多個版本之間 被共享;其中所述第一時間點跟隨所述第二時間點,并且其中所述至少一個數(shù)據(jù)塊屬于所述巻.
結(jié)合附圖,通過以下詳細(xì)描述將更充分地獲悉和理解本發(fā)明,其中 圖1根據(jù)本發(fā)明的實施例說明了存儲控制器及其環(huán)境; 圖2根據(jù)本發(fā)明的實施例說明了多個控制數(shù)據(jù)結(jié)構(gòu); 圖3-4根據(jù)本發(fā)明的實施例說明了在各個時間點處的第一控制數(shù)據(jù)結(jié) 構(gòu)的一部分;以及圖5根據(jù)本發(fā)明的實施例說明了用于管理數(shù)據(jù)版本的方法,具體實施方式
在下面的描述中,參照附圖,附圖形成了本^兌明書的一部分并且說明 了本發(fā)明的若干實施方式。要理解到,可以利用其它的實施方式并且在不 背離本發(fā)明的范圍的情況下可以進(jìn)行結(jié)構(gòu)和操作上的改變。本發(fā)明提供了 一種用于存儲和檢索數(shù)據(jù)的多個版本的方法、系統(tǒng)和計 算機(jī)程序產(chǎn)品.數(shù)據(jù)被安排在包括多個數(shù)據(jù)塊(例如但不限于軌道)的巻 中。為了便于解釋,以下描述的某些部分將涉及軌道。源存儲單元和目標(biāo)存儲單元可以存儲各種巻版本。便利地,選擇性地 將數(shù)據(jù)塊從源存儲單元傳送至目標(biāo)存儲單元。將至少一個控制數(shù)據(jù)結(jié)構(gòu)用 于訪問存儲在目標(biāo)數(shù)據(jù)結(jié)構(gòu)中的不同的巻版本。便利地, 一旦接收到生成新版本的請求,就可以生成在第一控制數(shù)據(jù) 結(jié)構(gòu)內(nèi)的塊的新的空控制條目,其在這樣的情況下么"故生成按照請求的 結(jié)果,應(yīng)當(dāng)在源處保護(hù)該數(shù)據(jù)塊;即,如果在目標(biāo)上讀取或者如果將要在 源存儲單元處重寫,應(yīng)當(dāng)將該數(shù)據(jù)塊復(fù)制到目標(biāo)存儲單元。換句話說,可 能在目標(biāo)處要求源存儲單元上的數(shù)據(jù)塊,但其卻未被復(fù)制和存儲在那里. 在該階段,還未分配物理軌道。如果生成了空控制條目,那么當(dāng)將對應(yīng)的 數(shù)據(jù)塊從源存儲單元傳送至目標(biāo)存儲單元時可以填寫該空控制條目。便利地,通過使用包括所請求的數(shù)據(jù)塊標(biāo)識符和所請求的版本序列號 或所請求的時間戳的密鑰來險索數(shù)據(jù)塊的某個版本。該檢索包括搜索在所
請求的版本序列號之前被改變的(對應(yīng)于所請求的數(shù)據(jù)塊標(biāo)識符的)最近 改變的目標(biāo)數(shù)據(jù)塊。要注意,版本號通常需要較少的空間.便利地,在任何給定時間點處的每數(shù)據(jù)塊空控制條目的數(shù)量響應(yīng)于仍然需要在源處受到保護(hù)(在副4^發(fā)送到目標(biāo)之前未被重寫)的存儲實體 的數(shù)目。例如,如果源高速緩存先于源存儲單元,那么特定數(shù)據(jù)塊的兩個不同 的更新版本均可以存儲在源高速緩存內(nèi)和源存儲單元內(nèi)。因此,為了保護(hù) 這些數(shù)據(jù)版本,在任何給定的時間點可以存在達(dá)兩個空控制條目。 一旦該 數(shù)據(jù)塊的甚至更新的版本到達(dá)源,就必須重寫源上存儲的數(shù)據(jù)版本之一。 如果其受到保護(hù),那么在重寫之前,將其傳送至目標(biāo)存儲單元并且填寫對 應(yīng)的先前的空控制條目。響應(yīng)于發(fā)起新的祐:請求版本,可以生成另一空控 制條目。便利地,巻的所有版本均存儲在增強(qiáng)型空間有效目標(biāo)巻(enhanced Space Efficient target volume),并且控制數(shù)據(jù)結(jié)構(gòu)是B樹數(shù)據(jù)結(jié)構(gòu)。當(dāng) 所請求的數(shù)據(jù)塊標(biāo)識符和時間戳(或版本序列號)用于搜索B樹的分支時, 所請求的巻標(biāo)識符指向B樹的根部。便利地,每改變最多 一次地#*個數(shù)據(jù)塊從源存儲單元復(fù)制到目標(biāo)存 儲單元。從源存儲單元到目標(biāo)存儲單元的復(fù)制過程的時序響應(yīng)于(i)在 不同巻版本的生成之間數(shù)據(jù)塊中的改變;(ii)生成巻版本的請求;(iii) 先于目標(biāo)存儲單元的存儲實體的數(shù)目;(iv)讀^i^未被復(fù)制到目標(biāo)存儲 單元的巻版本的請求。便利地,在目標(biāo)存儲單元處所消耗的總的元數(shù)據(jù)空間與巻的初始版本 的大小加上從先前的版本改變而來的數(shù)據(jù)塊數(shù)的所有版本的總和成比例,和成比例。便利地,諸如FlashCopy⑧變更記錄(CR)圖的第二數(shù)據(jù)結(jié)構(gòu)用于確 定在連續(xù)的巻版本的生成之間改變了哪些數(shù)據(jù)塊。該變更記錄圖可以使每 數(shù)據(jù)塊有一比特,如果在與不同版本關(guān)聯(lián)的時間點之間修改了對應(yīng)的數(shù)據(jù)
塊,則對其進(jìn)行設(shè)置。 一旦將該數(shù)據(jù)塊復(fù)制到目標(biāo)存儲單元,就重置該比 特。便利地,并非對數(shù)據(jù)塊的每個修改都應(yīng)當(dāng)被發(fā)送至目標(biāo)存儲單元。如 果該數(shù)據(jù)塊版本表示在與巻版本關(guān)聯(lián)的時間點之前對數(shù)據(jù)塊的最近的修 改,則其應(yīng)當(dāng)被發(fā)送至目標(biāo)存儲單元。例如,如果在與兩個巻版本關(guān)聯(lián)的 兩個時間點之間多次修改了數(shù)據(jù)塊,那么僅應(yīng)當(dāng)將最近的修改復(fù)制到目標(biāo) 存儲單元。便利地,維護(hù)第三控制數(shù)據(jù)結(jié)構(gòu)。該第三控制數(shù)據(jù)結(jié)構(gòu)指示應(yīng)當(dāng)復(fù)制 到目標(biāo)存儲單元的數(shù)據(jù)塊的最舊版本。便利地,維護(hù)第四控制數(shù)據(jù)結(jié)構(gòu)。該第四控制數(shù)據(jù)結(jié)構(gòu)指示并未存儲 在目標(biāo)存儲單元中的數(shù)據(jù)塊的次舊版本。根據(jù)本發(fā)明的實施例,第三和第四控制數(shù)據(jù)結(jié)構(gòu)促進(jìn)了對其條目的直 接訪問.其條目可以存儲相關(guān)的版本號,并且每個條目的長度(比特數(shù)) 在版本數(shù)方面呈對數(shù)。圖1根據(jù)本發(fā)明的實施例說明了存儲控制器100及其環(huán)境。存儲控制器100通過網(wǎng)絡(luò)191從主機(jī)140a, b…l(其中a, b和l可以 是任何整數(shù)值)接收指向配置有巻(例如,邏輯單元號、邏輯設(shè)備等)的 存儲設(shè)備120, 130的輸A7輸出(1/0)請求。在某些實施方式中,目標(biāo)存 儲單元130的大小可以大于或等于源存儲單元120。源存儲單元120包括可以被分成含有數(shù)據(jù)塊的存儲塊的一個或多個 巻,并且存儲塊被進(jìn)一步分成含有數(shù)據(jù)子塊的存儲子塊。巻可以是任何邏 輯或物理存儲元件。在某些實施方式中,數(shù)據(jù)塊是軌道的內(nèi)容,而數(shù)據(jù)子 塊是軌道扇區(qū)的內(nèi)容,目標(biāo)存儲單元130維護(hù)表示各種源巻版本的多個數(shù)據(jù)塊。為了便于參 考,文中將使用術(shù)語"軌道"和"扇區(qū)"作為數(shù)據(jù)塊和數(shù)據(jù)子塊的例子, 但使用這些術(shù)語并不意味著將本發(fā)明的實施方式限制于軌道和扇區(qū)。本發(fā) 明的實施方式可應(yīng)用于以任何方式劃分的任何類型的存儲器、存儲塊或數(shù) 據(jù)塊。此外,盡管本發(fā)明的實施方式涉及數(shù)據(jù)塊,然而本發(fā)明的可選實施
方式還適用于數(shù)據(jù)子塊。存儲控制器100包括源高速緩存124,其中維護(hù)了對源存儲單元120 中的軌道的更新,直到將該更新寫入源存儲單元120 (即,將該軌道離臺 至物理存儲器)。存儲控制器100包括目標(biāo)高速緩存134,其中維護(hù)了對 目標(biāo)存儲單元130中的軌道的更新,直到將該更新寫入目標(biāo)存儲單元130(即,將該軌道離臺至物理存儲器)。源高速緩存124和目標(biāo)高速緩存134 可以包括獨(dú)立的存^i殳備或相同存儲設(shè)備的不同區(qū)段。源高速緩存124和 目標(biāo)高速緩存134用于緩沖正在主機(jī)140a, b…1、源存儲單元120和目標(biāo) 存儲單元130之間傳輸?shù)淖x和寫數(shù)據(jù)。此外,盡管高速緩存124和134分 別被稱為源和目標(biāo)高速緩存,用于M時間點副本關(guān)系中的源或目標(biāo)數(shù)據(jù) 塊,然而高速緩存124和134可以在相同的時間存儲不同的副本點(point-in-copy)關(guān)系中的源和目標(biāo)數(shù)據(jù)塊。另外,存儲控制器100包括非易失性存儲器118。舉例來說,非易失 性存儲器118可以是帶后備電池的易失性存儲器,以便維護(hù)數(shù)據(jù)更新的非 易失性副本。存儲控制器100進(jìn)一步包括系統(tǒng)存儲器110,其可以在易失性和/或非 易失性設(shè)備中實現(xiàn)。系統(tǒng)存儲器110包括用于讀取數(shù)據(jù)的讀過程112、用 于寫數(shù)據(jù)的寫過程114,以及選擇性復(fù)制過程116.讀過程112在系統(tǒng)存儲 器110中執(zhí)行以便分別M儲器120和130讀取數(shù)據(jù)到高速緩存124和 134。寫過程114在系統(tǒng)存儲器110中執(zhí)行以便分別從高速緩存124和134 將數(shù)據(jù)寫入存儲器120和130.選擇性復(fù)制過程116在系統(tǒng)存儲器110中 執(zhí)行以便進(jìn)行選擇性復(fù)制操作,其將數(shù)據(jù)從源存儲單元120傳送至目標(biāo)存 儲單元130'本發(fā)明的實施方式可應(yīng)用于在任何兩個存儲介質(zhì)之間傳送數(shù)據(jù),為了 便于參考,在文中會將所述任何兩個存儲介質(zhì)稱為源存儲單元和目標(biāo)存儲 單元或第一存儲器和第二存儲器。例如,本發(fā)明的某些實施方式可以隨位 于單個存儲控制器處的兩個存儲介質(zhì)一起使用,如圖1所示。此外,本發(fā) 明的某些可選的實施方式還可以隨位于不同存儲控制器、不同物理地點等
處的兩個存儲介質(zhì)一起使用。同樣,為了便于參考,源存儲單元中的數(shù)據(jù) 塊將被稱為"源數(shù)據(jù)塊",并且目標(biāo)存儲單元中的數(shù)據(jù)塊將被稱為"目標(biāo) 數(shù)據(jù)塊"。當(dāng)對于哪個存儲器是源存儲單元以及哪個存儲器是目標(biāo)存儲單 元的指示顛倒時,為了^更于參考,原始的"源數(shù)據(jù)塊"將被稱為"新的目 標(biāo)數(shù)據(jù)塊",并且原始的"目標(biāo)數(shù)據(jù)塊"將被稱為"新的源數(shù)據(jù)塊"。在某些實施方式中,可裝卸存儲器(代替目標(biāo)存儲單元130或除了目 標(biāo)存儲單元130以外)可以用于維護(hù)源存儲單元120的全部或子集的一些 副本,并且本發(fā)明的實施方式將數(shù)據(jù)傳送至可裝卸存儲器而非目標(biāo)存儲單 元??裳b卸存儲器可以駐留于存儲控制器IOO,存儲控制器100可以進(jìn)一步包括復(fù)合處理機(jī)(未示出)并且可以包括 本領(lǐng)域已知的任何存儲控制器或服務(wù)器,例如Enterprise Storage Server (ESS) 3990存儲控制器(Enterprise Storage Server是國際商業(yè)機(jī)器公司 或"IBM"的注冊商標(biāo))等。主機(jī)140a, b…l可以包括本領(lǐng)域已知的任何 計算設(shè)備,例如服務(wù)器、大型計算機(jī)、工作站、個人計算機(jī)、手持計算機(jī)、 膝上型電話設(shè)備、網(wǎng)絡(luò)設(shè)備等。存儲控制器100和主機(jī)系統(tǒng)140a, b…l通 過網(wǎng)絡(luò)191進(jìn)行通信,網(wǎng)絡(luò)191可以包括存儲區(qū)域網(wǎng)(SAN)、源區(qū)域網(wǎng)(LAN),廣域網(wǎng)(WAN)、因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等,源存儲單元1加和目標(biāo) 存儲單元130可以各自包括存儲設(shè)備陣列,例如直接訪問存儲設(shè)備(DASD)、簡單磁盤捆綁(JBOD)、獨(dú)立磁盤冗余陣列(RAID)、虛 擬化設(shè)備等'另外,盡管圖l說明了單個的存儲控制器,本領(lǐng)域的技術(shù)人員可以理 解,可以通過網(wǎng)絡(luò)(例如,源區(qū)域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng) 等)來連接多個存儲控制器,并且多個存儲控制器中的一個或多個可以實 現(xiàn)本發(fā)明。當(dāng)主機(jī)140希望更新源存儲單元120中的數(shù)據(jù)塊時,主機(jī)140將數(shù)據(jù) 寫入源高速緩存124中的存儲塊。寫操作同步修改源高速緩存124中的存 儲塊(即,寫主機(jī)140等待操作完成),并且然后,在后臺進(jìn)程中,將源 高速緩存124內(nèi)容寫入源存儲單元120.寫操作可以更新數(shù)據(jù)、寫入新的
數(shù)據(jù),或者再次寫入相同的數(shù)據(jù)。將源高速緩存124中的數(shù)據(jù)寫入源存儲 單元120被稱為離臺操作。將全部或部分?jǐn)?shù)據(jù)塊從源存儲單元120復(fù)制到 源高速緩存124被稱為登臺操作。同樣地,可以在目標(biāo)存儲單元130與目 標(biāo)高速緩存134之間登臺和離臺數(shù)據(jù)。此夕卜,可以將數(shù)據(jù)從源存儲單元120 登臺至目標(biāo)高速緩存134。圖2根據(jù)本發(fā)明的實施例說明了多個控制數(shù)據(jù)結(jié)構(gòu)190-199。第一控制數(shù)據(jù)結(jié)構(gòu)190存儲表示應(yīng)當(dāng)復(fù)制到目標(biāo)存儲單元的數(shù)據(jù)塊以 及存儲在目標(biāo)存儲單元處的數(shù)據(jù)塊的信息。對于存儲在目標(biāo)存儲單元中的 每個數(shù)據(jù)塊,第 一控制數(shù)據(jù)結(jié)構(gòu)指示對應(yīng)于在此期間數(shù)據(jù)塊發(fā)生改變的版 本的版本號(或時間戳)。另外,第一控制數(shù)據(jù)結(jié)構(gòu)包括空條目,其表示 仍未從源存儲單元復(fù)制并且存儲在那里(在磁盤上或在高速緩存中)的版 本的數(shù)據(jù)塊。存儲在目標(biāo)存儲單元中的數(shù)據(jù)塊由數(shù)據(jù)塊標(biāo)識符、目標(biāo)磁盤 上的數(shù)據(jù)的參考(可能為空),以^示與該數(shù)據(jù)塊的內(nèi)容上的改變關(guān)聯(lián) 的巻版本時間點的時間戳(或版本序列號)來表示。在下面的附圖中進(jìn)一 步說明了第一控制數(shù)據(jù)。要注意,存儲在第一控制元數(shù)據(jù)l卯中的元數(shù)據(jù) 在版本之間被共享。如下面的附圖中所說明的,如果數(shù)據(jù)塊保持不變,則 不存在對元數(shù)據(jù)的重復(fù)。便利地,源巻包括已更新的數(shù)據(jù),而目標(biāo)巻包括較舊版本的數(shù)據(jù)。在 版本之間共享目標(biāo)巻內(nèi)的數(shù)據(jù)。便利地,僅為新版本復(fù)制經(jīng)修改的數(shù)據(jù), 而未修改的數(shù)據(jù)在邏輯上與新版本關(guān)聯(lián)。第二控制數(shù)據(jù)結(jié)構(gòu)192是變更記錄位圖。第二數(shù)據(jù)結(jié)構(gòu)用于確定在巻 版本的生成之間改變了哪些數(shù)據(jù)塊。該第二控制數(shù)據(jù)結(jié)構(gòu)192可以使每數(shù) 據(jù)塊有一比特,如果在與不同版本關(guān)聯(lián)的時間點之間修改了對應(yīng)的數(shù)據(jù)塊, 則對其進(jìn)行設(shè)置. 一旦將該數(shù)據(jù)塊復(fù)制到目標(biāo)存儲單元,就重置該比特。第三數(shù)據(jù)結(jié)構(gòu)194指示應(yīng)當(dāng)復(fù)制到目標(biāo)存儲單元的數(shù)據(jù)塊的最舊版本。第四數(shù)據(jù)結(jié)構(gòu)196指示并未存儲在目標(biāo)存儲單元中的數(shù)據(jù)塊的次舊版本。
第五控制數(shù)據(jù)結(jié)構(gòu)198指示應(yīng)當(dāng)在復(fù)制過程期間復(fù)制的數(shù)據(jù)塊的剩余 數(shù)目。最初將其設(shè)置成與巻關(guān)聯(lián)的變更記錄圖中設(shè)置比特的數(shù)目,并且當(dāng) 將單個數(shù)據(jù)塊復(fù)制到目標(biāo)存儲單元時對其進(jìn)行遞減。第六控制數(shù)據(jù)結(jié)構(gòu)199指示成功復(fù)制到目標(biāo)巻的數(shù)據(jù)塊的最新版本. 第六控制數(shù)據(jù)結(jié)構(gòu)199允許對回復(fù)(revert)操作進(jìn)行有效響應(yīng).圖3-4根據(jù)本發(fā)明的實施例說明了在各個時間點處的第一控制數(shù)據(jù)結(jié) 構(gòu)190的一部分201。部分201存儲表示在特定的數(shù)據(jù)塊中有關(guān)巻版本的更新的信息。部分 201的每個葉節(jié)點以這樣的標(biāo)識符為特征,即該標(biāo)識符標(biāo)識該特定的數(shù)據(jù) 塊以及指示與該數(shù)據(jù)塊的有關(guān)巻版本的更新相關(guān)聯(lián)的時間點的版本時間例如,部分201包括四個葉節(jié)點205、 206、 207和208。葉節(jié)點205-206 包括這樣的時間戳,即該時間戳指示與包括該特定數(shù)據(jù)塊的巻的第一和 第七版;M目關(guān)聯(lián)對特定的數(shù)據(jù)塊進(jìn)行了更新。葉節(jié)點205-206包括數(shù)據(jù)塊 的第一和第七版本221和222的指示符。要注意,數(shù)據(jù)塊的第二到第六版 本(與第二到笫六巻版本關(guān)聯(lián))等于數(shù)據(jù)塊的第一版本,因而并未將它們 復(fù)制到目標(biāo)存儲單元,并且另外,第一控制數(shù)據(jù)結(jié)構(gòu)190不包括表示這些 版本的條目。第三和第四葉207-208并不指向數(shù)據(jù)塊,因為該數(shù)據(jù)塊的第九和第十 五版本相應(yīng)地存儲在源高速緩存124處和源存儲單元120處,笫三葉207 指示最終應(yīng)當(dāng)復(fù)制到目標(biāo)存儲單元130的數(shù)據(jù)塊的第九版本,例如,第四 葉208最初是空白條目.其指示最終應(yīng)當(dāng)復(fù)制到目標(biāo)存儲單元130的數(shù)據(jù) 塊的第十五版本。第四葉208當(dāng)前是空的-其并不指向數(shù)據(jù)塊的第十五版 本。當(dāng)會將數(shù)據(jù)塊的第十五版本復(fù)制到目標(biāo)存儲單元130時,會填寫第四 葉208,圖4說明了在將數(shù)據(jù)塊的第九版本復(fù)制到目標(biāo)存儲單元130之后的另 一時間點。因此,葉節(jié)點207指向數(shù)據(jù)塊的第九版本。圖5根據(jù)本發(fā)明的實施例說明了用于管理數(shù)據(jù)版本的方法300。
方法300開始于提供多個控制數(shù)據(jù)結(jié)構(gòu)的階段310,該多個控制數(shù)據(jù) 結(jié)構(gòu)指示最終在不同巻版本之間共享的數(shù)據(jù)塊的各種版本的情況。階段 310可以包括維護(hù)多個數(shù)據(jù)結(jié)構(gòu),例如第一到第六控制數(shù)據(jù)結(jié)構(gòu)1卯-199。便利地,階段310包括維護(hù)第一控制數(shù)據(jù)結(jié)構(gòu),其指示了當(dāng)共享與在變,并且包括指示應(yīng)當(dāng)復(fù)制到目標(biāo)數(shù)據(jù)結(jié)構(gòu)的新版^l:據(jù)塊的至少一個空 條目。參照例子,如圖3所闡述的,葉節(jié)點205-206包括數(shù)據(jù)塊的第一和第 七版本221和222的指示符,而葉節(jié)點207和208指示該數(shù)據(jù)塊的第九和 第十五版本應(yīng)當(dāng)存儲在目標(biāo)數(shù)據(jù)單元處,盡管這些版本仍未存儲在目標(biāo)存 儲單元處。階段310后跟隨階段320,其接收生成源巻的第一版本的第一請求。 假設(shè)該第一版本不同于該巻的初始版本,盡管這不一定如此。階段320后跟隨階段330,其響應(yīng)于笫一請求,選擇性地更新指示與 源巻的不同版本關(guān)聯(lián)的數(shù)據(jù)塊的改變的第一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少 一個最近修改的數(shù)據(jù)塊,所述至少一個最近修改的數(shù)據(jù)塊在與第一版本關(guān) 聯(lián)的第一時間點和與第一源巻的第二版本關(guān)聯(lián)的第二時間點之間被修改。 表示源巻的不同版本的信息存儲在目標(biāo)存儲單元中。在源巻的多個版本之 間保持不變的數(shù)據(jù)塊在這多個版本之間被共享.第一時間點跟隨第二時間 點,并且所述至少一個數(shù)據(jù)塊屬于該巻.如果在第一與第二時間點之間多次修改了特定的數(shù)據(jù)塊,那么最終只 會將該數(shù)據(jù)塊(最近改變的數(shù)據(jù)塊)的最新版本發(fā)送至目標(biāo)存儲單元。要注意,可以以惰性方式(類似于快速復(fù)制關(guān)系建立操作)更新第一 控制數(shù)據(jù)結(jié)構(gòu)或任何其它的元數(shù)據(jù) 一即,使用后臺進(jìn)程可以異步創(chuàng)建空的 元數(shù)據(jù)B樹條目。無需等待即可完成新版本的建立操作。便利地,如果請 求到達(dá)塊并且后臺進(jìn)程仍未完成,那么該請求應(yīng)當(dāng)?shù)却钡絼?chuàng)建了空條目。便利地,階段330包括更新第一控制數(shù)據(jù)結(jié)構(gòu),從而反映存儲在目標(biāo) 存儲單元中的數(shù)據(jù)塊,以及未存儲在目標(biāo)存儲單元中但卻會響應(yīng)于生成巻
的將來版本的至少一個請求而被復(fù)制到目標(biāo)存儲單元中的至少一個數(shù)據(jù) 塊。便利地,階段330包括更新第一控制數(shù)據(jù)結(jié)構(gòu),該第一控制數(shù)據(jù)結(jié)構(gòu) 是通過密鑰加鎖的B樹,該密鑰包括數(shù)據(jù)塊標(biāo)識符和所請求的時間點。便利地,階段330包括在B樹中生成空條目。當(dāng)將對應(yīng)的數(shù)據(jù)塊復(fù)制 到目標(biāo)存儲單元時,填寫該空條目。階段330后跟隨階段340,其響應(yīng)于第一控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇 性地將數(shù)據(jù)塊從源巻復(fù)制到目標(biāo)巻。階段340可以包括在以下情況下將至 少一個數(shù)據(jù)塊復(fù)制到目標(biāo)存儲單元,即正在源存儲單元上重寫該數(shù)據(jù)塊或 正在目標(biāo)存儲單元處對其進(jìn)行讀取。4更利地,階段340包括在目標(biāo)存儲單元啟動巻的初始版本的異步復(fù)制 過程,以及如果在完成異步復(fù)制過程之前接收到檢索該初始版本的數(shù)據(jù)塊 的請求,則通過更快速的同步復(fù)制替換異步復(fù)制過程。階段340可以包括將至少一個數(shù)據(jù)塊登臺至目標(biāo)高速緩存,并且然后 將該lt據(jù)塊離臺至目標(biāo)存儲單元。便利地,階段340可以包旨問(和更新)第二到第五控制數(shù)據(jù)結(jié)構(gòu) 中的至少一個控制數(shù)據(jù)結(jié)構(gòu),以便確定要復(fù)制哪些數(shù)據(jù)塊以及復(fù)制過程何 時完成。階段340后跟隨階段350,其選擇性地更新第一控制數(shù)據(jù)結(jié)構(gòu)以反映 復(fù)制。方法300還可以包括階段360,其接收檢索該巻的被請求版本的請求, 以及在以下情況下將屬于^L請求版本的至少一個數(shù)據(jù)塊復(fù)制到目標(biāo)存儲單 元(i)所述至少一個數(shù)據(jù)塊未被復(fù)制到目標(biāo)存儲單元并且(ii)在與被 請求版本關(guān)聯(lián)的時間點和與至少一個先前的版本關(guān)聯(lián)的時間點之間修改了 所述至少一個數(shù)據(jù)塊。要注意,階段360可以跟隨階段320-350中的任何 一個階段,因為檢索被請求版本的請求不一定與檢索巻的被請求版本的請 求同步。發(fā)明人使用FlashC叩y⑧技術(shù)來實現(xiàn)上述方法。因此,階段可以
包括建立FlashCopy (快速復(fù)制)關(guān)系,階段340可以包括復(fù)制(登臺至 目標(biāo)高速緩存和離臺至目標(biāo)存儲單元)在第二時間點與第三時間點之間修 改的至少一個數(shù)據(jù)塊。便利地,方法300包括維護(hù)第六控制數(shù)據(jù)結(jié)構(gòu),其指示成功復(fù)制到目 標(biāo)巻的數(shù)據(jù)塊的最新版本。第六控制數(shù)據(jù)結(jié)構(gòu)允許對回復(fù)操作進(jìn)行有效響 應(yīng)。例如,如果接收到回復(fù)源巻的第七版本的請求,那么對于已經(jīng)存儲在 目標(biāo)巻中的第七或更多版本的每個數(shù)據(jù)塊(如第六控制數(shù)據(jù)結(jié)構(gòu)所指示 的),應(yīng)當(dāng)從目標(biāo)巻復(fù)制第七版本。便利地,以惰性方式創(chuàng)建各種數(shù)據(jù)結(jié)構(gòu)的條目。因而,方法300可以 包括開始以惰性方式創(chuàng)建至少一個控制數(shù)據(jù)結(jié)構(gòu)的條目,以及選擇性地提 高(響應(yīng)于特定事件,例如如果在異步任務(wù)已經(jīng)完成其條目之前需要數(shù)據(jù) 塊)至少一個控制數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建附加條目的優(yōu)先級和速度。在建立新版本期間,起動異步任務(wù)來創(chuàng)建每個相關(guān)數(shù)據(jù)塊的控制數(shù)據(jù) 結(jié)構(gòu)條目,并且建立操作立即返回。如果在異步任務(wù)已經(jīng)完成其條目之前 需要數(shù)據(jù)塊,那么同步創(chuàng)建該條目并且將其從異步任務(wù)中移除。此外,本發(fā)明可以采取可訪問于計算機(jī)可用或計算機(jī)可讀介質(zhì)的計算 ;^序產(chǎn)品的形式,該計算機(jī)可用或計算機(jī)可讀介質(zhì)提供由計算機(jī)或任何 指令執(zhí)行系統(tǒng)使用的或者與計算機(jī)或任何指令執(zhí)行系統(tǒng)結(jié)合使用的程序代碼.對于該描述來說,計算機(jī)可用或計算機(jī)可讀介質(zhì)可以是能夠容納、存 儲、.通信、傳播或傳送由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的或者與指令執(zhí) 行系統(tǒng)、裝置或設(shè)備結(jié)合使用的程序的任何裝置,介質(zhì)可以是電子、膝法、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)(或裝置或 設(shè)備)或者傳播介質(zhì).計算機(jī)可讀介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲器、 磁帶、可裝卸計算M盤、隨機(jī)訪問存儲器(RAM)、只讀存儲器(ROM)、 硬磁盤和光盤。光盤的當(dāng)前的例子包括只讀光盤存儲器(CD-ROM)、讀 /寫光盤(CD-R/W)和DVD.適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)可以包括通過系統(tǒng)總線 直接地或間接地耦合于存儲元件的至少一個處理器.存儲元件可以包括在 程序代碼的實際執(zhí)行期間所采用的局部存儲器、大容量存儲器,以及為了 減少在執(zhí)行期間必須從大容量存儲器檢索代碼的次數(shù)而提供對至少 一些程 序代碼的臨時存儲的高速緩沖存儲器。輸A/輸出或I/0設(shè)備(包括但不限于鍵盤、顯示器、指點設(shè)備等)可 以直接地或者通過插入I/O控制器耦合于系統(tǒng).網(wǎng)絡(luò)適配器也可以耦合于系統(tǒng),從而4吏得數(shù)據(jù)處理系統(tǒng)能夠適于通過備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡正是幾種當(dāng)前可用類型的網(wǎng) 絡(luò)適配器。根據(jù)本發(fā)明的實施例,將數(shù)據(jù)寫入回寫式高速緩存,并且將數(shù)據(jù)的當(dāng) 前以及先前的版本發(fā)送至一個或多個存儲單元,例如磁盤、磁盤陣列、磁 帶等.數(shù)據(jù)存儲策略有助于刷新數(shù)據(jù)以及元數(shù)據(jù),并且還幫助確定是否將 特定的數(shù)據(jù)版本發(fā)送至磁盤。根據(jù)本發(fā)明的實施例,提供了一種用于向顧^^供服務(wù)的方法。該方法包括通過網(wǎng)^^收生成源巻的第一版本的第一請求;響應(yīng)于第一請求, 選擇性地更新指示與源巻的不同版本關(guān)聯(lián)的數(shù)據(jù)塊的改變的第 一控制數(shù)據(jù) 結(jié)構(gòu),從而反映至少一個最近修改的數(shù)據(jù)塊,所述至少一個最近修改的數(shù) 據(jù)塊在與第 一版本關(guān)聯(lián)的第 一時間點和與第 一源巻的第二版本關(guān)聯(lián)的第二 時間點之間被修改;其中表示源巻的不同版本的信息存儲在目標(biāo)存儲單元 中;并且其中在源巻的多個版本之間保持不變的數(shù)據(jù)塊在這多個版本之間 被共享;其中第一時間點跟隨第二時間點,并且其中所述至少一個數(shù)據(jù)塊屬于該巻;以及響應(yīng)于第一控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇性地將數(shù)據(jù)塊從源巻復(fù)制到目標(biāo)巻;以及響應(yīng)于檢索該巻的祐 清求版本的請求,通過網(wǎng)絡(luò)提供該巻的被請求版本,便利地,用于通過網(wǎng)絡(luò)提供服務(wù)的方法可以包括方法300的任何階段。 在不背離如所聲明的本發(fā)明的精神和范圍的情況下,本領(lǐng)域的普通技術(shù)人員可以想到文中所描述的內(nèi)容的變體、修改和其它實施方式.因此,本發(fā)明并不是通過在先的說明性描述而是由以下權(quán)利要求的精
神和范圍來限定的,
權(quán)利要求
1.一種用于管理數(shù)據(jù)版本的方法,所述方法包括接收生成源卷的第一版本的第一請求;響應(yīng)于所述第一請求,選擇性地更新指示與所述源卷的不同版本關(guān)聯(lián)的數(shù)據(jù)塊的改變的第一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少一個最近修改的數(shù)據(jù)塊,所述至少一個最近修改的數(shù)據(jù)塊在與所述第一版本關(guān)聯(lián)的第一時間點和與第一源卷的第二版本關(guān)聯(lián)的第二時間點之間被修改;其中表示所述源卷的不同版本的信息存儲在目標(biāo)存儲單元中;并且其中在所述源卷的多個版本之間保持不變的數(shù)據(jù)塊在這多個版本之間被共享;其中所述第一時間點跟隨所述第二時間點,并且其中所述至少一個數(shù)據(jù)塊屬于所述卷;以及響應(yīng)于所述第一控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇性地將數(shù)據(jù)塊從所述源卷復(fù)制到目標(biāo)卷。
2. 根據(jù)權(quán)利要求l的方法,其中響應(yīng)于所述第一請求選擇性地更新所 述第一控制數(shù)據(jù)結(jié)構(gòu)包括更新所述控制數(shù)據(jù)結(jié)構(gòu)以反映未存儲在所述目 標(biāo)存儲單元中但卻應(yīng)當(dāng)復(fù)制到所述目標(biāo)存儲單元的數(shù)據(jù)塊.
3. 根據(jù)權(quán)利要求1的方法,其中所述第一控制數(shù)據(jù)結(jié)構(gòu)包括每巻的B 樹,其是通過密鑰加鎖的,所述密鑰包括數(shù)據(jù)塊標(biāo)識符和所請求的時間點。
4. 根據(jù)權(quán)利要求3的方法,其中響應(yīng)于所述第一請求選擇性地更新所 述第一控制數(shù)據(jù)結(jié)構(gòu)的階段包括在所述B樹中生成空條目;其中當(dāng)將對 應(yīng)的數(shù)據(jù)塊復(fù)制到所述目標(biāo)存儲單元時,填寫該空條目。
5. 根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括接收檢索所述巻的被請求 版本的請求,以及在以下情況下將屬于所述被請求版本的至少一個數(shù)據(jù)塊 復(fù)制到所述目標(biāo)存儲單元(i)所述至少一個數(shù)據(jù)塊未被復(fù)制到所述目標(biāo) 存儲單元并且(ii)在與所述^L請求版本關(guān)聯(lián)的時間點和與至少一個先前的 版本關(guān)聯(lián)的時間點之間修改了所述至少一個數(shù)據(jù)塊。
6. 根據(jù)權(quán)利要求l的方法,其中建立新的版本包括在源上建立增量快 速復(fù)制關(guān)系,并且復(fù)制是使用快速復(fù)制服務(wù)來完成的。
7. 根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括以惰性方式更新至少一個 控制數(shù)據(jù)結(jié)構(gòu)的條目。
8. 根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括維護(hù)指示未復(fù)制到所述目 標(biāo)存儲單元的數(shù)據(jù)塊的最舊版本的第三控制數(shù)據(jù)結(jié)構(gòu);其中所述笫三控制 數(shù)據(jù)結(jié)構(gòu)指示屬于多個版本的數(shù)據(jù)塊。
9. 根據(jù)^L利要求1的方法,其進(jìn)一步包括維護(hù)指示未復(fù)制到所述目 標(biāo)存儲單元的數(shù)據(jù)塊的最舊版本的第三控制數(shù)據(jù)結(jié)構(gòu),以及維護(hù)指示未存儲在所述目標(biāo)存儲單元中的數(shù)據(jù)塊的次舊版本的第四控制數(shù)據(jù)結(jié)構(gòu);其中 所述第三和第四控制數(shù)據(jù)結(jié)構(gòu)促進(jìn)了對其條目的直接訪問,
10. 根據(jù)權(quán)利要求l的方法,其進(jìn)一步包括維護(hù)指示成功復(fù)制到所 述目標(biāo)巻的數(shù)據(jù)塊的最新版本的第六數(shù)據(jù)結(jié)構(gòu).
11. 一種包括計算機(jī)可用介質(zhì)的計算M序產(chǎn)品,所迷計算機(jī)可用介 質(zhì)包括計算機(jī)可讀程序,其中當(dāng)所述計算機(jī)可讀程序在計算機(jī)上執(zhí)行時, 其使得所述計算機(jī)實現(xiàn)根據(jù)權(quán)利要求1至10中任何一項所述的方法。
12. —種包括系統(tǒng)存儲器、源高速緩存和目標(biāo)高速緩存的存儲控制 器,其中所述存儲控制器適于耦合于源存儲單元和目標(biāo)存儲單元;其中所 述存儲控制器適于接收生成源巻的笫一版本的第一請求;響應(yīng)于所述第 一請求,選擇性地更新指示與所述源巻的不同版本關(guān)聯(lián)的數(shù)據(jù)塊的改變的 第一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少一個最近修改的數(shù)據(jù)塊,所述至少一個 最近修改的數(shù)據(jù)塊在與所迷第 一版本關(guān)聯(lián)的第 一 時間點和與第 一源巻的第 二版本關(guān)聯(lián)的第二時間點之間被修改;以及響應(yīng)于所述第一控制數(shù)據(jù)結(jié)構(gòu) 的內(nèi)容,選擇性地將數(shù)據(jù)塊從所述源巻復(fù)制到目標(biāo)巻;其中表示所迷源巻 的不同版本的信息存儲在所述目標(biāo)存儲單元中;并且其中在所述源巻的多 個版本之間保持不變的數(shù)據(jù)塊在這多個版本之間被共享;其中所述第 一時 間點跟隨所述第二時間點,并且其中所述至少一個數(shù)據(jù)塊屬于所述巻。
13. 根據(jù)權(quán)利要求12的存儲控制器,其中所述存儲控制器適于更新:控制數(shù)據(jù)結(jié)構(gòu)以反映二述目標(biāo)存儲單元的數(shù)據(jù)塊,
14. 根據(jù)權(quán)利要求12的存儲控制器,其進(jìn)一步適于維護(hù)指示未復(fù) 制到所述目標(biāo)存儲單元的數(shù)據(jù)塊的最舊版本的第三控制數(shù)據(jù)結(jié)構(gòu).
15. 根據(jù)權(quán)利要求12的存儲控制器,其進(jìn)一步適于維護(hù)指示未復(fù) 制到所述目標(biāo)存儲單元的數(shù)據(jù)塊的最舊版本的第三控制數(shù)據(jù)結(jié)構(gòu),以及維結(jié)構(gòu);其中所述第三和第四控制數(shù)據(jù)結(jié)構(gòu)促進(jìn)了對其條目的直接訪問。
16. 根據(jù)權(quán)利要求12的存儲控制器,其進(jìn)一步適于維護(hù)指示成功 復(fù)制到所述目標(biāo)巻的數(shù)據(jù)塊的最新版本的第六數(shù)據(jù)結(jié)構(gòu)。
17. 根據(jù)權(quán)利要求12的存儲控制器,其中所述第一控制數(shù)據(jù)結(jié)構(gòu)包 括每巻的B樹,其是通過密鑰加鎖的,所述密鑰包括數(shù)據(jù)塊標(biāo)識符和所請 求的時間點。
18. 根據(jù)權(quán)利要求17的存儲控制器,其進(jìn)一步適于在所述B樹中 生成空條目;其中當(dāng)將對應(yīng)的數(shù)據(jù)塊復(fù)制到所述目標(biāo)存儲單元時,填寫該 空條目。
19. 根據(jù)權(quán)利要求12的存儲控制器,其進(jìn)一步適于接收檢索所述 巻的被請求版本的請求,以及在以下情況下將屬于所述被請求版本的至少 一個數(shù)據(jù)塊復(fù)制到所述目標(biāo)存儲單元(i)所述至少一個數(shù)據(jù)塊未被復(fù)制 到所述目標(biāo)存儲單元并且(ii)在與所述被請求版本關(guān)聯(lián)的時間點和與至少 一個先前的版本關(guān)聯(lián)的時間點之間修改了所述至少一個數(shù)據(jù)塊。
20. 根據(jù)權(quán)利要求12的存儲控制器,其進(jìn)一步適于在源上建立增 量快速復(fù)制關(guān)系,并且復(fù)制是4吏用快速復(fù)制服務(wù)來完成的。
21. 根據(jù)權(quán)利要求12的存儲控制器,其進(jìn)一步適于以惰性方式更 新至少一個控制數(shù)據(jù)結(jié)構(gòu)的條目。
全文摘要
一種用于管理數(shù)據(jù)版本的方法、設(shè)備和計算機(jī)程序產(chǎn)品。該方法包括(i)接收生成源卷的第一版本的第一請求;(ii)響應(yīng)于該第一請求,選擇性地更新指示與該源卷的不同版本關(guān)聯(lián)的數(shù)據(jù)塊的改變的第一控制數(shù)據(jù)結(jié)構(gòu),從而反映至少一個最近修改的數(shù)據(jù)塊,該數(shù)據(jù)塊在與所述第一版本關(guān)聯(lián)的第一時間點和與第一源卷的第二版本關(guān)聯(lián)的第二時間點之間被修改;其中表示該源卷的不同版本的信息存儲在目標(biāo)存儲單元中;并且其中在該源卷的多個版本之間保持不變的數(shù)據(jù)塊在這多個版本之間被共享;其中所述第一時間點跟隨所述第二時間點,并且其中所述至少一個數(shù)據(jù)塊屬于該卷;以及(iii)響應(yīng)于該第一控制數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,選擇性地從該源卷復(fù)制數(shù)據(jù)塊到目標(biāo)卷。
文檔編號G06F17/30GK101154234SQ200710153569
公開日2008年4月2日 申請日期2007年9月21日 優(yōu)先權(quán)日2006年9月26日
發(fā)明者D·H·洛倫茨, S·S·平特 申請人:國際商業(yè)機(jī)器公司