專利名稱:硬盤永久型動(dòng)態(tài)保存技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)硬盤存儲(chǔ)技術(shù),是一種將同一硬盤不同時(shí)期的數(shù)據(jù)進(jìn)行保存的方法。
背景技術(shù):
先前技術(shù)主要是目前市場(chǎng)上還原類產(chǎn)品已用到的技術(shù),即硬盤數(shù)據(jù)保存技術(shù)。關(guān)于硬盤數(shù)據(jù)保存技術(shù)的分類可以有以下幾種劃分方法1、磁道級(jí)和文件級(jí)磁道級(jí)是指分析所需要保存的數(shù)據(jù),將其所占用的磁道作一備份;文件級(jí)是指將所需要保存的數(shù)據(jù)對(duì)應(yīng)的文件或活頁夾保存起來。前者的優(yōu)點(diǎn)是可以保存各種形態(tài)的數(shù)據(jù),而不僅僅是文件或活頁夾,如需對(duì)整個(gè)硬盤進(jìn)行備份就必須要使用磁道級(jí)保存技術(shù)。后者的優(yōu)點(diǎn)是可以以文件或活頁夾為單位進(jìn)行保存,而前者最小的保存單位是分區(qū)。
2、備份空間靜態(tài)分配和動(dòng)態(tài)分配在保存?zhèn)浞蔹c(diǎn)時(shí)是需要額外硬盤空間的,在分配硬盤空間時(shí)有兩種方法,靜態(tài)分配和動(dòng)態(tài)分配。前者是指在產(chǎn)品安裝時(shí)即分配好備份空間,一般以隱藏分區(qū)形態(tài)存在;后者是指事先并不預(yù)先分配空間,而是在產(chǎn)品執(zhí)行的過程中實(shí)時(shí)動(dòng)態(tài)地進(jìn)行分配。后者的優(yōu)點(diǎn)是用多少分配多少,不會(huì)浪費(fèi),也利于擴(kuò)展。
3、單分區(qū)盤保護(hù)和整盤保護(hù)此分類是針對(duì)可備份資料的范圍。前者是指只能備份一個(gè)分區(qū),一般來說此分區(qū)是操作系統(tǒng)所在分區(qū);后者則即可能備份一個(gè)或多個(gè)分區(qū),也可以備份整個(gè)硬盤。由于未能突破程序執(zhí)行時(shí)對(duì)效能和硬盤空間等關(guān)鍵環(huán)節(jié)的限制,部分還原產(chǎn)品只能對(duì)一個(gè)分區(qū)進(jìn)行備份。
4、單點(diǎn)備份和多點(diǎn)備份即備份點(diǎn)是只能有一個(gè)還是可以有多個(gè)。目前絕大多數(shù)的還原產(chǎn)品采取的是單點(diǎn)備份技術(shù),即只能保存硬盤的一個(gè)狀態(tài),日后只能恢復(fù)此時(shí)的硬盤狀態(tài)。
5、永久型多點(diǎn)備份和拋棄型多點(diǎn)備份此項(xiàng)分類是專門針對(duì)多點(diǎn)備份型技術(shù)。拋棄型多點(diǎn)備份是指在恢復(fù)備份點(diǎn)時(shí),會(huì)拋棄此備份點(diǎn)之后的備份點(diǎn);永久型多點(diǎn)則不會(huì)拋棄之后的備份點(diǎn),從而可以實(shí)現(xiàn)在備份點(diǎn)之間來回切換,當(dāng)然,如果某個(gè)備份點(diǎn)今后不再需要,可以將之刪除。由于技術(shù)上的原因,目前絕大多數(shù)多點(diǎn)還原產(chǎn)品都采用拋棄型。
上述各種硬盤存儲(chǔ)方法各有優(yōu)勢(shì),也各有缺點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明的目的是為了能夠記錄整個(gè)硬盤在不同時(shí)期的數(shù)據(jù)狀態(tài),并且可根據(jù)需要在各個(gè)狀態(tài)之間來回切換,用很小的額外空間實(shí)現(xiàn)數(shù)據(jù)歷程保存、多環(huán)境模擬等應(yīng)用。
如需實(shí)現(xiàn)此目的,需要將之前不同還原產(chǎn)品所用的各項(xiàng)技術(shù)思想有機(jī)地結(jié)合起來。之前的還原產(chǎn)品強(qiáng)調(diào)執(zhí)行時(shí)的高效率,在數(shù)據(jù)備份內(nèi)容上并不完整(要么是只針對(duì)單分區(qū),要么是單點(diǎn)備份或是拋棄型多點(diǎn)備份)。所以之前還沒一家廠商實(shí)現(xiàn)整盤永久型多點(diǎn)備份。
因此,本發(fā)明的關(guān)鍵就是要現(xiàn)將以上各種技術(shù)思想進(jìn)行重新改良并高效地整合在一起,即實(shí)現(xiàn)執(zhí)行的高效率又實(shí)現(xiàn)數(shù)據(jù)備份的完整性。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案包括如下步驟(A)首先分析硬盤的結(jié)構(gòu)及狀態(tài),生成核心數(shù)據(jù),所謂的核心數(shù)據(jù)包括一組讀寫記錄表、以及一個(gè)記錄當(dāng)前硬盤數(shù)據(jù)寫入狀況的臨時(shí)記錄表;讀寫記錄表包括用以記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)的狀態(tài)表和記錄各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的讀寫映射表,狀態(tài)表將硬盤的每一扇區(qū)的狀態(tài)分為四種狀態(tài)記錄用戶數(shù)據(jù)所占扇區(qū)被標(biāo)記為占用、核心數(shù)據(jù)所占扇區(qū)被標(biāo)記為保留、本次計(jì)算機(jī)啟動(dòng)后剛剛寫入的用戶數(shù)據(jù)對(duì)應(yīng)扇區(qū)被標(biāo)記為臨時(shí)、其余扇區(qū)被標(biāo)記為空閑;臨時(shí)記錄表包括用于臨時(shí)記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)的臨時(shí)狀態(tài)表和用于臨時(shí)記錄各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的臨時(shí)映射表;(B)截獲硬盤的I/O信號(hào),取得對(duì)硬盤讀寫的控制;(C)對(duì)于寫入動(dòng)作,首先判斷該扇區(qū)是否處于先前已被保存成備份點(diǎn)的保護(hù)區(qū)內(nèi),如果不在保護(hù)區(qū),就直接寫入;如果在保護(hù)區(qū)內(nèi),就按照扇區(qū)在狀態(tài)表中的狀態(tài)處理若扇區(qū)的狀態(tài)為空閑,則直接寫入,并在臨時(shí)記錄表中將該扇區(qū)的狀態(tài)標(biāo)記為臨時(shí);若扇區(qū)的狀態(tài)為臨時(shí),則直接寫入,不填寫任何表;若扇區(qū)的狀態(tài)為占用或保留,該扇區(qū)的數(shù)據(jù)不能覆蓋,查看臨時(shí)記錄表的讀寫記錄,有記錄則在記錄地址中寫入;沒有記錄,通過空閑區(qū)搜索算法找到合適的扇區(qū)寫入數(shù)據(jù),然后在臨時(shí)記錄表中記錄下寫入的扇區(qū)地址,并在臨時(shí)狀態(tài)表中將該扇區(qū)標(biāo)記為保留;對(duì)于讀取動(dòng)作,首先判斷該扇區(qū)是否處于保護(hù)區(qū)內(nèi),如果不在保護(hù)區(qū),就直接讀?。辉诒Wo(hù)區(qū)內(nèi)就按照扇區(qū)在狀態(tài)表中的狀態(tài)處理若扇區(qū)的狀態(tài)為空閑或臨時(shí),則直接讀??;若扇區(qū)的狀態(tài)為占用或保留,查看臨時(shí)記錄表有無記錄,有記錄則從記錄地址讀??;沒有記錄再查看當(dāng)前記錄表有無記錄,有記錄則從記錄地址讀??;若兩張表都沒有記錄,就直接讀?。?D)如果需要切換備份點(diǎn),則將臨時(shí)記錄表的記錄清除,用目的備份點(diǎn)的狀態(tài)表覆蓋臨時(shí)狀態(tài)表,并將目的備份點(diǎn)作為新的當(dāng)前讀寫記錄表,從而將硬盤數(shù)據(jù)恢復(fù)到目的備份點(diǎn)的狀態(tài);(E)如果需要保存?zhèn)浞蔹c(diǎn),則將臨時(shí)狀態(tài)表中的臨時(shí)狀態(tài)修改為占用狀態(tài),然后將當(dāng)前讀寫記錄表的記錄合并到臨時(shí)記錄表;任選一個(gè)讀寫記錄表把修改后的臨時(shí)記錄表的記錄復(fù)制到該表中,這個(gè)記錄表就是新的當(dāng)前讀寫記錄表;同時(shí)清空臨時(shí)記錄表的映射記錄。
本發(fā)明為磁道級(jí)永久型多點(diǎn)備份技術(shù),它即可以保護(hù)單個(gè)分區(qū),也可以保護(hù)多個(gè)分區(qū)甚至整個(gè)硬盤,并且采用了備份空間動(dòng)態(tài)分配技術(shù)。
本發(fā)明可應(yīng)用于如下領(lǐng)域1、多點(diǎn)還原產(chǎn)品可解決應(yīng)使用計(jì)算機(jī)不當(dāng)而產(chǎn)生的管理、維護(hù)方面的問題。在重新開機(jī)后自動(dòng)復(fù)原的狀態(tài)下,還可防止計(jì)算機(jī)病毒的惡意侵襲。其獨(dú)特的多備份點(diǎn)設(shè)定,讓使用者能夠保存多個(gè)硬盤狀態(tài)。
2、虛擬計(jì)算機(jī)產(chǎn)品在家庭、學(xué)校機(jī)房、企業(yè)辦公室中都可能會(huì)存在一臺(tái)計(jì)算機(jī)多人使用的情況,每個(gè)使用者都會(huì)有自己的數(shù)據(jù)、自己的軟件環(huán)境,使用此類產(chǎn)品可以為每個(gè)人模擬出所需的環(huán)境,相互之間不會(huì)再有影響,不用再擔(dān)心重要的數(shù)據(jù)被刪除或泄露了。
3、軟件隔離產(chǎn)品在企業(yè)中,人們需要經(jīng)常上Internet查找數(shù)據(jù)或進(jìn)行信息交流,但是怎樣才防御病毒、黑客的侵入呢。此類產(chǎn)品將工作環(huán)境與上網(wǎng)環(huán)境分割開來,這樣就不用擔(dān)心上網(wǎng)時(shí)遭到攻擊了。
本發(fā)明具有如下特點(diǎn)1、可以將不同時(shí)間的硬盤狀態(tài)保存為多個(gè)備份點(diǎn)。使用者可根據(jù)需要在各個(gè)備份點(diǎn)之間任意切換,從而恢復(fù)出先前某一時(shí)刻的軟件及數(shù)據(jù)環(huán)境。
2、備份點(diǎn)的生成及操作采用了動(dòng)態(tài)空間分配技術(shù)。無需另外掛接存儲(chǔ)裝置,也不和操作系統(tǒng)搶空間,而是直接在硬盤中找出沒有使用的空間保存?zhèn)浞菪畔?,并且允許操作系統(tǒng)在這些空間中的讀寫而不影響保存的信息,需要多少就分配多少,減少了對(duì)硬盤空間的不必要的占用。
3、備份對(duì)象意隨意選定??梢詡浞萦幸粋€(gè)或多個(gè)分區(qū),也可以對(duì)整個(gè)硬盤進(jìn)行備份。
圖1為本發(fā)明的一個(gè)實(shí)施例保存硬盤操作的核心數(shù)據(jù)表結(jié)構(gòu);圖2為狀態(tài)表中所表示的一種硬盤的狀態(tài);圖3為硬盤數(shù)據(jù)的寫入流程圖;圖4為硬盤數(shù)據(jù)的讀取流程圖;圖5為備份點(diǎn)切換示意圖。
具體實(shí)施例方式
在產(chǎn)品安裝時(shí)安裝程序?qū)?huì)分析硬盤的結(jié)構(gòu)及狀態(tài),然后驅(qū)動(dòng)核心去生成一組用以記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)和各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的讀寫記錄表、以及一個(gè)記錄當(dāng)前硬盤數(shù)據(jù)寫入狀況的臨時(shí)記錄表,以上各表總稱為核心數(shù)據(jù)。讀寫記錄表包括用以記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)的狀態(tài)表和記錄各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的讀寫映射表。臨時(shí)記錄表包括用于臨時(shí)記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)的臨時(shí)狀態(tài)表和用于臨時(shí)記錄各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的臨時(shí)映射表;如圖1所示,用一組讀寫記錄表來記錄備份點(diǎn)的信息。一組讀寫記錄表包括一個(gè)狀態(tài)表和一個(gè)讀寫映射表。狀態(tài)表用來記錄各扇區(qū)在各個(gè)備份點(diǎn)的狀態(tài);讀寫映射表用來記錄需備份扇區(qū)的映射關(guān)系。臨時(shí)記錄表又可稱為操作表,所有在上一次存儲(chǔ)后下一次存儲(chǔ)前的信息,都在該表中做記錄。
本發(fā)明將扇區(qū)分為四種狀態(tài)記錄(占用、保留、臨時(shí)、空閑),并將之保存在狀態(tài)表中。各備份點(diǎn)的用戶數(shù)據(jù)所占扇區(qū)被標(biāo)記為占用;核心數(shù)據(jù)所占扇區(qū)被標(biāo)記為保留;本次計(jì)算機(jī)啟動(dòng)后剛剛寫入的用戶數(shù)據(jù)對(duì)應(yīng)扇區(qū)被標(biāo)記為臨時(shí);其余扇區(qū)被標(biāo)記為空閑。
分析結(jié)束后,硬盤的狀態(tài)將會(huì)被列在狀態(tài)表中,如圖2所示。
安裝完成后,產(chǎn)品將截獲硬盤的I/O訊號(hào),取得對(duì)硬盤讀寫的控制。任何對(duì)硬盤的I/O操作,都將經(jīng)備份核心程序的處理。圖3是對(duì)寫入動(dòng)作的處理流程,圖4是對(duì)讀取動(dòng)作的處理流程。
對(duì)于寫入動(dòng)作,首先判斷該扇區(qū)是否處于保護(hù)區(qū)內(nèi)(所謂保護(hù)區(qū),就是指此區(qū)域先前已被保存成備份點(diǎn)),如果不在保護(hù)區(qū),就直接寫入。在保護(hù)區(qū)內(nèi)就按照扇區(qū)在狀態(tài)表中的狀態(tài)處理若扇區(qū)的狀態(tài)為空閑。直接寫入,并在臨時(shí)記錄表中將該扇區(qū)的狀態(tài)標(biāo)記為臨時(shí)。
若扇區(qū)的狀態(tài)為臨時(shí)。直接寫入,不填寫任何表。
若扇區(qū)的狀態(tài)為占用或保留。該扇區(qū)的數(shù)據(jù)不能覆蓋。查看臨時(shí)記錄表的讀寫記錄,有記錄則在記錄地址中寫入;沒有記錄,通過空閑區(qū)搜索算法找到合適的扇區(qū)寫入數(shù)據(jù),然后在臨時(shí)記錄表中記錄下寫入的扇區(qū)地址,并在臨時(shí)狀態(tài)表中將該扇區(qū)標(biāo)記為保留。
對(duì)于讀取動(dòng)作,首先判斷該扇區(qū)是否處于保護(hù)區(qū)內(nèi),如果不在保護(hù)區(qū),就直接讀取。在保護(hù)區(qū)內(nèi)就按照扇區(qū)在狀態(tài)表中的狀態(tài)處理若扇區(qū)的狀態(tài)為空閑或臨時(shí)。直接讀取。
若扇區(qū)的狀態(tài)為占用或保留。查看臨時(shí)記錄表有無記錄,有記錄則從記錄地址讀取;沒有記錄再查看當(dāng)前讀寫記錄表有無記錄,有記錄則從記錄地址讀?。蝗魞蓮埍矶紱]有記錄,就直接讀取。
備份點(diǎn)切換。將臨時(shí)記錄表的記錄清除,用目的備份點(diǎn)的狀態(tài)表覆蓋臨時(shí)記錄表的狀態(tài)表,從而將硬盤數(shù)據(jù)恢復(fù)到目的備份點(diǎn)的狀態(tài)。
保存?zhèn)浞蔹c(diǎn)操作,將臨時(shí)狀態(tài)表中的臨時(shí)狀態(tài)修改為占用狀態(tài),然后將當(dāng)前讀寫記錄表的記錄合并到臨時(shí)記錄表。任選一個(gè)讀寫記錄表把修改后的臨時(shí)記錄表的記錄復(fù)制到該表中,這個(gè)記錄表就是新的當(dāng)前讀寫記錄表。同時(shí)清空臨時(shí)記錄表的映射記錄。
下面結(jié)合圖5說明一下備份點(diǎn)之間的切換。假設(shè)5.1為硬盤的初始狀態(tài),數(shù)據(jù)為abc。將c修改為d,然后保存為一個(gè)備份點(diǎn),如5.2所示,這時(shí)得到的數(shù)據(jù)為abd。在此基礎(chǔ)上將b修改為e,再保存一個(gè)備份點(diǎn),如5.3所示,這時(shí)得到的數(shù)據(jù)為aed。選擇將硬盤復(fù)原到初始狀態(tài),此時(shí)將把臨時(shí)映射表清空,讀到的數(shù)據(jù)自然又變成了abc。在此基礎(chǔ)上把b修改為f,c修改為g,再保存一個(gè)備份點(diǎn)。按照讀寫算法,并不把原先作為映射的地址9、10覆蓋,而是重新映射到地址8、7,如5.4所示,得到的數(shù)據(jù)是afg。這時(shí)切換到備份點(diǎn)2時(shí),通過備份點(diǎn)2的映射表,可以得到數(shù)據(jù)aed。切換到備份點(diǎn)1時(shí),則可得到數(shù)據(jù)abd。各保存過的數(shù)據(jù)都不會(huì)丟失。
故以前述說明可知,本發(fā)明為一種將硬盤上部分或全部分區(qū)的數(shù)據(jù)保存成多個(gè)備份點(diǎn)的技術(shù)。它攔截了硬盤讀寫操作,并動(dòng)態(tài)地在硬盤中儲(chǔ)存核心程序和讀寫記錄表,實(shí)現(xiàn)了硬盤數(shù)據(jù)的多點(diǎn)備份。
權(quán)利要求
硬盤永久型動(dòng)態(tài)保存技術(shù),包括(A)首先分析硬盤的結(jié)構(gòu)及狀態(tài),生成核心數(shù)據(jù),所謂的核心數(shù)據(jù)包括一組讀寫記錄表、以及一個(gè)記錄當(dāng)前硬盤數(shù)據(jù)寫入狀況的臨時(shí)記錄表;讀寫記錄表包括用以記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)的狀態(tài)表和記錄各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的讀寫映射表,狀態(tài)表將硬盤的每一扇區(qū)的狀態(tài)分為四種狀態(tài)記錄用戶數(shù)據(jù)所占扇區(qū)被標(biāo)記為占用、核心數(shù)據(jù)所占扇區(qū)被標(biāo)記為保留、本次計(jì)算機(jī)啟動(dòng)后剛剛寫入的用戶數(shù)據(jù)對(duì)應(yīng)扇區(qū)被標(biāo)記為臨時(shí)、其余扇區(qū)被標(biāo)記為空閑;臨時(shí)記錄表包括用于臨時(shí)記錄硬盤內(nèi)各備份點(diǎn)數(shù)據(jù)狀態(tài)的臨時(shí)狀態(tài)表和用于臨時(shí)記錄各備份點(diǎn)硬盤數(shù)據(jù)寫入狀況的臨時(shí)映射表;(B)截獲硬盤的I/O信號(hào),取得對(duì)硬盤讀寫的控制;(C)對(duì)于寫入動(dòng)作,首先判斷該扇區(qū)是否處于先前已被保存成備份點(diǎn)的保護(hù)區(qū)內(nèi),如果不在保護(hù)區(qū),就直接寫入;如果在保護(hù)區(qū)內(nèi),就按照扇區(qū)在狀態(tài)表中的狀態(tài)處理若扇區(qū)的狀態(tài)為空閑,則直接寫入,并在臨時(shí)記錄表中將該扇區(qū)的狀態(tài)標(biāo)記為臨時(shí);若扇區(qū)的狀態(tài)為臨時(shí),則直接寫入,不填寫任何表;若扇區(qū)的狀態(tài)為占用或保留,該扇區(qū)的數(shù)據(jù)不能覆蓋,查看臨時(shí)記錄表的讀寫記錄,有記錄則在記錄地址中寫入;沒有記錄,通過空閑區(qū)搜索算法找到合適的扇區(qū)寫入數(shù)據(jù),然后在臨時(shí)記錄表中記錄下寫入的扇區(qū)地址,并在臨時(shí)狀態(tài)表中將該扇區(qū)標(biāo)記為保留;對(duì)于讀取動(dòng)作,首先判斷該扇區(qū)是否處于保護(hù)區(qū)內(nèi),如果不在保護(hù)區(qū),就直接讀??;在保護(hù)區(qū)內(nèi)就按照扇區(qū)在狀態(tài)表中的狀態(tài)處理若扇區(qū)的狀態(tài)為空閑或臨時(shí),則直接讀??;若扇區(qū)的狀態(tài)為占用或保留,查看臨時(shí)記錄表有無記錄,有記錄則從記錄地址讀??;沒有記錄再查看當(dāng)前記錄表有無記錄,有記錄則從記錄地址讀??;若兩張表都沒有記錄,就直接讀??;(D)如果需要切換備份點(diǎn),則將臨時(shí)記錄表的記錄清除,用目的備份點(diǎn)的狀態(tài)表覆蓋臨時(shí)狀態(tài)表,并將目的備份點(diǎn)作為新的當(dāng)前讀寫記錄表,從而將硬盤數(shù)據(jù)恢復(fù)到目的備份點(diǎn)的狀態(tài);(E)如果需要保存?zhèn)浞蔹c(diǎn),則將臨時(shí)狀態(tài)表中的臨時(shí)狀態(tài)修改為占用狀態(tài),然后將當(dāng)前讀寫記錄表的記錄合并到臨時(shí)記錄表;任選一個(gè)讀寫記錄表把修改后的臨時(shí)記錄表的記錄復(fù)制到該表中,這個(gè)記錄表就是新的當(dāng)前讀寫記錄表;同時(shí)清空臨時(shí)記錄表的映射記錄。
全文摘要
本發(fā)明涉及一種計(jì)算機(jī)硬盤存儲(chǔ)技術(shù),是一種將同一硬盤不同時(shí)期的數(shù)據(jù)進(jìn)行保存的方法。首先分析硬盤的結(jié)構(gòu)及狀態(tài),生成核心數(shù)據(jù),然后截獲硬盤的I/O信號(hào),取得對(duì)硬盤讀寫的控制;對(duì)于每一個(gè)讀寫硬盤的動(dòng)作都要經(jīng)過核心程序的處理。它即可以保護(hù)單個(gè)分區(qū),也可以保護(hù)多個(gè)分區(qū)甚至整個(gè)硬盤,并且采用了備份空間動(dòng)態(tài)分配技術(shù)。
文檔編號(hào)G11B5/09GK1609986SQ200410094590
公開日2005年4月27日 申請(qǐng)日期2004年11月17日 優(yōu)先權(quán)日2004年11月17日
發(fā)明者秦峰, 吳俊 申請(qǐng)人:秦峰