專利名稱:一種Linux系統硬盤數據實時動態保護方法
技術領域:
本發明是針對Linux系統硬盤數據實時監控、快速動態保存及系統受損、癱瘓、甚至崩潰以及丟失數據的情況下瞬時恢復的方法,屬計算機數據安全領域。
背景技術:
由于Linux操作系統本身特有的開放性與穩定性,使Linux操作系統逐漸被更多的用戶所接受。隨著其廣泛的應用,對用戶技術水平的要求也相應提高,Linux系統用戶在應用過程中會出現大量的問題,如誤操作、黑客和人為破壞,而導致計算機癱瘓、數據丟失等現象會使Linux系統無法正常運行,也會對計算機硬盤所存儲的數據造成災難性的破壞。鑒于此,各類數據保護安全措施應運而生,傳統的保護措施是將硬盤里的數據進行文件備份或將Linux系統進行克隆保存,當數據丟失時還原備份文件或系統毀壞時對克隆的原有系統進行恢復。這些方法雖然具備安全效果,但效率低并占用大量的硬盤空間形成計算機資源的浪費。本發明是采用對硬盤數據塊的映射方式進行保護,提高了效率且占據硬盤微小的空間,當系統被災難性的破壞時本發明能夠在瞬間恢復正常。
發明內容
本發明是以BIOS層為基礎,以操作系統層為應用,實現對Linux環境下的硬盤數據進行實時監控的動態保護,將正常的系統狀態進行快速存檔,在系統受損、癱瘓、甚至崩潰的Linux系統以及在丟失數據的情況下瞬時恢復。用本方法開發的軟件,對各種計算機病毒有主動預防的功能,對于操作人員的失誤操作、黑客或人為破壞而導致的計算機癱瘓、數據丟失等故障,無需進行事先備份或克隆,在1-2秒內均可恢復如初,為linux系統的用戶提供了數據安全的保障。
實現這一功能的技術原理采用了“實時動態保護算法”,其具體內容及主要思想如下1、先將整個硬盤空間劃分為N塊(BLOCK),每塊M個扇區(SECTOR),即全部硬盤空間由B0~BN-1構成,其中硬盤起始的M個扇區為B0,末尾的M個扇區為BN-1,整個硬盤空間為N*M扇區,如表1所示
表1硬盤劃分示意表
2、建立塊的類型表BLOCK_TYPE_TABLE,用來定義硬盤每個塊的類型,各類型如表2所示表2塊類型表
表2中所列六種塊類型,前3種類型為初始值。
假設塊的大小M為63個扇區,而上述的6種類型可以采用3個二進制位來表達(23=9>6),也即3個bit可以表示63個扇區,以此則可以計算出該表在硬盤所占空間比率為(3/8)÷(63×512)≈1/100,000,即該表所占空間比率為硬盤總容量的十萬分之一。
3、建立塊指針表BLOCK_POINT_TABLE,用來表示當前塊被影射轉移的塊號。當其表項數值為0~N-1時,表示為有效值,指向影射轉移的塊號,當其表項數值為0FFFFFFH時,表示無效值。
假設塊大小M為63,且采用3個字節作為指針,以此則可以計算出該表在硬盤所占空間比率為3÷(63×512)≈1/10,000,即該表所占空間比率為硬盤總容量的萬分之一。
可以表達的最大硬盤容量計算如下(3×8=24)224×(63×512)≈504GB4、對硬盤進行讀操作時,根據塊的各種類型有著不同的讀取規則,按照如表3所示的讀操作規則進行處理表3塊的讀操作規則表
5、對硬盤進行寫操作時,根據塊的各種類型有著不同的寫操作規則,按照如表4所示的寫操作規則進行處理表4塊的寫操作規則表
6、存檔與恢復算法1)存檔將當前硬盤數據狀態存檔,以后恢復時將保護區數據恢復到此狀態。算法①查找塊類型為1SHADOWED_BLOCK的塊A,如A→B→C→D→…→G其中A為1SHADOWED_BLOCK,B~F為NSHADOWED_BLOCK,G為SHADOW_BLOCK②首先COPY塊B的內容到塊A,并改A的類型為PROTECT_DATA_BLOCK③其次,COPY塊C的內容到塊B,并改塊B的類型為PROTECT_DATA_BLOCK,C→B,D→C,…,F→E。
④最后,COPY塊G內容到塊F,并改F類型為PROTECT_DATA_BLOCK,改G的類型為FREE_BLOCK。
2)恢復算法將硬盤保護區數據恢復到安裝或者最近一次存檔的狀態。
算法起始時將表格BLOCK_TYPE_TABLE做一個備份,恢復只需要用備份覆蓋當前的BLOCK_TYPE_TABLE即可。
主要思想按照1的方式將硬盤空間劃分為N塊,并采用2、3所述數據結構根據LINUX系統文件格式EXT2、EXT3等初始化兩張表格,具體按照4、5、6所述算法通過相關LINUX硬盤驅動程序來實現硬盤訪問操作,即可實現硬盤數據的動態保護。
在Linux環境下實現上述的“實時動態保護算法”,需要通過截獲Linux系統對硬盤的訪問過程來實現。Linux系統將訪問硬盤的數據分成若干個請求包,每個請求包的內容是一系列的讀寫參數,主要包括讀寫扇區的起始地址,扇區數,讀寫命令,硬盤號,讀寫數據的緩沖區等。這些請求包互相連接組成一個請求隊列,等到條件滿足后再一次寫入硬盤。為了實現對Linux系統的動態保護,需要將這些截取到的原請求列隊改變為遵循“實時動態保護算法”規則的新請求列隊,其原請求列隊如表5所示
表5Linux系統訪問硬盤數據的原請求列隊表請求1 請求2 請求3 …… 如果要Linux系統按照“實時動態保護算法”的規則來進行讀寫硬盤的操作,那么就必須改變每個讀寫請求的參數,又因為每個請求包往往不是單個扇區讀寫,所以有時還有要對他們分割。這樣,經過規則處理后的新請求隊列會變成類似如表6所示的狀態表6規則處理后的新請求列隊表 經過對Linux系統訪問硬盤的請求列隊規則化處理,使“實時動態保護算法”在Linux操作系統環境下得以實現。
本發明的有益效果本發明的有益效果體現在以下幾個方面1、對于應用Linux系統的計算機可以進行實時動態保護;2、對于應用Linux系統的計算機,如果系統發生故障或崩潰、癱瘓等現象,可以瞬時恢復至上次存檔時系統正常的狀態。
3、對于應用Linux系統的計算機,如果發生數據丟失的現象,可以瞬時恢復丟失的數據。
4、由于對Linux系統維護的簡單性和實用性,有利于Linux的推廣與應用。
5、可以主動預防各類惡性病毒,使計算機感染各式病毒后可立即恢復至未染病毒前的正常狀態。
5、兼容DOS、Windows系列操作系統及硬盤格式。
6、應用本方法的硬盤占用比率僅為1/100000。
具體實施方法本發明用于Linux系統數據的安全保護。具體的實施步驟將操作系統底層的實時動態保護程序固化于“只讀存儲器ROM”中,“只讀存儲器ROM”來引導計算機的啟動,將其載于一塊具有PC系列微型計算機外部總線插排的印刷電路板上,亦可直接載于計算機主板,在計算機啟動時,首先執行“只讀存儲器ROM”內固化的軟件程序,啟動操作系統。本發明的程序也能存放于計算機軟盤或光盤中,啟動計算機時,以軟盤或光盤引導計算機啟動并執行此程序。經驗證,本發明實現了預期的目的和效果。
下面結合附圖和實施圖例對本發明做進一步說明。
圖1是硬盤劃分示意圖,圖解了本發明核心算法將硬盤進行劃分的示意。柱狀為整個硬盤空間示意圖。其中B0~Bn-1代表塊號,即將硬盤空間分為n塊;SECTOR 0~SECTOR N*M-1代表硬盤的全部扇區。
圖2是實時動態保護的存檔算法示意圖,示意了硬盤塊的類型在存檔前與存檔后的屬性變化,正是此屬性的變化,實現了硬盤的實時動態保護。圖中上半部A表示原始塊;B~F表示原影射塊;G表示映射塊;下半部A~F表示保護數據塊;G表示空閑塊。
具體的實現過程如下查找塊類型為1SHADOWED_BLOCK的塊A,如A→B→C→D→…→G其中A為1SHADOWED_BLOCK,當一個PROTECT_DATA_BLOCK類型的原始塊寫操作時,寫入數據實際上被影射寫到一個FREE_BLOCK類型的塊b(b的類型將被修改為SHADOW_BLOCK),為了保持數據的一致性,則以后對塊A的讀寫訪問也相應將被影射到塊b,因此將塊A的類型修改為1SHADOWED_BLOCK。
B~F為NSHADOWED_BLOCK,當一個SHADOW_BLOCK類型的塊a寫入操作時,由于其中原有數據為其它數據塊的影射體,不能被破壞,所以需申請一個FREE_BLOCK類型的塊b來存放原本要寫入該數據塊的數據,此FREE_BLOCK類型的塊b將被修改為SHADOW_BLOCK類型,表示其為對應塊SHADOW_BLOCK的影射體(SHADOW),而將塊SHADOW_BLOCK的類型修改為NSHADOWED_BLOCK,表示其自身原為SHADOW_BLOCK類型,但又再次被影射到其它塊。
G為SHADOW_BLOCK當一個PROTECT_DATA_BLOCK類型的塊a寫操作時,為保護該數據塊不被破壞,從而申請一個FREE_BLOCK類型的塊b來存放原本要寫入該數據塊的數據,此FREE_BLOCK類型的塊b將被修改為SHADOW_BLOCK類型,表示其為對應原PROTECT_DATA_BLOCK類型的塊a的影射體(SHADOW)。
首先COPY塊B的內容到塊A,并改A的類型為PROTECT_DATA_BLOCK其次,COPY塊C的內容到塊B,并改塊B的類型為PROTECT_DATA_BLOCK,C→B,D→C,…,F→E。
最后,COPY塊G內容到塊F,并改F類型為PROTECT_DATA_BLOCK,改G的類型為FREE_BLOCK。
權利要求
一種Linux系統硬盤數據實時動態保護方法,其特征是采用實時動態保護算法按如下步驟來實現1、將整個硬盤空間劃分為N塊并定義塊的類型屬性。
2.建立塊的類型表并定義硬盤每個塊所屬的類型。
3.建立塊的指針表,表示當前塊被影射轉移的塊號當其表項數值為0~N-1時,表示為有效值,指向影射轉移的塊號;當其表項數值為0FFFFFFH時,表示無效值。
4.取Linux系統讀寫硬盤的請求包,改變其參數以適應下述讀寫規則讀操作屬性為空閑塊、需保護數據塊、非保護數據塊、映射塊時,可直接讀取;屬性為原始塊、原映射塊則根據指針表的指向而讀取。寫操作屬性為空閑塊、非保護數據塊時,可直接寫;屬性為需保護數據塊、映射塊時,要申請一個空閑塊并改為映射塊后寫入;屬性為原始塊、原映射塊時,則根據指針表的指向進行寫操作。
5.存檔時,將所有類型初始為空閑塊、需保護數據塊、非保護數據塊三種類型,并備份類型表。
6.當系統故障或丟失數據需要恢復時,將備份的類型表覆蓋當前類型表即可。
全文摘要
本發明是以BIOS層為基礎,以操作系統層為應用,實現對Linux環境下硬盤數據的實時監控和動態保護,將正常的系統快速存檔,當系統受損、甚至崩潰以及丟失數據的情況下可瞬時恢復。針對傳統的Linux系統硬盤數據安全保護措施,所采用文件備份或克隆保存及鏡像保存等方法,存在效率低并占用了大量硬盤空間的缺點。本發明采用對硬盤數據的映射方式進行保護,提高了效率且占據硬盤微小的空間,克服了傳統技術的缺點。本發明的程序能載于軟盤、光盤或“只讀存儲器RON”中引導計算機的啟動并執行此程序。本發明適用于任何以應用Linux為操作系統的安全領域。
文檔編號G06F12/14GK1637726SQ0311449
公開日2005年7月13日 申請日期2003年2月17日 優先權日2003年2月17日
發明者張有成 申請人:張有成