專利名稱:在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法
技術領域:
本發(fā)明涉及一種文件備份處理方法,特別涉及一種在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法。
背景技術:
重復數(shù)據(jù)刪除是一種數(shù)據(jù)縮減技術,通常用于基于磁盤的備份系統(tǒng),主要目的在于減少存儲系統(tǒng)中使用的存儲容量。它的工作方式是在某個時間周期內(nèi)查找不同文件中不同位置的重復可變大小數(shù)據(jù)塊。重復的數(shù)據(jù)塊用指示符取代。由于存儲系統(tǒng)中總是充斥著大量的冗余數(shù)據(jù)。為了解決這個問題,節(jié)省更多空間,“重復刪除”技術便順理成章地成了人們關注的焦點。采用“重復刪除”技術可以將存儲的數(shù)據(jù)縮減為原來的1/20,從而讓出更多的備份空間,不僅可以使存儲系統(tǒng)上的備份數(shù)據(jù)保存更長的時間,而且還可以節(jié)約離線存儲時所需的大量的帶寬。中斷驅動程序拿到數(shù)據(jù)傳給處理程序后,中斷驅動程序就認為完成寫入的動作, 給上層返回寫入成功的信息(WRITE_0K)。中斷驅動程序拷貝欲寫入的數(shù)據(jù)到共享內(nèi)存,藉以供客戶端處理。中斷驅動程序就認為此操作請求的處理就已經(jīng)完畢。但由于處理延遲的存在,可能在服務端還沒完全處理完這段數(shù)據(jù)時,文件備份程序隨即又發(fā)送新的讀取此部分數(shù)據(jù)(IRP_READ)命令。這樣一來,新的數(shù)據(jù)尚未寫入,所以服務端只能將舊有的數(shù)據(jù)傳送至客戶端,勢必造成客戶端接收到錯誤的數(shù)據(jù)。
發(fā)明內(nèi)容
鑒于以上的問題,本發(fā)明的目的在于提供一種在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,解決文件備份程序進行重復數(shù)據(jù)刪除程序時,文件備份程序在存取文件時的延誤錯誤,并且支持文件并發(fā)讀寫。本發(fā)明所揭露的在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法包括以下步驟在客戶端中運行中斷驅動程序與文件備份程序;執(zhí)行操作時間的計時,用以確認在操作時間之中是否有操作請求發(fā)出;當在操作時間的期間客戶端向文件備份程序發(fā)送操作請求,用以對目標文件進行相應的文件操作;由中斷驅動程序攔截操作請求,中斷驅動程序根據(jù)操作請求命令服務程序進行目標文件的操作;中斷驅動程序將結果信息傳送至客戶端。本發(fā)明提供一種不需修改文件存儲系統(tǒng)的內(nèi)核,也可以使得文件存儲系統(tǒng)提供重復數(shù)據(jù)刪除的功能。如此一來,除了可以減縮文件的存儲空間外,也可以降低軟件開發(fā)商的開發(fā)成本。以下結合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。
圖1為本發(fā)明的架構示意圖;圖2為本發(fā)明的運作流程示意圖3A為本發(fā)明的各項操作請求的流程示意圖;圖;3B為本發(fā)明的各項操作請求的流程示意圖;圖4為本發(fā)明的目標文件的讀寫的流程示意圖。其中,附圖標記客戶端100中斷驅動程序110文件備份程序120重復數(shù)據(jù)刪除程序130目標文件140
具體實施例方式下面結合附圖對本發(fā)明的結構原理和工作原理作具體的描述本發(fā)明應用于具有處理重復數(shù)據(jù)刪除程序的計算機,例如個人電腦、筆記型電腦、或服務器。為方便說明,所以是以一臺客戶端作為說明,但是其數(shù)量并非局限于此。請參考圖1所示,其為本發(fā)明的架構示意圖??蛻舳?00中運行中斷驅動程序110、文件備份程序120與重復數(shù)據(jù)刪除程序 130,中斷驅動程序110用以攔截備份程序所發(fā)出的操作請求(I/O Request Packet, IRP) ο 中斷驅動程序110根據(jù)存取中斷請求將目標文件140轉發(fā)至客戶端100的用戶端服務中 (client service)進行重復數(shù)據(jù)的刪除處理。本發(fā)明的重復數(shù)據(jù)刪除程序130包括以下步驟,請參考圖2所示步驟S210 在客戶端中運行中斷驅動程序與文件備份程序;步驟S220 執(zhí)行操作時間的計時,用以確認在操作時間之中是否有操作請求發(fā)出;步驟S230 當在操作時間的期間用戶端服務向文件備份程序發(fā)送操作請求,用以對目標文件進行相應的文件操作;步驟S240 由中斷驅動程序攔截操作請求,中斷驅動程序根據(jù)操作請求命令服務程序進行目標文件的操作;以及步驟S250 中斷驅動程序將結果信息傳送至客戶端。首先,中斷驅動程序110負責監(jiān)聽客戶端100中是否有發(fā)出操作請求。在客戶端 100進行操作的期間,若是客戶端100向文件備份程序120發(fā)送操作請求,則操作請求將由中斷驅動程序110導向至用戶端服務進行相應的文件操作。在本發(fā)明中的操作請求的種類是為文件讀取處理(File Read)、文件寫入處理(File Write)或剩余容量查詢處理 (Query)。而文件寫入處理還包括開始寫入處理(Start Write)與停止寫入處理(Stop Write)。若操作請求為文件讀取處理時,則由服務程序將目標文件140寫入至共享內(nèi)存中,用以提供給中斷驅動程序Iio讀取目標文件140至文件備份程序120。若服務程序為容量查詢處理時,則中斷驅動程序110返回共享內(nèi)存當前剩余的容量。若操作請求為文件寫入處理時,則由中斷驅動程序110將目標文件140寫入至環(huán)狀緩存中,用以提供給服務程序進行重復數(shù)據(jù)刪除程序130。并且在開始寫入處理時,會設定寫入旗標,藉以令其它客戶端100禁用此一文件。同理,在停止寫入處理開始時,也會設定停止旗標,令其它客戶端100可以使用此一目標文件140。在完成上述的寫入/停止寫入的相關處理后,將會清除寫入旗標(或停止旗標)。為能清楚的描述操作請求與設備底層的操作,因此以微軟公司所推出的視窗作業(yè)系統(tǒng)為例作為說明,但其運作架構可被運用于其它作業(yè)系統(tǒng)中。視窗程序的驅動架構(Window Driver Model, WDM Driver)是在接收到操作請求后,才開始進行輸入/輸出需求的處理。這其中包含了數(shù)據(jù)讀取、寫入、硬體裝置控制、電源管理、中斷處理以及WDM Driver生命周期的開始與結束等操作,這些都是WDM Driver所必須支持的輸入/輸出的操作。環(huán)狀緩存(Ring Buffer)是設置于中斷驅動程序與用戶端服務之間的共享內(nèi)存。 環(huán)狀緩存用于處理IRP_MJ_WRITE命令。IRP_MJ_WRITE命令用以當應用程序要由底層的硬體裝置(如硬盤、USB隨身碟)寫入數(shù)據(jù)時,會對負責該裝置運行的WDM Driver送出IRP_ MJ_WRITE命令。由中斷驅動程序110負責將數(shù)據(jù)寫入環(huán)狀緩存,用戶端服務則負責從環(huán)狀緩存中將數(shù)據(jù)讀出。圖3A為用戶端服務與中斷驅動程序110對于環(huán)狀緩存的存取示意圖。在中斷驅動程序110與用戶端服務之間設置有一共享內(nèi)存,共享內(nèi)存用于處理IRP_MJ_ READ命令。當用戶端服務負責寫入時,中斷驅動程序110負責讀出。IRP_MJ_READ命令用以當應用程序要由底層的硬體裝置(如硬盤、U盤)讀取數(shù)據(jù)時,會對負責該裝置運行的WDM Driver送出IRP_MJ_READ命令。圖為用戶端服務與中斷驅動程序對于共享內(nèi)存的存取示意圖。在處理IRP_MJ_WRITE命令時,對于環(huán)狀緩存的使用了生產(chǎn)者/消費者的模式 (producer/consumer)。其中,將中斷驅動程序110作為生產(chǎn)者(producer),用以負責向其中寫入數(shù)據(jù);環(huán)狀緩存為消費者(consumer)。中斷驅動程序110會不斷查詢環(huán)狀緩存檢測是否有足夠的剩余空間進行寫入操作。當用戶端服務作為消費者時,用戶端服務負責從環(huán)狀緩存中讀出數(shù)據(jù)進行處理。 當檢測到環(huán)狀緩存的數(shù)據(jù)開始有變化時,用戶端服務即知道有數(shù)據(jù)要處理,處理完成后更新用戶端服務,以便中斷驅動程序110可以繼續(xù)寫入數(shù)據(jù)。因此在進行目標文件140的讀寫的處理就如同圖4所示,其包括以下步驟步驟S410 讀取的目標文件的位移量與長度;步驟S420 判斷目標文件的位移量與長度是否存在于環(huán)狀緩存;步驟S430 若存在時,則將目標文件的位移量與長度復制到共享內(nèi)存;若不存在時,則跳至步驟S440 ;步驟S440 判斷剩余的讀取長度是否為0 ;步驟S450 若剩余的讀取長度非0時,則從客戶端繼續(xù)取得目標文件的相應數(shù)據(jù);步驟S460 將所取得的數(shù)據(jù)復制到共享內(nèi)存中;以及步驟S470 若剩余的讀取長度0時,則結束目標文件的讀取。在中斷驅動程序110完成上述的各項操作請求后,將返回一結果信息至客戶端 100,并且重新設定操作時間,藉以重復的監(jiān)聽客戶端100的運作狀況。本發(fā)明提供一種不需修改文件存儲系統(tǒng)的內(nèi)核,也可以使得文件存儲系統(tǒng)提供重復數(shù)據(jù)刪除的功能。如此一來,除了可以減縮文件的存儲空間外,也可以降低軟件開發(fā)商的開發(fā)成本。 當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
權利要求
1.一種在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,解決一文件備份程序進行一重復數(shù)據(jù)刪除程序時,該文件備份程序在存取文件時的延誤錯誤,其特征在于,該在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法包括以下步驟在一客戶端中運行一中斷驅動程序與該文件備份程序;該客戶端向該文件備份程序發(fā)送一操作請求,用以對一目標文件進行相應的文件操作;以及由該中斷驅動程序攔截該操作請求,該中斷驅動程序根據(jù)該操作請求執(zhí)行一服務程序,用以對該目標文件進行相應的操作;若該服務程序為一文件讀取處理時,則由該服務程序將該目標文件寫入至一共享內(nèi)存中,用以提供給該中斷驅動程序讀取該目標文件至該文件備份程序;以及若該服務程序為一文件寫入處理時,則由該中斷驅動程序將該目標文件寫入至一環(huán)狀緩存中,用以提供給該服務程序進行該重復數(shù)據(jù)刪除程序。
2.根據(jù)權利要求1所述的在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,其特征在于, 在發(fā)送該操作請求前還包括執(zhí)行一操作時間的計時,用以確認在該操作時間之中是否有該操作請求發(fā)出。
3.根據(jù)權利要求1所述的在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,其特征在于, 該文件寫入處理還包括一開始寫入處理與一停止寫入處理。
4.根據(jù)權利要求1所述的在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,其特征在于, 若該服務程序為一容量查詢處理時,則該中斷驅動程序返回該共享內(nèi)存當前剩余的容量。
5.根據(jù)權利要求1所述的在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,其特征在于, 在執(zhí)行該服務程序后還包括該中斷驅動程序將一結果信息傳送至該客戶端。
全文摘要
一種在重復數(shù)據(jù)刪除中支持文件并發(fā)讀寫的方法,解決文件備份程序進行重復數(shù)據(jù)刪除程序時,文件備份程序在存取文件時的延誤錯誤,以及實現(xiàn)文件的并發(fā)讀寫操作。包括在客戶端中運行中斷驅動程序與文件備份程序;客戶端向文件備份程序發(fā)送操作請求,用以對目標文件進行相應的文件操作;由中斷驅動程序攔截操作請求,中斷驅動程序根據(jù)操作請求命令向服務程序進行目標文件的操作。
文檔編號G06F17/30GK102467569SQ20101055582
公開日2012年5月23日 申請日期2010年11月16日 優(yōu)先權日2010年11月16日
發(fā)明者李鴻明, 王云松, 陳志豐 申請人:英業(yè)達股份有限公司