專利名稱:一種基于扇區(qū)重組的文件備份恢復方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種文件備份恢復的方法,尤其是提高在信息系統(tǒng)服務恢復背景下文件 數(shù)據(jù)快速、可靠的備份恢復方法。
背景技術(shù):
隨著計算機網(wǎng)絡的飛速發(fā)展,人類已經(jīng)進入了"信息時代"。面對入侵和攻擊事件如 此頻繁的網(wǎng)絡環(huán)境,保障信息系統(tǒng)在受攻擊時或者系統(tǒng)異常時仍能正常工作成為信息安 全領(lǐng)域亟待解決的問題。由于信息系統(tǒng)的穩(wěn)定性是整個計算機網(wǎng)絡運行的關(guān)鍵,可靠性 要求高,應具備很強的應急響應服務恢復的能力,保證信息系統(tǒng)的強生存性,使得在遭 受一定程度損毀的情況下仍能維持系統(tǒng)的正常運轉(zhuǎn)。
在信息系統(tǒng)服務恢復過程中,對數(shù)據(jù)的備份恢復是整個過程的基礎所在。由于信息 系統(tǒng)服務恢復對系統(tǒng)的實時性和穩(wěn)定性要求都比較高。因此,在服務恢復過程中,對數(shù) 據(jù)恢復有一些特殊的要求,主要表現(xiàn)在以下幾個方面
1. 高穩(wěn)定性;在當今時代,信息系統(tǒng)服務越來越廣泛地應用在關(guān)鍵的行業(yè)和領(lǐng)域, 這些關(guān)鍵行業(yè)和領(lǐng)域?qū)?shù)據(jù)恢復的穩(wěn)定性要求很高。在文件數(shù)據(jù)恢復過程中,即使很小 的恢復失敗都可能導致嚴重的后果。
2. 實時性;由于信息系統(tǒng)服務的運行往往具有非常高的實時性要求,許多應用服 務都運行在軍事、金融等對實時要求比較高的領(lǐng)域中,因此,針對信息系統(tǒng)服務恢復過 程的文件數(shù)據(jù)恢復方法必須具有很高的實時性功能。
3. 精確的錯誤恢復能力;由于信息系統(tǒng)服務的運行狀態(tài)與時間嚴格相關(guān),同時這 些服務的狀態(tài)信息隨著時間在不斷地變化。當服務失效之后,不但需要將服務恢復到可 用的狀態(tài),更需要將其恢復到正確的狀態(tài);正確的狀態(tài)是指引起服務失效操作之前的狀 態(tài)。因此,信息系統(tǒng)服務恢復過程必須具有精確的錯誤恢復能力,使得服務恢復過程在 諸如銀行、保險等領(lǐng)域中能夠發(fā)揮其重要的作用。
為了解決實際系統(tǒng)中的數(shù)據(jù)恢復的業(yè)務需求,全世界的科研、工程人員經(jīng)過多年的 研究和探索,發(fā)展出了許多數(shù)據(jù)恢復方法。這些方法可以歸結(jié)為兩大類(O基于數(shù)據(jù) 復制或者數(shù)據(jù)移動的恢復方法;(2)基于文件版本重命名或者文件版本重置的方法。
51. 基于數(shù)據(jù)復制或者數(shù)據(jù)移動的恢復方法
這是一種最原始的數(shù)據(jù)恢復方法。它的主要思想是將源數(shù)據(jù)拷貝或者移動到目標位 置。從文件的層次看來,便是將源文件拷貝成為目標文件,從而實現(xiàn)對目標文件的恢復 操作。比如用Ghost方法恢復磁盤分區(qū)便是采取這種方案;將硬盤分區(qū)表信息和硬盤數(shù) 據(jù)打包備份,在恢復的時候利用事先備份好的Ghost文件作為源數(shù)據(jù),讀取打包好的備 份數(shù)據(jù)并將這些數(shù)據(jù)寫回到磁盤上相應的位置,具體地,就是先恢復硬盤分區(qū)表信息再 恢復硬盤數(shù)據(jù),以達到和備份前一樣的效果;還有一種多版本式的備份恢復手段,它是 對文件生成多個不同的版本,在恢復時,選擇其中的一個文件版本作為恢復的數(shù)據(jù)源, 并將此文件數(shù)據(jù)拷貝到目的文件中,以達到恢復的目的。
這種數(shù)據(jù)恢復方法雖然能夠?qū)崿F(xiàn)對文件數(shù)據(jù)的完全性恢復,但是,如果將其應用在 服務恢復領(lǐng)域,仍然存在著致命的缺點數(shù)據(jù)拷貝方式是基于對文件的所有數(shù)據(jù)進行, 這種方式雖然能夠不遺漏地將數(shù)據(jù)完全恢復,但是,在服務恢復的許多應用領(lǐng)域,很可 能僅僅需要將一少部分的文件數(shù)據(jù)恢復即可。這種拷貝方式在兼顧完全性的同時,喪失 了恢復的時效性,將導致數(shù)據(jù)恢復耗費較長的時間,不適合應用在對恢復時效性要求較 高的信息系統(tǒng)服務恢復領(lǐng)域。
2. 基于文件版本重命名或者文件版本重置的方法
這種文件數(shù)據(jù)恢復方法在數(shù)據(jù)庫領(lǐng)域和一些實時應用領(lǐng)域中使用比較多。它的主要 思想是,當對文件進行更改操作之后,生成此文件的一個完全式的版本,由此,在系統(tǒng) 中存在此文件的一系列不同的按照時間增長的版本。當文件數(shù)據(jù)損壞時,系統(tǒng)根據(jù)一定 的法則選擇相應的文件版本作為文件數(shù)據(jù)恢復的數(shù)據(jù)源。在執(zhí)行恢復操作時,不進行數(shù) 據(jù)的復制或者移動操作,只需將選擇出來的文件版本重命名回原來的目標文件即可。這 種文件數(shù)據(jù)恢復方法以犧牲存儲空間為代價,達到快速恢復指定文件的目的。
顯然,將這種數(shù)據(jù)恢復方法應用在服務恢復領(lǐng)域中,也存在一些關(guān)鍵的缺陷
(1) 首先,從本質(zhì)上來說,這種數(shù)據(jù)恢復方法并不是一種支持實時性、動態(tài)性的恢 復方法。它的文件版本大都是按照一定的時間間隔生成的,這種方式并不能支持處理服 務應用領(lǐng)域中由于某個操作而導致服務失效發(fā)生的問題。
(2) 這種數(shù)據(jù)恢復方法的前提是對文件進行完全式的多版本的備份。這種備份的存 儲空間幾乎以幾何級數(shù)增長,將極大浪費存儲資源。
由于信息系統(tǒng)服務具有連續(xù)、動態(tài)的特性,因此針對服務數(shù)據(jù)的備份恢復需要能夠 保持服務數(shù)據(jù)的連續(xù)性、動態(tài)性和實時性,這就對文件數(shù)據(jù)恢復過程提出了新的更高的 要求。同時,從上述兩種主要的文件數(shù)據(jù)恢復方法中不難看出,由于它們固有的缺陷,要將它們應用在服務恢復領(lǐng)域中仍然存在著一些困難和不足。因此,本領(lǐng)域很多技術(shù)人 員都在努力研究新的文件數(shù)據(jù)恢復方法,以解決在信息系統(tǒng)服務恢復領(lǐng)域中應用的問 題。如何在保證文件數(shù)據(jù)恢復正確性的前提下,盡可能地縮短數(shù)據(jù)恢復的時間、提高數(shù) 據(jù)恢復的效率、減少備份數(shù)據(jù)存儲空間占用,實現(xiàn)對支持服務運行的文件數(shù)據(jù)的動態(tài)、 連續(xù)恢復是人們關(guān)注的重點。 '
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是,在保證文件數(shù)據(jù)恢復結(jié)果正確性的前提下,加快文件 數(shù)據(jù)恢復的速度,使其能夠在信息系統(tǒng)服務失效發(fā)生時,滿足信息系統(tǒng)服務恢復的實時 性、精確性需求。
本發(fā)明的技術(shù)方案是通過實時監(jiān)控服務運行中對文件進行的修改操作,并將本次 修改操作所更改的文件數(shù)據(jù)進行分片式備份,同時記錄下這些分片的最新修改時間和它 們在磁盤分區(qū)中的存儲空間占用信息(簡稱"簇"信息,包括分片在磁盤分區(qū)中的起始簇 號、分片在磁盤分區(qū)中的結(jié)束簇號和占用簇的數(shù)目等信息),從而,操作系統(tǒng)進程和用 戶進程對文件數(shù)據(jù)的每一次修改操作都生成了相應的備份分片,這些備份分片一起組成 了文件備份分片集合。
當信息系統(tǒng)服務失效而需要將某個文件恢復到某個指定的時間(簡稱為恢復目標時 間)時,根據(jù)此指定時刻在文件備份分片集合中査找,將滿足此時刻要求的該文件的所 有分片選擇出來,然后將選擇出來的這些文件分片所占據(jù)的扇區(qū)空間重新鏈接組合,從
而實現(xiàn)對該文件的數(shù)據(jù)恢復操作;在恢復操作完成之后,該文件的數(shù)據(jù)與恢復目標時間
的數(shù)據(jù)完全一致。在整個文件數(shù)據(jù)恢復過程中,不需要進行數(shù)據(jù)的拷貝、復制或移動操 作。
具體技術(shù)方案為
第一歩,捕獲操作系統(tǒng)進程(簡稱系統(tǒng)進程)和用戶進程對磁盤中所有文件的操作 信息,對捕獲到的操作信息進行過濾,獲取需要保護的文件數(shù)據(jù)的寫操作信息,并根據(jù) 這些寫操作信息對相應的文件數(shù)據(jù)進行分片式主動備份。所謂主動備份,是指從調(diào)度備 份操作執(zhí)行的角度來看,備份操作的執(zhí)行不是由外部的用戶來進行調(diào)度,而是由備份程 序自身來判斷備份操作是否執(zhí)行以及執(zhí)行的時機。主動備份過程可以實現(xiàn)對文件數(shù)據(jù)的 操作級備份功能,即用戶或應用程序?qū)π枰Wo的文件數(shù)據(jù)的任何一次修改操作,都可 以產(chǎn)生相應的備份版本,每一個文件備份分片都對應針對文件數(shù)據(jù)的一次修改操作。分 片式主動備份包括以下三個步驟步驟一,在文件系統(tǒng)驅(qū)動上層開發(fā)一個過濾層驅(qū)動程序,由過濾層驅(qū)動程序?qū)崟r截 獲I/O管理器發(fā)往文件系統(tǒng)驅(qū)動層的IRP (輸入輸出請求)信息包,從而監(jiān)控所有系統(tǒng) 進程和用戶進程對文件的操作,捕獲到這些操作的操作信息,包括操作進程、操作類 型(只讀、讀/寫,只寫)、操作的目標文件的路徑信息、操作時刻、操作的文件數(shù)據(jù)的 起始偏移和輸入輸出的數(shù)據(jù)緩沖區(qū)大??;過濾層驅(qū)動程序的這種監(jiān)控過程是實時的,它 能夠?qū)崟r地捕獲系統(tǒng)進程和用戶進程對文件的所有操作,這種監(jiān)控操作緊跟著對文件的 所有操作,因此能夠?qū)崟r地做出響應。
步驟二,對步驟一捕獲到的對文件的操作信息進行分析和過濾,得到需要保護的文 件的寫操作信息。由于文件的操作信息非常繁雜,因此有必要對操作信息進行分析,篩 選出對需要保護的文件的寫操作的關(guān)鍵信息。關(guān)鍵信息包括操作時刻、操作的目標文 件的路徑信息即文件目錄地址和文件名、寫長度信息即寫操作的文件數(shù)據(jù)起始偏移和輸 入輸出的數(shù)據(jù)緩沖區(qū)大小。篩選完成后,將這些寫操作的關(guān)鍵信息存儲到文件操作記錄 集合中。文件操作記錄集合是對文件數(shù)據(jù)每次訪問操作的寫操作關(guān)鍵信息存儲起來的數(shù) 據(jù)庫,其功能類似閂志。
步驟三,根據(jù)文件寫操作關(guān)鍵信息所指示的文件的路徑信息和寫長度信息對文件進 行操作級備份,對于進程對文件數(shù)據(jù)的每一次修改操作都產(chǎn)生本次操作對應的文件備份 分片。這種備份方式有別于傳統(tǒng)的事后備份或者定時備份方式,能夠?qū)崟r地跟蹤文件數(shù) 據(jù)的變化,并能夠及時地根據(jù)變化對被更改的文件數(shù)據(jù)進行備份。文件數(shù)據(jù)操作級備份 的步驟如下
(1) 根據(jù)當前寫操作關(guān)鍵信息,計算需要備份的文件數(shù)據(jù)的備份信息,包括數(shù)據(jù)在 文件中的起始位置、結(jié)束位置和需要生成的文件備份分片的數(shù)目。
(2) 對文件中被修改的部分按分片的最大容量進行分片備份。即預先設定一個分片 字節(jié)大小的最大值,每一個備份分片的大小都不能超過這個最大值。分片的最大容量根 據(jù)磁盤I/0吞吐率、磁盤分區(qū)大小和用戶需求綜合決定。例如,如果將分片的最大容 量約定為2MByte,則每一個備份分片的數(shù)據(jù)量都不能超過2M Byte。如果某個文件被 修改的數(shù)據(jù)量是5MByte,則需要將此文件中被修改的數(shù)據(jù)備份成3個分片;其中第1 片和第2片的大小都是2M Byte,第3片的大小是1M Byte。
(3) 通過查詢文件系統(tǒng)中管理"簇"信息的數(shù)據(jù)結(jié)構(gòu)得到并記錄當前分片在磁盤分 區(qū)中占用空間的"簇"信息,包括分片的起始簇號、分片的結(jié)束簇號和占用簇的數(shù)目。"簇" 指的是在磁盤分區(qū)中,文件系統(tǒng)關(guān)于文件數(shù)據(jù)存儲空間劃分的最小單位; 一個簇由若干 個扇區(qū)組成,在磁盤分區(qū)格式化的時候,其組成扇區(qū)數(shù)目由格式化程序來指定;在磁盤分區(qū)中,每一個"簇"都有一個唯一的編號,這個編號被稱為簇號;存儲在磁盤分區(qū)中的 每一個文件都占據(jù)若干個"簇",這些"簇"的編號不一定是連續(xù)的,但它們在磁盤分區(qū) 中都通過一種鏈式結(jié)構(gòu)來保持鏈接關(guān)系;因此,即使文件數(shù)據(jù)占用的"簇"空間在物理上 不是連續(xù)的,但在操作系統(tǒng)和用戶看來,這些"簇"空間在邏輯上是連續(xù)的。"簇"信息的 數(shù)據(jù)結(jié)構(gòu)在不同的文件系統(tǒng)中有所差異,比如在FAT32中主要是文件分配表,在NTFS 中主要是索引分配和位圖。
(4)將當前分片的關(guān)鍵信息包括需要保護的目錄地址或者文件路徑列表、備份分片 的索引標志(編號)、備份分片所屬的文件的目錄地址、備份分片數(shù)據(jù)的生成時刻、備 份分片的版本號、備份分片的"簇"信息(備份分片占用磁盤空間的情況)登記到管理信 息數(shù)據(jù)庫中。管理信息數(shù)據(jù)庫是存儲在文件數(shù)據(jù)備份恢復過程中需要使用的關(guān)鍵信息的 數(shù)據(jù)庫。通過對管理信息數(shù)據(jù)庫進行訪問和維護,可以把在文件數(shù)據(jù)備份過程中的一些 關(guān)鍵要素管理起來,以方便在信息系統(tǒng)服務失效發(fā)生之后,快速、高效地恢復受損的文 件。管理信息數(shù)據(jù)庫中包含三張表,這三張表是需要保護的目錄地址表、文件關(guān)鍵信息 表和文件備份分片信息表。
i) 需要保護的目錄地址表存儲與信息系統(tǒng)服務運行緊密相關(guān)的目錄地址和用戶需 要保護的目錄地址,每條記錄包括目錄編號和目錄地址兩個字段;
ii) 文件關(guān)鍵信息表存儲保護的所有文件的最新狀態(tài),每條記錄包括目錄編號、文 件編號、文件目錄地址、文件最新修改時間、文件最后修改版本號五個字段;
iii) 文件備份分片信息表存儲在文件數(shù)據(jù)操作級備份過程中生成的每個備份分片的 信息,在信息系統(tǒng)服務失效之后,這些信息可以幫助快速選擇合適的文件備份分片來恢 復受損的文件,每條記錄包括目錄編號、文件編號、分片編號、分片的生成時間、分片 的版本號、分片的起始簇號、分片的結(jié)束簇號、分片占據(jù)的簇數(shù)目八個字段。
第二步,為了存儲文件備份分片的數(shù)據(jù),在本地磁盤上新開辟一片空閑的空間 ^NBS(NewBackup Space),專門存儲文件初始狀態(tài)的備份數(shù)據(jù)和后續(xù)的備份分片數(shù)據(jù), NBS在邏輯上是連續(xù)的。
第三步,當信息系統(tǒng)服務崩潰或者損壞時,針對信息系統(tǒng)服務的連續(xù)性和實時性特 點,對服務的文件數(shù)據(jù)進行操作級恢復,即將服務的文件數(shù)據(jù)恢復到失效操作(即使得 信息系統(tǒng)服務崩潰或者損壞的操作)發(fā)生之前的狀態(tài),使得服務的狀態(tài)也恢復到失效操 作發(fā)生之前的狀態(tài),從而達到信息系統(tǒng)服務恢復的效果。文件數(shù)據(jù)操作級恢復的方法是 依據(jù)服務失效的時刻訪問文件操作記錄集合,進而在管理信息數(shù)據(jù)庫中選擇用來恢復文 件的備份分片,再將這些備份分片重新組合起來,從而將文件恢復到失效操作發(fā)生之前的狀態(tài)。文件數(shù)據(jù)操作級恢復的步驟如下
1. 讀取文件操作記錄集合,根據(jù)服務失效的時刻,在操作記錄集合中査找導致服 務失效的最近的一次操作;
2. 取出此次操作之前的最近的一次操作;
3. 將最近的一次操作的執(zhí)行時間作為文件數(shù)據(jù)恢復的目標時間;
4. 根據(jù)文件數(shù)據(jù)恢復的目標時間,判斷需要保護區(qū)域中的文件是否需要恢復。判 斷方法是如果文件在恢復目標時間之后沒有被修改過,則不需要恢復這個文件;如果 文件己經(jīng)不存在或者文件在恢復目標時間之后被修改過,則需要恢復這個文件。
5. 針對需要進行恢復的文件,根據(jù)文件數(shù)據(jù)恢復目標時間,在管理信息數(shù)據(jù)庫中 査找,選擇出所有用來恢復這個文件的備份分片,步驟是
(1) 根據(jù)文件的目錄地址,在管理信息數(shù)據(jù)庫的文件關(guān)鍵信息表中査找,得到該文 件對應的文件編號(簡稱為目標文件編號)。
(2) 根據(jù)目標文件編號,在管理信息數(shù)據(jù)庫的文件備份分片信息表中選擇出所有文 件編號與目標文件編號相同的所有數(shù)據(jù)記錄。這些數(shù)據(jù)記錄中指示的文件備份分片的分
片編號有可能相同,分片編號相同的分片代表該分片在各個不同時刻生成的版本。
(3) 判斷分片編號相同的那些文件備份分片的生成時刻,從中選擇出失效操作發(fā)生 之前該分片的最后一次生成的版本,判斷過程是
i) 在分片編號相同的文件備份分片中,將分片生成時刻小于或等于恢復目標時間 的所有分片選擇出來,并把選擇出來的這些分片簡稱為"待選分片";
ii) 從"待選分片"中取出分片生成時刻最大的那個文件備份分片,并將此文件備份 分片作為恢復的目標分片之一。
(4) 重復第(3)步,為文件的每一個分片都選擇出滿足恢復目標時間要求的文件備 份分片版本;通過這樣的過程,就將用于恢復該文件的所有的文件備份分片版本都選擇 出來了。
6. 將選擇出來用于恢復該文件的所有文件備份分片采用分片數(shù)據(jù)扇區(qū)重新組合 的方法對該文件進行恢復。分片數(shù)據(jù)扇區(qū)重新組合方法充分利用文件系統(tǒng)中數(shù)據(jù)鏈式存 儲的特性,將傳統(tǒng)的恢復過程中對數(shù)據(jù)的直接拷貝轉(zhuǎn)化為對文件備份分片占用空間的 "簇"的鏈接關(guān)系的更改。通過修改"簇"的鏈接關(guān)系實現(xiàn)文件的各個備份分片重新組合, 達到恢復文件的目的。在整個文件數(shù)據(jù)恢復的過程中,不需要對數(shù)據(jù)進行拷貝或復制, 只需要修改各個分片的"簇"的鏈接關(guān)系,同時更新文件目錄項或者文件MFT (主文件 表)表中的關(guān)鍵信息,即可將文件數(shù)據(jù)恢復到指定的時刻。具體地,分片數(shù)據(jù)扇區(qū)重新組合方法如下
(i) 根據(jù)選擇出來的文件備份分片,在管理信息數(shù)據(jù)庫的文件備份分片信息表中查 詢,得到每個文件備份分片在磁盤上占據(jù)空間的"簇"信息,包括此分片的起始簇號和分 片的結(jié)束簇號。由于在第一步的步驟三的(4)中己經(jīng)獲取了每個生成的文件備份分片 占據(jù)空間的"簇"信息,并將它們存儲在管理信息數(shù)據(jù)庫中,因此,在文件數(shù)據(jù)恢復時, 只需要根據(jù)文件分片信息便可以得到相應的分片空間占用的"簇"信息。
(ii) 根據(jù)每個分片的起始簇號和結(jié)束簇號,將每個分片在邏輯地址上順次按照首尾 相接的方式重新組合起來,即將第1塊的尾部與第2塊的首部鏈接起來,將第2塊的尾 部與第3塊的首部鏈接起來,......以此類推, 一直到最后一塊數(shù)據(jù)被鏈接起來為止;具
體地,則是將第一塊數(shù)據(jù)的結(jié)束"簇"鏈接到第2塊數(shù)據(jù)的起始"簇",將第2塊數(shù)據(jù)的結(jié) 束"簇"鏈接到第3塊數(shù)據(jù)的起始"簇",......以此類推,直到最后一塊數(shù)據(jù)的起始"簇"被
鏈接到倒數(shù)第二塊的結(jié)束"簇"。鏈接操作是指在扇區(qū)層次上修改磁盤扇區(qū)之間的邏輯關(guān) 系,這種修改基于文件系統(tǒng)中對文件數(shù)據(jù)的組織特點而實施。比如在FAT32文件系統(tǒng) 中,每個文件數(shù)據(jù)都是以"簇"為單位進行分配和存儲的,而每個簇在FAT(文件分配表) 中都占據(jù)一個相應的位置(一般為4字節(jié)),簇的占用信息都由該位置上存儲的不同的 數(shù)值來表示;如果該位置的值非O并且非結(jié)束標志,則表示該文件的數(shù)據(jù)未結(jié)束;該位 置的數(shù)值表示該文件占用的下一個簇的簇號。FAT32系統(tǒng)通過這樣的方式來維持文件、 簇和數(shù)據(jù)之間的邏輯映射關(guān)系,同時操作系統(tǒng)也依據(jù)這樣的邏輯映射關(guān)系實現(xiàn)對文件的 增加、減少、更改、刪除等修改操作。其它的文件系統(tǒng)中,比如NTFS、 Ext3等,也是 按照這樣的"簇"方式對文件數(shù)據(jù)占用空間進行分配和存儲,它們的數(shù)據(jù)組織方式與 FAT32大同小異。本發(fā)明即是充分利用了文件系統(tǒng)的這種數(shù)據(jù)組織特性,通過修改選擇 出來的文件分片的"簇"的鏈接關(guān)系,將這些分片重新鏈接起來,從而實現(xiàn)對文件數(shù)據(jù)的 重新組合。
(iii) 對最后一塊文件分片數(shù)據(jù)做特殊處理。因為在邏輯關(guān)系上,最后一塊文件分片 數(shù)據(jù)是要恢復的目的文件數(shù)據(jù)的尾部,所以最后一塊文件分片數(shù)據(jù)的結(jié)束"簇"位置置為 數(shù)據(jù)的結(jié)束標志(比如在FAT32文件系統(tǒng)中,OxOfffffff表示結(jié)束)。
(iv) 釋放需要恢復的目的文件占用的空間。由于原有的目的文件可能仍然占據(jù)了磁 盤空間,在文件數(shù)據(jù)恢復操作完成之前,需要將這些占據(jù)的空間釋放以供給其他的進程 和用戶使用。
(v) 修改需要恢復的目的文件的參數(shù)信息。由于目的文件或者已經(jīng)損壞,或者其參 數(shù)信息與恢復目標不一致,因此,需耍對目的文件的參數(shù)信息進行修改。這些參數(shù)信息主要包括文件名、文件的起始"簇"信息或者數(shù)據(jù)運行的簇信息、文件長度、文件創(chuàng)建時間、文件最后修改時間和文件最近訪問時間等。這種修改只需要針對這些參數(shù)信息所在的磁盤扇區(qū)進行讀寫操作即可完成。
與傳統(tǒng)的文件數(shù)據(jù)恢復方法相比,采用本發(fā)明可以達到以下的技術(shù)效果-
(1) 本發(fā)明不需要進行數(shù)據(jù)的復制或者移動操作。本發(fā)明主要依賴于對預先存在的文件備份分片進行重新組合而實現(xiàn)對文件數(shù)據(jù)的恢復,這種組合主要利用文件系統(tǒng)中數(shù)據(jù)組織方式的特點,將這些文件分片占用的空間以首尾相接的方式鏈接起來,從而重新實現(xiàn)文件數(shù)據(jù)在邏輯上的統(tǒng)一、連續(xù)的數(shù)據(jù)視圖。
(2) 本發(fā)明能夠極大地提高數(shù)據(jù)恢復的速度,因為不需要進行數(shù)據(jù)的復制操作,可以極大地減少對磁盤扇區(qū)的讀寫訪問時間,從而減少數(shù)據(jù)恢復過程所需要的時間,進而能夠保證服務恢復的實時性要求。
(3) 兼具增量備份方式和日志備份方式的優(yōu)點。由于采取對文件修改部分采用增量備份的方式,因此存儲空間占用較少;同時,記錄了對文件數(shù)據(jù)的修改操作,因此也具有日志備份方式的優(yōu)點。
(4) 能實現(xiàn)對文件數(shù)據(jù)的操作級備份和恢復。能夠根據(jù)對文件數(shù)據(jù)的修改操作,備份此次操作導致的文件修改部分的數(shù)據(jù);在信息系統(tǒng)服務失效發(fā)生之后,能夠?qū)⑽募?shù)據(jù)恢復到指定的操作時間節(jié)點。
(5) 便捷的備份數(shù)據(jù)信息管理。將備份數(shù)據(jù)信息以數(shù)據(jù)庫的形式集中地管理起來,以方便在文件數(shù)據(jù)恢復時對它們進行使用。
(6) 對文件修改操作進行實時監(jiān)控。通過擴展的文件系統(tǒng)過濾層驅(qū)動程序?qū)崟r地監(jiān)控對磁盤分區(qū)下的所有需要保護文件的寫操作,并捕獲這些寫操作信息,對這些文件進行分片備份。
(7) 便捷的用戶恢復時間選擇。能夠根據(jù)用戶選擇的恢復時間節(jié)點,將文件數(shù)據(jù)恢復到用戶指定的時刻。
圖l是本發(fā)明的總流程圖2是本發(fā)明的第一步的步驟三文件數(shù)據(jù)操作級備份流程圖;圖3是本發(fā)明的第三步文件數(shù)據(jù)操作級恢復流程圖;圖4是本發(fā)明的第三步分片數(shù)據(jù)扇區(qū)重新組合方法流程圖;圖5是本發(fā)明的第三步分片數(shù)據(jù)扇區(qū)重新組合過程示意具體實施例方式
圖l是本發(fā)明的總流程圖,主要包括以下三個步驟
1. 捕獲、過濾文件操作,備份文件數(shù)據(jù)。該過程主要由三個步驟組成捕獲系統(tǒng)進程和用戶進程對磁盤中所有文件的操作信息,對捕獲到的操作信息進行過濾獲取擬保護的文件數(shù)據(jù)的寫操作信息,根據(jù)這些寫操作信息對相應的文件數(shù)據(jù)進行備份。這是一種主動備份過程,它可以針對系統(tǒng)進程和用戶進程對需要保護的文件數(shù)據(jù)的任何修改操作生成相應的文件備份分片。在不同時刻生成的這些文件備份分片一起組成了文件備份分片集合。
2. 管理維護文件備份分片集合。為了存儲文件分片備份數(shù)據(jù),在本地磁盤上新開
辟一片被命名為NBS的空間專門用于存儲備份數(shù)據(jù),文件初始狀態(tài)和后續(xù)狀態(tài)的備份數(shù)據(jù)都存儲在NBS中,NBS對應的磁盤分區(qū)的所有簇的信息都可以預先得到。
3. 文件數(shù)據(jù)恢復。在服務運行異常被檢測到之后,通過訪問文件操作記錄集合中存儲的一系列操作,取出導致此次服務失效發(fā)生的操作,生成恢復的目標時間;然后依據(jù)恢復目標時間,從文件備份分片集合中選擇用于恢復的文件分片;并使用這些選擇出來的文件分片,采用基于扇區(qū)重組的文件數(shù)據(jù)恢復方法將這些分片重新組合以實現(xiàn)對文件數(shù)據(jù)的快速恢復。
圖2是本發(fā)明的第一步的步驟三的文件數(shù)據(jù)操作級備份流程圖,主要包括5大步驟。
1. 根據(jù)捕獲到的系統(tǒng)進程和用戶進程對文件數(shù)據(jù)的修改操作信息,判斷當前操作是否為寫操作;如果是寫操作,則將當前操作添加到文件操作記錄集合中;
2. 生成當前文件數(shù)據(jù)備份信息,即根據(jù)獲取到的寫操作的關(guān)鍵信息,計算需要備份的文件數(shù)據(jù)的起始位置、結(jié)束位置和需要生成的文件備份分片的數(shù)目。
3. 對文件中被修改的部分按分片的最大容量進行分片備份。
4. 獲取當前文件分片的磁盤分區(qū)起始"簇"和結(jié)束"簇"信息。
5. 登記當前分片的起始"簇"和結(jié)束"簇"信息到管理信息數(shù)據(jù)庫中。圖3是本發(fā)明的第三步的文件數(shù)據(jù)操作級恢復流程圖。步驟是-
1. 讀取文件操作記錄集合,在其中査找導致服務失效的最近的一次操作;
2. 取出此次操作之前的最近的一次操作;
3. 根據(jù)2中得到的操作的執(zhí)行時間生成文件數(shù)據(jù)恢復的目標時間;
4. 根據(jù)文件數(shù)據(jù)恢復的目標時間,判斷需要保護區(qū)域中的文件是否需要恢復,若不需要恢復,轉(zhuǎn)7;
5. 針對需要進行恢復的文件,根據(jù)文件數(shù)據(jù)恢復目標時間,在管理信息數(shù)據(jù)庫中査找,選擇出所有用來恢復這個文件的備份分片;
6. 采用分片數(shù)據(jù)扇區(qū)重新組合方法恢復所需要保護的文件;
7. 判定是否還有需要恢復的文件,有,轉(zhuǎn)4,沒有,結(jié)束。
圖4是本發(fā)明的第三步步驟6的分片數(shù)據(jù)扇區(qū)重新組合方法中對分片占據(jù)的空間進
行重新組合的方法流程圖,主要包括以下5步
1. 在管理信息數(shù)據(jù)庫的文件備份分片信息表中査詢,得到每個文件備份分片在磁盤上的起始"簇"和結(jié)束"簇"信息;
2. 將各個分片以首尾相接的方式重新組合起來D
3. 特殊處理最后一塊分片,即將最后一塊分片的末尾置上數(shù)據(jù)的結(jié)束標志。
4. 釋放目的文件占用的空間,以供給其他的進程和用戶使用。
5. 修改目的文件的參數(shù)信息。主要是對文件名、文件的起始"簇"信息或者數(shù)據(jù)運行的簇信息、文件長度、文件創(chuàng)建時間、文件最后修改時間和文件最近訪問時間等信息進行修改。
圖5是本發(fā)明的第三步的分片數(shù)據(jù)扇區(qū)重新組合過程示意圖;在圖5中,空白方塊表示文件的原始數(shù)據(jù)塊,陰影方塊表示文件的備份數(shù)據(jù)塊,實線連接線表示文件的各個分片的原始鏈接關(guān)系,虛線連接線表示執(zhí)行動態(tài)重組之后文件各個分片的鏈接關(guān)系,TO,Tl, T2, T3, T4, T5表示時間的遞增。TO時刻表示初始時刻,此時,文件的數(shù)據(jù)都處于初始完好狀態(tài)。在T1時刻,文件的第2塊和第3塊數(shù)據(jù)被修改,因此,在T1時刻,產(chǎn)生了文件的兩個備份分片;在T2時刻,文件的第3塊數(shù)據(jù)被修改,因此,在T2時刻,產(chǎn)生了文件的一個備份分片;依次類推,得到了左圖所示的文件備份分片隨時間的變化圖示。
當服務運行異常時,服務失效處理過程決策出需要將數(shù)據(jù)恢復到T3時刻。這時,根據(jù)恢復的目標時間(T3時刻),在文件分片的各個版本集合中,選擇每個分片對應的相應版本。具體的各個分片的版本選擇過程如下-
*從左圖可以看出,此文件的第一塊數(shù)據(jù)沒有被修改,因此選擇文件的第l塊在TO時刻的版本;
*文件的第2塊數(shù)據(jù)在Tl時刻被修改過,由此產(chǎn)生的備份數(shù)據(jù)塊是滿足條件的
最近的數(shù)據(jù)塊,因此,選擇文件的第2塊在T1時刻的修改版本;*文件的第3塊數(shù)據(jù)在T1, T2,和T4時刻都被修改過,由于T4時刻的版本發(fā)生時間落后于恢復的目標時間(T3時刻),因此,T4時刻的版本不符合要求;則選擇最接近恢復目標時間的T2時刻的版本作為文件的第3塊數(shù)據(jù); 文件的第4塊數(shù)據(jù)在T3, T4和T5時刻都被修改過,由于T4時刻和T5時刻的版本產(chǎn)生時間均落后于恢復的目標時間(T3時刻),因此,T4時刻和T5時刻的版本不符合要求;所以,選擇文件的第4塊在T3時刻的修改版本;*文件的第5塊數(shù)據(jù)只在T5時刻被修改過,由于T5時刻的版本產(chǎn)生時間落后于
恢復的目標時間(T3時刻),因此,選擇文件的第5塊在T0時刻的版本。選擇出來的各個分片在邏輯上是分散的,由于它們在磁盤分區(qū)上的"簇"空間占用信息都預先存儲在管理信息數(shù)據(jù)庫中,所以可以方便地從管理信息數(shù)據(jù)庫取出各個分片的"簇"空間占用信息。并根據(jù)"簇"空間占用信息修改這些分片的"簇"的鏈接關(guān)系,就可以將這些分片重新組織起來,如圖5右圖所示,首先將第1個分片的T0時刻生成的備份分片的尾部鏈接到第2個分片的Tl時刻生成的備份分片的首部,然后將第2個分片的Tl時刻生成的備份分片的尾部鏈接到第3個分片的T2時刻生成的備份分片的首部,再將第3個分片的T2時刻生成的備份分片的尾部鏈接到第4個分片的T3時刻生成的備份分片的首部,最后將第4個分片的T3時刻生成的備份分片的尾部鏈接到第5個分片的TO時刻生成的備份分片的首部。通過這樣的方式,將選擇出來的文件的各個備份分片重新組合起來,從而實現(xiàn)文件的恢復操作。這些重組起來的分片數(shù)據(jù)在文件系統(tǒng)層次看來,與通過完全拷貝數(shù)據(jù)方式實現(xiàn)的文件恢復的效果完全一樣,可以透明地被操作系統(tǒng)和文件系統(tǒng)訪問。
權(quán)利要求
1. 一種基于扇區(qū)重組的文件備份恢復方法,其特征在于包括以下步驟第一步,捕獲系統(tǒng)進程即操作系統(tǒng)進程和用戶進程對磁盤中所有文件的操作信息,對捕獲到的操作信息進行過濾,獲取需要保護的文件數(shù)據(jù)的寫操作信息,并根據(jù)這些寫操作信息對相應的文件數(shù)據(jù)進行分片式主動備份,包括以下三個步驟步驟一,在文件系統(tǒng)驅(qū)動上層開發(fā)一個過濾層驅(qū)動程序,由過濾層驅(qū)動程序?qū)崟r截獲I/O管理器發(fā)往文件系統(tǒng)驅(qū)動層的輸入輸出請求IRP信息包,從而監(jiān)控所有系統(tǒng)進程和用戶進程對文件的操作,捕獲到這些操作的信息,包括操作進程、操作類型即只讀、讀/寫,只寫、操作的目標文件的路徑信息、操作時刻、操作的文件數(shù)據(jù)的起始偏移和輸入輸出的數(shù)據(jù)緩沖區(qū)大??;步驟二,對捕獲到的對文件的操作信息進行分析和過濾,得到需要保護的文件的寫操作關(guān)鍵信息,包括操作時刻、操作的目標文件的路徑信息即文件目錄地址和文件名、寫長度信息即寫操作的文件數(shù)據(jù)起始偏移和輸入輸出的數(shù)據(jù)緩沖區(qū)大小,篩選完成后,將這些寫操作關(guān)鍵信息存儲到文件操作記錄集合中,文件操作記錄集合是對文件數(shù)據(jù)每次訪問的寫操作的關(guān)鍵信息存儲起來的數(shù)據(jù)庫,其功能類似日志;步驟三,根據(jù)文件寫操作關(guān)鍵信息所指示的文件的路徑信息和寫長度信息對文件進行操作級備份,對于進程對文件數(shù)據(jù)的每一次修改操作都產(chǎn)生本次操作對應的文件備份分片,步驟如下(1)根據(jù)當前寫操作關(guān)鍵信息,計算需要備份的文件數(shù)據(jù)的備份信息,包括數(shù)據(jù)在文件中的起始位置、結(jié)束位置和需要生成的文件備份分片的數(shù)目;(2)對文件中被修改的部分按分片的最大容量進行分片備份,分片的最大容量根據(jù)磁盤I/O吞吐率、磁盤分區(qū)大小和用戶需求綜合決定,每一個備份分片的大小都不能超過分片的最大容量;(3)查詢文件系統(tǒng)中管理“簇”信息的數(shù)據(jù)結(jié)構(gòu)得到并記錄當前分片在磁盤分區(qū)中占用空間的“簇”信息,包括分片的起始簇號、分片的結(jié)束簇號和占用簇的數(shù)目;(4)將當前分片的關(guān)鍵信息包括需要保護的目錄地址或者文件路徑列表、備份分片的索引標志、備份分片所屬的文件的目錄地址、備份分片數(shù)據(jù)的生成時刻、備份分片的版本號、備份分片的“簇”信息登記到管理信息數(shù)據(jù)庫中,管理信息數(shù)據(jù)庫中包含需要保護的目錄地址表、文件關(guān)鍵信息表和文件備份分片信息表;需要保護的目錄地址表存儲與信息系統(tǒng)服務運行緊密相關(guān)的目錄地址和用戶需要保護的目錄地址,每條記錄包括目錄編號和目錄地址兩個字段;文件關(guān)鍵信息表存儲文件的最新狀態(tài),每條記錄包括目錄編號、文件編號、文件目錄地址、文件最新修改時間、文件最后修改版本號五個字段;文件備份分片信息表存儲在文件數(shù)據(jù)操作級備份過程中生成的每個備份分片的信息,每條記錄包括目錄編號、文件編號、分片編號、分片的生成時間、分片的版本號、分片的起始簇號、分片的結(jié)束簇號、分片占據(jù)的簇數(shù)目八個字段;第二步,在本地磁盤上新開辟一片空閑的空間—NBS,專門存儲文件初始狀態(tài)的備份數(shù)據(jù)和后續(xù)的備份分片數(shù)據(jù),NBS在邏輯上是連續(xù)的;第三步,當信息系統(tǒng)服務崩潰或者損壞時,對服務的文件數(shù)據(jù)進行操作級恢復,步驟如下步驟1. 讀取文件操作記錄集合,根據(jù)服務失效的時刻,在操作記錄集合中查找導致服務失效的最近的一次操作;步驟2. 取出此次操作之前的最近的一次操作;步驟3. 將最近的一次操作的執(zhí)行時間作為文件數(shù)據(jù)恢復的目標時間;步驟4. 根據(jù)文件數(shù)據(jù)恢復的目標時間,判斷需要保護區(qū)域中的文件是否需要恢復,方法是如果文件在恢復目標時間之后沒有被修改過,則不需要恢復這個文件;如果文件已經(jīng)不存在或者文件在恢復目標時間之后被修改過,則需要恢復這個文件;步驟5. 針對需要進行恢復的文件,根據(jù)文件數(shù)據(jù)恢復目標時間,在管理信息數(shù)據(jù)庫中查找,選擇出所有用來恢復這個文件的備份分片,步驟是步驟(1)根據(jù)文件的目錄地址,在管理信息數(shù)據(jù)庫的文件關(guān)鍵信息表中查找,得到該文件對應的文件編號,簡稱為目標文件編號;步驟(2)根據(jù)目標文件編號,在管理信息數(shù)據(jù)庫的文件備份分片信息表中選擇出所有文件編號與目標文件編號相同的所有數(shù)據(jù)記錄;步驟(3)判斷分片編號相同的那些文件備份分片的生成時刻,從中選擇出失效操作發(fā)生之前該分片的最后一次生成的版本,判斷過程是i)在分片編號相同的文件備份分片中,將分片生成時刻小于或等于恢復目標時間的所有分片選擇出來,并把選擇出來的這些分片簡稱為“待選分片”;ii)從“待選分片”中取出分片生成時刻最大的那個文件備份分片,并將此文件備份分片作為恢復的目標分片之一;步驟(4)重復第(3)步,為文件的每一個分片都選擇出滿足恢復目標時間要求的文件備份分片版本;步驟6. 將選擇出來用于恢復該文件的所有文件備份分片采用分片數(shù)據(jù)扇區(qū)重新組合的方法對該文件進行恢復,分片數(shù)據(jù)扇區(qū)重新組合方法如下(i)根據(jù)選擇出來的文件備份分片,在管理信息數(shù)據(jù)庫的文件備份分片信息表中查詢,得到每個文件備份分片在磁盤上占據(jù)空間的“簇”信息,包括此分片的起始簇號和分片的結(jié)束簇號;(ii)根據(jù)每個分片的起始簇號和結(jié)束簇號,將每個分片在邏輯地址上順次按照首尾相接的方式重新組合起來,即將第1塊的尾部與第2塊的首部鏈接起來,將第2塊的尾部與第3塊的首部鏈接起來,......以此類推,一直到最后一塊數(shù)據(jù)被鏈接起來為止;具體地,則是將第一塊數(shù)據(jù)的結(jié)束“簇”鏈接到第2塊數(shù)據(jù)的起始“簇”,將第2塊數(shù)據(jù)的結(jié)束“簇”鏈接到第3塊數(shù)據(jù)的起始“簇”,......以此類推,直到最后一塊數(shù)據(jù)的起始“簇”被鏈接到倒數(shù)第二塊的結(jié)束“簇”;鏈接操作是指在扇區(qū)層次上修改磁盤扇區(qū)之間的邏輯關(guān)系;(iii)對最后一塊文件分片數(shù)據(jù)做特殊處理,即最后一塊文件分片數(shù)據(jù)的結(jié)束“簇”位置置為數(shù)據(jù)的結(jié)束標志;(iv)釋放需要恢復的目的文件占用的空間;(v)修改需要恢復的目的文件的參數(shù)信息,包括文件名、文件的起始“簇”信息或者數(shù)據(jù)運行的簇信息、文件長度、文件創(chuàng)建時間、文件最后修改時間和文件最近訪問時間,修改方法是針對這些參數(shù)信息所在的磁盤扇區(qū)進行讀寫操作。
全文摘要
本發(fā)明公開了一種基于扇區(qū)重組的文件備份恢復方法,要解決的技術(shù)問題是在保證文件數(shù)據(jù)恢復結(jié)果正確性的前提下,加快文件數(shù)據(jù)恢復的速度,滿足恢復的實時性、精確性需求。技術(shù)方案是先捕獲并過濾獲得進程對磁盤中所有文件的寫操作信息,根據(jù)這些信息對相應的文件數(shù)據(jù)進行分片式主動備份;在本地磁盤上開辟空間NBS存儲文件初始狀態(tài)的備份數(shù)據(jù)和后續(xù)的備份分片數(shù)據(jù);當信息系統(tǒng)服務崩潰或者損壞時,對服務的文件數(shù)據(jù)進行操作級恢復,即選擇出所有用來恢復這個文件的備份分片,采用分片數(shù)據(jù)扇區(qū)重新組合的方法對該文件進行恢復。本發(fā)明不需要進行數(shù)據(jù)的復制或者移動操作,能夠極大地提高數(shù)據(jù)恢復的速度,兼具增量備份方式和日志備份方式的優(yōu)點。
文檔編號G06F11/14GK101477486SQ20091004258
公開日2009年7月8日 申請日期2009年1月22日 優(yōu)先權(quán)日2009年1月22日
發(fā)明者任江春, 伍江江, 芳 劉, 立 沈, 王志英, 勇 程, 儂 肖, 賴明澈, 陸洪毅, 俊 馬 申請人:中國人民解放軍國防科學技術(shù)大學