專利名稱::基于動態(tài)數(shù)據(jù)區(qū)的硬盤數(shù)據(jù)保護(hù)與還原方法
技術(shù)領(lǐng)域:
:本發(fā)明涉計算機(jī)數(shù)據(jù)保護(hù)方法,特別是一種基于動態(tài)數(shù)據(jù)區(qū)的硬盤數(shù)據(jù)保護(hù)與還原方法。
背景技術(shù):
:隨著信息技術(shù)的發(fā)展,計算機(jī)應(yīng)用普及到各行各業(yè)中,系統(tǒng)及數(shù)據(jù)的安全問題日益突出。操作失誤、人為破壞、計算機(jī)病毒等都會導(dǎo)致系統(tǒng)崩潰及數(shù)據(jù)丟失的現(xiàn)象。在這種情況下,出現(xiàn)了許多數(shù)據(jù)保護(hù)措施,硬盤保護(hù)卡(還原卡)作為一種有效的數(shù)據(jù)保護(hù)方法,得到了廣大PC用戶的歡迎。硬盤保護(hù)卡在保護(hù)數(shù)據(jù)之前需要建立還原點(diǎn),建立還原點(diǎn)的主要工作是記錄硬盤各分區(qū)中扇區(qū)的使用情況形成扇區(qū)狀態(tài)表。還原點(diǎn)建立之后,攔截計算機(jī)對硬盤的存取,將落在保護(hù)范圍內(nèi)的寫操作重新定向到映射區(qū),同時修改狀態(tài)表中相應(yīng)的狀態(tài)并將這個映射關(guān)系記錄到映射表中,此后對被映射過的扇區(qū)的讀寫操作,根據(jù)映射表將其重定向到相應(yīng)的映射區(qū)。數(shù)據(jù)保護(hù)的關(guān)鍵是通過映射操作,使得對保護(hù)數(shù)據(jù)的寫入被映射到映射區(qū),對原數(shù)據(jù)起到了保護(hù)的作用。還原功能是通過適當(dāng)?shù)臓顟B(tài)表、映射表和扇區(qū)操作,使得硬盤數(shù)據(jù)從文件系統(tǒng)層次上看,恢復(fù)到建立還原點(diǎn)時的狀態(tài)。保護(hù)卡除了還原功能還有寫回功能,該功能將被映射到別處的數(shù)據(jù)真正寫回到它原來的位置。如果在計算機(jī)上只能建立一個還原點(diǎn),稱為實現(xiàn)了單點(diǎn)還原,如果可以建立一個以上的還原點(diǎn),則稱為實現(xiàn)了多點(diǎn)還原。從上邊的描述可見,除了計算機(jī)本身的數(shù)據(jù)之外,保護(hù)卡的保護(hù)還原算法需要額外的空間用于保存扇區(qū)狀態(tài)表、映射表以及映射數(shù)據(jù)。將扇區(qū)狀態(tài)表和映射表稱為保護(hù)卡的管理數(shù)據(jù),其存儲區(qū)域稱為保護(hù)卡的管理數(shù)據(jù)區(qū)。把管理數(shù)據(jù)和映射數(shù)據(jù)稱為保護(hù)卡數(shù)據(jù),其存儲區(qū)域稱為保護(hù)卡數(shù)據(jù)區(qū)。目前的保護(hù)卡采用的方法是在硬盤的的末端劃分出一定的空間作為保護(hù)卡數(shù)據(jù)區(qū)。這個數(shù)據(jù)區(qū)的容量一般設(shè)為硬盤容量的5%-20%,大都采用分區(qū)隱藏或HPAOtostProtectedArea)技術(shù)對它進(jìn)行保護(hù)。把這種保護(hù)卡數(shù)據(jù)區(qū)稱為靜態(tài)的保護(hù)卡數(shù)據(jù)區(qū)。它具有以下缺點(diǎn)1)保護(hù)卡數(shù)據(jù)區(qū)的容量有限,當(dāng)保護(hù)卡數(shù)據(jù)超出保護(hù)卡數(shù)據(jù)區(qū)容量時(稱這種情況為保護(hù)卡數(shù)據(jù)區(qū)溢出),即使硬盤上還有大量的空閑空間,保護(hù)卡程序也不得不作藍(lán)屏或重啟動處理。靜態(tài)保護(hù)卡數(shù)據(jù)區(qū)的容量又不能設(shè)的太大,比如說在一個80G硬盤上,將保護(hù)卡數(shù)據(jù)區(qū)的容量設(shè)為硬盤容量的20%,用戶就會發(fā)現(xiàn)自己硬盤的實際可用空間只有64G。2)保護(hù)卡數(shù)據(jù)區(qū)是靜態(tài)設(shè)定的,一旦設(shè)定后無法實現(xiàn)保護(hù)卡數(shù)據(jù)區(qū)容量的動態(tài)增長,當(dāng)硬盤數(shù)據(jù)操作量大,硬盤扇區(qū)映射多時,容易出現(xiàn)數(shù)據(jù)區(qū)溢出的情況。3)靜態(tài)保護(hù)卡數(shù)據(jù)區(qū)無法動態(tài)增長,缺乏足夠的空間用于容納更多的保護(hù)卡數(shù)據(jù),因而只能設(shè)置一個還原點(diǎn),無法實現(xiàn)多點(diǎn)還原。4)由于保護(hù)卡數(shù)據(jù)區(qū)是靜態(tài)設(shè)定的,對于已經(jīng)安裝好了操作系統(tǒng)的計算機(jī),為了找到一塊足夠大的靜態(tài)區(qū)域,它通常需要對用戶的硬盤的最后一個分區(qū)進(jìn)行重新設(shè)定,從而導(dǎo)致該分區(qū)上數(shù)據(jù)的丟失,對許多用戶而言,這是不可接受的。
發(fā)明內(nèi)容為克服現(xiàn)有保護(hù)卡保護(hù)還原算法的缺點(diǎn),本發(fā)明給出了基于動態(tài)保護(hù)卡數(shù)據(jù)區(qū)的硬盤數(shù)據(jù)保護(hù)與還原方法以及在在動態(tài)保護(hù)卡數(shù)據(jù)區(qū)基礎(chǔ)上多點(diǎn)保護(hù)與還原方法。動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)的創(chuàng)建掃描整個硬盤,將硬盤以N(N取值為2的整數(shù)冪)扇區(qū)為單位分成數(shù)據(jù)快,通過分析文件系統(tǒng),得到各數(shù)據(jù)快的占用情況,形成狀態(tài)表,此時狀態(tài)表中有三種初始狀態(tài)(I)Free,空閑塊硬盤上未被占用的空閑塊。(2)0CCUpied,占用塊硬盤上已被占用但勿需保護(hù)的塊。(3)Protect,保護(hù)塊硬盤上已被占用且需保護(hù)的塊。根據(jù)扇區(qū)塊數(shù)形成映射表,假設(shè)狀態(tài)表的大小為Ss,映射表的大小為Sm,從后向前掃描狀態(tài)表,找出連續(xù)空閑空間大于Ss+Sm的硬盤區(qū)域,這塊硬盤區(qū)域即為保護(hù)卡管理數(shù)據(jù)區(qū),為保證管理數(shù)據(jù)區(qū)不被破壞,需要將狀態(tài)表中對落在該區(qū)域中的扇區(qū)塊的狀態(tài)標(biāo)記為保護(hù)狀態(tài)Protect2。Protect2和Protect在保護(hù)時的處理是一樣的,差別在于還原操作時,Protect數(shù)據(jù)塊不允許數(shù)據(jù)寫回,而Protect〗則允許數(shù)據(jù)寫回。此后,當(dāng)保護(hù)卡軟件需要映射操作時,映射塊是從也是通過查找狀態(tài)表中的空閑塊,進(jìn)而從硬盤空閑空間中動態(tài)分配來的??梢姳Wo(hù)卡的狀態(tài)表、映射表以及映射區(qū)都是動態(tài)分配的,它勿需對硬盤分區(qū)重新設(shè)置,也勿需隱藏硬盤的容量。在運(yùn)行過程中,只要硬盤還有空閑空間,就不會出現(xiàn)藍(lán)屏或重啟動。多點(diǎn)保護(hù)還原算法的實現(xiàn)傳統(tǒng)的保護(hù)卡還原算法無法實現(xiàn)多點(diǎn)還原的主要原因是靜態(tài)的保護(hù)卡數(shù)據(jù)區(qū)容量無法動態(tài)增長。采用動態(tài)保護(hù)卡數(shù)據(jù)區(qū)后,如果硬盤容量允許,可以設(shè)置任意多個還原點(diǎn)。第一個還原點(diǎn)的狀態(tài)表是通過分析硬盤各分區(qū)的文件系統(tǒng)得到的,此后的還原點(diǎn)的狀態(tài)表則是通過分析前一個還原點(diǎn)的狀態(tài)表得到的。對Protect塊和Protect〗塊進(jìn)行寫操作時,會被映射到映射區(qū),同時在映射表中記錄該映射關(guān)系。在創(chuàng)建新的還原點(diǎn)時,為了保證舊還原點(diǎn)環(huán)境下的數(shù)據(jù)不遭破壞,需要創(chuàng)建新的映射關(guān)系,假設(shè)原來的映射為A->B,我們需要重新申請一個空閑塊C,將B塊的數(shù)據(jù)拷貝到C±夬,并用A->C替換A->B。這種做法有兩個缺點(diǎn)1)如果映射表中映射關(guān)系比較多,則要花較長的時間才能完成新的還原點(diǎn)的設(shè)置。2)在新的還原點(diǎn)中,有些映射塊可能不會有寫入動作,B塊到C塊的拷貝不但浪費(fèi)了時間,也浪費(fèi)了一個數(shù)據(jù)塊的空間。為此,本發(fā)明采用了寫時拷貝(C0W,CopyOnWrite)技術(shù),將數(shù)據(jù)塊的拷貝推遲到對數(shù)據(jù)塊進(jìn)行實際寫操作時再進(jìn)行。和單點(diǎn)情形相比,多點(diǎn)保護(hù)與還原帶來了極大的便利,其困難之處在于,在多點(diǎn)情況下,既要保證舊的軟件環(huán)境依然可用,又要保證它不會遭到破壞并且可以恢復(fù)如初。在
背景技術(shù):
中提到,保護(hù)卡的寫回功能是將被映射到別處的數(shù)據(jù)真正寫回到它原來的位置。在多點(diǎn)的情況下,這種處理是錯誤的,因為它會導(dǎo)致舊的還原點(diǎn)無法還原如初了。本發(fā)明通過引入追加狀態(tài)鏈、增加映射、映射指針移動、映射塊拷貝以及自由塊拷貝等操作,可以實現(xiàn)了任意多個還原點(diǎn)的保護(hù)與還原算法。圖1為單點(diǎn)保護(hù)與還原狀態(tài)轉(zhuǎn)移圖。圖2狀態(tài)鏈?zhǔn)疽?追加狀態(tài)鏈操作示意4增加映射操作示意5映射指針移動操作示意6映射塊拷貝操作示意7自由塊拷貝操作示意圖具體實施例方式動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)的創(chuàng)建假設(shè)硬盤的總扇區(qū)數(shù)為HD_SeCt0rS,每個數(shù)據(jù)快的大小為N(N取值為2的整數(shù)冪)扇區(qū),則可將硬盤分為Μ=[Η—Sectors/N」塊。每個塊的狀態(tài)用一個字節(jié)描述,則一個狀態(tài)表的大小為M個字節(jié)。原始狀態(tài)表和當(dāng)前狀態(tài)表的大小為Ss=2M字節(jié)。映射表M項,每項為4個字節(jié),其值表示映射塊號(映射表項序號本身即為被映射塊號),大小為Ss=4M字節(jié)。假設(shè)每扇區(qū)為L字節(jié),那么狀態(tài)表和映射表占用的扇區(qū)數(shù)為S=「6M/Zl,占用的塊數(shù)為6/οΑχ=「^/Λη。掃描整個硬盤,分析文件系統(tǒng),得到各數(shù)據(jù)塊的占用情況,數(shù)據(jù)塊的三種初始狀態(tài)為Free、0CCUpied和Protect,將各塊的狀態(tài)值填入原始狀態(tài)表中。從后向前掃描原始狀狀態(tài)表,找出連續(xù)空閑塊塊數(shù)等于Blocks的區(qū)域,這塊區(qū)域用于保存保護(hù)卡管理數(shù)據(jù)區(qū)(狀態(tài)表和映射表),為了為保護(hù)管理數(shù)據(jù)區(qū)不被破壞,將這些空閑塊的狀態(tài)由Free改Protect2。Protect2狀態(tài)也是一種初始保護(hù)狀態(tài),它和Protect狀態(tài)在保護(hù)時的處理是一樣的,差別在于還原時有所不同。將原始狀態(tài)表的值拷貝一份給當(dāng)前狀態(tài)表,然后將兩份狀態(tài)表的值存入硬盤中所找到的連續(xù)空閑塊中便完成了動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)的創(chuàng)建工作。單點(diǎn)保護(hù)的實現(xiàn)保護(hù)是通過改變硬盤的讀寫操作而完成的。動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)創(chuàng)建完成以后,在DOS通過BIOS13H號中斷,在WINDOWS/LINUX/UNIX操作系統(tǒng)下通過設(shè)備驅(qū)動程序Hook硬盤對扇區(qū)的存取操作,對于目的扇區(qū),計算出它他落入哪些數(shù)據(jù)塊,從狀態(tài)表中取出數(shù)據(jù)塊的狀態(tài),根據(jù)數(shù)據(jù)塊的狀態(tài),執(zhí)行不同的動作。下面結(jié)合圖1,給出詳細(xì)描述。圖中橢圓表示數(shù)據(jù)塊的狀態(tài),橢圓內(nèi)標(biāo)示的是它的狀態(tài)值。帶箭頭的弧表示狀態(tài)的轉(zhuǎn)移,弧上的字母表示引起狀態(tài)轉(zhuǎn)移的操作,r(read)表示讀,w(write)表示寫,R(restore)表示保護(hù)卡還原操作,W(write-back)表示保護(hù)卡的寫回操作。假設(shè)讀寫操作中的數(shù)據(jù)對應(yīng)的塊為A,下邊描述各種狀態(tài)塊的讀寫處理。1)對于Occupied塊,讀寫操作都是直接放行。2)對于Protect塊,如果是讀則直接放行,如果是寫操作,則首先通過狀態(tài)表申請一個空閑塊B,將A塊的狀態(tài)由Protect改為Protect_map,將B的狀態(tài)由Free改為Image,將數(shù)據(jù)寫入B塊,并在映射表中記錄A->B的映射關(guān)系。如果寫操作的數(shù)據(jù)長度不滿一個塊的長度,則讀出A塊的數(shù)據(jù)和寫操作數(shù)據(jù)合并后再寫入B塊。3)狀態(tài)Protect2是專為動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)而設(shè)的,它的保護(hù)動作和狀態(tài)Protect是一樣的。4)對于Free塊,如果是讀則直接放行,如果是寫,則將A塊的狀態(tài)由Free改為Occupied,然后放行寫操作。5)對于Protect_map,Protect2_map禾口Image_map塊,從映射表中取出B塊,將讀寫都重定向到B塊。Protect_map和Protect2_map差別在于還原時的動作不一樣。6)對于Image塊,如果是讀則直接放行,如果是寫操作,則首先通過狀態(tài)表申請一個空閑塊B,將A塊的狀態(tài)由Image改為Image_map,將B的狀態(tài)由Free改為Image,將數(shù)據(jù)寫入B塊,并在映射表中記錄A->B的映射關(guān)系。如果寫操作的數(shù)據(jù)長度不滿一個塊的長度,則讀出A塊的數(shù)據(jù)和寫操作數(shù)據(jù)合并后再寫入B塊。單點(diǎn)還原與寫回的實現(xiàn)由上邊的描述可見,有三種狀態(tài)數(shù)據(jù)塊需要保護(hù),它們是Protect塊,Protect2塊和Image塊,對這些數(shù)據(jù)塊的寫操作會產(chǎn)生映射關(guān)系A(chǔ)->B,對Image塊的寫入則會在映射關(guān)系上會形成狀態(tài)鏈,如圖2所示,圖中矩形表示數(shù)據(jù)塊,矩形內(nèi)標(biāo)示的是它的狀態(tài)值,帶箭頭的線表示映射關(guān)系。狀態(tài)鏈的鏈?zhǔn)字挥袃煞N狀態(tài)Protect_map和Protect2_map。還原與寫回是通過遍歷這兩種狀態(tài)鏈,對鏈中的結(jié)點(diǎn)采用適當(dāng)?shù)奶幚硗瓿傻?)對于以Protectjnap開始的鏈,還原操作為遍歷該鏈,除鏈?zhǔn)淄猓瑢γ總€鏈結(jié)點(diǎn),從映射表中取出映射關(guān)系A(chǔ)->B,執(zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作。對于寫回操作,對鏈?zhǔn)滓惨獔?zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作。2)對于以ProteCt2_map開始的鏈,還原和寫回操作為遍歷該鏈,對每個鏈結(jié)點(diǎn),從映射表中取出映射關(guān)系A(chǔ)->B,執(zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作。對于以ProteCt2_map開始的鏈,還原與寫回操作是一樣,對鏈?zhǔn)滓惨獔?zhí)行執(zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作。原因是對操作系統(tǒng)而言,Protect2塊占用的是硬盤的空閑區(qū),為了保護(hù)保護(hù)卡的管理數(shù)據(jù)區(qū)不被破壞,將它設(shè)為保護(hù)狀態(tài)。當(dāng)執(zhí)行還原操作時,要允許被映射帶其它地方的數(shù)據(jù)拷貝回來,否則在文件系統(tǒng)中,會出現(xiàn)數(shù)據(jù)不一致的現(xiàn)象。還原和寫回操作完成后,動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)有可能遭到破壞,所以需要重新生成管理數(shù)據(jù)區(qū)。表1數(shù)據(jù)塊狀態(tài)轉(zhuǎn)換關(guān)系<table>tableseeoriginaldocumentpage6</column></row><table>多點(diǎn)還原點(diǎn)的生成第一個還原點(diǎn)的狀態(tài)表是通過分析硬盤各分區(qū)的文件系統(tǒng)得到的,第二個還原點(diǎn)的狀態(tài)表則是通過分析第一個還原點(diǎn)的狀態(tài)表得到的。在單點(diǎn)保護(hù)與還原中,數(shù)據(jù)塊共有8種狀態(tài),分別是Free、Occupied、Protect、Protect2、Protect,map、Protect2_map、Image_map、Image。在新的保護(hù)狀態(tài)中,原來的受保護(hù)數(shù)據(jù)Protect塊、Protect2塊和Image快仍然要得到保護(hù),原來的映射關(guān)系Imagejnap要保持,而原來的映射關(guān)系Protectjnap和Protect2_map則要改動,本發(fā)明引入了寫時拷貝的方法,在設(shè)置新還原點(diǎn)時不進(jìn)行數(shù)據(jù)塊的拷貝工作,在映射表中保持原來的映射關(guān)系,在狀態(tài)表中將Protect—map禾口Protect2_map分另Ij改為Protect_map_cow禾口Protect2_map_cow。奪數(shù)據(jù)塊的拷貝推遲到對Protect_map_cow塊和Protect2_map_cow塊進(jìn)行寫操作時再進(jìn)行。由于在第二個還原點(diǎn)中增加了兩種狀態(tài)Protect_map_cow和Protect2_map_cow,數(shù)據(jù)塊總共有10種狀態(tài)。狀態(tài)的轉(zhuǎn)換關(guān)系如表1所示。得到狀態(tài)表后,在新狀態(tài)表的基礎(chǔ)上創(chuàng)建動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū),將前一個的還原點(diǎn)的映射表復(fù)制到當(dāng)前映射表,就完成了新的還原點(diǎn)的創(chuàng)建工作。多點(diǎn)保護(hù)的實現(xiàn)對狀態(tài)為Protect_map_cow和Protect2_map_cow的數(shù)據(jù)塊,從映射表中取出映射關(guān)系A(chǔ)->B,進(jìn)行讀操作時,將其重定向到B快,對它們進(jìn)行寫操作時,執(zhí)行寫時拷貝動作申請一個空閑塊C,將塊C的狀態(tài)由Free改為Occupied,Protect_map_cow改為Protect_map,Protect2_map_cow改為Protect2_map。將B塊的數(shù)據(jù)禾口待寫入數(shù)據(jù)合并后寫入到C塊,在映射表中將A->B改為A->C(由于A指向了C,因而可能產(chǎn)生以Imagejnap為鏈?zhǔn)椎臓顟B(tài)鏈)。對于其它八種狀態(tài)的數(shù)據(jù)塊,讀寫的操作跟單點(diǎn)時是一樣的。多點(diǎn)還原與寫回的實現(xiàn)假設(shè)當(dāng)前還原點(diǎn)為第η個還原點(diǎn),要還原到第m個還原點(diǎn)(m^n)。在多點(diǎn)的情況下,多出三種分別以Protect_map_cow、Protect2_map_cow和Image_map為鏈?zhǔn)椎臓顟B(tài)鏈,共有五種狀態(tài)鏈。還原與寫回是通過遍歷這五種狀態(tài)鏈,對鏈中的結(jié)點(diǎn)采用適當(dāng)?shù)奶幚硗瓿傻摹H绻鹠=1,對于以Imagejnap開始的鏈,還原和寫回時的操作為遍歷該鏈,對每個狀態(tài)為Imagejnap的結(jié)點(diǎn),從映射表中取出映射關(guān)系A(chǔ)->B,執(zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作。對于以其它四種狀態(tài)開始的鏈,寫回操作和以Imagejnap開始的鏈一樣,還原操作則略過鏈?zhǔn)椎臄?shù)據(jù)拷貝動作。還原和寫回動作完成以后,需要分析硬盤,重新創(chuàng)建第一個還原點(diǎn)。如果m>1,由于要保證數(shù)據(jù)還原和寫入后,不能破壞第m個還原點(diǎn)之前的數(shù)據(jù),處理上要復(fù)雜的多。1)對于以Imagejnap開始的鏈,還原和寫回時的操作為判斷該鏈?zhǔn)欠翊嬖谟谂f狀態(tài)表中。a)如果存在,判斷該鏈的長度是否比舊鏈的長,如果是,則將鏈中新的數(shù)據(jù)塊追加到到舊鏈中,如圖3所示,圖中位于上方的舊狀態(tài)鏈,位于下方的是當(dāng)前狀態(tài)鏈。在舊狀態(tài)表中將B塊的狀態(tài)改為Imagejnap,將C塊的狀態(tài)改為Image。在舊映射表中,記錄映射關(guān)系B->C。稱這種操作為追加狀態(tài)鏈操作。b)如果不存在,則遍歷該鏈,對每個狀態(tài)為Imagejnap的結(jié)點(diǎn),從映射表中取出映射關(guān)系A(chǔ)->B,執(zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作,并將Imagejnap改為Occupied,同時將舊狀態(tài)表中相應(yīng)的狀態(tài)也改為Occupied。2)對于Protect_map和Protect_map_cow開始的鏈,還原操作為遍歷該鏈,對每個狀態(tài)為Imagejnap的結(jié)點(diǎn),從映射表中取出映射關(guān)系A(chǔ)->B,執(zhí)行數(shù)據(jù)塊B到數(shù)據(jù)塊A的拷貝動作,并將Imagejnap改為Occupied,同時將舊狀態(tài)表中相應(yīng)的狀態(tài)也改為Occupied。3)對于Protectjnap開始的鏈,寫回操作和還原操作的差別在于對于鏈?zhǔn)椎奶幚?。對鏈?zhǔn)椎奶幚砗偷趍個還原點(diǎn)時該數(shù)據(jù)塊的狀態(tài)有關(guān)。根據(jù)表1數(shù)據(jù)塊狀態(tài)轉(zhuǎn)換關(guān)系可知,數(shù)據(jù)塊的當(dāng)前狀態(tài)為Protectjnap或Protect_map_cow,它在第m_l個還原點(diǎn)的狀態(tài)(舊狀態(tài))可能為Protect、Protect—map禾口Protect_map_cow之—。a)舊狀態(tài)為Protect或Protect_map_cow,如圖4所示,在舊狀態(tài)表中,將A的狀態(tài)改為Protect_map,將B的狀態(tài)改為Image。將映射關(guān)系A(chǔ)->B記錄在舊映射表中。稱這種操作為增加映射操作。b)舊狀態(tài)為Protectjnap,此時有兩種處理方法,第一種方法如圖5所示,在舊狀態(tài)表中,將B的狀態(tài)由Image改為Occupied,在舊映射表中,將映射關(guān)系A(chǔ)->B改為A->B2。稱這種操作為映射指針移動操作。第二種方法如圖6所示,將B2塊的數(shù)據(jù)拷貝到B塊。稱這種操作映射塊拷貝操作。第一種方法,勿需數(shù)據(jù)拷貝,節(jié)約時間,第二種方法使得磁盤數(shù)據(jù)更緊湊。4)對于Protect_map_cow開始的鏈,寫回操作和以Protectjnap開始的鏈相似,對對鏈?zhǔn)椎奶幚砗团f狀態(tài)有關(guān)a)舊狀態(tài)為Protect,參照圖4,執(zhí)行增加映射操作。b)舊狀態(tài)為Pr0teCt_map_C0W,如果B=B2,參照圖3,執(zhí)行追加狀態(tài)鏈操作。否貝U,參照圖4,執(zhí)行增加映射操作。c)舊狀態(tài)為Protectjnap,如果B=B2,參照圖3,執(zhí)行追加狀態(tài)鏈操作。如果BΦΒ2,參照圖5和圖6,可選擇映射指針移動操作或映射塊拷貝操作。5)對于以Protect2_map和Protect2_map_cow開始的鏈,還原和寫回操作是一樣的,它的舊狀態(tài)可能為Free、Protect2、Protect2_map和Protect2_map_cow之一。當(dāng)舊狀態(tài)為Protect2、Protect2_map或Protect2_map_cow時,處理禾口以Protectjnap禾口Protect_map_cow開始的鏈的寫回操作是相似的,不再贅述。當(dāng)舊狀態(tài)為Free時,如圖7所示,將舊狀態(tài)由Free改為Occupied,將B2塊的數(shù)據(jù)拷貝到A塊。稱這種操作為自由塊拷貝操作。還原和寫回動作完成以后,在第m-1個還原點(diǎn)的基礎(chǔ)上,重新創(chuàng)建第m個還原點(diǎn)。權(quán)利要求一種硬盤數(shù)據(jù)保護(hù)與還原方法,其特征在于保護(hù)卡管理數(shù)據(jù)區(qū)是動態(tài)的生成的。2.如權(quán)利要求1所述的保護(hù)與還原方法,其特征還在于在動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)基礎(chǔ)上的多點(diǎn)保護(hù)與還原方法。3.如權(quán)利要求1所述的保護(hù)與還原方法,其特征還在于對保護(hù)卡管理數(shù)據(jù)的保護(hù)和對硬盤上的受保護(hù)數(shù)據(jù)的保護(hù)是按相同方式進(jìn)行的。4.如權(quán)利要求2所述的多點(diǎn)保護(hù)與還原方法,其特征還在于第一個還原點(diǎn)的狀態(tài)表是通過分析硬盤各分區(qū)的文件系統(tǒng)得到的,此后的還原點(diǎn)的狀態(tài)表則是通過分析前一個還原點(diǎn)的狀態(tài)表得到的。5.如權(quán)利要求2所述的多點(diǎn)保護(hù)與還原方法,其特征還在于,通過引入寫時拷貝技術(shù),在設(shè)置新還原點(diǎn)時不需要進(jìn)行數(shù)據(jù)拷貝工作。6.如權(quán)利要求2所述的多點(diǎn)保護(hù)與還原方法,其特征還在于包含以下操作追加狀態(tài)鏈操作、增加映射操作、映射指針移動操作、映射塊拷貝操作、自由塊拷貝操作。全文摘要本發(fā)明公開了一種基于動態(tài)數(shù)據(jù)區(qū)的硬盤數(shù)據(jù)保護(hù)與還原方法,該方法的數(shù)據(jù)管理區(qū)和映射區(qū)都可以動態(tài)增長,克服了傳統(tǒng)的基于靜態(tài)數(shù)據(jù)區(qū)方法中數(shù)據(jù)區(qū)容易溢出和無法實現(xiàn)多點(diǎn)保護(hù)與還原的缺點(diǎn)。在創(chuàng)建動態(tài)保護(hù)卡管理數(shù)據(jù)區(qū)基礎(chǔ)上,給出了單點(diǎn)保護(hù)與還原實現(xiàn)方法。在單還原點(diǎn)的基礎(chǔ)上,根據(jù)狀態(tài)轉(zhuǎn)換規(guī)則,給出了創(chuàng)建新還原點(diǎn)的實現(xiàn)方法。在多還原點(diǎn)的基礎(chǔ)上,通過引入寫時拷貝、追加狀態(tài)鏈、增加映射、映射指針移動、映射塊拷貝以及自由塊拷貝等操作,實現(xiàn)了任意多個還原點(diǎn)的保護(hù)與還原方法。文檔編號G06F11/14GK101819544SQ20101011606公開日2010年9月1日申請日期2010年3月2日優(yōu)先權(quán)日2010年3月2日發(fā)明者王靜申請人:王靜