專利名稱:基于時間戳日志存儲的連續(xù)數據保護和恢復方法
技術領域:
本發(fā)明屬于計算機數據存儲和備份方法,具體涉及一種基于時間戳 日志存儲的連續(xù)數據保護和恢復方法。
背景技術:
數據的快速增長及數據的高可用性、安全性的要求刺激了存儲技術的發(fā)展,存儲技術己成為IT基礎架構的一個關鍵因素,存儲網絡為海量 存儲數據和共享數據提供了一個有效的硬件基礎。面對海量數據,數據 的保護和災難恢復也越來越重要,而原有的數據保護方法,如磁帶備份,存在備份窗口大、恢復時間長、實時響應差、影響LH常業(yè)務等弊端,已 經無法滿足當前的需求。如果使用鏡像技術獲得多個不同時間點的備份, 由此造成的容量消耗和業(yè)務性能的損失是使用者無法承受的,而且某些 測試和開發(fā)工作(如數據挖掘)需要海量數據的瞬時狀態(tài),鏡像技術需要相 對長的完成時間,所以也不適合。在存儲子系統(tǒng)中使用快照技術,雖然 可以解決大規(guī)模數據復制造成的長備份窗口問題,但是只能保存那個時 間點巻上的數據狀態(tài),快照之后的巻數據不會被保存下來。連續(xù)數據保護(Continuous Data Protection, CDP)是這樣一種機制,即它可以保護從某 時刻開始,巻或者文件在任意此后的時刻的數據狀態(tài),也就是數據的每 次改變,都會被無一遺漏記錄下來。董歡慶等在"Linux巻管理系統(tǒng)Snapshot技術的分析與研究"(計算 機工程2004年第2期) 一文提出的對來自用戶的寫操作處理過程采用寫時拷貝的方法,寫時拷貝過程是1.從源數據區(qū)中讀出數據;2.將從源數據讀出的數據寫入數據保護區(qū);3.將來自用戶的新數據寫到源數據區(qū)。這種方法嚴格按順序進行,寫操作處理需耗費大量時間。 發(fā)明內容本發(fā)明提出一種時間戳日志存儲的連續(xù)數據保護和恢復方法,目的 在于減少處理寫操作和恢復操作的時間,提高處理的并行性。本發(fā)明的一種時間戳日志存儲的連續(xù)數據保護和恢復方法,包括(1) 初始化步驟;把存儲空間劃分為源數據區(qū)和連續(xù)數據保護區(qū),需要保護的備份數據位于源數據區(qū),連續(xù)數據保護區(qū)用于在寫操作到來時,存放源數據區(qū)的原始數據,連續(xù)數據保護區(qū)的大小為存儲空間的50% 75%;初始化哈希映射表;把源數據區(qū)劃分為原子數據塊,原子數據塊大 小為2K、 4K、 8K、 16K或32K中的一種;(2) 判斷用戶命令步驟;判斷用戶命令是進行寫操作還是恢復操作, 寫操作順序進行;恢復操作轉步驟(4);(3) 處理寫操作步驟;獲取當前系統(tǒng)時間,采用流水線策略將從源數據區(qū)向連續(xù)數據保護區(qū)拷貝原子數據塊的操作和把新數據寫到源數據區(qū) 的操作并行進行,將元數據記錄插到哈希映射表中,元數據記錄包含系統(tǒng)時間和原子數據塊在源數據區(qū)和連續(xù)數據保護區(qū)的對應關系;等待用 戶命令,得到用戶命令后,轉步驟(2);(4) 處理恢復操作步驟將數據恢復到此前某時間點的數據狀態(tài)時,在哈希映射表中查找需要從源數據區(qū)拷貝到連續(xù)數據保護區(qū)的原子數據 塊記錄,并根據采用流水線策略把所述記錄對應的原子數據塊寫到源數據區(qū)的扇區(qū)地址;等待用戶命令,得到用戶命令后,轉步驟(2)。所述的一種時間戳日志存儲的連續(xù)數據保護和恢復方法,其特征在于,所述處理寫操作步驟中,采用流水線策略將從源數據區(qū)向連續(xù)數據 保護區(qū)拷貝原子數據塊的操作和把新數據寫到源數據區(qū)的操作并行進行 的處理過程為(2.1) 在來自用戶的寫操作將新數據寫到源數區(qū)之前,讀線程將原 子數據塊讀出后掛到寫數據鏈表上,開啟后臺寫線程;同時進行寫操作, 將新數據寫到源數據區(qū);(2.2) 開啟的后臺寫線程把寫數據鏈表上原子數據塊寫到連續(xù)數據保護區(qū),與將新數據寫到源數據區(qū)的寫操作同時并行進行。所述的多叉日志的塊級連續(xù)數據保護和恢復方法,其特征在于,所述處理寫操作步驟中,所述將元數據記錄插到哈希映射表的過程為(3.1) 記錄寫操作到來時的系統(tǒng)時間Tsys;(3.2) 利用寫操作對應的源數據區(qū)物理地址和原子數據塊大小計算 出以原子數據塊為單位的原子數據塊舊地址Address^;(3.3) 記錄源數據區(qū)的原子數據塊拷貝到連續(xù)數據保護區(qū)的原子數 據塊新地址Address,;(3.4) 將包含系統(tǒng)時間T^、原子數據塊舊地址Address。w和原子數 據塊新地址Addressnew的記錄插到哈希映射表中。所述的一種時間戳日志存儲的連續(xù)數據保護和恢復方法,其特征在 于,所述處理恢復操作步驟的過程為(4.1) 將源數據需要恢復到的時間點轉化為系統(tǒng)可識別的回滾時間Trollback (4.2) 査找哈希映射表中已査找位為0的記錄標識為Rl,并將此紀 錄已查找位置為1,判斷記錄Rl的元數據記錄時間是否大于回滾時間 Trolibaek,,是則順序進行,否則重復過程(4.2);(4.4) 以記錄R1的原子數據塊舊地址Address。ld為關鍵字在哈希映 射表中査找已查找位為0的原子數據塊的記錄并用R2標識,把該記錄的 已査找位置為1,判斷記錄R2的元數據記錄時間是否大于回滾時間 Trollbaek,是則順序進行,否則重復過程(4.4);(4.5) 比較記錄R1和R2,用R標識其中元記錄時間較小的記錄;(4.6) 判斷以記錄R1原子數據塊舊地址Address。w為關鍵字在哈希 映射表中的記錄的查找位是否全為1,是則順序進行;否則轉過程(4.4);(4.7) 利用流水線策略將哈希映射表中記錄為R的原子數據塊從連 續(xù)數據保護區(qū)拷貝到源數據區(qū)對應位置;(4.8) 判斷哈希映射表中的所有記錄己查找位是否都全部置為1, 是則恢復操作結束;否則轉過程(4.3)。所述的一種時間戳日志存儲的連續(xù)數據保護和恢復方法,其特征在 于,所述處理恢復操作步驟的過程中,利用流水線策略將哈希映射表中 記錄為R的原子數據塊從連續(xù)數據保護區(qū)拷貝到源數據區(qū)對應位置過程 為(5.1) 根據在哈希映射表中需要從連續(xù)數據保護區(qū)恢復到源數據區(qū) 的原子數據塊記錄,讀線程將所述記錄對應的原子數據塊從連續(xù)數據保 護區(qū)讀出后掛到寫數據鏈表上,開啟后臺寫線程;同時進行恢復操作, 從哈希映射表中讀取原子數據塊記錄并把對應的原子數據塊從連續(xù)數據 保護區(qū)讀出后掛到寫數據鏈表上;(5.2) 開啟的后臺寫線程根據原子數據塊在哈希映射表中的記錄, 把寫數據鏈表上原子數據塊寫到源數據區(qū)的對應位置,與恢復操作中從 哈希映射表中讀取原子數據塊記錄并把對應的原子數據塊從連續(xù)數據保 護區(qū)讀出后掛到寫數據鏈表上的操作同時并行進行。以下為需要說明的3個概念寫數據鏈表、讀線程、寫線程。A. 寫數據鏈表為一個鏈表數據結構,用來存放讀線程讀取的原子數 據塊。B. 讀線程為程序代碼構成的可調用函數,用于讀取原子數據塊。在 處理來自用戶的寫操作時,來自用戶的新數據寫入源數據區(qū)之前, 讀線程從源數據區(qū)讀取原子數據塊插入到寫數據鏈表中。在處理 數據恢復操作時,讀線程根據哈希映射表記錄從連續(xù)數據保護區(qū) 讀取原子數據塊插入到寫數據鏈表中。C. 寫線程為程序代碼構成的可調用函數,用于把寫數據鏈表中原子 數據塊寫到目的地址。在處理來自用戶的寫操作時,寫線程把寫 數據鏈表中的原子數據塊寫到連續(xù)數據保護區(qū)。在處理數據恢復 操作時,寫線程把寫數據鏈表中的原子數據塊寫到對應的哈希映 射表記錄的位置。與"Linux巻管理系統(tǒng)Snapshot技術的分析與研究" 一文中提出的對 來自用戶的寫操作處理過程相比,本發(fā)明采用時間戳日志存儲的方案, 在處理寫操作和數據恢復操作時采取流水線策略,可以提供更快的寫操 作處理時間和目標恢復時間。
圖l為本發(fā)明的流程圖;圖2為本發(fā)明處理恢復操作步驟的流程圖;圖3為存儲空間劃分示意圖;圖4為實施例中處理寫操作后連續(xù)數據保護空間存儲數據圖; 圖5為實施例中Tl時刻寫請求的處理圖;圖6 (a)為順序執(zhí)行的寫操作流程圖;圖6 (b)為采用流水線策略的寫操作流程圖;圖7為實施例中T2時刻寫請求的處理圖;圖8 (a)為實施例中系統(tǒng)狀態(tài)回退到對源數據區(qū)第一個寫操作之前 的數據恢復處理圖;圖8 (b)為實施例中將系統(tǒng)狀態(tài)回退到對源數據區(qū)兩個寫操作之間 的某一時間的數據恢復處理圖;圖8 (c)為實施例中將數據恢復到對源數據區(qū)最后一個寫操作之后 的某一時間數據恢復處理圖。
具體實施方式
本發(fā)明的流程如圖1所示,包括初始化步驟、判斷用戶命令步驟、 處理寫操作步驟、處理恢復操作步驟。圖2為本發(fā)明處理恢復操作步驟的流程框圖?;跁r間戳日志的存儲連續(xù)數據保護和恢復方法是設備級實現的, 它捕獲底層巻的I/O請求,為這些請求打上時間戳標志并且將每次變化的 原子數據塊保存下來。它將數據變化以及相應的時間戳保存下來,相當 于在一段時間軸上保存了每個數據塊變化情況的數據的日志,以便今后 恢復到過去的任意時刻數據狀態(tài)。下面結合實施例對本發(fā)明進一步詳細說明。(1)初始化步驟如圖3所示,把存儲空間劃分為源數據區(qū)和連續(xù)數據保護區(qū),需要保護的數據位于源數據區(qū),連續(xù)數據保護區(qū)用于在寫操作到來時,存放源數據區(qū)的原始數據,整個存儲空間大小為1G,連 續(xù)數據保護空間大小為整個存儲空間大小的50%,整個存儲空間其余的 空間為源數據區(qū);初始化哈希映射表,把源數據區(qū)劃分為原子數據塊, 作為實施例,原子數據塊大小設為2K,連續(xù)數據保護空間存儲原子數據塊。(2) 判斷用戶命令步驟;判斷用戶命令是進行寫操作還是恢復操 作,寫操作順序進行步驟(3);恢復操作轉步驟(4);如圖4所示在時間點T1和T2分別對源數據區(qū)有一次寫操作,具體過程見圖5、 6、 7;(3) 處理寫操作步驟如圖5所示,Tl時刻用戶的寫請求到來時,有來自用戶的新數據需要寫入源數據區(qū),本發(fā)明系統(tǒng)將用戶的寫命令分解為三條命令A. 從源數據區(qū)(圖中打點部分)中讀出原子數據塊;B. 將從源數據讀出的原子數據塊寫入連續(xù)數據保護區(qū)(圖中空白部分);C. 將來自用戶的新數據(圖中打斜線部分)寫到源數據區(qū)。同時將元數據記錄插入到哈希映射表中,元數據記錄反映了原子數 據塊在源數據區(qū)和連續(xù)數據保護區(qū)的映射關系,包含了原子數據塊舊地 址、原子數據新地址、寫操作到來時的系統(tǒng)時間。如圖6 (a)所示,若 將用戶寫命令分解為按上述方式所述的按嚴格順序執(zhí)行的三條串行命 令,將嚴重影響了寫命令的執(zhí)行性能。仔細分析分解為三條命令的寫命 令可以發(fā)現,當用戶的一個寫命令到來時,首先讀取源數據區(qū)的原子數 據塊,但將來自用戶的新數據寫到源數據區(qū)和拷貝源數據區(qū)的原子數據 塊到連續(xù)數據保護區(qū)不存在數據相關,完全可以并行執(zhí)行,從而減少寫 命令處理延遲。基于此提出了改進的寫操作流程,其操作流程如圖6 (b) 所示,在寫操作實現中,設計一個后臺寫線程,專門執(zhí)行源數據寫入連 續(xù)數據保護區(qū)的操作。每次來自用戶的寫請求到來時,將相關數據塊讀 出加入寫數據鏈表中,并喚醒后臺寫線程,同時執(zhí)行寫新數據操作,將 新數據寫入源數據區(qū),后臺寫線程將所有寫數據鏈表中的數據依次寫入 到連續(xù)數據保護區(qū)。采用單獨的線程負責將數據寫入連續(xù)數據保護區(qū), 從源數據區(qū)向連續(xù)數據保護區(qū)拷貝原子數據塊的源數據寫入連續(xù)數據保護區(qū)操作和把新數據寫到源數據區(qū)的寫新數據操作并行進行,降低了寫 操作的執(zhí)行時間,提高了系統(tǒng)的性能。如圖7所示,T2時刻用戶的寫請 求到來時,本發(fā)明采用流水線策略將來自用戶的新數據寫入到源數據區(qū), 并將源數據寫操作之前未被修改的原子數據塊拷貝到連續(xù)數據保護區(qū)。圖中,帶格子的方框表示T2時刻來自用戶的新數據,第二行為Tl時刻寫操作完成后,源數據區(qū)和連續(xù)數據保護區(qū)的數據狀態(tài),圖中打點部分表示源數據區(qū)的數據,圖中打斜線部分表示T1時刻寫入的數據;第三行為T2時刻新數據的寫入過程,寫入新數據(帶格子的方框)到源數據區(qū)時,源數據區(qū)相應的數據保存到連續(xù)數據保護區(qū)。(4)處理恢復操作步驟當存儲設備發(fā)生應用故障或者文件損壞時,需要將系統(tǒng)的狀態(tài)恢復到源數據未發(fā)生損壞的某一時間點的狀態(tài),系統(tǒng) 會根據需要回退在此恢復時間點之后存放的原子數據塊。用戶發(fā)出將數 據恢復到某一時間點的回退命令,處理恢復操作步驟讀取連續(xù)數據保護 區(qū)在回退時間點拷貝的內容并將其寫入源數據區(qū)對應的位置,將系統(tǒng)回 退到用戶指定的時間點的狀態(tài)。系統(tǒng)的回退過程,同樣采用多線程技術, 回退線程將數據從連續(xù)數據保護區(qū)讀出,交給寫線程將數據寫入目標區(qū)中,讀寫線程并行執(zhí)行,可有效地縮短回退操作所需時間。如圖8 (a) 所示,若將系統(tǒng)狀態(tài)回退到對源數據區(qū)第一個寫操作之前的某一時間的 狀態(tài),即T<T1時刻;或者如圖8 (b)所示,將系統(tǒng)狀態(tài)回退到對源數 據區(qū)兩個寫操作之間的某一時間的狀態(tài),即TKKT2,則需要在哈希映射 表中査找需要回退的原子數據塊記錄,然后在連續(xù)數據保護區(qū)中查找對 應的原子數據塊,采用流水線策略將這些原子數據塊恢復到源數據區(qū)。 如圖8 (c)所示,將數據恢復到對源數據區(qū)最后一個寫操作之后的某一 時間的狀態(tài),,即將系統(tǒng)狀態(tài)回退到T〉T2時刻狀態(tài),則回退操作不對源數 據區(qū)和連續(xù)數據保護區(qū)進行任何操作,因為此時的源數據是最新的數據 狀態(tài)。
權利要求
1.一種時間戳日志存儲的連續(xù)數據保護和恢復方法,包括(1)初始化步驟;把存儲空間劃分為源數據區(qū)和連續(xù)數據保護區(qū),需要保護的備份數據位于源數據區(qū),連續(xù)數據保護區(qū)用于在寫操作到來時,存放源數據區(qū)的原始數據,連續(xù)數據保護區(qū)的大小為存儲空間的50%~75%;初始化哈希映射表;把源數據區(qū)劃分為原子數據塊,原子數據塊大小為2K、4K、8K、16K或32K中的一種;(2)判斷用戶命令步驟;判斷用戶命令是進行寫操作還是恢復操作,寫操作順序進行;恢復操作轉步驟(4);(3)處理寫操作步驟;獲取當前系統(tǒng)時間,采用流水線策略將從源數據區(qū)向連續(xù)數據保護區(qū)拷貝原子數據塊的操作和把新數據寫到源數據區(qū)的操作并行進行,將元數據記錄插到哈希映射表中,元數據記錄包含系統(tǒng)時間和原子數據塊在源數據區(qū)和連續(xù)數據保護區(qū)的對應關系;等待用戶命令,得到用戶命令后,轉步驟(2);(4)處理恢復操作步驟將數據恢復到此前某時間點的數據狀態(tài)時,在哈希映射表中查找需要從源數據區(qū)拷貝到連續(xù)數據保護區(qū)的原子數據塊記錄,并根據采用流水線策略把所述記錄對應的原子數據塊寫到源數據區(qū)的扇區(qū)地址;等待用戶命令,得到用戶命令后,轉步驟(2)。
2. 如權利要求1所述的一種時間戳日志存儲的連續(xù)數據保護和恢復 方法,其特征在于,所述處理寫操作步驟中,采用流水線策略將從源數 據區(qū)向連續(xù)數據保護區(qū)拷貝原子數據塊的操作和把新數據寫到源數據區(qū)的操作并行進行的處理過程為(2.1)在來自用戶的寫操作將新數據寫到源數區(qū)之前,讀線程將原 子數據塊讀出后掛到寫數據鏈表上,開啟后臺寫線程;同時進行寫操作,將新數據寫到源數據區(qū);(2.2)開啟的后臺寫線程把寫數據鏈表上原子數據塊寫到連續(xù)數據保護區(qū),與將新數據寫到源數據區(qū)的寫操作同時并行進行。
3. 如權利要求1或2所述的時間戳日志的塊級連續(xù)數據保護和恢復 方法,其特征在于,所述處理寫操作步驟中,所述將元數據記錄插到哈 希映射表的過程為-(3.1) 記錄寫操作到來時的系統(tǒng)時間Tsys;(3.2) 利用寫操作對應的源數據區(qū)物理地址和原子數據塊大小計算 出以原子數據塊為單位的原子數據塊舊地址AddreSS。ld;(3.3) 記錄源數據區(qū)的原子數據塊拷貝到連續(xù)數據保護區(qū)的原子數 據塊新地址Address,;(3.4) 將包含系統(tǒng)時間T^、原子數據塊舊地址Address。,d和原子數 據塊新地址AddresSnew的記錄插到哈希映射表中。
4. 如權利要求1所述的一種時間戳日志存儲的連續(xù)數據保護和恢復 方法,其特征在于,所述處理恢復操作步驟的過程為(4.1) 將源數據需要恢復到的時間點轉化為系統(tǒng)可識別的回滾時間Trollback 5(4.2) 查找哈希映射表中已査找位為0的記錄標識為Rl,并將此紀 錄已查找位置為1,判斷記錄Rl的元數據記錄時間是否大于回滾時間 Trollbaek,,是則順序進行,否則重復過程(4.2);(4.4)以記錄R1的原子數據塊舊地址Address為關鍵字在哈希映 射表中査找已査找位為0的原子數據塊的記錄并用R2標識,把該記錄的 已查找位置為1,判斷記錄R2的元數據記錄時間是否大于回滾時間 TTOllbaek,是則順序進行,否則重復過程(4.4);(4.5) 比較記錄R1和R2,用R標識其中元記錄時間較小的記錄;(4.6) 判斷以記錄R1原子數據塊舊地址Address。w為關鍵字在哈希 映射表中的記錄的查找位是否全為1,是則順序進行;否則轉過程(4.4);(4.7) 利用流水線策略將哈希映射表中記錄為R的原子數據塊從連 續(xù)數據保護區(qū)拷貝到源數據區(qū)對應位置;(4.8) 判斷哈希映射表中的所有記錄己査找位是否都全部置為1, 是則恢復操作結束;否則轉過程(4.3)。
5.如權利要求4所述的一種時間戳日志存儲的連續(xù)數據保護和恢復 方法,其特征在于,所述處理恢復操作步驟的過程中,利用流水線策略 將哈希映射表中記錄為R的原子數據塊從連續(xù)數據保護區(qū)拷貝到源數據 區(qū)對應位置過程為(5.1) 根據在哈希映射表中需要從連續(xù)數據保護區(qū)恢復到源數據區(qū) 的原子數據塊記錄,讀線程將所述記錄對應的原子數據塊從連續(xù)數據保 護區(qū)讀出后掛到寫數據鏈表上,開啟后臺寫線程;同時進行恢復操作, 將新數據寫到源數據區(qū);(5.2) 開啟的后臺寫線程根據原子數據塊在哈希映射表中的記錄, 把寫數據鏈表上原子數據塊寫到源數據區(qū)的對應位置,與恢復操作中從 哈希映射表中讀取原子數據塊記錄并把對應的原子數據塊從連續(xù)數據保 護區(qū)讀出后掛到寫數據鏈表上的操作同時并行進行。
全文摘要
時間戳日志存儲的連續(xù)數據保護和恢復方法,屬于計算機數據存儲和備份方法,目的在于減少處理寫操作和恢復操作的時間,提高處理的并行性。本發(fā)明包括(1)存儲空間分為源數據區(qū)和連續(xù)數據保護區(qū);初始化哈希映射表;(2)判斷用戶命令,寫操作順序進行,恢復操作轉步驟(4);(3)處理寫操作,采用流水線策略將拷貝操作和新寫入操作并行進行,將元數據記錄插到哈希映射表中;轉步驟(2);(4)處理恢復操作,在哈希映射表中查找需拷貝的原子數據塊記錄,采用流水線策略把對應的原子數據塊寫到源數據區(qū);轉步驟(2)。本發(fā)明采用時間戳日志存儲的方案,在處理寫操作和恢復操作時采取流水線策略,寫操作處理時間和目標恢復時間更快。
文檔編號G06F11/14GK101329642SQ200810047978
公開日2008年12月24日 申請日期2008年6月11日 優(yōu)先權日2008年6月11日
發(fā)明者丹 馮, 劉景寧, 可 周, 李祚衡, 楊天明, 毛文娟 申請人:華中科技大學