從具有不同時間點的源數據的存儲庫中的源數據的拷貝創建復原拷貝的制作方法
【專利摘要】本發明提供用于從具有不同時間點的源數據(104)的存儲庫(110)中的源數據(104)的拷貝創建復原拷貝(124)的計算機程序產品、系統和方法。截至初始時間點的所有源數據(104)被復制至存儲庫(110)。響應于完成在初始時間點之后的時間點拷貝,將變化信息傳輸至存儲庫(110),變化信息指示源數據(104)中在時間點拷貝的時間點和隨后的時間點之間發生變化的變化的數據(120)。對于每個時間點拷貝,將變化的源數據復制至存儲庫(110),變化的源數據包括在時間點拷貝的變化信息中被指示為發生變化的源數據(104)。接收復原請求以復原截至復原時間點的源數據(104)。將存儲庫(110)中截至復原時間點的源數據(104)從存儲庫(110)復制至復原拷貝(124)。
【專利說明】
從具有不同時間點的源數據的存儲庫中的源數據的拷貝創建 復原拷貝
技術領域
[0001] 本發明涉及從具有不同時間點的源數據的存儲庫中的源數據的拷貝創建復原拷 貝的計算機程序產品、系統和方法。
【背景技術】
[0002] 在存儲環境中,存儲控制器可以使用時間點拷貝技術(諸如IBM? 廠1881|€〇卩5^(閃速拷貝)、快照等)倉1」建生產卷(口1'0(111(31:;[011¥01111]16)的時間點("?;[1'") 拷貝。時間點拷貝按照即刻顯現并且允許主機繼續訪問源卷而對拷貝卷的實際數據傳輸被 推遲到稍后時間的方式來復制數據。PiT拷貝即刻顯現,這是因為響應于在沒有將數據從源 卷復制至目標卷的情況下產生關系數據結構,"完整"響應被返回給復制操作。PiT拷貝技術 通常推遲在PiT拷貝關系建立時將源卷中的數據傳輸到復制目標卷,直至對源卷上的數據 塊請求了寫操作為止。數據傳輸也可以作為對系統性能影響最小的后臺復制處理來進行。 作為響應于PiT拷貝命令而立即建立的PiT拷貝關系包括指示塊在源卷或復制卷處的卷中 的位置的位圖或其他數據結構。PiT拷貝包括源卷中的數據和要被傳輸到目標卷的更新所 重寫的數據的組合。IBM和FlashCopy是國際商業機器公司的商標,已在全世界許多管轄區 域中注冊了。
[0003] 當接收到對PiT拷貝關系中所涉及的源卷中的塊的更新時,在用于軌道的新數據 被寫入到源卷之前,截至時間點的軌道的拷貝必須被復制至副文件(side file)或目標卷, 從而重寫數據的時間點拷貝。從具有不同時間點的源數據的存儲庫中的源數據的拷貝創建 復原拷貝是復雜的。因此,本領域中對于解決上述問題存在需求。
[0004] 時間點拷貝和隨后的時間點;對于每個時間點拷貝,將變化的源數據復制至存儲 庫,所述變化的源數據包括在時間點拷貝的變化信息中被指示為發生變化的源數據;接收 復原請求以復原截至復原時間點的源數據;確定存儲庫中截至復原時間點的源數據;以及 將所確定的源數據從存儲庫復制至復原拷貝。
[0005] 從另一方面看,本發明提供了一種用于維護存儲庫中的源數據的方法,所述方法 包括以下步驟:將截至初始時間點的所有源數據復制至存儲庫;啟動源數據在初始時間點 之后的不同時間點的時間點拷貝;響應于完成每個時間點拷貝,將變化信息傳輸至存儲庫, 所述變化信息指示源數據中在時間點拷貝的時間點和隨后的時間點之間發生變化的變化 的數據;對于每個時間點拷貝,將變化的源數據復制至存儲庫,所述變化的源數據包括在時 間點拷貝的變化信息中被指示為發生變化的源數據;接收復原請求以復原截至復原時間點 的源數據;確定存儲庫中截至復原時間點的源數據;以及將所確定的源數據從存儲庫復制 至復原拷貝。
[0006] 從另一方面看,本發明提供了一種用于維護存儲庫中的源數據的計算機程序產 品,所述計算機程序產品包括計算機可讀存儲介質,所述計算機可讀存儲介質能被處理電 路讀取,并且存儲由所述處理電路運行以執行用于執行本發明的步驟的方法的指令。
[0007] 從另一方面看,本發明提供了一種存儲在計算機可讀介質上并且能被加載至數字 計算機的內部存儲器中的計算機程序,所述計算機程序包括軟件代碼部分,當所述程序在 計算機上運行時,用于執行本發明的步驟。
【附圖說明】
[0008] 如下面的圖中所示出的,現在將參考優選實施例,僅通過舉例的方式來描述本發 明。
[0009] 圖1示出根據本發明的優選實施例的存儲環境的實施例;
[0010] 圖2示出根據本發明的優選實施例的存儲控制器時間點拷貝信息的實施例;
[0011] 圖3示出根據本發明的優選實施例的存儲庫時間點拷貝信息的實施例;
[0012] 圖4示出根據本發明的優選實施例的創建具有源數據和源數據在不同時間點的時 間點信息的存儲庫的操作的實施例;
[0013 ]圖5a、圖5b和圖5 c示出根據本發明的優選實施例的源數據和存儲庫在不同時間點 的狀態的示例;
[0014] 圖6示出根據本發明的優選實施例的創建復原拷貝的操作的實施例;
[0015] 圖7示出根據本發明的優選實施例的確定要復制至復原拷貝的源數據的操作的實 施例;以及
[0016] 圖8示出根據現有技術的可實現本發明的優選實施例并且可實現圖1中的組件的 計算機環境。
【具體實施方式】
[0017] 所描述的實施例提供了用于創建存儲庫以維護源數據的完整拷貝和源數據的時 間點拷貝、從而允許從存儲庫復原不同時間點的源數據的技術。另外。
【發明內容】
[0018] 提供了用于從具有不同時間點的源數據的存儲庫中的源數據的拷貝創建復原拷 貝的計算機程序產品、系統和方法。截至初始時間點的所有源數據被復制至存儲庫。啟動源 數據在初始時間點之后的不同時間點的時間點拷貝。響應于完成每個時間點拷貝,將變化 信息傳輸至存儲庫,所述變化信息指示源數據中在時間點拷貝的時間點和隨后的時間點之 間發生變化的變化的數據。對于每個時間點拷貝,將變化的源數據復制至存儲庫,所述變化 的源數據包括在時間點拷貝的變化信息中被指示為發生變化的源數據。接收復原請求以復 原截至復原時間點的源數據。確定存儲庫中截至復原時間點的源數據,并且將所確定的源 數據從存儲庫復制至復原拷貝。
[0019] 從第一方面看,本發明提供了一種用于維護存儲庫中的源數據的系統,所述系統 包括:處理器;以及包括程序指令的計算機可讀存儲介質,所述程序指令被所述處理器運行 以執行操作,所述操作包括:將截至初始時間點的所有源數據復制至存儲庫;啟動源數據在 初始時間點之后的不同時間點的時間點拷貝;響應于完成每個時間點拷貝,將變化信息傳 輸至存儲庫,所述變化信息指示源數據中在時間點之間發生變化的變化的數據;利用所描 述的實施例,維護存儲庫中的時間點("PiT")拷貝信息的操作和執行復原操作的操作可以 由獨立于從源數據創建PiT拷貝的存儲控制器邏輯的程序組件來執行,以便與存儲控制器 獨立地維護、使用和管理所述存儲庫。
[0020] 圖1示出具有存儲控制器100的數據存儲環境的實施例,所述存儲控制器100管理 對包括源數據104的第一貯存器102(諸如由不同主機系統使用的生產卷)的訪問。主機106 包括存儲庫拷貝管理器軟件108以管理源數據104到第二貯存器112中的存儲庫110的復制。 存儲控制器100、主機106和第二貯存器112可以通過網絡114通信。
[0021] 存儲控制器100包括創建源數據104的時間點拷貝的時間點("PiT")拷貝管理器 116,例如FlashCopy、快照等。當創建PiT拷貝時,PiT拷貝管理器116產生關于截至時間點創 建的PiT拷貝的PiT拷貝信息200a。存儲管理器100還包括操作系統118,所述操作系統118包 括管理對源數據104的輸入/輸出("I/O")請求的代碼和邏輯。操作系統118可以將源數據 104配置在一個或多個卷中,并且數據按照數據單元(諸如軌道、邏輯塊地址(LBA)、擴展塊 等)進行存儲。PiT拷貝管理器116可以是由操作系統118提供的復制服務。
[0022] 存儲器102和存儲器112可以按照獨立磁盤冗余陣列(RAID)配置來存儲軌道,在獨 立磁盤冗余陣列(RAID)配置中,軌道的步幅(stride)被寫入到包括貯存器102和112的多個 存儲設備上。貯存器102和112可以各自包括本領域已知的一個或多個存儲設備,諸如互聯 的存儲設備,其中所述存儲設備可以包括硬盤驅動器、包括固態電子元件的固態存儲設備 (SSD)(諸如EEPR0M(電可擦除可編程只讀存儲器)、閃速存儲器、閃速盤、隨機存取存儲器 (RAM)、存儲級存儲器(SCM)等)、磁存儲盤、光盤、磁帶等。
[0023]網絡114可以包括諸如一個或多個互聯的局域網(LAN)、存儲區域網(SAN)、廣域網 (WAN)、對等網絡、無線網絡等網絡。
[0024] PiT拷貝管理器116執行PiT拷貝操作,所述PiT拷貝操作按照即刻顯現并且允許處 理繼續訪問源卷而對拷貝卷的實際數據傳輸被延遲到稍后時間的方式來復制數據。PiT拷 貝即刻顯現,這是因為響應于在沒有復制數據的情況下產生關系數據結構,返回了完整響 應。
[0025]存儲庫拷貝管理器108將在不同時間點的源數據104(包括所有源數據的初始拷 貝)復制至存儲庫110,并且將在存儲控制器100處的PiT拷貝信息200復制至存儲庫110,以 存儲在存儲庫110中作為為存儲庫PiT拷貝信息300。存儲庫拷貝管理器108使用PiT拷貝信 息300來確定在源數據104處發生變化的數據,以復制至存儲庫110中的變化的數據120。為 了將截至初始時間點的所有源數據復制至存儲庫110,存儲庫拷貝管理器108可以修改初始 PiT拷貝的變化信息或PiT位圖,以產生經修改的初始變化信息200〇',其中,PiT位圖具有指 示數據是否已發生變化的、用于源數據104中的每一個數據單元的比特,經修改的初始變化 信息200〇'指示源數據104中的每一個數據單元已發生變化。然后,存儲庫拷貝管理器108可 以將經修改的初始變化信息200〇'中所指示的所有源數據104復制至存儲庫110中的變化的 數據120,以在存儲庫10中提供截至初始時間點的源數據104的完整拷貝。存儲庫拷貝管理 器108可以使用在初始時間點之后的PiT拷貝的PiT拷貝信息200中的變化信息,將在不同時 間點的變化的數據復制至存儲庫110中的變化的數據120。
[0026]利用所描述的實施例,存儲庫拷貝管理器108在單獨的貯存器112中維護源數據 104的單獨的完整拷貝和源數據104的PiT拷貝信息300,使得可以獨立于第一貯存器102中 的源數據104和在存儲管理器100處的PiT拷貝信息200a將數據復原至不同的時間點。因此, 存儲庫110通過允許源數據104的獨立復原提供獨立于存儲控制器100的冗余安全備份,以 防止遭受存儲管理器100或第一貯存器102處的故障。
[0027]在特定的實施例中,存儲庫110的創建和管理是由獨立于存儲管理100程序的存儲 庫拷貝管理器1〇8(諸如創建PiT拷貝的PiT拷貝管理器116)來管理的。
[0028]為了創建復原拷貝124,存儲庫拷貝管理器108可以利用復原拷貝信息130,所述復 原拷貝信息130指示變化的數據120中需要被復制至復原拷貝124的源數據。
[0029]在圖1的實施例中,存儲庫創建和復原操作可以由程序組件執行,諸如獨立于存儲 控制器邏輯(例如創建PiT拷貝的PiT拷貝管理器116)的存儲庫拷貝管理器108。在替選實施 例中,可以在存儲控制器110上維護存儲庫拷貝管理器108和/或存儲庫110。
[0030]圖2示出在時間Ti時刻的PiT拷貝的PiT拷貝信息200i的實例,所述PiT拷貝信息 2001可以包括為存儲控制器PiT拷貝信息200維護的信息,并且可以包括PiT拷貝標識符 202、PiT拷貝202的時間點204、變化信息206和變化的PiT數據208,其中,PiT拷貝標識符202 標識在存儲控制器100處由PiT拷貝管理器116創建的PiT拷貝;PiT拷貝202的時間點204可 以表示數據截至時間點204是一致的;變化信息206指示源數據104中的哪些數據或軌道自 時間點204以來并且在PiT拷貝202打開的同時已發生變化,所述變化信息206可以包括具有 用于每一個數據單元(例如軌道)的比特的位圖,該比特可以被設置為兩個值中的一個,從 而指示由該比特代表的數據或軌道自時間點204以來有無被更新;變化的PiT數據208包括 在時間點204之后在PiT拷貝202打開的同時已發生變化并且仍然正被更新的在時間點204 的數據。可以為在初始時間To獲取的初始P i T拷貝和在隨后時間點獲取的隨后的P i T拷貝維 護PiT拷貝信息。
[0031 ]在一個實施例中,Pi T拷貝可以在時間點204之后的時間完成或被凍結,使得變化 的PiT數據208包括從時間點204起直至PiT拷貝202完成(例如被凍結或新的PiT拷貝被啟 動)時發生變化的數據,但是不包括在PiT拷貝202完成(例如被凍結)之后發生變化的數據。 當在時間點204之后的時間點存在凍結命令或啟動隨后的PiT拷貝時,PiT拷貝202可以完 成。完成的PiT拷貝202截至時間點可以是一致的。可以使用其他技術來完成(例如凍結)PiT 拷貝。
[0032]圖3示出在存儲庫110中維護的P i T拷貝信息300i的實例的實施例,Pi T拷貝信息 300i是根據來自存儲控制器100的PiT拷貝信息200i的實例而產生的,并且PiT拷貝信息300i 包括PiT拷貝標識符302、PiT拷貝302的時間點304、變化信息306和存儲庫偏移308,其中, PiT拷貝標識符302標識在存儲控制器100處由PiT拷貝管理器116創建的PiT拷貝;PiT拷貝 302的時間點304可以表示數據截至時間點304是一致的;變化信息306指示源數據104中的 哪些數據或軌道自時間點304以來并且在PiT拷貝302打開的同時已發生變化,所述變化信 息306可以包括位圖;存儲庫偏移308指示變化的數據120中的偏移,PiT拷貝302的變化信息 306中指示的數據位于該變化的數據120中的偏移處。例如,通過利用變化信息306中指示的 變化單元的編號(即,第j個數據單元)乘以數據單元的長度對存儲庫偏移208求和,可以根 據存儲庫偏移208將PiT拷貝302的特定的變化的數據單元在變化的數據120中的位置確定 為在變化的數據120中的偏移處。通過這種方式,來自PiT拷貝300的變化的數據將在變化的 數據120中的最后寫入數據之后被順序地寫入存儲庫110中。
[0033]圖4示出由存儲庫拷貝管理器108和PiT拷貝管理器116執行的如下操作的實施例, 所述操作將在不同時間點的源數據104從由PiT拷貝管理器116創建的源數據104的PillfW (諸如生產卷)復制至存儲庫110。當啟動(在塊400)對于源數據104的存儲庫復制操作時,存 儲庫拷貝管理器108將命令發送給(在塊402) Pi T拷貝管理器,以在初始時間點(本文中被稱 為To)創建初始PiT拷貝200〇。存儲庫拷貝管理器108可以修改初始變化信息200〇以產生經修 改的初始變化信息200〇',經修改的初始變化信息200〇'指示源數據中的所有源數據單元已 發生變化。存儲庫拷貝管理器108可以向存儲庫110發送(在塊406)指示所有數據單元已發 生變化的經修改的初始變化信息200〇'和將所有源數據指示為已發生變化的、經修改的初 始變化信息200〇'中所指示的初始PiT拷貝(To)的變化的PiT數據208〇。截至初始時間點的所 有源數據被復制至存儲庫11 〇中的變化的數據120。來自存儲控制器100的Pi T拷貝200〇 '將 被存儲為存儲庫偏差208為零的PiT拷貝信息300〇,因為來自初始PiT拷貝To的數據的開端被 存儲在存儲庫110中的變化的數據120的開始位置。
[0034] 存儲庫拷貝管理器108可以向PiT拷貝管理器116發送(在塊408)命令,以在隨后的 時間點1^+1點創建一個隨后的PiT拷貝(Ti+1),這將產生PiT拷貝信息200u+i)。在一個實施例 中,存儲庫拷貝管理器108可以向PiT拷貝管理器116發送單獨的命令,以創建PiT拷貝并且 凍結先前創建的PiT拷貝。在替選實施例中,存儲庫拷貝管理器108可以向PiT拷貝管理器 116發送一個命令,以指示PiT拷貝管理器116周期性創建源數據104的PiT拷貝,其中,隨后 的PiT拷貝的創建凍結先前創建的PiT拷貝。另外,在存儲控制器110處的PiT拷貝管理器116 可以在沒有來自存儲庫拷貝管理器108的提示的情況下獨立地創建PiT拷貝。
[0035]當確定(在塊410)在Ti的先前時間點拷貝完成時,存儲庫拷貝管理器116將在時間 Ti的PiT拷貝的PiT拷貝信息200i發送(在塊412)到存儲庫110存儲,所述PiT拷貝信息200i包 括變化信息206i和變化的PiT數據208i,以在存儲庫中存儲Ti時間的PiT拷貝信息300i。在一 個實施例中,當在時間T i+1時間的隨后PiT拷貝被創建時,可以完成在時間點Ti的PiT拷貝。 在替選實施例中,可以通過發出凍結命令來完成PiT拷貝,所述凍結命令凍結PiT拷貝,使得 變化信息206停止指示源數據104的變化。存儲庫拷貝管理器108根據接收到的PiT拷貝信息 200i,在存儲庫中創建(在塊414)PiT拷貝信息300i。
[0036]存儲庫拷貝管理器108可以將自先前時間以來已發生變化的在隨后時間(T1+1)的 源數據104傳輸(在塊416)至在存儲庫110中的變化的數據120,以產生截至隨后時間1\+1時 間的完整拷貝。為了執行這個操作,存儲庫拷貝管理器108可以根據在h時間的先前PiT拷 貝的變化信息206來確定源數據104中已發生變化的數據單元,然后將來自源數據104的這 些數據單元復制至變化的數據120。以此方式,在隨后PiT拷貝(T 1+1)被創建的隨后時間點 T1+1,在先前時間點1\和隨后時間點T1+1之間已發生變化的源數據104中的數據單元被復制 至存儲庫110中的變化的數據120。
[0037]存儲庫拷貝管理器108可以以存儲庫偏移308指示(在塊418)變化的數據120中的 數據單元偏移,在h時間的PiT拷貝的變化的數據在變化的數據120中的數據單元偏移處開 始。如果(在塊420)要創建其他時間點拷貝,則在處理下一個PiT拷貝的下一個迭代期間,存 儲庫拷貝管理器108 (在塊422)把在(Ti+1)的當前的隨后時間點拷貝視為在Ti的先前時間點 拷貝。以此方式,在當前的隨后時間點T 1+1成為先前時間點并且下一個時間點成為新的隨后 時間點時,i有效地增加。然后,控制返回到塊408以在新的隨后時間點1\ +1來創建或處理新 的隨后PiT拷貝(Ti+1)。如果(在塊420)沒有其他PiT拷貝要處理,則控制結束。
[0038]利用圖4所描述的實施例,獨立于存儲控制器100創建PiT拷貝的操作,創建具有不 同PiT拷貝的PiT拷貝信息的源數據104的完整拷貝的存儲庫110。以此方式,存儲庫管理操 作的邏輯或操作獨立于存儲控制器100創建PiT拷貝的邏輯。
[0039]圖5a、圖5b、圖5c示出圖4的如下操作的示例,所述操作將在不同時間點的所有源 數據和存儲庫PiT拷貝信息200b復制至變化的數據120。圖5a示出被復制至存儲庫110中的 變化的數據120〇的源貯存器102中的源數據104〇在初始時間To時的狀態,源數據104〇可以包 括截至初始時間To的所有源數據104。另外,在初始時間To被創建Pi T拷貝信息200〇,所述Pi T 拷貝信息200〇中包含具有變化信息206〇',所述變化信息206〇'指示在存儲控制器100處的所 有源數據已發生變化。
[0040]圖5b示出在1^的第二個PiT拷貝20(h被創建的!^時間,這可以導致在To時間的先前 PiT拷貝200〇的完成或凍結,先前PiT拷貝200〇具有在TdPTi之間發生變化之前、截至時間點 To的變化的數據208〇。存儲庫拷貝管理器108將在TdPTi之間的變化的數據(被示出為單元 520和522)復制至存儲庫110中的變化的數據12(h,以把變化的數據12(h更新為在初始寫入 數據之后具有截至h的變化的數據520、522。另外,已完成或已凍結的在To的PiT拷貝信息 200〇被復制至存儲庫110,以存儲為存儲庫PiT拷貝300〇,所述存儲庫PiT拷貝300〇包括指示0 的偏移308〇,因為初始PiT拷貝200〇的源數據是被寫入變化的數據12(^的第一個數據。
[0041 ]圖5c示出在T2的第三個PiT拷貝2002被創建的T2時間,這可以導致在Tj^PiT拷貝 200:的完成或凍結,所述PiT拷貝20(h具有在TjPT2之間發生變化之前、截至時間點Ti的變化 的數據208:。存儲庫拷貝管理器108將在TjPT 2之間的變化的數據(被示出為524和526)復制 至存儲庫110,以把變化的數據1202更新為具有截至!^的數據。另外,已完成或已凍結的在!^ 的PiT拷貝信息200 1被復制至存儲庫110,以存儲為存儲庫PiT拷貝30(h,所述存儲庫PiT拷貝 3001包括存儲庫偏移308:,所述存儲庫偏移308:指示在存儲庫120 2中變化的數據520和522 開始的數據單元偏移。
[0042]圖6示出由存儲庫拷貝管理器108執行的如下操作的實施例,所述操作從存儲庫 110創建截至復原時間(Tr)的復原拷貝124,所述復原拷貝124可以包括存儲庫時間點拷貝 200b中的一個的時間點。當處理(在塊600)用以創建截至復原時間(Tr)的源數據的復原拷貝 124的復原請求時,復原拷貝管理器108配置(在塊602)空白的復原拷貝124或復原卷,用于 復原的來自變化的數據120的數據被復制至所述空白的復原拷貝124或復原卷。存儲庫拷貝 管理器108確定(在塊604)要復制至復原拷貝124的源數據,包括來自初始PiT拷貝200〇的變 化的數據120的變化的數據單元(該數據是作為初始PiT拷貝的一部分而復制的)和在復原 時間處或在復原時間之前的時間點拷貝中的每一個。如果多個PiT拷貝300提供了源數據的 相同數據單元,則在時間上最接近復原時間的PiT拷貝的數據單元被包括所確定的要復制 的源數據中。然后,存儲庫拷貝管理器108啟動(在塊606)把所確定的源數據復制至復原拷 貝124的操作。響應于完成復制所確定的源數據,存儲庫拷貝管理器108(在塊608)使得復原 拷貝124可用,以提供截至復原時間(Tr)的源數據的完整拷貝。
[0043]圖7示出用以確定要復制至復原拷貝124的在存儲庫124中的變化的數據120中的 源數據的操作(諸如圖6中的塊604處執行的操作)的實施例。當啟動(在塊700)從變化的數 據120確定要復制的源數據的操作時,存儲庫拷貝管理器108初始化(在塊702)復原拷貝信 息130(諸如位圖),從而把所有源數據單元指示為尚未被復制至復原拷貝124。(在塊704)把 Ti設置為Tr。存儲庫拷貝管理器106(在塊706)確定在復原拷貝信息130中被指示為尚未被復 制(例如具有指示尚未被復制的比特值)的在時間Ti時間,的PiT拷貝300i的變化的數據單元 120〇
[0044]對于在步驟706確定的每一個變化的數據單元,存儲庫拷貝管理器106根據在Ti的 PiT拷貝的存儲庫偏移308來確定(在塊708)數據單元在存儲庫中的位置(例如,變化的數據 單元編號與存儲器偏移之和乘以數據單元長度)。在一個實施例中,存儲器偏移308可以提 供PiT拷貝中的第一個變化的數據單元的信息,并且存儲庫拷貝管理器108必須基于變化的 數據單元的編號來確定特定數據單元的偏移,即,PiT拷貝變化信息306:中所指示的第j個 變化的數據單元加上存儲器偏移308:,然后將總和乘以數據單元長度。替選地,存儲庫偏移 308可以指示用于在To的初始PiT拷貝之后的PiT拷貝的每一個變化的數據單元的在變化的 數據120中的偏移編號。
[0045] 例如,在一個實施例中,存儲庫偏移308i包括在Ti的PiT拷貝的變化的數據在變化 的數據120中開始的位置的偏移,所確定的位置可以包括變化的數據單元的編號(包括按照 在Ti的PiT拷貝的數據單元被寫入的順序的編號),加上在Ti的PiT拷貝的存儲庫偏移308i, 該總和乘以數據單元長度。例如,如果數據單元是被寫入到變化的數據120的在Tj^PiT拷 貝的第3個數據單元,在Tj^PiT拷貝的變化的數據在變化的數據120中開始的數據單元編 號偏移為100,并且數據單元長度為16字節,則變化的數據120中的數據單元的位置包括3與 100的總和乘以16,例如,(3+100) X 16,這等于變化的數據120中的第4800個字節。
[0046] 所確定的來自Pi T拷貝300i的變化的數據單元在變化的數據120中的位置是在塊 708確定的,將所述變化的數據單元從所確定的位置復制(在塊710)至復原拷貝124,并且所 復制的數據單元在復原拷貝信息130中被指示(在塊712)為已復制的。
[0047] 如果(在塊714)Ti等于To,則在復原時間點Tr處或在復原時間點Tr之前的所有PiT 拷貝300已被考慮了,并且控制結束。否則,如果h不等于To,則被設置(在塊716)為 回到塊706,以考慮緊挨在最后被考慮的PiT拷貝300i之前的下一個PiT拷貝300^。利用圖7 的操作,以逆時間順序根據來自最接近復原時間的PiT拷貝來確定變化的數據單元。以此方 式,如果多個PiT拷貝提供相同源數據單元的變化的數據,則所復制的變化的數據來自提供 時間上最接近復原時間Tr的數據單元的變化的數據的PiT拷貝,使得利用截至復原時間Tr的 來自存儲庫110的變化的數據120來提供復原拷貝124。
[0048]在圖7的實施例中,在下一個PiT拷貝被考慮之前正被考慮的PiT拷貝的變化的數 據單元被復制。在替選實施例中,要從不同PiT拷貝復制的所有源數據單元可以在將變化的 數據復制至復原拷貝124之前被確定。
[0049]所描述的實施例提供了創建存儲庫的技術,所述存儲庫具有截至初始時間的所有 源數據單元,包括在自初始時間以來從源數據104獲取的PiT拷貝之間已發生變化的源數據 單元。另外,存儲庫維護從源數據104創建的PiT拷貝的PiT拷貝信息。利用所描述的實施例, 可以使用存儲庫中的PiT拷貝信息,通過考慮在復原時間處或在復原時間之前的PiT拷貝的 PiT拷貝信息確定截至復原時間的變化的數據,根據存儲庫中的變化的數據來創建截至復 原時間的復原拷貝卷。
[0050]本發明可以是系統、方法和/或計算機程序產品。計算機程序產品可以包括計算機 可讀存儲介質,其上載有用于使處理器實現本發明的各個方面的計算機可讀程序指令。
[0051] 計算機可讀存儲介質可以是可以保持和存儲由指令執行設備使用的指令的有形 設備。計算機可讀存儲介質例如可以是一一但不限于一一電存儲設備、磁存儲設備、光存儲 設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的 更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存 儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態隨機存取存儲器(SRAM)、便攜式 壓縮盤只讀存儲器(CD-ROM)、數字多功能盤(DVD)、記憶棒、軟盤、機械編碼設備、例如其上 存儲有指令的打孔卡或凹槽內凸起結構、以及上述的任意合適的組合。這里所使用的計算 機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通 過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸 的電信號。
[0052] 這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/ 處理設備,或者通過網絡、例如因特網、局域網、廣域網和/或無線網下載到外部計算機或外 部存儲設備。網絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網關 計算機和/或邊緣服務器。每個計算/處理設備中的網絡適配卡或者網絡接口從網絡接收計 算機可讀程序指令,并轉發該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計 算機可讀存儲介質中。
[0053]用于執行本發明操作的計算機程序指令可以是匯編指令、指令集架構(ISA)指令、 機器指令、機器相關指令、微代碼、固件指令、狀態設置數據、或者以一種或多種編程語言的 任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言一諸如 Smalltalk、C++等,以及常規的過程式編程語言一諸如"C"語言或類似的編程語言。計算機 可讀程序指令可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨 立的軟件包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機 或服務器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包 括局域網(LAN)或廣域網(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利 用因特網服務提供商來通過因特網連接)。在一些實施例中,通過利用計算機可讀程序指令 的狀態信息來個性化定制電子電路,例如可編程邏輯電路、現場可編程門陣列(FPGA)或可 編程邏輯陣列(PLA),該電子電路可以執行計算機可讀程序指令,從而實現本發明的各個方 面。Java以及所有基于Java的商標和標記是甲骨文和/或其附屬企業的商標或者注冊商標。
[0054] 這里參照根據本發明實施例的方法、裝置(系統)和計算機程序產品的流程圖和/ 或框圖描述了本發明的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/ 或框圖中各方框的組合,都可以由計算機可讀程序指令實現。
[0055] 這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數據 處理裝置的處理器,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數據 處理裝置的處理器執行時,產生了實現流程圖和/或框圖中的一個或多個方框中規定的功 能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指 令使得計算機、可編程數據處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的 計算機可讀介質則包括一個制造品,其包括實現流程圖和/或框圖中的一個或多個方框中 規定的功能/動作的各個方面的指令。
[0056] 也可以把計算機可讀程序指令加載到計算機、其它可編程數據處理裝置、或其它 設備上,使得在計算機、其它可編程數據處理裝置或其它設備上執行一系列操作步驟,以產 生計算機實現的過程,從而使得在計算機、其它可編程數據處理裝置、或其它設備上執行的 指令實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作。
[0057]附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和計算機程 序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代 表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用 于實現規定的邏輯功能的可執行指令。在有些作為替換的實現中,方框中所標注的功能也 可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執 行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或 流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動 作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。 [0058]圖1中的計算組件(包括存儲控制器100和主機106)可以被實現在一個或多個計算 機系統中,諸如圖8中所示的計算機系統802。計算機系統/服務器802可以在由計算機系統 執行的計算機系統可執行指令(例如程序模塊)的通用上下文中被描述。通常,程序模塊可 以包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、邏輯、數據結構 等。計算機系統/服務器802可以被實現在分布式云計算環境中,在分布式云計算環境中,任 務是由通過通信網絡鏈接的遠程處理設備執行的。在分布式云計算環境中,程序模塊可以 位于包括存儲器存儲設備的本地和遠程計算機系統存儲介質中。
[0059] 如圖8中所示,計算機系統/服務器802以通用計算設備的形式示出。計算機系統/ 服務器802的組件可以包括但不限于一個或多個處理器或處理單元804、系統存儲器806以 及將包括系統存儲器806的各個系統組件耦接至處理器804的總線808。總線808代表任意若 干種類型的總線結構中的一種或多種,包括存儲器總線或存儲控制器、外圍總線、加速圖形 端口和使用不同總線架構中的任一種的處理器或本地總線。僅舉例而不是限制,這樣的架 構包括工業標準架構(ISA)總線、微通道架構(MCA)總線、增強工業標準架構(EISA)總線、視 頻電子標準協會(VESA)本地總線和外圍部件互聯(PCI)總線。
[0060] 計算機系統/服務器802通常包括各種計算機系統可讀介質。這樣的介質可以是計 算機系統/服務器802可訪問的任何可用的介質,并且這樣的介質包括易失性介質和非易失 性介質、以及可移除介質和不可移除介質。
[0061] 系統存儲器806可以包括易失性存儲器形式的計算機系統可讀介質,諸如隨機存 取存儲器(RAM)801和/或高速緩沖存儲器812。另外,計算機系統/服務器802可以包括其他 可移除/不可移除、易失性/非易失性計算機系統存儲介質。僅通過舉例的方式,存儲系統 813可被提供用于讀取和寫入不可移除、非易失性磁介質(未被示出并且通常被稱為"硬盤 驅動器")。盡管未被示出,可以提供用于讀取和寫入可移除、非易失性磁盤(例如,"軟盤") 的磁盤驅動器,以及可以提供用于讀取和寫入可移除、非易失性光盤(諸如CD-R0M、DVD_R0M 或其他光介質)的光盤驅動器。在這樣的實例中,每個可通過一個或多個數據介質接口連接 到總線808。如下面將進一步示出和描述的,存儲器806可以包括具有一組(例如,至少一個) 程序模塊的至少一個程序產品,這組程序模塊被配置為執行本發明的實施例的功能。
[0062]通過舉例的方式而不是限制,具有一組(至少一個)程序模塊816的程序/實用工具 814以及操作系統、一個或多個應用程序、其他程序模塊和程序數據可以存儲在存儲器806 中。操作系統、一個或多個應用程序、其他程序模塊和程序數據中的每一個或其某些組合可 以包括聯網環境的實現方式。計算機802的組件可被實現為程序模塊816,程序模塊816通常 實現本文中描述的本發明的實施例的功能和方法。圖1中的系統可以被實現在一個或多個 計算機系統802中,其中,如果他們被實現在多個計算機系統802中,則計算機系統可以通過 網絡進行通信。
[0063]計算機系統/服務器802也可以與一個或多個外部設備818(諸如鍵盤、指點設備、 顯示器820等)進行通信;與使得用戶能夠與計算機系統/服務器802交互的一個或多個設備 進行通信;和/或與使得計算機系統/服務器802能夠與一個或多個其他計算設備進行通信 的任意設備(例如網卡、調制解調器等)進行通信。這樣的通信可以經由輸入/輸出(I/O)接 口 822來進行。另外,計算機系統/服務器802可以經由網絡適配器824與一個或多個網絡(諸 如局域網(LAN)、通用廣域網(WAN)和/或公共網絡(例如,因特網))進行通信。如所示出的, 網絡適配器824經由總線808與計算機系統/服務器802的其他組件進行通信。應該理解,盡 管未示出,但是可以與計算機系統/服務器802結合地使用其他硬件和/或軟件組件。例子包 括但不限于:微碼、設備驅動器、冗余處理單元、外部磁盤驅動陣列、RAID系統、磁帶驅動器 和數據歸檔存儲系統等。
[0064] 除非明確的另外指出,術語"實施例"、"這個實施例"、"這些實施例"、"一個或多個 實施例"、"一些實施例"和"一個實施例"指的是"本發明的一個或多個(但不是所有)實施 例"。
[0065] 除非明確的另外指出,術語"包含"、"包括"、"具有"及其變形指的是"包括但不限 于"。
[0066] 除非明確的另外指出,列舉的列表的條款并不暗示任何或所有這些條款相互排 斥。
[0067] 除非明確的另外指出,術語"一個"指的是"一個或多個"。
[0068]除非明確的另外指出,相互通信的設備不需要相互持續通信。另外,相互通信的設 備可以直接或間接地通過一個或多個中介進行通信。
[0069] 利用相互通信的多個組件來描述實施例并不暗示需要所有這樣的組件。相反,描 述了各種可選的組件以示出本發明的各種可能的實施例。
[0070] 當本文中描述單個設備/物品時,將容易想到的是,可以替代單個設備/物品而使 用多于一個設備/物品(無論它們是否協作)。類似地,當本文中描述多于一個設備/物品時, 將容易想到的是,可以代替多于一個設備/物品而使用單個設備/物品,或者可以代替示出 的數量的設備或程序而使用不同數量的設備/物品。設備的功能和/或特征可以替選地由并 未被明確地描述為具有這樣的功能/特征的一個或多個其他設備來實現。因此,本發明的其 他實施例并不需要包括該設備自身。
[0071] 僅為了圖示和說明的目的而呈現了對本發明的不同實施例的上述描述。并不旨在 窮盡或將本發明局限于所公開的確切形式。依照上述教導,許多修改和變型是可能的。意圖 在于本發明的范圍不是由該詳細描述而是由所附權利要求來限定。上述說明、示例和數據 提供了制造和使用本發明的組成部分的完整說明。因為在不偏離本發明的范圍的前提下可 以做出本發明的許多實施例,所以本發明由本文中后面所附的權利要求書決定。
【主權項】
1. 一種用于維護存儲庫中的源數據的系統,包括: 處理器;以及 包括程序指令的計算機可讀存儲介質,所述程序指令被處理器運行以執行操作,所述 操作包括: 將截至初始時間點的所有源數據復制至存儲庫; 啟動源數據在初始時間點之后的不同時間點的時間點拷貝; 作為對完成每一個時間點拷貝的響應,將變化信息傳輸至存儲庫,所述變化信息指示 源數據中在時間點拷貝的時間點和隨后的時間點之間發生變化的變化的數據; 對于每一個時間點拷貝,復制變化的源數據至存儲庫,所述變化的源數據包括在該時 間點拷貝的變化信息中被指示為發生變化的源數據; 接收復原請求以復原截至復原時間點的源數據; 確定存儲庫中截至復原時間點的源數據;以及 將所確定的源數據從存儲庫復制至復原拷貝。2. 根據權利要求1所述的系統,其中,所述時間點拷貝是由時間點拷貝程序產生的,并 且其中與所述時間點拷貝程序獨立地運行的存儲庫拷貝程序執行如下操作:將變化信息、 變化的數據和在所述變化信息中被指示為發生變化的在隨后的時間點的數據復制至存儲 庫。3. 根據前述權利要求中任一項所述的系統,其中,所述操作還包括: 為存儲庫中的每一個時間點拷貝指示存儲庫偏移,所述存儲庫偏移用于指示在存儲庫 中該時間點拷貝的變化的數據被寫入的位置的偏移。4. 根據前述權利要求中任一項所述的系統,其中,所述確定截至復原時間點的源數據 確定存儲庫中截至復原時間的源數據單元,其中如果存儲庫具有不同時間點拷貝的數據單 元的多個拷貝,則在所確定的源數據中包含來自最接近復原時間的時間點拷貝的數據單 J L 〇5. 根據前述權利要求中任一項所述的系統,其中,復制截至初始時間點的源數據包括: 創建源數據在初始時間點的時間點拷貝,該時間點拷貝包括指示所有源數據已發生變 化的變化信息;以及 將在初始時間點的時間點拷貝的變化信息傳輸至存儲庫。6. 根據權利要求5所述的系統,其中,確定截至復原時間點的源數據以復制至所述復原 拷貝包括: 初始化復原拷貝信息,所述復原拷貝信息指示所有源數據單元還未被復制至所述復原 拷貝; 對于在復原時間點處或在復原時間點之前的每一個時間點拷貝,從最接近復原時間的 時間點拷貝開始并且以逆時間順序考慮時間點拷貝,以執行: 確定時間點拷貝的在復原拷貝信息中被指示為尚未被復制的變化的數據單元,其中, 所確定的變化的數據單元被包括在所確定的要復制的源數據中; 使用時間點拷貝的存儲庫偏移來確定所確定的變化的數據單元被存儲在存儲庫中的 位置;至所述復原拷貝; 將變化的數據單元從所確定的存儲庫中的位置復制;以及 在復原拷貝信息中將所確定的變化的數據單元指示為已復制。7. 根據前述權利要求中任一項所述的系統,其中,所述操作還包括: 配置空白的復原卷,將復原拷貝的數據復制至所述空白復原卷,其中,在所有來自存儲 庫的源數據的數據被復制至所述復原卷后,所述復原卷可用。8. -種用于維護存儲庫中的源數據的方法,所述方法包括: 將截至初始時間點的所有源數據復制至存儲庫; 啟動源數據在初始時間點之后的不同時間點的時間點拷貝; 作為對完成每一個時間點拷貝的響應,將變化信息傳輸至存儲庫,所述變化信息指示 源數據中在時間點拷貝的時間點和隨后的時間點之間發生變化的變化的數據; 對于每一個時間點拷貝,復制變化的源數據至存儲庫,所述變化的源數據包括在時間 點拷貝的變化信息中被指示為發生變化的源數據; 接收復原請求以復原截至復原時間點的源數據; 確定存儲庫中截至復原時間點的源數據;以及 將所確定的源數據從存儲庫復制至復原拷貝。9. 根據權利要求8所述的方法,其中,所述時間點拷貝是由時間點拷貝程序產生的,并 且其中與所述時間點拷貝程序獨立地運行的存儲庫拷貝程序執行如下操作:將變化信息、 變化的數據和在所述變化信息中被指示為發生變化的在隨后的時間點的數據復制至存儲 庫。10. 根據權利要求8或9所述的方法,其中,所述操作還包括: 為存儲庫中的每一個時間點拷貝指示存儲庫偏移,所述存儲庫偏移用于指示在存儲庫 中該時間點拷貝的變化的數據被寫入的位置的偏移。11. 根據權利要求8至10中任一項所述的方法,其中,所述確定截至復原時間點的源數 據確定存儲庫中截至復原時間的源數據單元,其中如果存儲庫具有不同時間點拷貝的數據 單元的多個拷貝,則在所確定的源數據中包含來自最接近復原時間的時間點拷貝的數據單 J L 〇12. 根據權利要求8至11中任一項所述的方法,其中,復制截至初始時間點的源數據包 括: 創建源數據在初始時間點的時間點拷貝,該時間點拷貝包括指示所有源數據已發生變 化的變化信息;以及 將在初始時間點的時間點拷貝的變化信息傳輸至存儲庫。13. 根據權利要求12所述的方法,其中,所述確定截至復原時間點的源數據以復制至所 述復原拷貝包括: 初始化復原拷貝信息,所述復原拷貝信息指示所有源數據單元還未被復制至所述復原 拷貝; 對于在復原時間點處或在復原時間點之前的每一個時間點拷貝,從最接近復原時間的 時間點拷貝開始并且以逆時間順序考慮時間點拷貝,以執行: 確定時間點拷貝的在復原拷貝信息中被指示為尚未被復制的變化的數據單元,其中, 所確定的變化的數據單元被包括在所確定的要復制的源數據中; 使用時間點拷貝的存儲庫偏移來確定所確定的變化的數據單元被存儲在存儲庫中的 位置;至所述復原拷貝; 將變化的數據單元從所確定的存儲庫中的位置復制;以及 在復原拷貝信息中將所確定的變化的數據單元指示為已復制。14. 根據權利要求8至13中任一項所述的系統,其中,所述操作還包括: 配置空白的復原卷,將所述復原拷貝的數據復制至所述空白復原卷,其中,在所有來自 存儲庫的源數據的數據被復制至所述復原卷后,所述復原卷可用。15. -種用于維護存儲庫中的源數據的計算機程序產品,所述計算機產品包括: 計算機可讀存儲介質,所述計算機可讀存儲介質能被處理電路讀取,并且存儲由所述 處理電路運行以執行根據權利要求8至14中任一項所述的方法的指令。16. -種存儲在計算機可讀介質上并且能被下載到數字計算機的內部存儲器中的計算 機程序,所述計算機程序包括軟件代碼部分,當所述程序運行在計算機上時,用于執行根據 權利要求8至14中任一項所述的方法。
【文檔編號】G06F12/16GK105960635SQ201580007367
【公開日】2016年9月21日
【申請日】2015年1月12日
【發明人】G·T·基什, G·A·加奎特
【申請人】國際商業機器公司