專利名稱:一種實現(xiàn)數(shù)據(jù)備份和恢復的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲技術(shù),特別是涉及一種實現(xiàn)數(shù)據(jù)備份和恢復的方法及系統(tǒng)。
背景技術(shù):
計算機的數(shù)據(jù)是存儲在計算機的存儲介質(zhì)上的。對數(shù)據(jù)進行修改是在存儲介質(zhì)上用新數(shù)據(jù)覆蓋原數(shù)據(jù),這樣,如果沒有特殊的手段,原數(shù)據(jù)是無法被恢復的但是實際中的很多應用都需要能夠恢復原數(shù)據(jù)。例如,個人電腦用戶執(zhí)行某些操作導致系統(tǒng)崩潰,這時候就需要恢復執(zhí)行這些操作之前的原系統(tǒng)數(shù)據(jù),通常實現(xiàn)數(shù)據(jù)恢復是采用定期備份的方法,即定期的將數(shù)據(jù)備份到備份存儲介質(zhì)上,如果需要恢復,又將數(shù)據(jù)從備份存儲介質(zhì)上導入原存儲介質(zhì)。這種方法的缺點在于,無論是進行數(shù)據(jù)備份還是進行數(shù)據(jù)恢復時,無論數(shù)據(jù)是否發(fā)生變化,一律進行備份或恢復,一方面造成備份存儲介質(zhì)的浪費,另一方面占用系統(tǒng)的處理能力。
現(xiàn)有技術(shù)解決這一問題的方法是采用如圖1所示的稱為快照備份的方法,該方法的核心思想是只記錄發(fā)生變化的數(shù)據(jù)。該方法的流程圖如圖1所示,采用該方法時存儲介質(zhì)的存儲狀態(tài)示意圖如圖2所示。
步驟101以快照時刻數(shù)據(jù)存儲區(qū)的數(shù)據(jù)作為參考數(shù)據(jù)。
預先設置觸發(fā)快照的事件,當這些事件發(fā)生時,就觸發(fā)一次快照,然后執(zhí)行步驟101到步驟111。這里,觸發(fā)快照的事件發(fā)生的時刻稱為快照時刻。
步驟102建立新的快照區(qū),快照區(qū)所有快照單元的狀態(tài)標志位均為未發(fā)生變化。
在圖2中,第一快照區(qū)是在第一快照時刻建立的,第二快照區(qū)是在第二快照時刻建立的,第三快照區(qū)是在第三快照時刻建立的??煺諈^(qū)的快照單元與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元是一一對應的。在快照區(qū)內(nèi)部,為每個快照單元配置一個狀態(tài)標志位,狀態(tài)標志位用來表示與之對應的快照單元是否經(jīng)過修改。所述狀態(tài)標志位可以是一個二進制位,該二進制位為1的時候表示已修改,該二進制位為0的時候表示未修改。新建立的快照區(qū)所有快照單元的狀態(tài)標志位都為未修改。
步驟103判斷是否接收到對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,如果是則執(zhí)行步驟104,否則執(zhí)行步驟110。
一個對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令應該至少包括兩部分要修改的數(shù)據(jù)單元的地址以及要寫入的數(shù)據(jù)。
步驟104到步驟108根據(jù)所述要修改的數(shù)據(jù)單元的地址,確定該數(shù)據(jù)單元在已經(jīng)建立的所有快照區(qū)中分別對應的快照單元;然后對所確定的每個快照單元,分別判斷其狀態(tài)標志位是否為未修改,如果是則將要修改的數(shù)據(jù)單元的當前值寫入該快照單元,并且將該快照單元的狀態(tài)標志位設置為已修改,否則保持該快照單元的當前值。
例如在圖2中,在第一快照時刻,新建立的第一快照區(qū)中,所有快照單元的狀態(tài)標志位都為未修改。對比圖2(a)中參考數(shù)據(jù)和變化后的數(shù)據(jù)可以看出,從第一快照時刻到第二快照時刻之間,所述對數(shù)據(jù)單元進行修改的指令,對數(shù)據(jù)存儲區(qū)的0001數(shù)據(jù)單元和0002數(shù)據(jù)單元進行了修改。因此在第二快照時刻,第一快照區(qū)如圖2(a)所示。
當?shù)诙煺諘r刻的快照被觸發(fā)時,第一快照區(qū)中與數(shù)據(jù)存儲區(qū)的0001數(shù)據(jù)單元和0002數(shù)據(jù)單元對應的快照單元的狀態(tài)標志位為已修改,與數(shù)據(jù)存儲區(qū)的0003數(shù)據(jù)單元、0004數(shù)據(jù)單元對應的快照單元的狀態(tài)標志位都為未修改;根據(jù)步驟102所述,第二快照區(qū)是新建的快照區(qū),所有快照單元的狀態(tài)標志位都為未修改。
從對圖2(b)中參考數(shù)據(jù)和變化后數(shù)據(jù)的比較可以看出,在第二快照時刻到第三快照時刻之間,所述對數(shù)據(jù)單元進行修改的指令對數(shù)據(jù)存儲區(qū)的0002數(shù)據(jù)單元和0003數(shù)據(jù)單元進行了修改。對于第一快照區(qū),由于與0002數(shù)據(jù)單元對應的快照單元的狀態(tài)標志位為已修改,因此保持該快照單元的當前值;而與0003數(shù)據(jù)單元對應的快照單元的狀態(tài)標志位為未修改,因此將0003數(shù)據(jù)單元的當前值A(chǔ)寫入第一快照區(qū)中與0003數(shù)據(jù)單元對應的快照單元中,并且將該快照單元所對應的狀態(tài)標志位設置為已修改。對于第二快照區(qū),則將0002數(shù)據(jù)單元的當前值B寫入第二快照區(qū)中與0002數(shù)據(jù)單元對應的快照單元中,并且將該快照單元所對應的狀態(tài)標志位設置為已修改;將0003數(shù)據(jù)單元的當前值A(chǔ)寫入第二快照區(qū)中與0003數(shù)據(jù)單元對應的快照單元中,并且將該快照單元所對應的狀態(tài)標志位設置為已修改。因此,在第三快照時刻,第一快照區(qū)和第二快照區(qū)如圖2(b)所示。
步驟109執(zhí)行所述對數(shù)據(jù)存儲區(qū)進行修改的指令。
步驟110判斷是否到達下一快照時刻,如果到達,則執(zhí)行步驟111,否則執(zhí)行步驟103。
步驟111結(jié)束本次快照流程。
事實上,下次快照時刻后的操作就是重復步驟101到步驟111。
在進行數(shù)據(jù)恢復時,如果需要恢復到某一快照時刻,只需要將該快照時刻所對應的快照區(qū)中,狀態(tài)標志位為已修改的快照單元的值,分別寫入到對應的數(shù)據(jù)單元即可。
從以上對現(xiàn)有技術(shù)的描述可以看出,現(xiàn)有技術(shù)只是部分解決了在數(shù)據(jù)備份和恢復時大量占用系統(tǒng)資源的問題。這是因為,在數(shù)據(jù)備份時,在多個快照被觸發(fā),已經(jīng)建立了多個快照區(qū)的情況下,每接受到一個對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,需要對所有已建立快照區(qū)中,與待修改數(shù)據(jù)單元對應的快照單元的狀態(tài)標志位進行校驗;然后,將要修改的數(shù)據(jù)單元的當前值寫入狀態(tài)標志位為未修改的快照單元;并且,更新這些快照單元的狀態(tài)標志位為已修改。這樣,在對數(shù)據(jù)單元的一次寫操作中,就需要多次對所述狀態(tài)標志位進行讀寫和校驗,以及多次對快照單元的數(shù)據(jù)進行寫操作,從而仍然會大量占用系統(tǒng)的處理能力,降低系統(tǒng)的運行效率。已經(jīng)建立的快照區(qū)越多,系統(tǒng)運行效率的降低就越嚴重。
而且,現(xiàn)有技術(shù)并沒有解決浪費備份存儲介質(zhì)資源的問題,因為在每次快照時刻,都需要分配和數(shù)據(jù)存儲區(qū)具有相同容量或一定比例關(guān)系的固定存儲資源以建立該快照時刻所對應的快照區(qū)。建立的快照區(qū)越多,占用的備份存儲介質(zhì)資源就越多。
正是由于上述技術(shù)上的制約,在現(xiàn)有的快照技術(shù)中,快照區(qū)的數(shù)量受到限制,很難實現(xiàn)數(shù)據(jù)的持續(xù)保護。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種實現(xiàn)數(shù)據(jù)備份和恢復的方法及系統(tǒng),既能夠減少在數(shù)據(jù)備份和數(shù)據(jù)恢復時所占用的系統(tǒng)處理資源,提高數(shù)據(jù)備份和數(shù)據(jù)恢復時的系統(tǒng)運行效率,又能夠減少實現(xiàn)數(shù)據(jù)恢復所需要的備份存儲介質(zhì),從而實現(xiàn)數(shù)據(jù)的持續(xù)保護。
為了達到上述目的,本發(fā)明的提供了一種實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,設置觸發(fā)快照的事件,每次觸發(fā)快照的事件發(fā)生后,該方法包括A、以觸發(fā)快照的事件發(fā)生的時刻作為快照時刻,記錄本次觸發(fā)快照的事件;B、判斷是否接收到對數(shù)據(jù)單元進行修改的指令,如果收到,則分配快照單元記錄待修改數(shù)據(jù)單元的地址以及當前值,執(zhí)行所述對數(shù)據(jù)單元進行修改的指令,然后執(zhí)行步驟C,否則直接執(zhí)行步驟C;C、判斷是否發(fā)生下一次觸發(fā)快照的事件,如果發(fā)生,則結(jié)束當前流程,否則返回執(zhí)行步驟B。
其中,步驟B在分配快照單元前,進一步包括判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過,如果是,則直接執(zhí)行所述對數(shù)據(jù)單元進行修改的指令,否則分配所述快照單元。
其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過為判斷在本次觸發(fā)快照的事件發(fā)生后分配的快照單元的地址區(qū)中,是否已經(jīng)記錄過待修改數(shù)據(jù)單元的地址,如果是則認為待修改數(shù)據(jù)單元已經(jīng)被修改過,否則認為待修改數(shù)據(jù)單元未被修改過。
其中,該方法進一步包括為每個數(shù)據(jù)單元配置一個狀態(tài)標志位,步驟A進一步包括設置所有數(shù)據(jù)單元的狀態(tài)標志位為未修改;步驟B在接收到對數(shù)據(jù)單元進行修改的指令后進一步包括設置待修改數(shù)據(jù)單元所對應的狀態(tài)標志位為已修改;所述判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過為根據(jù)所述狀態(tài)標志位判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過。
其中,步驟C在下一次觸發(fā)快照的事件發(fā)生后,在結(jié)束當前流程前進一步包括判斷是否在所述本次觸發(fā)快照的事件和所述下次觸發(fā)快照的事件之間,收到清理快照單元的指令,如果收到,則清理已經(jīng)分配的快照單元,否則結(jié)束當前流程。
其中所述清理已經(jīng)分配的快照單元為將已經(jīng)分配的快照單元復制到離線存儲器上,然后釋放已經(jīng)分配的快照單元所占用的存儲空間;或設定門限值,所述清理已經(jīng)分配的快照單元為釋放對應于最早的門限值次觸發(fā)快照事件的快照單元所占用的存儲空間;或設定門限值,所述清理已經(jīng)分配的快照單元為將對應于最早的門限值次觸發(fā)快照事件的快照單元復制到離線存儲器上,然后釋放其所占用的存儲空間。
為了達到上述目的,本發(fā)明還提供了一種實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,設置觸發(fā)快照的事件,每次觸發(fā)快照的事件發(fā)生后,該方法包括U、以觸發(fā)快照的事件發(fā)生的時刻作為快照時刻,記錄本次觸發(fā)快照的事件;在下次觸發(fā)快照的事件發(fā)生前,如果收到對數(shù)據(jù)單元進行修改的指令,則分配快照單元,記錄待修改數(shù)據(jù)單元的地址以及當前值,然后執(zhí)行所述對數(shù)據(jù)單元進行修改的指令;在數(shù)據(jù)恢復時,該方法還包括V、讀取當前時刻到待恢復時刻之間所分配的快照單元,按照分配所述快照單元的時間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中。
其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述按照分配所述快照單元的時間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V11、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V12、選擇未處理的快照單元中,最靠近當前時刻的快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元標記為已處理快照單元;V13、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V14,否則返回執(zhí)行步驟V12;V14、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V11;或V21、為每個數(shù)據(jù)單元分配對應的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復制到對應的暫存單元中;V22、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V23、選擇未處理的快照單元中,最靠近當前時刻的快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對應的暫存單元中,然后將所述快照單元標記為已處理快照單元;V24、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V25,否則返回執(zhí)行步驟V22;V25、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V21。
其中,步驟U在分配快照單元前,進一步包括判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過,如果是,則直接執(zhí)行所述對數(shù)據(jù)單元進行修改的指令,否則分配所述快照單元。
其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述按照分配所述快照單元的時間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V31、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V32、選擇未處理的快照單元中的任意一個快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元標記為已處理快照單元;
V33、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V34,否則返回執(zhí)行步驟V32;V34、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V31;或V41、為每個數(shù)據(jù)單元分配對應的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復制到對應的暫存單元中;V42、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V43、選擇未處理的快照單元中任意一個快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對應的暫存單元中,然后將所述快照單元標記為已處理快照單元;V44、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V45,否則返回執(zhí)行步驟V42;V45、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V41。
其中,在數(shù)據(jù)恢復時,在步驟V之前進一步包括設置所要恢復的數(shù)據(jù)單元為不可由所述對數(shù)據(jù)單元進行修改的指令進行修改。
其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述按照分配所述快照單元的時間順序,將快照單元所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V51、將所有待恢復數(shù)據(jù)單元作為未處理數(shù)據(jù)單元,將當前時刻與待恢復時刻之間分配的快照單元作為未處理快照單元;
V52、選擇未處理快照單元中,離待恢復時刻最近的快照單元,判斷所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元是否為未處理數(shù)據(jù)單元,如果是,則執(zhí)行步驟V53,否則執(zhí)行步驟V54;V53、將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元標記為已處理;V54、將所述快照單元標記為已處理快照單元,并判斷當前時刻與待恢復時刻之間分配的快照單元是否都為已處理快照單元,如果是則結(jié)束當前流程,否則返回執(zhí)行步驟V52;或V61、為每個數(shù)據(jù)單元分配對應的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復制到對應的暫存單元中;V62、將所有待恢復數(shù)據(jù)單元作為未處理數(shù)據(jù)單元,將當前時刻與待恢復時刻之間分配的快照單元作為未處理快照單元;V63、選擇未處理快照單元中,離待恢復時刻最近的快照單元,判斷所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元是否為未處理數(shù)據(jù)單元,如果是,則執(zhí)行步驟V64,否則執(zhí)行步驟V65;V64、將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對應的暫存單元中,然后將所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元標記為已處理;V65、將所述快照單元標記為已處理快照單元,并判斷當前時刻與待恢復時刻之間分配的快照單元是否都為已處理快照單元,如果是則結(jié)束當前流程,否則返回執(zhí)行步驟V63。
其中,在下一次觸發(fā)快照的事件發(fā)生后,步驟U進一步包括判斷是否在所述本次觸發(fā)快照的事件和所述下次觸發(fā)快照的事件之間,收到清理快照單元的指令,如果收到,則清理已經(jīng)分配的快照單元,否則結(jié)束當前流程。
其中,所述清理已經(jīng)分配的快照單元為將已經(jīng)分配的快照單元復制到離線存儲器上,然后釋放已經(jīng)分配的快照單元所占用的存儲空間;或?qū)谧钤绲拈T限值次觸發(fā)快照事件的快照單元復制到離線存儲器上,然后釋放其所占用的存儲空間。
其中,在數(shù)據(jù)恢復時,在步驟V之前進一步包括判斷待恢復時刻所對應的快照單元是否已經(jīng)復制到離線存儲器上,如果是則將離線存儲器上,待恢復時刻以后所分配的快照單元復制到在線存儲器上,然后執(zhí)行步驟V,否則直接執(zhí)行V。
為了達到上述目的,本發(fā)明還提供了一種實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng),包括數(shù)據(jù)存儲區(qū),其特征在于,該系統(tǒng)進一步包括備份管理器,用于根據(jù)觸發(fā)快照的事件,以及對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,與數(shù)據(jù)存儲區(qū)和快照區(qū)交互完成數(shù)據(jù)備份;快照區(qū),用于記錄觸發(fā)快照的事件,以及數(shù)據(jù)存儲區(qū)發(fā)生變化的數(shù)據(jù)單元的地址以及所述數(shù)據(jù)單元的當前值;恢復管理器,用于根據(jù)數(shù)據(jù)存儲區(qū)的當前數(shù)據(jù)以及快照區(qū)的數(shù)據(jù)進行數(shù)據(jù)恢復,將恢復后的數(shù)據(jù)寫入數(shù)據(jù)存儲區(qū)。
其中,該系統(tǒng)進一步包括快照區(qū)管理器,用于根據(jù)預先設定的管理策略,管理快照區(qū)的數(shù)據(jù),并且與離線存儲區(qū)交互,對快照區(qū)的數(shù)據(jù)進行備份;離線存儲區(qū),用于備份快照區(qū)的數(shù)據(jù)。
其中,所述備份管理器包括快照觸發(fā)模塊,用于檢測觸發(fā)快照的事件,并將與觸發(fā)快照的事件相關(guān)的信息發(fā)送給快照區(qū)修改模塊;指令接口模塊,用于接收對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,將待修改數(shù)據(jù)單元的地址和當前值發(fā)送給快照區(qū)修改模塊,并且執(zhí)行所述指令;快照區(qū)修改模塊,用于將快照觸發(fā)模塊發(fā)送的與觸發(fā)快照的事件相關(guān)的信息,和/或,指令接口模塊所發(fā)送的待修改數(shù)據(jù)單元的地址以及當前值寫入快照區(qū)。
其中,所述指令接口模塊進一步包括邏輯判斷子模塊,用于判斷是否需要將待修改數(shù)據(jù)單元的地址和當前值記錄在快照區(qū)中。
其中,該系統(tǒng)進一步包括暫存區(qū),用于存放數(shù)據(jù)恢復過程中的中間數(shù)據(jù);所述恢復管理器進一步包括暫存區(qū)接口模塊,用于在數(shù)據(jù)恢復開始時,將數(shù)據(jù)存儲區(qū)的數(shù)據(jù)復制到暫存區(qū);在進行數(shù)據(jù)恢復時,將恢復過程的中間數(shù)據(jù)寫入到暫存區(qū);在恢復完成后,將暫存區(qū)數(shù)據(jù)復制到數(shù)據(jù)存儲區(qū)。
采用本發(fā)明所提供的技術(shù)方案,快照區(qū)是一個動態(tài)擴展的存儲區(qū)域,快照區(qū)的存儲資源是根據(jù)數(shù)據(jù)記錄的需要,動態(tài)分配的。在每個快照時刻,并不預先分配與整個數(shù)據(jù)存儲區(qū)具有相同容量或一定比例關(guān)系的存儲資源作為快照區(qū),而只是在快照區(qū)中分配一個快照單元,記錄下觸發(fā)當前快照的事件。然后在收到對數(shù)據(jù)存儲區(qū)進行修改的指令時,只有在該數(shù)據(jù)單元在本次快照后未發(fā)生過變化的情況下,才會在快照區(qū)中分配一個快照單元,將所述要修改的數(shù)據(jù)單元的地址,以及要修改的數(shù)據(jù)單元的當前值記錄在新分配的快照單元中。在兩個快照時刻之間,只有發(fā)生變化的數(shù)據(jù)單元,才會在快照區(qū)中對應最多一個快照單元。這樣就節(jié)省了對備份存儲介質(zhì)資源的占用。
并且,相對于現(xiàn)有的快照技術(shù),在新的快照被觸發(fā)以后,新快照時刻之前所分配的快照單元可以進一步存儲到磁帶這樣的離線存儲介質(zhì)上,從而釋放這些快照單元所占用的在線存儲介質(zhì)資源,進一步減少對在線存儲介質(zhì)資源的占用。
而在系統(tǒng)處理資源的占用方面,在多個快照被觸發(fā)的情況下,每接受到一個對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,本發(fā)明的技術(shù)方案所要執(zhí)行的操作,只是在快照區(qū)中本次快照被觸發(fā)后所分配的快照單元中,進行一次針對數(shù)據(jù)單元地址的遍歷和比較,最多再加上一次對新分配的快照單元的寫入操作因此,一次數(shù)據(jù)修改的完成所需要占用的系統(tǒng)處理資源與已經(jīng)被觸發(fā)的快照數(shù)無關(guān),從而節(jié)約了系統(tǒng)的處理能力,提高了系統(tǒng)的處理效率。
由于本發(fā)明在占用系統(tǒng)處理資源和占用備份存儲介質(zhì)資源這兩方面都得到了改善,因此快照的數(shù)量可以根據(jù)需要設定,有利于實現(xiàn)數(shù)據(jù)的持續(xù)保護。
圖1是現(xiàn)有的快照備份技術(shù)的流程圖;圖2是現(xiàn)有的快照備份技術(shù)存儲介質(zhì)的存儲狀態(tài)示意圖;圖3是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)備份方法的流程圖;圖4是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)備份方法存儲介質(zhì)的存儲狀態(tài)示意圖;圖5是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例一的流程圖;圖6是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例一存儲介質(zhì)的存儲狀態(tài)示意圖;圖7是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例二的流程圖;圖8是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例二存儲介質(zhì)存儲狀態(tài)示意圖;圖9是本發(fā)明提供的實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng)的方框圖。
具體實施例方式
本發(fā)明的核心思想是采用基于快照的數(shù)據(jù)備份和恢復技術(shù),其中在數(shù)據(jù)備份時,將一次快照后首次發(fā)生變化的數(shù)據(jù)單元地址和變化前的值,記錄在快照區(qū)中的一個快照單元中;在數(shù)據(jù)恢復時,讀取當前時刻和待恢復時刻之間所有快照單元,按照時間順序?qū)?shù)據(jù)存儲區(qū)進行數(shù)據(jù)恢復。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖及具體實施例對本發(fā)明作進一步地詳細描述。
請參考圖3和圖4,圖3是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)備份方法的流程圖,圖4是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)備份方法存儲介質(zhì)的存儲狀態(tài)示意圖。該方法在數(shù)據(jù)備份時包括以下步驟步驟301以本次快照時刻數(shù)據(jù)存儲區(qū)的數(shù)據(jù)作為參考數(shù)據(jù),并且在快照區(qū)中記錄觸發(fā)事件。
預先設置觸發(fā)快照的事件,當這些事件發(fā)生時,就觸發(fā)一次快照,然后執(zhí)行步驟301到步驟309。所述觸發(fā)快照事件可以是到達預先設定的時刻,也可以是收到預先設定的指令,或者即將進行預先設定的操作??梢杂盟饕柋硎居|發(fā)快照的事件,例如到達預先設定的時刻為001,接收到用戶的快照指令為010,即將對系統(tǒng)進行重大改動為011等等。并且,對于不同的觸發(fā)快照的事件,還可以根據(jù)需要附加不同的信息。例如對于到達預先設定的時刻所觸發(fā)的快照,可以進一步記錄所到達的時刻;對于即將對系統(tǒng)進行重大改動,還可以進一步記錄所進行的改動的類型,這些附加信息也可以以索引號表示。
快照區(qū)和數(shù)據(jù)存儲區(qū)可以位于同一物理存儲介質(zhì)上,也可以分別位于不同的物理存儲介質(zhì)上,但是必須是在線存儲介質(zhì)。所謂在線存儲介質(zhì),就是系統(tǒng)可以直接對該存儲介質(zhì)進行讀寫操作,而不用先將該存儲介質(zhì)接入到系統(tǒng)中,然后才能進行讀寫操作。相對的,需要先接入系統(tǒng)然后才能進行讀寫操作的存儲介質(zhì)稱為離線存儲介質(zhì)。
步驟302判斷是否接收到對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,如果收到,則執(zhí)行步驟303,否則執(zhí)行步驟306。
步驟303判斷指令中所指定的數(shù)據(jù)單元在本次快照后是否已經(jīng)在快照區(qū)中進行過記錄,如果已經(jīng)進行過記錄,則執(zhí)行步驟305,否則執(zhí)行步驟304。
如前所述,所述對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令中,至少包含所要修改的數(shù)據(jù)單元的地址以及要寫入該數(shù)據(jù)單元的數(shù)據(jù)。而在快照區(qū)中記錄的是所要修改的數(shù)據(jù)單元的地址,以及該數(shù)據(jù)單元的當前值。因此,只要比較本次快照后所分配的快照單元所記錄的數(shù)據(jù)單元地址中,是否已經(jīng)有所述指令中所包含的地址,就可以判斷出所述指令所指定的數(shù)據(jù)單元在本次快照后已經(jīng)在快照區(qū)中進行過記錄。如果本次快照后所分配的快照單元所記錄的數(shù)據(jù)單元地址中,已經(jīng)有所述指令中所包含的地址,那么就認為所述指令所指定的數(shù)據(jù)單元在本次快照后已經(jīng)在快照區(qū)中進行過記錄。
另外一種判斷所述指令中所指定的數(shù)據(jù)單元在本次快照后是否已經(jīng)在快照區(qū)中進行過記錄的方法是,為每個數(shù)據(jù)單元配置一個狀態(tài)標志位,狀態(tài)標志位用來表示與之對應的數(shù)據(jù)單元是否經(jīng)過修改。所述狀態(tài)標志位可以是一個二進制位,該二進制位為1的時候表示已修改,該二進制位為0的時候表示未修改。當一次快照被觸發(fā)后,設置所有數(shù)據(jù)單元的狀態(tài)標志位為未修改;在根據(jù)所述指令對特定的數(shù)據(jù)單元進行過修改后,設置該數(shù)據(jù)單元所對應的狀志標志位為已修改。
步驟304在快照區(qū)中分配一個快照單元,記錄所述指令中所包含的數(shù)據(jù)單元地址以及該數(shù)據(jù)單元的當前值。
所述快照單元至少包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄所述指令中所包含的數(shù)據(jù)單元地址,數(shù)據(jù)區(qū)用于記錄該數(shù)據(jù)單元的當前值。
步驟305執(zhí)行所述接收到對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令。
這一步實際上就是將所述指令中所包含的待寫入數(shù)據(jù),寫入到所述指令所指定的數(shù)據(jù)單元。
步驟306判斷是否到達下一快照時刻,如果是則執(zhí)行步驟307,否則返回執(zhí)行步驟302。
這一步實際上是判斷是否發(fā)生下一次觸發(fā)快照的事件。
步驟307判斷是否收到清理快照單元的指令,如果收到,則執(zhí)行步驟308,否則執(zhí)行步驟309。
這里所說的收到清理快照單元的指令,指的是在步驟301所述本次快照時刻到步驟306所述下一快照時刻之間收到過清理快照單元的指令。
由于快照區(qū)的數(shù)據(jù)會隨時間逐漸增多,如果不進行清理,會占用過多的在線存儲資源。因此,可以設定快照區(qū)的最大存儲容量,如果當前快照區(qū)的數(shù)據(jù)接近快照區(qū)的最大存儲容量時,就發(fā)出清理快照單元的指令;也可以設置一個清理間隔,當從上一次清理開始,所經(jīng)過的時間到達清理間隔以后,就發(fā)出清理快照單元的指令。
步驟308將快照區(qū)中的數(shù)據(jù)復制到離線存儲器上,并清空快照區(qū)。
作為一種替代方案,可以預先設置一個門限值。在執(zhí)行步驟308時,不是對快照區(qū)中的所有快照單元進行復制并清空快照區(qū),而是將快照區(qū)中,最早的門限值個快照時刻所對應的快照單元復制到離線存儲器上,然后釋放所述最早的門限值個快照時刻所對應的快照單元所占用的存儲空間。當然,也可以直接釋放快照區(qū)中所述最早的門限值個快照時刻所對應的快照單元所占用的存儲空間。由于快照時刻和觸發(fā)快照的事件是一一對應的,因此所述最早的門限值個快照時刻所對應的快照單元,也就是最早的門限值次觸發(fā)快照的事件所對應的快照單元。
例如,在圖4中,如果第一快照時刻是最早的快照時刻,而所述門限值為1,并且在第二快照時刻和第三快照時刻之間收到了清理快照區(qū)的指令,那么在第三快照到達時,就將用于記錄第一時刻觸發(fā)快照的事件的快照單元,以及第一快照時刻和第二快照時刻之間所分配的兩個快照單元復制到離線存儲器上,然后釋放這三個快照單元所占用的存儲空間。如果在第三快照時刻和第四快照時刻之間再次收到了清理快照區(qū)的指令,那么在第四快照到達時,就將用于記錄第二時刻觸發(fā)快照的事件的快照單元,以及第二快照時刻和第三快照時刻之間所分配的兩個快照單元復制到離線存儲器上,然后釋放這三個快照單元所占用的存儲空間。
當然,步驟307和步驟308都是可選的。
步驟309結(jié)束當前流程。
事實上,下次快照時刻后的操作就是重復步驟301到步驟309。
作為第一種替代方案,可以省略步驟303。收到對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令時,無論指令中所指定的數(shù)據(jù)單元在本次快照被觸發(fā)后是否經(jīng)過修改,都在快照區(qū)中分配一個快照單元,記錄待修改數(shù)據(jù)單元的地址以及當前值。
作為第二種替代方案,在設置所述觸發(fā)快照的事件時,可以將收到對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,設置為觸發(fā)快照的事件。也就是說,每收到一次對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,就觸發(fā)一次快照,記錄觸發(fā)快照事件,并且分配一個快照單元記錄待修改數(shù)據(jù)單元的地址以及當前值。在這種情況下,步驟303所作的判斷,其結(jié)果總是為否,因此步驟303也可以省略。
在圖4(a)中,第一快照時刻后,首先執(zhí)行步驟301,在快照區(qū)中記錄第一快照時刻的觸發(fā)事件。假設在第一快照時刻后,在到達第二快照時刻前,收到兩條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令。第一條指令,是將數(shù)據(jù)單元0001的值,從當前的A修改為B。這樣,經(jīng)過步驟302和步驟303的判斷后,執(zhí)行步驟304,分配一個快照單元,記錄下數(shù)據(jù)單元0001的地址以及數(shù)據(jù)單元0001的當前值A(chǔ),然后執(zhí)行步驟305將數(shù)據(jù)單元0001的值修改為B,由于未到達下一快照時刻,返回執(zhí)行步驟302。
第二條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,是將數(shù)據(jù)單元0002的值,從當前的A修改為B。這樣,經(jīng)過步驟302和步驟303的判斷后,執(zhí)行步驟304,分配一個快照單元,記錄下數(shù)據(jù)單元0002的地址以及數(shù)據(jù)單元0002的當前值A(chǔ),然后執(zhí)行步驟305將數(shù)據(jù)單元0002的值修改為B。接下來到達下一快照時刻,結(jié)束當前流程,重新執(zhí)行步驟301。如果在此之前收到了清理快照單元的指令,則將快照區(qū)的數(shù)據(jù)復制到離線存儲器上,然后清空快照區(qū)。
在圖4(b)中,第二快照時刻后,首先執(zhí)行步驟301,在快照區(qū)中記錄第二快照時刻的觸發(fā)事件。假設在第二快照時刻后,在到達第三快照時刻前,收到兩條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令。第一條指令,是將數(shù)據(jù)單元0002的值,從當前的B修改為C。這樣,經(jīng)過步驟302和步驟303的判斷后,執(zhí)行步驟304,分配一個快照單元,記錄下數(shù)據(jù)單元0002的地址以及數(shù)據(jù)單元0002的當前值B,然后執(zhí)行步驟305將數(shù)據(jù)單元0002的值修改為C。由于未到達下一快照時刻,返回執(zhí)行步驟302。
第二條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,是將數(shù)據(jù)單元0003的值,從當前的A修改為C。這樣,經(jīng)過步驟302和步驟303的判斷后,執(zhí)行步驟304,分配一個快照單元,記錄下數(shù)據(jù)單元0003的地址以及數(shù)據(jù)單元0003的當前值A(chǔ),然后執(zhí)行步驟305將數(shù)據(jù)單元0003的值修改為C。接下來到達下一快照時刻,結(jié)束當前流程,重新執(zhí)行步驟301。如果在此之前收到了清理快照單元的指令,則將快照區(qū)的數(shù)據(jù)復制到離線存儲器上,然后清空快照區(qū)。
在圖4(c)中,第三快照時刻后,首先執(zhí)行步驟301,在快照區(qū)中記錄第二快照時刻的觸發(fā)事件。假設在第三快照時刻后,在到達第四快照時刻前,收到三條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令。第一條指令,是將數(shù)據(jù)單元0003的值,從當前的C修改為D。這樣,經(jīng)過步驟302和步驟303的判斷后,執(zhí)行步驟304,分配一個快照單元,記錄下數(shù)據(jù)單元0003的地址以及數(shù)據(jù)單元0003的當前值C,然后執(zhí)行步驟305將數(shù)據(jù)單元0003的值修改為D。由于未到達下一快照時刻,返回執(zhí)行步驟302。
第二條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,是將數(shù)據(jù)單元0004的值,從當前的A修改為D。這樣,經(jīng)過步驟302和步驟303的判斷后,執(zhí)行步驟304,分配一個快照單元,記錄下數(shù)據(jù)單元0004的地址以及數(shù)據(jù)單元0004的當前值A(chǔ),然后執(zhí)行步驟305將數(shù)據(jù)單元0004的值修改為D。由于未到達下一快照時刻,返回執(zhí)行步驟302。
第三條對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,是將數(shù)據(jù)單元0003的值,從當前的C修改為E。但是,經(jīng)過步驟303的判斷后,由于數(shù)據(jù)單元0003已經(jīng)在快照區(qū)中進行過記錄,因此不執(zhí)行步驟304,直接執(zhí)行步驟305,將數(shù)據(jù)單元0003的值修改為E。接下來到達下一快照時刻,結(jié)束當前流程,重新執(zhí)行步驟301。如果在此之前收到了清理快照單元的指令,則將快照區(qū)的數(shù)據(jù)復制到離線存儲器上,然后清空快照區(qū)。
請參考圖5和圖6,圖5是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例一的流程圖,圖6是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例一存儲介質(zhì)的存儲狀態(tài)示意圖。
步驟501建立與數(shù)據(jù)存儲區(qū)容量相同的暫存區(qū),將當前時刻數(shù)據(jù)存儲區(qū)的數(shù)據(jù)復制到暫存區(qū)中,并且建立暫存區(qū)的暫存單元地址與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元地址之間一一對應的關(guān)系。
在圖6中,假設所述暫存區(qū)的暫存單元地址與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元地址之間一一對應的關(guān)系為數(shù)據(jù)單元地址加上1000為對應的暫存單元地址。當然,在實際應用中,可以采用各種不同的對應關(guān)系。
步驟502讀取快照區(qū)中,離當前時刻最近的快照時刻后,直到當前時刻所記錄的快照單元。
在圖6中,以圖4(c)中第三次變化后為當前時刻,圖4(c)中的第三快照時刻為離當前時刻最近的快照時刻。則步驟502所述快照區(qū)中,離當前時刻最近的快照時刻后,直到當前時刻所記錄的快照單元就是快照區(qū)中,第三快照時刻事件之后所記錄的快照單元。
步驟503將所讀取的所有快照單元作為未處理快照單元。
步驟504從未處理的快照單元選擇任意一個快照單元,根據(jù)其中記錄的數(shù)據(jù)單元地址,按照所述的暫存單元地址與數(shù)據(jù)單元地址的對應關(guān)系,計算出暫存單元的地址。
以所選定的快照單元是圖6中的快照區(qū)中,第三快照時刻后第一個快照單元為例,該快照單元所記錄的數(shù)據(jù)單元地址為0003,則根據(jù)步驟501中所述的數(shù)據(jù)單元地址與暫存單元地址之間的對應關(guān)系,可以得到對應的暫存單元地址為1003。
如果在數(shù)據(jù)備份時,省略了步驟303,那么在步驟504中,需要先選擇所述未處理的快照單元中,最靠近當前時刻的快照單元,根據(jù)其中記錄的數(shù)據(jù)單元地址,按照所述的暫存單元地址與數(shù)據(jù)單元地址的對應關(guān)系,計算出暫存單元的地址。也就是按照從當前時刻到所述離當前時刻最近的快照時刻的順序處理快照單元。
步驟505根據(jù)步驟504中得到的暫存單元地址,將步驟504中所選擇的快照單元中記錄的數(shù)據(jù)寫入到該暫存單元,并將步驟504中所選擇的快照單元標記為已處理快照單元。
以步驟504中所選定的快照單元是圖6中的快照區(qū)中,第三快照時刻后第一個快照單元為例,該快照單元所記錄的數(shù)據(jù)為C,則將暫存區(qū)中,地址為1003的數(shù)據(jù)單元的值修改為C。
步驟506判斷步驟502中所讀取的所有快照單元是否均為已處理快照單元,如果是,則執(zhí)行步驟507,否則執(zhí)行步驟504。
步驟507將暫存區(qū)中的數(shù)據(jù)復制到數(shù)據(jù)存儲區(qū)中。
需要說明的是,在本發(fā)明中,待恢復時刻是快照時刻中的任意一個。如果要從圖4(c)中第三次變化后的數(shù)據(jù)恢復到圖4(b)中第二快照時刻的數(shù)據(jù),只需要首先以圖4(c)中第三次變化后為當前時刻,執(zhí)行步驟502到步驟506,然后再以圖4(c)中第三快照時刻為當前時刻,再次執(zhí)行步驟502到步驟506,最后執(zhí)行步驟507即可。
如果要從圖4(c)中第三次變化后的數(shù)據(jù)恢復到圖4(a)中第一快照時刻的數(shù)據(jù),只需要首先以圖4(c)中第三次變化后為當前時刻,執(zhí)行步驟502到步驟506,然后以圖4(c)中第三快照時刻為當前時刻,執(zhí)行步驟502到步驟506,然后再以圖4(b)中第二快照時刻為當前時刻,執(zhí)行步驟502到步驟506,最后執(zhí)行步驟507即可。
在如上所述的實施例中,為了要從圖4(c)中第三次變化后的數(shù)據(jù)恢復到圖4(a)中第一快照時刻的數(shù)據(jù),實際上是依次使用了快照區(qū)中,第三快照時刻以后的快照單元、第二快照時刻以后的快照單元以及第一快照時刻以后的快照單元。在下面所要描述的實施例中,為了要從圖4(c)中第三次變化后的數(shù)據(jù)恢復到圖4(a)中第一快照時刻的數(shù)據(jù),將會依次使用快照區(qū)中,第一快照時刻以后的快照單元、第二快照時刻以后的快照單元以及第三快照時刻以后的快照單元。
請參考圖7和圖8,圖7是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法實施例二的流程圖,圖8是本發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法數(shù)據(jù)恢復時實施例二存儲介質(zhì)的存儲狀態(tài)示意圖。
步驟701建立與數(shù)據(jù)存儲區(qū)容量相同的暫存區(qū),將當前時刻數(shù)據(jù)存儲區(qū)的數(shù)據(jù)復制到暫存區(qū)中,并且建立暫存區(qū)的暫存單元地址與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元地址之間一一對應的關(guān)系,并且將暫存區(qū)中所有暫存單元作為未處理暫存單元。
在圖8中,假設所述暫存區(qū)的暫存單元地址與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元地址之間一一對應的關(guān)系為數(shù)據(jù)單元地址加上2000為對應的暫存單元地址。當然,實際應用中,可以采用各種不同的對應關(guān)系。
步驟702讀取快照區(qū)中,待恢復的時刻到當前時刻之間的所有快照單元。
在圖8中,所讀取的快照單元就是快照區(qū)中所有的6個快照單元。
步驟703將所讀取的所有快照單元作為未處理快照單元。
步驟704選擇未處理的快照單元中,最靠近待恢復時刻的一個快照單元,根據(jù)其中記錄的數(shù)據(jù)單元地址,按照所述的暫存單元地址與數(shù)據(jù)單元地址的對應關(guān)系,計算出暫存單元的地址。
在圖8中,未處理的快照單元中最靠近待恢復時刻的快照單元就是第一快照時刻后的第一個快照單元。當處理完第一快照時刻后的第一個快照單元后,未處理的快照單元中最靠近恢復時刻的快照單元就是第一快照時刻后的第二個快照單元。當處理完第一快照時刻后的第二個快照單元后,未處理的快照單元中最靠近恢復時刻的快照單元就是第二快照時刻后的第一個快照單元。依此類推。
步驟705判斷步驟704中得到的暫存單元是否是未處理暫存單元,如果是,則執(zhí)行步驟706,否則執(zhí)行步驟707。
步驟706根據(jù)步驟704中得到的暫存單元地址,將步驟704中所選擇的快照單元中記錄的數(shù)據(jù)寫入到該暫存單元,并將步驟704中所選擇的快照單元標記為已處理快照單元,將步驟704中所得到的暫存單元標記為已處理暫存單元。
在圖8中,在處理第一快照時刻后的第一個快照單元時,根據(jù)該快照單元所記錄的數(shù)據(jù)單元地址,所得到的暫存單元地址為2001,由于該暫存單元是未處理暫存單元,則將第一快照時刻后的第一個快照單元所記錄的數(shù)據(jù)A寫入暫存單元2001,并且將暫存單元2001標記為已處理暫存單元。
在處理第一快照時刻后的第二個快照單元時,根據(jù)該快照單元所記錄的數(shù)據(jù)單元地址,所得到的暫存單元地址為2002,由于該暫存單元是未處理暫存單元,則將第一快照時刻后的第二個快照單元所記錄的數(shù)據(jù)A寫入暫存單元2002,并且將暫存單元2002標記為已處理暫存單元。
在處理第二快照時刻后的第一個快照單元時,根據(jù)該快照單元所記錄的數(shù)據(jù)單元地址,所得到的暫存單元地址為2002,由于該暫存單元已被標記為已處理暫存單元,因此不對該暫存單元做任何操作。
以后的處理方法依此類推。
步驟707判斷步驟702中所讀取的所有快照單元是否均為已處理快照單元,如果是則執(zhí)行步驟708,否則返回執(zhí)行步驟704。
步驟708將暫存區(qū)中的數(shù)據(jù)復制到數(shù)據(jù)存儲區(qū)中。
當然,無論是在發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法數(shù)據(jù)恢復時實施例一還是實施例二中,暫存區(qū)的數(shù)據(jù)也可以直接提供給用戶使用,而無需復制到數(shù)據(jù)存儲區(qū)中,也就是說可以省略步驟708。
并且,無論是在發(fā)明所提供的實現(xiàn)數(shù)據(jù)恢復的方法數(shù)據(jù)恢復時實施例一還是實施例二中,都可以不建立暫存區(qū),直接向數(shù)據(jù)存儲區(qū)進行恢復操作。
在沒有暫存區(qū)的情況下,實施例一中,步驟501和步驟507都可以省去;步驟504改為從未處理的快照單元選擇任意一個快照單元;步驟505改為將步驟504中所選擇的快照單元中記錄的數(shù)據(jù)寫入到步驟504中所選擇的快照單元中記錄的數(shù)據(jù)單元,并將步驟504中所選擇的快照單元標記為已處理快照單元。
在沒有暫存區(qū)的情況下,實施例二中,步驟701修改為將數(shù)據(jù)存儲區(qū)的所有數(shù)據(jù)單元作為未處理數(shù)據(jù)單元;步驟704修改為選擇未處理的快照單元中,最靠近待恢復時刻的一個快照單元;步驟705改為判斷步驟704中所選擇的快照單元所記錄的數(shù)據(jù)單元是否為未處理單元;步驟706改為根據(jù)步驟704中所選擇的快照單元中記錄的數(shù)據(jù)單元地址,將步驟704中所選擇的快照單元中記錄的數(shù)據(jù)寫入到該數(shù)據(jù)單元,并將步驟704中所選擇的快照單元標記為已處理快照單元,將步驟704中所選擇的快照單元中記錄的數(shù)據(jù)單元標記為已處理數(shù)據(jù)單元;省去步驟708。
需要說明的是,如果采用實施例一的恢復方法,無論是否設置暫存區(qū),在執(zhí)行恢復操作之前,都需要令所述數(shù)據(jù)存儲區(qū)為不可由外部指令修改。這里所說的外部指令就是步驟302中所述對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令。
另外需要說明的是,無論是采用實施例一的恢復方法還是實施例二的恢復方法,在執(zhí)行恢復操作之前,從當前時刻到待恢復時刻之間的快照區(qū)中記錄的所有快照單元必須存儲在在線存儲設備上,轉(zhuǎn)移到離線存儲器上的數(shù)據(jù)需要首先復制到在線存儲設備上,然后才能執(zhí)行恢復操作。
請參考圖9,圖9是本發(fā)明提供的實現(xiàn)數(shù)據(jù)恢復的系統(tǒng)的方框圖。
該系統(tǒng)包括數(shù)據(jù)存儲區(qū),用于存儲數(shù)據(jù)。在數(shù)據(jù)備份時,數(shù)據(jù)存儲區(qū)作為數(shù)據(jù)源同備份管理器交互;在數(shù)據(jù)恢復時,數(shù)據(jù)存儲區(qū)作為恢復目標同恢復管理器交互。
備份管理器,用于根據(jù)觸發(fā)快照的事件,以及對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,與數(shù)據(jù)存儲區(qū)和快照區(qū)交互完成數(shù)據(jù)備份,包括快照觸發(fā)模塊、快照區(qū)修改模塊和指令接口模塊。
快照觸發(fā)模塊,用于檢測觸發(fā)快照的事件,判斷是否發(fā)生了觸發(fā)快照的事件;在觸發(fā)快照的事件發(fā)生后,快照觸發(fā)模塊進一步判斷發(fā)生了何種觸發(fā)快照的事件,并將與觸發(fā)快照的事件相關(guān)的信息發(fā)送給快照區(qū)修改模塊。
指令接口模塊,用于判斷是否收到對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,如果收到,則進一步判斷是否需要將待修改數(shù)據(jù)單元的地址和當前值記錄在快照區(qū)中,如果需要,則將待修改數(shù)據(jù)單元的地址和當前值發(fā)送給快照區(qū)修改模塊,并且執(zhí)行所述指令,如果不需要,則直接執(zhí)行所述指令。
上述判斷是否需要將待修改數(shù)據(jù)單元的地址和當前值記錄在快照區(qū)中可以由指令接口模塊的邏輯判斷子模塊完成。
快照區(qū)修改模塊,用于將快照觸發(fā)模塊發(fā)送的與觸發(fā)快照的事件相關(guān)的信息,和/或,指令接口模塊所發(fā)送的待修改數(shù)據(jù)單元的地址以及當前值寫入快照區(qū)。
快照區(qū),用于記錄數(shù)據(jù)存儲區(qū)發(fā)生變化的數(shù)據(jù)單元的地址以及所述數(shù)據(jù)單元的當前值,以及觸發(fā)快照的事件。
快照區(qū)管理器,用于根據(jù)預先設定的管理策略,管理快照區(qū)的數(shù)據(jù),用于在需要的時候釋放快照區(qū)的部分快照單元所占用的存儲空間,或者將快照區(qū)的快照單元復制到離線存儲器后釋放所復制的快照單元在快照區(qū)中占用的空間;在進行恢復操作時,快照區(qū)管理器用于根據(jù)需要將離線存儲區(qū)上的快照單元復制到快照區(qū)中。
離線存儲區(qū),用于備份快照區(qū)的數(shù)據(jù)。
恢復管理器,用于根據(jù)數(shù)據(jù)存儲區(qū)的當前數(shù)據(jù)以及快照區(qū)數(shù)據(jù)進行數(shù)據(jù)恢復,將恢復后的數(shù)據(jù)寫入數(shù)據(jù)存儲區(qū)。
恢復管理器可以進一步包括暫存區(qū)接口模塊,用于在數(shù)據(jù)恢復開始時,將數(shù)據(jù)存儲區(qū)的數(shù)據(jù)復制到暫存區(qū);在進行數(shù)據(jù)恢復時,將恢復過程的中間數(shù)據(jù)寫入到暫存區(qū);在恢復完成后,將暫存區(qū)數(shù)據(jù)復制到數(shù)據(jù)存儲區(qū)。
暫存區(qū),用于存放數(shù)據(jù)恢復過程中的中間數(shù)據(jù)。
所述的數(shù)據(jù)存儲區(qū)、快照區(qū)以及暫存區(qū),可以是本地的存儲介質(zhì),還可以是本地虛擬存儲介質(zhì)、外接存儲介質(zhì)、網(wǎng)絡共享存儲介質(zhì)、存儲局域網(wǎng)環(huán)境下的虛擬存儲介質(zhì)等,只要是在線存儲介質(zhì)都可以實現(xiàn)本發(fā)明。
總之,以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,設置觸發(fā)快照的事件,每次觸發(fā)快照的事件發(fā)生后,該方法包括A、以觸發(fā)快照的事件發(fā)生的時刻作為快照時刻,記錄本次觸發(fā)快照的事件;B、判斷是否接收到對數(shù)據(jù)單元進行修改的指令,如果收到,則分配快照單元記錄待修改數(shù)據(jù)單元的地址以及當前值,執(zhí)行所述對數(shù)據(jù)單元進行修改的指令,然后執(zhí)行步驟C,否則直接執(zhí)行步驟C;C、判斷是否發(fā)生下一次觸發(fā)快照的事件,如果發(fā)生,則結(jié)束當前流程,否則返回執(zhí)行步驟B。
2.根據(jù)權(quán)利要求1所述的實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,步驟B在分配快照單元前,進一步包括判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過,如果是,則直接執(zhí)行所述對數(shù)據(jù)單元進行修改的指令,否則分配所述快照單元。
3.根據(jù)權(quán)利要求2所述的實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待作改數(shù)據(jù)單元的當前值,所述判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過為判斷在本次觸發(fā)快照的事件發(fā)生后分配的快照單元的地址區(qū)中,是否已經(jīng)記錄過待修改數(shù)據(jù)單元的地址,如果是則認為待修改數(shù)據(jù)單元已經(jīng)被修改過,否則認為待修改數(shù)據(jù)單元未被修改過。
4.根據(jù)權(quán)利要求2所述的實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,該方法進一步包括為每個數(shù)據(jù)單元配置一個狀態(tài)標志位,步驟A進一步包括設置所有數(shù)據(jù)單元的狀態(tài)標志位為未修改;步驟B在接收到對數(shù)據(jù)單元進行修改的指令后進一步包括設置待修改數(shù)據(jù)單元所對應的狀態(tài)標志位為已修改;所述判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過為根據(jù)所述狀態(tài)標志位判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過。
5.根據(jù)權(quán)利要求1所述的實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,步驟C在下一次觸發(fā)快照的事件發(fā)生后,在結(jié)束當前流程前進一步包括判斷是否在所述本次觸發(fā)快照的事件和所述下次觸發(fā)快照的事件之間,收到清理快照單元的指令,如果收引,則清理已經(jīng)分配的快照單元,否則結(jié)束當前流程。
6.根據(jù)權(quán)利要求5所述的實現(xiàn)數(shù)據(jù)備份的方法,其特征在于,所述清理已經(jīng)分配的快照單元為將已經(jīng)分配的快照單元復制到離線存儲器上,然后釋放已經(jīng)分配的快照單元所占用的存儲空間;或設定門限值,所述清理已經(jīng)分配的快照單元為釋放對應于最早的門限值次觸發(fā)快照事件的快照單元所占用的存儲空間;或設定門限值,所述清理已經(jīng)分配的快照單元為將對應于最早的門限值次觸發(fā)快照事件的快照單元復制到離線存儲器上,然后釋放其所占用的存儲空間。
7.一種實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,設置觸發(fā)快照的事件,每次觸發(fā)快照的事件發(fā)生后,該方法包括U、以觸發(fā)快照的事件發(fā)生的時刻作為快照時刻,記錄本次觸發(fā)快照的事件;在下次觸發(fā)快照的事件發(fā)生前,如果收到對數(shù)據(jù)單元進行修改的指令,則分配快照單元,記錄待修改數(shù)據(jù)單元的地址以及當前值,然后執(zhí)行所述對數(shù)據(jù)單元進行修改的指令;在數(shù)據(jù)恢復時,該方法還包括V、讀取當前時刻到待恢復時刻之間所分配的快照單元,按照分配所述快照單元的時間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中。
8.根據(jù)權(quán)利要求7所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述按照分配所述快照單元的時間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V11、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V12、選擇未處理的快照單元中,最靠近當前時刻的快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元標記為已處理快照單元;V13、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V14,否則返回執(zhí)行步驟V12;V14、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V11;或V21、為每個數(shù)據(jù)單元分配對應的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復制到對應的暫存單元中;V22、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V23、選擇未處理的快照單元中,最靠近當前時刻的快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對應的暫存單元中,然后將所述快照單元標記為已處理快照單元;V24、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V25,否則返回執(zhí)行步驟V22;V25、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V21。
9.根據(jù)權(quán)利要求7所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,步驟U在分配快照單元前,進一步包括判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過,如果是,則直接執(zhí)行所述對數(shù)據(jù)單元進行修改的指令,否則分配所述快照單元。
10.根據(jù)權(quán)利要求9所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述按照分配所述快照單元的時間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V31、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V32、選擇未處理的快照單元中的任意一個快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元標記為已處理快照單元;V33、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V34,否則返回執(zhí)行步驟V32;V34、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V31;或V41、為每個數(shù)據(jù)單元分配對應的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復制到對應的暫存單元中;V42、將當前時刻與離當前時刻最近的快照時刻之間分配的快照單元作為未處理快照單元;V43、選擇未處理的快照單元中任意一個快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對應的暫存單元中,然后將所述快照單元標記為已處理快照單元;V44、判斷當前時刻與離當前時刻最近的快照時刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V45,否則返回執(zhí)行步驟V42;V45、判斷所述離當前時刻最近的快照時刻,是否為待恢復時刻,如果是則結(jié)束當前流程,否則將離當前時刻最近的快照時刻作為新的當前時刻,返回執(zhí)行步驟V41。
11.根據(jù)權(quán)利要求7至10所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,在數(shù)據(jù)恢復時,在步驟V之前進一步包括設置所要恢復的數(shù)據(jù)單元為不可由所述對數(shù)據(jù)單元進行修改的指令進行修改。
12.根據(jù)權(quán)利要求7所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當前值,所述按照分配所述快照單元的時間順序,將快照單元所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V51、將所有待恢復數(shù)據(jù)單元作為未處理數(shù)據(jù)單元,將當前時刻與待恢復時刻之間分配的快照單元作為未處理快照單元;V52、選擇未處理快照單元中,離待恢復時刻最近的快照單元,判斷所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元是否為未處理數(shù)據(jù)單元,如果是,則執(zhí)行步驟V53,否則執(zhí)行步驟V54;V53、將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元標記為已處理;V54、將所述快照單元標記為已處理快照單元,并判斷當前時刻與待恢復時刻之間分配的快照單元是否都為已處理快照單元,如果是則結(jié)束當前流程,否則返回執(zhí)行步驟V52;或V61、為每個數(shù)據(jù)單元分配對應的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復制到對應的暫存單元中;V62、將所有待恢復數(shù)據(jù)單元作為未處理數(shù)據(jù)單元,將當前時刻與待恢復時刻之間分配的快照單元作為未處理快照單元;V63、選擇未處理快照單元中,離待恢復時刻最近的快照單元,判斷所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元是否為未處理數(shù)據(jù)單元,如果是,則執(zhí)行步驟V64,否則執(zhí)行步驟V65;V64、將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對應的暫存單元中,然后將所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元標記為已處理;V65、將所述快照單元標記為已處理快照單元,并判斷當前時刻與待恢復時刻之間分配的快照單元是否都為已處理快照單元,如果是則結(jié)束當前流程,否則返回執(zhí)行步驟V63。
13.根據(jù)權(quán)利要求7所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,在下一次觸發(fā)快照的事件發(fā)生后,步驟U進一步包括判斷是否在所述本次觸發(fā)快照的事件和所述下次觸發(fā)快照的事件之間,收到清理快照單元的指令,如果收到,則清理已經(jīng)分配的快照單元,否則結(jié)束當前流程。
14.根據(jù)權(quán)利要求13所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,所述清理已經(jīng)分配的快照單元為將已經(jīng)分配的快照單元復制到離線存儲器上,然后釋放已經(jīng)分配的快照單元所占用的存儲空間;或?qū)谧钤绲拈T限值次觸發(fā)快照事件的快照單元復制到離線存儲器上,然后釋放其所占用的存儲空間。
15.根據(jù)權(quán)利要求14所述的實現(xiàn)數(shù)據(jù)備份和恢復的方法,其特征在于,在數(shù)據(jù)恢復時,在步驟V之前進一步包括判斷待恢復時刻所對應的快照單元是否已經(jīng)復制到離線存儲器上,如果是則將離線存儲器上,待恢復時刻以后所分配的快照單元復制到在線存儲器上,然后執(zhí)行步驟V,否則直接執(zhí)行V。
16.一種實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng),包括數(shù)據(jù)存儲區(qū),其特征在于,該系統(tǒng)進一步包括備份管理器,用于根據(jù)觸發(fā)快照的事件,以及對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,與數(shù)據(jù)存儲區(qū)和快照區(qū)交互完成數(shù)據(jù)備份;快照區(qū),用于記錄觸發(fā)快照的事件,以及數(shù)據(jù)存儲區(qū)發(fā)生變化的數(shù)據(jù)單元的地址以及所述數(shù)據(jù)單元的當前值;恢復管理器,用于根據(jù)數(shù)據(jù)存儲區(qū)的當前數(shù)據(jù)以及快照區(qū)的數(shù)據(jù)進行數(shù)據(jù)恢復,將恢復后的數(shù)據(jù)寫入數(shù)據(jù)存儲區(qū)。
17.根據(jù)權(quán)利要求16所述的實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng),其特征在于,該系統(tǒng)進一步包括快照區(qū)管理器,用于根據(jù)預先設定的管理策略,管理快照區(qū)的數(shù)據(jù),并且與離線存儲區(qū)交互,對快照區(qū)的數(shù)據(jù)進行備份;離線存儲區(qū),用于備份快照區(qū)的數(shù)據(jù)。
18.根據(jù)權(quán)利要求16所述的實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng),其特征在于,所述備份管理器包括快照觸發(fā)模塊,用于檢測觸發(fā)快照的事件,并將與觸發(fā)快照的事件相關(guān)的信息發(fā)送給快照區(qū)修改模塊;指令接口模塊,用于接收對數(shù)據(jù)存儲區(qū)的數(shù)據(jù)單元進行修改的指令,將待修改數(shù)據(jù)單元的地址和當前值發(fā)送給快照區(qū)修改模塊,并且執(zhí)行所述指令;快照區(qū)修改模塊,用于將快照觸發(fā)模塊發(fā)送的與觸發(fā)快照的事件相關(guān)的信息,和/或,指令接口模塊所發(fā)送的待修改數(shù)據(jù)單元的地址以及當前值寫入快照區(qū)。
19.根據(jù)權(quán)利要求18所述的實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng),其特征在于,所述指令接口模塊進一步包括邏輯判斷子模塊,用于判斷是否需要將待修改數(shù)據(jù)單元的地址和當前值記錄在快照區(qū)中。
20.根據(jù)權(quán)利要求16所述的實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng),其特征在于,該系統(tǒng)進一步包括暫存區(qū),用于存放數(shù)據(jù)恢復過程中的中間數(shù)據(jù);所述恢復管理器進一步包括暫存區(qū)接口模塊,用于在數(shù)據(jù)恢復開始時,將數(shù)據(jù)存儲區(qū)的數(shù)據(jù)復制到暫存區(qū);在進行數(shù)據(jù)恢復時,將恢復過程的中間數(shù)據(jù)寫入到暫存區(qū);在恢復完成后,將暫存區(qū)數(shù)據(jù)復制到數(shù)據(jù)存儲區(qū)。
全文摘要
本發(fā)明公開了一種實現(xiàn)數(shù)據(jù)備份和恢復的方法,設置觸發(fā)快照事件,在觸發(fā)快照事件發(fā)生后包括以觸發(fā)快照事件發(fā)生時刻作為快照時刻,記錄本次觸發(fā)快照事件;在下次觸發(fā)快照事件發(fā)生前,如果收到對數(shù)據(jù)單元進行修改的指令,則分配快照單元記錄待修改數(shù)據(jù)單元的地址和當前值,并執(zhí)行所述指令;在數(shù)據(jù)恢復時還包括讀取當前時刻到待恢復時刻之間分配的快照單元,按照分配所述快照單元的時間順序,將快照單元中記錄的數(shù)據(jù)寫入到快照單元記錄地址的數(shù)據(jù)單元中。本發(fā)明還公開了一種實現(xiàn)數(shù)據(jù)備份和恢復的系統(tǒng)。采用本發(fā)明所提供的方案,可以減少數(shù)據(jù)備份和恢復過程中占用的系統(tǒng)處理資源和備份存儲介質(zhì)資源,有利于實現(xiàn)數(shù)據(jù)的持續(xù)保護。
文檔編號G06F11/14GK101078999SQ200610078430
公開日2007年11月28日 申請日期2006年5月26日 優(yōu)先權(quán)日2006年5月26日
發(fā)明者任永堅 申請人:任永堅, 陳燁