国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù)的方法及系統(tǒng)的制作方法

      文檔序號(hào):6558485閱讀:212來源:國知局
      專利名稱:一種實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù)的方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù),特別是涉及一種實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù)的方法及系統(tǒng)。
      背景技術(shù)
      計(jì)算機(jī)的數(shù)據(jù)是存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)介質(zhì)上的。對(duì)數(shù)據(jù)進(jìn)行修改是在存儲(chǔ)介質(zhì)上用新數(shù)據(jù)覆蓋原數(shù)據(jù),這樣,如果沒有特殊的手段,原數(shù)據(jù)是無法被恢復(fù)的但是實(shí)際中的很多應(yīng)用都需要能夠恢復(fù)原數(shù)據(jù)。例如,個(gè)人電腦用戶執(zhí)行某些操作導(dǎo)致系統(tǒng)崩潰,這時(shí)候就需要恢復(fù)執(zhí)行這些操作之前的原系統(tǒng)數(shù)據(jù),通常實(shí)現(xiàn)數(shù)據(jù)恢復(fù)是采用定期備份的方法,即定期的將數(shù)據(jù)備份到備份存儲(chǔ)介質(zhì)上,如果需要恢復(fù),又將數(shù)據(jù)從備份存儲(chǔ)介質(zhì)上導(dǎo)入原存儲(chǔ)介質(zhì)。這種方法的缺點(diǎn)在于,無論是進(jìn)行數(shù)據(jù)備份還是進(jìn)行數(shù)據(jù)恢復(fù)時(shí),無論數(shù)據(jù)是否發(fā)生變化,一律進(jìn)行備份或恢復(fù),一方面造成備份存儲(chǔ)介質(zhì)的浪費(fèi),另一方面占用系統(tǒng)的處理能力。
      現(xiàn)有技術(shù)解決這一問題的方法是采用如圖1所示的稱為快照備份的方法,該方法的核心思想是只記錄發(fā)生變化的數(shù)據(jù)。該方法的流程圖如圖1所示,采用該方法時(shí)存儲(chǔ)介質(zhì)的存儲(chǔ)狀態(tài)示意圖如圖2所示。
      步驟101以快照時(shí)刻數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)作為參考數(shù)據(jù)。
      預(yù)先設(shè)置觸發(fā)快照的事件,當(dāng)這些事件發(fā)生時(shí),就觸發(fā)一次快照,然后執(zhí)行步驟101到步驟111。這里,觸發(fā)快照的事件發(fā)生的時(shí)刻稱為快照時(shí)刻。
      步驟102建立新的快照區(qū),快照區(qū)所有快照單元的狀態(tài)標(biāo)志位均為未發(fā)生變化。
      在圖2中,第一快照區(qū)是在第一快照時(shí)刻建立的,第二快照區(qū)是在第二快照時(shí)刻建立的,第三快照區(qū)是在第三快照時(shí)刻建立的。快照區(qū)的快照單元與數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元是一一對(duì)應(yīng)的。在快照區(qū)內(nèi)部,為每個(gè)快照單元配置一個(gè)狀態(tài)標(biāo)志位,狀態(tài)標(biāo)志位用來表示與之對(duì)應(yīng)的快照單元是否經(jīng)過修改。所述狀態(tài)標(biāo)志位可以是一個(gè)二進(jìn)制位,該二進(jìn)制位為1的時(shí)候表示已修改,該二進(jìn)制位為0的時(shí)候表示未修改。新建立的快照區(qū)所有快照單元的狀態(tài)標(biāo)志位都為未修改。
      步驟103判斷是否接收到對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元進(jìn)行修改的指令,如果是則執(zhí)行步驟104,否則執(zhí)行步驟110。
      一個(gè)對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元進(jìn)行修改的指令應(yīng)該至少包括兩部分要修改的數(shù)據(jù)單元的地址以及要寫入的數(shù)據(jù)。
      步驟104到步驟108根據(jù)所述要修改的數(shù)據(jù)單元的地址,確定該數(shù)據(jù)單元在已經(jīng)建立的所有快照區(qū)中分別對(duì)應(yīng)的快照單元;然后對(duì)所確定的每個(gè)快照單元,分別判斷其狀態(tài)標(biāo)志位是否為未修改,如果是則將要修改的數(shù)據(jù)單元的當(dāng)前值寫入該快照單元,并且將該快照單元的狀態(tài)標(biāo)志位設(shè)置為已修改,否則保持該快照單元的當(dāng)前值。
      例如在圖2中,在第一快照時(shí)刻,新建立的第一快照區(qū)中,所有快照單元的狀態(tài)標(biāo)志位都為未修改。對(duì)比圖2(a)中參考數(shù)據(jù)和變化后的數(shù)據(jù)可以看出,從第一快照時(shí)刻到第二快照時(shí)刻之間,所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令,對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的0001數(shù)據(jù)單元和0002數(shù)據(jù)單元進(jìn)行了修改。因此在第二快照時(shí)刻,第一快照區(qū)如圖2(a)所示。
      當(dāng)?shù)诙煺諘r(shí)刻的快照被觸發(fā)時(shí),第一快照區(qū)中與數(shù)據(jù)存儲(chǔ)區(qū)的0001數(shù)據(jù)單元和0002數(shù)據(jù)單元對(duì)應(yīng)的快照單元的狀態(tài)標(biāo)志位為已修改,與數(shù)據(jù)存儲(chǔ)區(qū)的0003數(shù)據(jù)單元、0004數(shù)據(jù)單元對(duì)應(yīng)的快照單元的狀態(tài)標(biāo)志位都為未修改;根據(jù)步驟102所述,第二快照區(qū)是新建的快照區(qū),所有快照單元的狀態(tài)標(biāo)志位都為未修改。
      從對(duì)圖2(b)中參考數(shù)據(jù)和變化后數(shù)據(jù)的比較可以看出,在第二快照時(shí)刻到第三快照時(shí)刻之間,所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的0002數(shù)據(jù)單元和0003數(shù)據(jù)單元進(jìn)行了修改。對(duì)于第一快照區(qū),由于與0002數(shù)據(jù)單元對(duì)應(yīng)的快照單元的狀態(tài)標(biāo)志位為已修改,因此保持該快照單元的當(dāng)前值;而與0003數(shù)據(jù)單元對(duì)應(yīng)的快照單元的狀態(tài)標(biāo)志位為未修改,因此將0003數(shù)據(jù)單元的當(dāng)前值A(chǔ)寫入第一快照區(qū)中與0003數(shù)據(jù)單元對(duì)應(yīng)的快照單元中,并且將該快照單元所對(duì)應(yīng)的狀態(tài)標(biāo)志位設(shè)置為已修改。對(duì)于第二快照區(qū),則將0002數(shù)據(jù)單元的當(dāng)前值B寫入第二快照區(qū)中與0002數(shù)據(jù)單元對(duì)應(yīng)的快照單元中,并且將該快照單元所對(duì)應(yīng)的狀態(tài)標(biāo)志位設(shè)置為已修改;將0003數(shù)據(jù)單元的當(dāng)前值A(chǔ)寫入第二快照區(qū)中與0003數(shù)據(jù)單元對(duì)應(yīng)的快照單元中,并且將該快照單元所對(duì)應(yīng)的狀態(tài)標(biāo)志位設(shè)置為已修改。因此,在第三快照時(shí)刻,第一快照區(qū)和第二快照區(qū)如圖2(b)所示。
      步驟109執(zhí)行所述對(duì)數(shù)據(jù)存儲(chǔ)區(qū)進(jìn)行修改的指令。
      步驟110判斷是否到達(dá)下一快照時(shí)刻,如果到達(dá),則執(zhí)行步驟111,否則執(zhí)行步驟103。
      步驟111結(jié)束本次快照流程。
      事實(shí)上,下次快照時(shí)刻后的操作就是重復(fù)步驟101到步驟111。
      在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),如果需要恢復(fù)到某一快照時(shí)刻,只需要將該快照時(shí)刻所對(duì)應(yīng)的快照區(qū)中,狀態(tài)標(biāo)志位為已修改的快照單元的值,分別寫入到對(duì)應(yīng)的數(shù)據(jù)單元即可。
      從以上對(duì)現(xiàn)有技術(shù)的描述可以看出,現(xiàn)有技術(shù)只是部分解決了在數(shù)據(jù)備份和恢復(fù)時(shí)大量占用系統(tǒng)資源的問題。這是因?yàn)?,在?shù)據(jù)備份時(shí),在多個(gè)快照被觸發(fā),已經(jīng)建立了多個(gè)快照區(qū)的情況下,每接受到一個(gè)對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元進(jìn)行修改的指令,需要對(duì)所有已建立快照區(qū)中,與待修改數(shù)據(jù)單元對(duì)應(yīng)的快照單元的狀態(tài)標(biāo)志位進(jìn)行校驗(yàn);然后,將要修改的數(shù)據(jù)單元的當(dāng)前值寫入狀態(tài)標(biāo)志位為未修改的快照單元;并且,更新這些快照單元的狀態(tài)標(biāo)志位為已修改。這樣,在對(duì)數(shù)據(jù)單元的一次寫操作中,就需要多次對(duì)所述狀態(tài)標(biāo)志位進(jìn)行讀寫和校驗(yàn),以及多次對(duì)快照單元的數(shù)據(jù)進(jìn)行寫操作,從而仍然會(huì)大量占用系統(tǒng)的處理能力,降低系統(tǒng)的運(yùn)行效率。已經(jīng)建立的快照區(qū)越多,系統(tǒng)運(yùn)行效率的降低就越嚴(yán)重。
      而且,現(xiàn)有技術(shù)并沒有解決浪費(fèi)備份存儲(chǔ)介質(zhì)資源的問題,因?yàn)樵诿看慰煺諘r(shí)刻,都需要分配和數(shù)據(jù)存儲(chǔ)區(qū)具有相同容量或一定比例關(guān)系的固定存儲(chǔ)資源以建立該快照時(shí)刻所對(duì)應(yīng)的快照區(qū)。建立的快照區(qū)越多,占用的備份存儲(chǔ)介質(zhì)資源就越多。
      正是由于上述技術(shù)上的制約,在現(xiàn)有的快照技術(shù)中,快照區(qū)的數(shù)量受到限制,很難實(shí)現(xiàn)數(shù)據(jù)的持續(xù)保護(hù)。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明的主要目的在于提供一種實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù)的方法及系統(tǒng),既能夠減少在數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)時(shí)所占用的系統(tǒng)處理資源,提高數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)時(shí)的系統(tǒng)運(yùn)行效率,又能夠減少實(shí)現(xiàn)數(shù)據(jù)恢復(fù)所需要的備份存儲(chǔ)介質(zhì),從而實(shí)現(xiàn)數(shù)據(jù)的持續(xù)保護(hù)。
      為了達(dá)到上述目的,本發(fā)明的提供了一種實(shí)現(xiàn)數(shù)據(jù)備份的方法,其特征在于,設(shè)置觸發(fā)快照的事件,每次觸發(fā)快照的事件發(fā)生后,該方法包括A、以觸發(fā)快照的事件發(fā)生的時(shí)刻作為快照時(shí)刻,記錄本次觸發(fā)快照的事件;B、判斷是否接收到對(duì)數(shù)據(jù)單元進(jìn)行修改的指令,如果收到,則分配快照單元記錄待修改數(shù)據(jù)單元的地址以及當(dāng)前值,執(zhí)行所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令,然后執(zhí)行步驟C,否則直接執(zhí)行步驟C;C、判斷是否發(fā)生下一次觸發(fā)快照的事件,如果發(fā)生,則結(jié)束當(dāng)前流程,否則返回執(zhí)行步驟B。
      其中,步驟B在分配快照單元前,進(jìn)一步包括判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過,如果是,則直接執(zhí)行所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令,否則分配所述快照單元。
      其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當(dāng)前值,所述判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過為判斷在本次觸發(fā)快照的事件發(fā)生后分配的快照單元的地址區(qū)中,是否已經(jīng)記錄過待修改數(shù)據(jù)單元的地址,如果是則認(rèn)為待修改數(shù)據(jù)單元已經(jīng)被修改過,否則認(rèn)為待修改數(shù)據(jù)單元未被修改過。
      其中,該方法進(jìn)一步包括為每個(gè)數(shù)據(jù)單元配置一個(gè)狀態(tài)標(biāo)志位,步驟A進(jìn)一步包括設(shè)置所有數(shù)據(jù)單元的狀態(tài)標(biāo)志位為未修改;步驟B在接收到對(duì)數(shù)據(jù)單元進(jìn)行修改的指令后進(jìn)一步包括設(shè)置待修改數(shù)據(jù)單元所對(duì)應(yīng)的狀態(tài)標(biāo)志位為已修改;所述判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過為根據(jù)所述狀態(tài)標(biāo)志位判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過。
      其中,步驟C在下一次觸發(fā)快照的事件發(fā)生后,在結(jié)束當(dāng)前流程前進(jìn)一步包括判斷是否在所述本次觸發(fā)快照的事件和所述下次觸發(fā)快照的事件之間,收到清理快照單元的指令,如果收到,則清理已經(jīng)分配的快照單元,否則結(jié)束當(dāng)前流程。
      其中所述清理已經(jīng)分配的快照單元為將已經(jīng)分配的快照單元復(fù)制到離線存儲(chǔ)器上,然后釋放已經(jīng)分配的快照單元所占用的存儲(chǔ)空間;或設(shè)定門限值,所述清理已經(jīng)分配的快照單元為釋放對(duì)應(yīng)于最早的門限值次觸發(fā)快照事件的快照單元所占用的存儲(chǔ)空間;或設(shè)定門限值,所述清理已經(jīng)分配的快照單元為將對(duì)應(yīng)于最早的門限值次觸發(fā)快照事件的快照單元復(fù)制到離線存儲(chǔ)器上,然后釋放其所占用的存儲(chǔ)空間。
      為了達(dá)到上述目的,本發(fā)明還提供了一種實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù)的方法,其特征在于,設(shè)置觸發(fā)快照的事件,每次觸發(fā)快照的事件發(fā)生后,該方法包括U、以觸發(fā)快照的事件發(fā)生的時(shí)刻作為快照時(shí)刻,記錄本次觸發(fā)快照的事件;在下次觸發(fā)快照的事件發(fā)生前,如果收到對(duì)數(shù)據(jù)單元進(jìn)行修改的指令,則分配快照單元,記錄待修改數(shù)據(jù)單元的地址以及當(dāng)前值,然后執(zhí)行所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令;在數(shù)據(jù)恢復(fù)時(shí),該方法還包括V、讀取當(dāng)前時(shí)刻到待恢復(fù)時(shí)刻之間所分配的快照單元,按照分配所述快照單元的時(shí)間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中。
      其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當(dāng)前值,所述按照分配所述快照單元的時(shí)間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V11、將當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間分配的快照單元作為未處理快照單元;V12、選擇未處理的快照單元中,最靠近當(dāng)前時(shí)刻的快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元標(biāo)記為已處理快照單元;V13、判斷當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V14,否則返回執(zhí)行步驟V12;V14、判斷所述離當(dāng)前時(shí)刻最近的快照時(shí)刻,是否為待恢復(fù)時(shí)刻,如果是則結(jié)束當(dāng)前流程,否則將離當(dāng)前時(shí)刻最近的快照時(shí)刻作為新的當(dāng)前時(shí)刻,返回執(zhí)行步驟V11;或V21、為每個(gè)數(shù)據(jù)單元分配對(duì)應(yīng)的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復(fù)制到對(duì)應(yīng)的暫存單元中;V22、將當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間分配的快照單元作為未處理快照單元;V23、選擇未處理的快照單元中,最靠近當(dāng)前時(shí)刻的快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對(duì)應(yīng)的暫存單元中,然后將所述快照單元標(biāo)記為已處理快照單元;V24、判斷當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V25,否則返回執(zhí)行步驟V22;V25、判斷所述離當(dāng)前時(shí)刻最近的快照時(shí)刻,是否為待恢復(fù)時(shí)刻,如果是則結(jié)束當(dāng)前流程,否則將離當(dāng)前時(shí)刻最近的快照時(shí)刻作為新的當(dāng)前時(shí)刻,返回執(zhí)行步驟V21。
      其中,步驟U在分配快照單元前,進(jìn)一步包括判斷在本次觸發(fā)快照的事件發(fā)生后,所述待修改數(shù)據(jù)單元是否已經(jīng)被修改過,如果是,則直接執(zhí)行所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令,否則分配所述快照單元。
      其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當(dāng)前值,所述按照分配所述快照單元的時(shí)間順序,將快照單元中所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V31、將當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間分配的快照單元作為未處理快照單元;V32、選擇未處理的快照單元中的任意一個(gè)快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元標(biāo)記為已處理快照單元;
      V33、判斷當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V34,否則返回執(zhí)行步驟V32;V34、判斷所述離當(dāng)前時(shí)刻最近的快照時(shí)刻,是否為待恢復(fù)時(shí)刻,如果是則結(jié)束當(dāng)前流程,否則將離當(dāng)前時(shí)刻最近的快照時(shí)刻作為新的當(dāng)前時(shí)刻,返回執(zhí)行步驟V31;或V41、為每個(gè)數(shù)據(jù)單元分配對(duì)應(yīng)的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復(fù)制到對(duì)應(yīng)的暫存單元中;V42、將當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間分配的快照單元作為未處理快照單元;V43、選擇未處理的快照單元中任意一個(gè)快照單元,將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對(duì)應(yīng)的暫存單元中,然后將所述快照單元標(biāo)記為已處理快照單元;V44、判斷當(dāng)前時(shí)刻與離當(dāng)前時(shí)刻最近的快照時(shí)刻之間的快照單元是否全部為已處理快照單元,如果是,則執(zhí)行步驟V45,否則返回執(zhí)行步驟V42;V45、判斷所述離當(dāng)前時(shí)刻最近的快照時(shí)刻,是否為待恢復(fù)時(shí)刻,如果是則結(jié)束當(dāng)前流程,否則將離當(dāng)前時(shí)刻最近的快照時(shí)刻作為新的當(dāng)前時(shí)刻,返回執(zhí)行步驟V41。
      其中,在數(shù)據(jù)恢復(fù)時(shí),在步驟V之前進(jìn)一步包括設(shè)置所要恢復(fù)的數(shù)據(jù)單元為不可由所述對(duì)數(shù)據(jù)單元進(jìn)行修改的指令進(jìn)行修改。
      其中,所述快照單元包括地址區(qū)和數(shù)據(jù)區(qū),其中地址區(qū)用于記錄待修改數(shù)據(jù)單元的地址,數(shù)據(jù)區(qū)用于記錄待修改數(shù)據(jù)單元的當(dāng)前值,所述按照分配所述快照單元的時(shí)間順序,將快照單元所記錄的數(shù)據(jù)寫入到快照單元所記錄地址的數(shù)據(jù)單元中為V51、將所有待恢復(fù)數(shù)據(jù)單元作為未處理數(shù)據(jù)單元,將當(dāng)前時(shí)刻與待恢復(fù)時(shí)刻之間分配的快照單元作為未處理快照單元;
      V52、選擇未處理快照單元中,離待恢復(fù)時(shí)刻最近的快照單元,判斷所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元是否為未處理數(shù)據(jù)單元,如果是,則執(zhí)行步驟V53,否則執(zhí)行步驟V54;V53、將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元中,然后將所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元標(biāo)記為已處理;V54、將所述快照單元標(biāo)記為已處理快照單元,并判斷當(dāng)前時(shí)刻與待恢復(fù)時(shí)刻之間分配的快照單元是否都為已處理快照單元,如果是則結(jié)束當(dāng)前流程,否則返回執(zhí)行步驟V52;或V61、為每個(gè)數(shù)據(jù)單元分配對(duì)應(yīng)的暫存單元,并且將數(shù)據(jù)單元中的數(shù)據(jù)復(fù)制到對(duì)應(yīng)的暫存單元中;V62、將所有待恢復(fù)數(shù)據(jù)單元作為未處理數(shù)據(jù)單元,將當(dāng)前時(shí)刻與待恢復(fù)時(shí)刻之間分配的快照單元作為未處理快照單元;V63、選擇未處理快照單元中,離待恢復(fù)時(shí)刻最近的快照單元,判斷所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元是否為未處理數(shù)據(jù)單元,如果是,則執(zhí)行步驟V64,否則執(zhí)行步驟V65;V64、將所述快照單元的數(shù)據(jù)區(qū)所記錄的數(shù)據(jù),寫入到與所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元對(duì)應(yīng)的暫存單元中,然后將所述快照單元的地址區(qū)所記錄的數(shù)據(jù)單元標(biāo)記為已處理;V65、將所述快照單元標(biāo)記為已處理快照單元,并判斷當(dāng)前時(shí)刻與待恢復(fù)時(shí)刻之間分配的快照單元是否都為已處理快照單元,如果是則結(jié)束當(dāng)前流程,否則返回執(zhí)行步驟V63。
      其中,在下一次觸發(fā)快照的事件發(fā)生后,步驟U進(jìn)一步包括判斷是否在所述本次觸發(fā)快照的事件和所述下次觸發(fā)快照的事件之間,收到清理快照單元的指令,如果收到,則清理已經(jīng)分配的快照單元,否則結(jié)束當(dāng)前流程。
      其中,所述清理已經(jīng)分配的快照單元為將已經(jīng)分配的快照單元復(fù)制到離線存儲(chǔ)器上,然后釋放已經(jīng)分配的快照單元所占用的存儲(chǔ)空間;或?qū)?duì)應(yīng)于最早的門限值次觸發(fā)快照事件的快照單元復(fù)制到離線存儲(chǔ)器上,然后釋放其所占用的存儲(chǔ)空間。
      其中,在數(shù)據(jù)恢復(fù)時(shí),在步驟V之前進(jìn)一步包括判斷待恢復(fù)時(shí)刻所對(duì)應(yīng)的快照單元是否已經(jīng)復(fù)制到離線存儲(chǔ)器上,如果是則將離線存儲(chǔ)器上,待恢復(fù)時(shí)刻以后所分配的快照單元復(fù)制到在線存儲(chǔ)器上,然后執(zhí)行步驟V,否則直接執(zhí)行V。
      為了達(dá)到上述目的,本發(fā)明還提供了一種實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù)的系統(tǒng),包括數(shù)據(jù)存儲(chǔ)區(qū),其特征在于,該系統(tǒng)進(jìn)一步包括備份管理器,用于根據(jù)觸發(fā)快照的事件,以及對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元進(jìn)行修改的指令,與數(shù)據(jù)存儲(chǔ)區(qū)和快照區(qū)交互完成數(shù)據(jù)備份;快照區(qū),用于記錄觸發(fā)快照的事件,以及數(shù)據(jù)存儲(chǔ)區(qū)發(fā)生變化的數(shù)據(jù)單元的地址以及所述數(shù)據(jù)單元的當(dāng)前值;恢復(fù)管理器,用于根據(jù)數(shù)據(jù)存儲(chǔ)區(qū)的當(dāng)前數(shù)據(jù)以及快照區(qū)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù),將恢復(fù)后的數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)區(qū)。
      其中,該系統(tǒng)進(jìn)一步包括快照區(qū)管理器,用于根據(jù)預(yù)先設(shè)定的管理策略,管理快照區(qū)的數(shù)據(jù),并且與離線存儲(chǔ)區(qū)交互,對(duì)快照區(qū)的數(shù)據(jù)進(jìn)行備份;離線存儲(chǔ)區(qū),用于備份快照區(qū)的數(shù)據(jù)。
      其中,所述備份管理器包括快照觸發(fā)模塊,用于檢測(cè)觸發(fā)快照的事件,并將與觸發(fā)快照的事件相關(guān)的信息發(fā)送給快照區(qū)修改模塊;指令接口模塊,用于接收對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元進(jìn)行修改的指令,將待修改數(shù)據(jù)單元的地址和當(dāng)前值發(fā)送給快照區(qū)修改模塊,并且執(zhí)行所述指令;快照區(qū)修改模塊,用于將快照觸發(fā)模塊發(fā)送的與觸發(fā)快照的事件相關(guān)的信息,和/或,指令接口模塊所發(fā)送的待修改數(shù)據(jù)單元的地址以及當(dāng)前值寫入快照區(qū)。
      其中,所述指令接口模塊進(jìn)一步包括邏輯判斷子模塊,用于判斷是否需要將待修改數(shù)據(jù)單元的地址和當(dāng)前值記錄在快照區(qū)中。
      其中,該系統(tǒng)進(jìn)一步包括暫存區(qū),用于存放數(shù)據(jù)恢復(fù)過程中的中間數(shù)據(jù);所述恢復(fù)管理器進(jìn)一步包括暫存區(qū)接口模塊,用于在數(shù)據(jù)恢復(fù)開始時(shí),將數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)復(fù)制到暫存區(qū);在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),將恢復(fù)過程的中間數(shù)據(jù)寫入到暫存區(qū);在恢復(fù)完成后,將暫存區(qū)數(shù)據(jù)復(fù)制到數(shù)據(jù)存儲(chǔ)區(qū)。
      采用本發(fā)明所提供的技術(shù)方案,快照區(qū)是一個(gè)動(dòng)態(tài)擴(kuò)展的存儲(chǔ)區(qū)域,快照區(qū)的存儲(chǔ)資源是根據(jù)數(shù)據(jù)記錄的需要,動(dòng)態(tài)分配的。在每個(gè)快照時(shí)刻,并不預(yù)先分配與整個(gè)數(shù)據(jù)存儲(chǔ)區(qū)具有相同容量或一定比例關(guān)系的存儲(chǔ)資源作為快照區(qū),而只是在快照區(qū)中分配一個(gè)快照單元,記錄下觸發(fā)當(dāng)前快照的事件。然后在收到對(duì)數(shù)據(jù)存儲(chǔ)區(qū)進(jìn)行修改的指令時(shí),只有在該數(shù)據(jù)單元在本次快照后未發(fā)生過變化的情況下,才會(huì)在快照區(qū)中分配一個(gè)快照單元,將所述要修改的數(shù)據(jù)單元的地址,以及要修改的數(shù)據(jù)單元的當(dāng)前值記錄在新分配的快照單元中。在兩個(gè)快照時(shí)刻之間,只有發(fā)生變化的數(shù)據(jù)單元,才會(huì)在快照區(qū)中對(duì)應(yīng)最多一個(gè)快照單元。這樣就節(jié)省了對(duì)備份存儲(chǔ)介質(zhì)資源的占用。
      并且,相對(duì)于現(xiàn)有的快照技術(shù),在新的快照被觸發(fā)以后,新快照時(shí)刻之前所分配的快照單元可以進(jìn)一步存儲(chǔ)到磁帶這樣的離線存儲(chǔ)介質(zhì)上,從而釋放這些快照單元所占用的在線存儲(chǔ)介質(zhì)資源,進(jìn)一步減少對(duì)在線存儲(chǔ)介質(zhì)資源的占用。
      而在系統(tǒng)處理資源的占用方面,在多個(gè)快照被觸發(fā)的情況下,每接受到一個(gè)對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)單元進(jìn)行修改的指令,本發(fā)明的技術(shù)方案所要執(zhí)行的操作,只是在快照區(qū)中本次快照被觸發(fā)后所分配的快照單元中,進(jìn)行一次針對(duì)數(shù)據(jù)單元地址的遍歷和比較,最多再加上一次對(duì)新分配的快照單元的寫入操作因此,一次數(shù)據(jù)修改的完成所需要占用的系統(tǒng)處理資源與已經(jīng)被觸發(fā)的快照數(shù)無關(guān),從而節(jié)約了系統(tǒng)的處理能力,提高了系統(tǒng)的處理效率。
      由于本發(fā)明在占用系統(tǒng)處理資源和占用備份存儲(chǔ)介質(zhì)資源這兩方面都得到了改善,因此快照的數(shù)量可以根據(jù)需要設(shè)定,有利于實(shí)現(xiàn)數(shù)據(jù)的持續(xù)保護(hù)。


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