專利名稱:一種恢復(fù)數(shù)據(jù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種恢復(fù)數(shù)據(jù)的方法及裝置。
背景技術(shù):
通常在UNIX和Linux等環(huán)境中,為了避免進(jìn)程異常退出而導(dǎo)致重要數(shù)據(jù)丟 失,通常會(huì)把重要的數(shù)據(jù)保存到數(shù)據(jù)庫中,通過應(yīng)用程序編程接口 (Application Programming Interface, API )或結(jié)構(gòu)化查詢語言(Structured Query Language, SQL) 語句直接訪問和修改數(shù)據(jù)庫中的數(shù)據(jù),這樣在進(jìn)程重新啟動(dòng)等情況下時(shí)就可以 方便的從數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)恢復(fù)。
但是,由于數(shù)據(jù)庫訪問通常包含API調(diào)用、SQL解析、網(wǎng)絡(luò)傳輸?shù)炔襟E, 如果把所有的數(shù)據(jù)都通過數(shù)據(jù)庫技術(shù)進(jìn)行恢復(fù),則系統(tǒng)會(huì)變得非常復(fù)雜,并且 數(shù)據(jù)庫的運(yùn)行性能可能也會(huì)降低。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于,提供一種恢復(fù)數(shù)據(jù)的方法及裝置。可簡 單高效的進(jìn)行數(shù)據(jù)恢復(fù)。
為了解決上述技術(shù)問題, 一方面,本發(fā)明的實(shí)施例提供了一種恢復(fù)數(shù)據(jù)的 方法,包括獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件;檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否有數(shù)據(jù)恢復(fù)標(biāo) 記;若檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記,則根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度信息 獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件中保存的相應(yīng)的數(shù)據(jù)塊;對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校驗(yàn);若 所述正確性才L瞼結(jié)果為正確,則恢復(fù)所述lt據(jù)塊。
另一方面,本發(fā)明的實(shí)施例提供了一種恢復(fù)數(shù)據(jù)的裝置,包括第一獲取 單元,用于獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件;檢查單元,用于檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否 有數(shù)據(jù)恢復(fù)標(biāo)記;第二獲取單元,若所述檢查單元檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記, 則所述第二獲取單元用于根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度信息獲取內(nèi)存轉(zhuǎn) 儲(chǔ)文件中保存的相應(yīng)的數(shù)據(jù)塊;校驗(yàn)單元,用于對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校驗(yàn);恢復(fù)單元,若所述校驗(yàn)單元的正確性校驗(yàn)結(jié)果為正確,則所述恢復(fù)單元用于恢 復(fù)所述數(shù)據(jù)塊。
同時(shí),本發(fā)明的實(shí)施例還提供了包括上述恢復(fù)數(shù)據(jù)的裝置的數(shù)據(jù)庫和計(jì)算機(jī)。
在本發(fā)明實(shí)施例中,利用內(nèi)存轉(zhuǎn)儲(chǔ)文件作為數(shù)據(jù)恢復(fù)源,而不需要在進(jìn)行 運(yùn)行時(shí)同步數(shù)據(jù)到數(shù)據(jù)庫,降低了維護(hù)數(shù)據(jù)庫的復(fù)雜度。同時(shí),由于沒有運(yùn)行 時(shí)持久化的消息交互和磁盤訪問,提高了產(chǎn)品運(yùn)行時(shí)的性能,降低了產(chǎn)品運(yùn)營 和維護(hù)成本。
圖1是本發(fā)明實(shí)施例中恢復(fù)數(shù)據(jù)的方法的流程示意圖; 圖2是本發(fā)明實(shí)施例中恢復(fù)數(shù)據(jù)的裝置的組成示意圖; 圖3是本發(fā)明實(shí)施例中恢復(fù)數(shù)據(jù)結(jié)構(gòu)的示意圖; 圖4是本發(fā)明實(shí)施例中內(nèi)存轉(zhuǎn)儲(chǔ)文件的示意圖; 圖5是本發(fā)明實(shí)施例中檢查數(shù)據(jù)恢復(fù)標(biāo)記的示意圖。
具體實(shí)施例方式
通常在UNIX、 Linux等環(huán)境中,進(jìn)程異常(例如無效地址訪問)會(huì)導(dǎo)致 進(jìn)程退出,并把內(nèi)存的信息全部轉(zhuǎn)存到core (磁芯存儲(chǔ))文件中。該core文件 通常稱為內(nèi)存轉(zhuǎn)儲(chǔ)文件(或coredump文件、core文件,在有些操作系統(tǒng)上可以 設(shè)置這個(gè)文件的后綴,比如"core.xxxxxx,,等,"xxxxxx"通常是進(jìn)程名加上日期產(chǎn) 生的一串?dāng)?shù)字)。因此,coredump文件正好保存了進(jìn)程異常退出時(shí)的內(nèi)存信息, 所以理論上是可以從coredump文件中恢復(fù)進(jìn)程所需的數(shù)據(jù)的。
如圖1所示,為本發(fā)明實(shí)施例中恢復(fù)數(shù)據(jù)的方法的流程示意圖。該方法主 要包括如下步驟
101、獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件。所述內(nèi)存轉(zhuǎn)儲(chǔ)文件可為coredump文件、core文件等。
當(dāng)進(jìn)程異常退出并產(chǎn)生內(nèi)存轉(zhuǎn)儲(chǔ)文件后,若需要進(jìn)行數(shù)據(jù)恢復(fù),則需要首 先查找到相應(yīng)的內(nèi)存轉(zhuǎn)儲(chǔ)文件。進(jìn)行數(shù)據(jù)恢復(fù)的原因可能是需要恢復(fù)原來異常 的進(jìn)程,則此時(shí),為重新啟動(dòng)的應(yīng)用進(jìn)程在啟動(dòng)時(shí)查找對(duì)應(yīng)的內(nèi)存轉(zhuǎn)儲(chǔ)文件;若進(jìn)行數(shù)據(jù)恢復(fù)的原因僅僅是為了讀取原異常進(jìn)程中的部分內(nèi)存數(shù)據(jù),則只需 進(jìn)程標(biāo)記獲取相應(yīng)的內(nèi)存轉(zhuǎn)儲(chǔ)文件即可。
102、 檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否有數(shù)據(jù)恢復(fù)標(biāo)記。
在獲取了內(nèi)存轉(zhuǎn)儲(chǔ)文件后,打開該文件,并查找文件中是否有數(shù)據(jù)恢復(fù)標(biāo) 記。可以二進(jìn)制文件方式打開該文件,采用順序讀并斥企查讀取內(nèi)容的方式,尋 找數(shù)據(jù)恢復(fù)標(biāo)記。
需要說明的是在同 一個(gè)內(nèi)存轉(zhuǎn)儲(chǔ)文件中可能存在多個(gè)數(shù)據(jù)恢復(fù)標(biāo)記,每個(gè) 數(shù)據(jù)恢復(fù)標(biāo)記用于標(biāo)記一段數(shù)據(jù)塊。該數(shù)據(jù)恢復(fù)標(biāo)記可以是一個(gè)特殊的數(shù)值, 也可以是類似的能夠唯一標(biāo)示一個(gè)數(shù)據(jù)的標(biāo)識(shí),比如全局唯一標(biāo)識(shí)符(Globally Unique Identifier, GUID )。
103、 若檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記,則根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度 信息獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件中保存的相應(yīng)的數(shù)據(jù)塊。
104、 對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校驗(yàn)。校驗(yàn)的方法具體可為先生成相應(yīng)的 數(shù)據(jù)塊的正確性校驗(yàn)碼;再驗(yàn)證所述正確性校驗(yàn)碼與所述數(shù)據(jù)塊的預(yù)存的正確 性校驗(yàn)碼是否相同,若相同則表明所述正確性校驗(yàn)的結(jié)果為正確。
其中,正確性校驗(yàn)碼可為循環(huán)冗余碼校驗(yàn)碼,也可為信息摘要算法5 MD5 中的信息摘要。
105、 若所述正確性校驗(yàn)結(jié)果為正確,則恢復(fù)所述數(shù)據(jù)塊。 若進(jìn)行數(shù)據(jù)恢復(fù)的原因是重新啟動(dòng)進(jìn)程的話,則本步包括根據(jù)相應(yīng)的數(shù)
據(jù)標(biāo)記確定該數(shù)據(jù)塊應(yīng)對(duì)應(yīng)應(yīng)用進(jìn)程的哪一部分?jǐn)?shù)據(jù),以確定數(shù)據(jù)塊需要恢復(fù) 到的內(nèi)存位置;將所述數(shù)據(jù)塊中的數(shù)據(jù)存儲(chǔ)到所述應(yīng)用進(jìn)程對(duì)應(yīng)的內(nèi)存位置上。
若僅僅是希望獲取原進(jìn)程中的數(shù)據(jù)的話,則只要根據(jù)數(shù)據(jù)標(biāo)記獲取校驗(yàn)正 確的數(shù)據(jù)塊的相應(yīng)內(nèi)容即可。
同時(shí),在同一內(nèi)存轉(zhuǎn)儲(chǔ)文件可能存在多段數(shù)據(jù)塊及其相應(yīng)數(shù)據(jù)恢復(fù)標(biāo)記, 則本方法中在獲得內(nèi)存轉(zhuǎn)儲(chǔ)文件后,在102步驟中可釆用循序檢查的方法檢查 數(shù)據(jù)恢復(fù)標(biāo)記,在檢查到一個(gè)數(shù)據(jù)恢復(fù)標(biāo)記時(shí)即執(zhí)行103 105步驟,并在105 執(zhí)行完后接著上一次檢查結(jié)束的位置檢查是否還有下一個(gè)數(shù)據(jù)恢復(fù)標(biāo)記。即以 順序檢查內(nèi)存轉(zhuǎn)儲(chǔ)文件的方式循環(huán)的執(zhí)行102~105步驟,直至檢查完整個(gè)內(nèi)存 轉(zhuǎn)儲(chǔ)文件。
或者也可以在步驟102中, 一次檢查出同一內(nèi)存轉(zhuǎn)儲(chǔ)文件中所有的數(shù)據(jù)恢復(fù)標(biāo)記,并根據(jù)各個(gè)標(biāo)記執(zhí)行步驟103~105,以恢復(fù)相應(yīng)的數(shù)據(jù)塊。
此外,在本方法中所需要使用的信息數(shù)據(jù)恢復(fù)標(biāo)記、數(shù)據(jù)塊長度信息、
正確性校驗(yàn)碼以及數(shù)據(jù)標(biāo)記等信息,可以定義為一個(gè)恢復(fù)數(shù)據(jù)結(jié)構(gòu),并在進(jìn)程
運(yùn)行時(shí)對(duì)該結(jié)構(gòu)中的相應(yīng)內(nèi)容進(jìn)行賦值,具體見后述實(shí)施例中的描述。
相應(yīng)的,如圖2所示,為本發(fā)明中一種恢復(fù)數(shù)據(jù)的裝置的具體實(shí)施例的組
成示意圖。該裝置包括
第一獲取單元l,用于獲取內(nèi)存轉(zhuǎn)儲(chǔ)內(nèi)存轉(zhuǎn)儲(chǔ)文件。所述內(nèi)存轉(zhuǎn)儲(chǔ)文件可為
coredump文件、core文件等。
檢查單元2,用于檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否有數(shù)據(jù)恢復(fù)標(biāo)記。 第二獲取單元3,若所述檢查單元2檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記,則所述第二
獲取單元3用于根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度信息獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件中
保存的相應(yīng)的數(shù)據(jù)塊。
校驗(yàn)單元4,用于對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校驗(yàn)。校驗(yàn)單元4可進(jìn)一步包括
生成子單元,用于生成相應(yīng)的數(shù)據(jù)塊的正確性校驗(yàn)碼;驗(yàn)證字單元,用于驗(yàn)證
明所述正確性4文驗(yàn)的結(jié)果為正確。
恢復(fù)單元5,若所述4交驗(yàn)單元4的正確性^^驗(yàn)結(jié)果為正確,則所述恢復(fù)單元 5用于恢復(fù)所述數(shù)據(jù)塊?;謴?fù)單元4可進(jìn)一步包括確定子單元,用于根據(jù)相應(yīng) 的數(shù)據(jù)標(biāo)記確定該數(shù)據(jù)塊應(yīng)對(duì)應(yīng)應(yīng)用進(jìn)程的哪一部分?jǐn)?shù)據(jù),以確定其應(yīng)存儲(chǔ)的 內(nèi)存位置;存儲(chǔ)子單元,用于將所述數(shù)據(jù)塊中的數(shù)據(jù)存儲(chǔ)到所述應(yīng)用進(jìn)程對(duì)應(yīng) 的內(nèi)存位置上。
本裝置還可同時(shí)包括下述兩個(gè)單元
生成單元6,用于生成數(shù)據(jù)恢復(fù)文件,所述數(shù)據(jù)恢復(fù)文件中包括對(duì)恢復(fù)數(shù)據(jù) 結(jié)構(gòu)的描述,所述恢復(fù)數(shù)據(jù)結(jié)構(gòu)中定義了數(shù)據(jù)恢復(fù)標(biāo)記字段、數(shù)據(jù)塊長度信息 字段、正確性校驗(yàn)碼字段以及數(shù)據(jù)標(biāo)記字段;
存入單元7,用于在進(jìn)程運(yùn)行時(shí),向所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中存入所述恢復(fù)凄t據(jù) 結(jié)構(gòu)中定義的字段的值。
其中,上述描述中出現(xiàn)的數(shù)據(jù)恢復(fù)標(biāo)記、數(shù)據(jù)塊長度、正確性校驗(yàn)碼以及 數(shù)據(jù)標(biāo)記等與上述方法描述中的 一致。
同時(shí),在實(shí)現(xiàn)本發(fā)明的具體實(shí)施例時(shí),可以在數(shù)據(jù)庫中設(shè)置相應(yīng)的恢復(fù)數(shù)據(jù)的裝置,也可以在計(jì)算機(jī)中或具有處理數(shù)據(jù)功能的設(shè)備中設(shè)置所述的恢復(fù)數(shù) 據(jù)的裝置。
其中,所述恢復(fù)數(shù)據(jù)的裝置與數(shù)據(jù)庫或計(jì)算機(jī)中相應(yīng)的存儲(chǔ)裝置相連(如 存儲(chǔ)所述內(nèi)存轉(zhuǎn)儲(chǔ)文件的存儲(chǔ)裝置、存儲(chǔ)恢復(fù)數(shù)據(jù)的存儲(chǔ)裝置等),以便所述恢 復(fù)數(shù)據(jù)的裝置可以對(duì)相關(guān)的內(nèi)存轉(zhuǎn)儲(chǔ)文件進(jìn)行相應(yīng)的操作,如讀取或存入等, 以及對(duì)恢復(fù)的數(shù)據(jù)進(jìn)行存儲(chǔ)等操作。
同時(shí),所述恢復(fù)數(shù)據(jù)的裝置還可以和數(shù)據(jù)庫或計(jì)算機(jī)中其他相應(yīng)的可控制 數(shù)據(jù)恢復(fù)的裝置相連,以便對(duì)所述恢復(fù)數(shù)據(jù)的裝置進(jìn)行數(shù)據(jù)恢復(fù)的控制。
由上述描述可知,在上述具體實(shí)施例中,恢復(fù)數(shù)據(jù)的裝置利用內(nèi)存轉(zhuǎn)儲(chǔ)文 件作為數(shù)據(jù)恢復(fù)源,而不需要在進(jìn)行運(yùn)行時(shí)同步數(shù)據(jù)到數(shù)據(jù)庫,降低了一般數(shù) 據(jù)庫持久化帶來的產(chǎn)品復(fù)雜度。同時(shí),由于沒有過多的消息交互和磁盤訪問, 提高了具有該恢復(fù)數(shù)據(jù)的裝置的產(chǎn)品(如數(shù)據(jù)庫或計(jì)算機(jī))運(yùn)行時(shí)的性能,降 低了產(chǎn)品運(yùn)營和維護(hù)成本。
下面,結(jié)合一個(gè)更詳細(xì)的例子,對(duì)上述方法進(jìn)行描述。
對(duì)于一個(gè)需要具有本發(fā)明實(shí)施例中所描述的數(shù)據(jù)恢復(fù)功能的應(yīng)用程序,首
先需要在應(yīng)用程序數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)中增加一個(gè)輔助的數(shù)據(jù)結(jié)構(gòu)memhead—t作為
恢復(fù)數(shù)據(jù)結(jié)構(gòu),如圖3所示。對(duì)應(yīng)的C語言的聲明如下 struct memhead—t
{ 一
long memflag'-long pairam'. long len,-long CRC,'
其中各個(gè)字段的含義解釋如下
memflag:即上述的勒:據(jù)恢復(fù)標(biāo)記的一種具體形式,用于標(biāo)記一個(gè)可從內(nèi)存 轉(zhuǎn)儲(chǔ)文件恢復(fù)數(shù)據(jù)塊的內(nèi)存起始位置,可以使用一個(gè)特殊的數(shù)值,比如 0x43215678 (后述部分都采用這個(gè)數(shù)值進(jìn)行說明),也可以使用類似的能夠唯一 標(biāo)示一個(gè)4丈據(jù)的凝:據(jù)結(jié)構(gòu),比如GUID。其中,所述內(nèi)存轉(zhuǎn)儲(chǔ)文件可為coredump 文件、core文件等。
param:即上述的數(shù)據(jù)標(biāo)記的一個(gè)具體示例。此處稱為應(yīng)用程序數(shù)據(jù)塊自定 義參數(shù),由應(yīng)用程序定義其用途。例如,當(dāng)應(yīng)用程序存在多個(gè)數(shù)據(jù)塊的情況下, 可以在應(yīng)用程序初始化時(shí),將每個(gè)數(shù)據(jù)塊的pamm值設(shè)置為數(shù)據(jù)塊ID,在恢復(fù)階段通過檢查pamm,而區(qū)分出多個(gè)數(shù)據(jù)塊。
len:用于確定memhead—t結(jié)構(gòu)后面的應(yīng)用程序數(shù)據(jù)塊的大小。
CRC:用于校驗(yàn)從內(nèi)存轉(zhuǎn)儲(chǔ)文件恢復(fù)的應(yīng)用程序數(shù)據(jù)塊的有效性。當(dāng)應(yīng)用 程序數(shù)據(jù)塊的內(nèi)容發(fā)生變化時(shí),需要根據(jù)數(shù)據(jù)塊的內(nèi)容用循環(huán)冗余碼校驗(yàn)算法 重新計(jì)算該字段的值(也可以使用類似的能夠保證數(shù)據(jù)完整性的算法,比如 MD5算法;或者能夠記錄應(yīng)用進(jìn)程數(shù)據(jù)塊的狀態(tài)的算法和數(shù)據(jù)結(jié)構(gòu))。若數(shù)據(jù)塊 為正常的數(shù)據(jù)塊,則重新計(jì)算的該字段的值與原來計(jì)算的值一致,只有當(dāng)數(shù)據(jù) 塊異常(如,當(dāng)前進(jìn)程正在修改數(shù)據(jù)塊值時(shí),突然異常退出,即該數(shù)據(jù)塊值可 能只修改了部分)時(shí),CRC值會(huì)改變。
當(dāng)定義了上述數(shù)據(jù)結(jié)構(gòu)的應(yīng)用程序運(yùn)行時(shí),會(huì)創(chuàng)建相應(yīng)的應(yīng)用進(jìn)程數(shù)據(jù)塊 (動(dòng)態(tài)創(chuàng)建,或者靜態(tài)分配都可以)。并初始化應(yīng)用進(jìn)程數(shù)據(jù)塊的memhead—t信 息,包括設(shè)置memflag為0x43215678,由應(yīng)用進(jìn)程填寫param字段,根據(jù)應(yīng) 用進(jìn)程數(shù)據(jù)塊的長度填寫len,最后根據(jù)應(yīng)用進(jìn)程數(shù)據(jù)塊,用循環(huán)冗余碼校驗(yàn)算 法計(jì)算出循環(huán)冗余碼校驗(yàn)碼,并填入CRC字段。
進(jìn)程運(yùn)行過程中當(dāng)應(yīng)用程序的數(shù)據(jù)發(fā)生變化時(shí),需要在修改完成后,需要 重新計(jì)算對(duì)應(yīng)的memhead的CRC。
則當(dāng)進(jìn)程異常退出時(shí),所存儲(chǔ)的內(nèi)存轉(zhuǎn)儲(chǔ)文件的情況可如圖4所示。
當(dāng)需要恢復(fù)上述應(yīng)用進(jìn)程時(shí),恢復(fù)的應(yīng)用進(jìn)程啟動(dòng)后首先查找對(duì)應(yīng)的內(nèi)存 轉(zhuǎn)儲(chǔ)文件,并以二進(jìn)制文件方式打開該內(nèi)存轉(zhuǎn)儲(chǔ)文件,順序讀取該文件(圖5 中所示為,人底部往頂部方向順序讀取,當(dāng)然,也可以采用其他方向的順序讀取 方式),同時(shí),檢查讀取的內(nèi)容是否為memflag,如圖5所示。
當(dāng)找到標(biāo)記時(shí),對(duì)相應(yīng)的數(shù)據(jù)塊使用循環(huán)冗余碼校驗(yàn)算法計(jì)算出循環(huán)冗余 碼校驗(yàn)碼,并和memhead一t的CRC進(jìn)行比較,看是否一致。
如果校-瞼CRC —致,則說明數(shù)據(jù)塊在coredump時(shí)是完整的,可以進(jìn)行恢 復(fù),并檢查param參數(shù),確定是哪一個(gè)應(yīng)用進(jìn)程數(shù)據(jù)塊,最后把coredump中保 存的數(shù)據(jù)恢復(fù)到進(jìn)程對(duì)應(yīng)內(nèi)存位置上。
重復(fù)搜索-校驗(yàn)-恢復(fù)過程,直至完全搜索完整個(gè)內(nèi)存轉(zhuǎn)儲(chǔ)文件為止。
由上述描述可知,在本發(fā)明實(shí)施例中,利用內(nèi)存轉(zhuǎn)儲(chǔ)文件作為數(shù)據(jù)恢復(fù)源, 而不需要在進(jìn)行運(yùn)行時(shí)同步數(shù)據(jù)到數(shù)據(jù)庫,降低了一般數(shù)據(jù)庫持久化帶來的產(chǎn) 品復(fù)雜度。同時(shí),由于減少了消息交互和磁盤訪問,提高了了具有該恢復(fù)數(shù)據(jù)的裝置的產(chǎn)品(如數(shù)據(jù)庫或計(jì)算機(jī))運(yùn)行時(shí)的性能,降低了產(chǎn)品運(yùn)營和維護(hù)成 本。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所迷作為分離部件說明的 單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也 可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。 可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目 的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施 方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過^/f牛。 基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以 以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介
質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備 (可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例 的某些部分所述的方法。
以上所述的實(shí)施方式,并不構(gòu)成對(duì)該技術(shù)方案保護(hù)范圍的限定。任何在上 述實(shí)施方式的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在該 技術(shù)方案的保護(hù)范圍之內(nèi)。
以上所揭露的僅為本發(fā)明的實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán) 利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1、一種恢復(fù)數(shù)據(jù)的方法,其特征在于,所述方法包括獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件;檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否有數(shù)據(jù)恢復(fù)標(biāo)記;若檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記,則根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度信息獲取所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中保存的相應(yīng)的數(shù)據(jù)塊;對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校驗(yàn);若所述正確性校驗(yàn)結(jié)果為正確,則恢復(fù)所述數(shù)據(jù)塊。
2、如權(quán)利要求l所述的方法,其特征在于,在所述獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件之前 還包括生成數(shù)據(jù)恢復(fù)文件,所述數(shù)據(jù)恢復(fù)文件中包括對(duì)恢復(fù)lt據(jù)結(jié)構(gòu)的描述,所 述恢復(fù)數(shù)據(jù)結(jié)構(gòu)中定義了數(shù)據(jù)恢復(fù)標(biāo)記字段、數(shù)據(jù)塊長度信息字段以及正確性 校驗(yàn)碼字段。
3、如權(quán)利要求2所述的方法,其特征在于,所述恢復(fù)數(shù)據(jù)結(jié)構(gòu)中還定義了 數(shù)據(jù)標(biāo)記字段。
4、如權(quán)利要求2或3所述的方法,其特征在于,所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中保存 了所述恢復(fù)數(shù)據(jù)結(jié)構(gòu)中定義的字段的值。
5、如權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述對(duì)所述數(shù)據(jù) 塊進(jìn)行正確性校驗(yàn)包括生成相應(yīng)的數(shù)據(jù)塊的正確性校驗(yàn)碼;相同則表明所述正確性校驗(yàn)的結(jié)果為正確。
6、如權(quán)利要求5所述的方法,其特征在于,所述正確性校驗(yàn)碼為循環(huán)冗余 碼校驗(yàn)碼,或者為,信息摘要算法中的信息摘要。
7、如權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述恢復(fù)所述數(shù) 據(jù)塊包括根據(jù)相應(yīng)的數(shù)據(jù)標(biāo)記確定數(shù)據(jù)塊恢復(fù)時(shí)對(duì)應(yīng)的所述應(yīng)用進(jìn)程的數(shù)據(jù)位置, 以確定所述數(shù)據(jù)塊應(yīng)存儲(chǔ)的內(nèi)存位置;將所述數(shù)據(jù)塊中的數(shù)據(jù)存儲(chǔ)到所述應(yīng)用進(jìn)程對(duì)應(yīng)的內(nèi)存位置上。
8、 一種恢復(fù)數(shù)據(jù)的裝置,其特征在于,所述裝置包括第一獲取單元,用于獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件;檢查單元,用于檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否有數(shù)據(jù)恢復(fù)標(biāo)記;第二獲取單元,若所述檢查單元檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記,則所述第二獲取單元用于根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度信息獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件中保存 的相應(yīng)的數(shù)據(jù)塊;校驗(yàn)單元,用于對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校^r;恢復(fù)單元,若所述校驗(yàn)單元的正確性校驗(yàn)結(jié)果為正確,則所述恢復(fù)單元用 于恢復(fù)所述數(shù)據(jù)塊。
9、如權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括生成單元,用于生成數(shù)據(jù)恢復(fù)文件,所述數(shù)據(jù)恢復(fù)文件中包括對(duì)恢復(fù)數(shù)據(jù)結(jié)構(gòu)的描述,所述恢復(fù)數(shù)據(jù)結(jié)構(gòu)中定義了數(shù)據(jù)恢復(fù)標(biāo)記字段、數(shù)據(jù)塊長度信息字段、正確性校驗(yàn)碼字段以及數(shù)據(jù)標(biāo)記字段;存入單元,用于在進(jìn)程運(yùn)行時(shí),向所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中存入所述恢復(fù)數(shù)據(jù)結(jié)構(gòu)中定義的字段的值。
10、如權(quán)利要求8或9所述的裝置,其特征在于,所述校驗(yàn)單元包括: 生成子單元,用于生成相應(yīng)的數(shù)據(jù)塊的正確性校驗(yàn)碼; 驗(yàn)證字單元,用于驗(yàn)證所述正確性校驗(yàn)碼與所述數(shù)據(jù)塊的預(yù)存的正確 -瞼碼是否相同,若相同則表明所述正確性沖t瞼的結(jié)果為正確。
11、如權(quán)利要求IO所述的裝置,其特征在于,所述恢復(fù)單元包括:確定子單元,用于根據(jù)相應(yīng)的數(shù)據(jù)標(biāo)記確定數(shù)據(jù)塊恢復(fù)時(shí)對(duì)應(yīng)的所述應(yīng)用進(jìn)程的數(shù)據(jù)位置,以確定所述數(shù)據(jù)塊應(yīng)存儲(chǔ)的內(nèi)存位置;存儲(chǔ)子單元,用于將所述數(shù)據(jù)塊中的數(shù)據(jù)存儲(chǔ)到所述應(yīng)用進(jìn)程對(duì)應(yīng)的內(nèi)存 位置上。
12、 一種數(shù)據(jù)庫,其特征在于,所述數(shù)據(jù)庫具有如權(quán)利要求8至11中任一 項(xiàng)所述的恢復(fù)lt據(jù)的裝置。
13、 一種計(jì)算機(jī),其特征在于,所述計(jì)算機(jī)具有如權(quán)利要求8至11中任一 項(xiàng)所述的恢復(fù)數(shù)據(jù)的裝置。
全文摘要
本發(fā)明公開了一種恢復(fù)數(shù)據(jù)的方法及裝置,該方法包括獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件;檢查所述內(nèi)存轉(zhuǎn)儲(chǔ)文件中是否有數(shù)據(jù)恢復(fù)標(biāo)記;若檢查到所述數(shù)據(jù)恢復(fù)標(biāo)記,則根據(jù)所述數(shù)據(jù)恢復(fù)標(biāo)記和數(shù)據(jù)塊長度信息獲取內(nèi)存轉(zhuǎn)儲(chǔ)文件中保存的相應(yīng)的數(shù)據(jù)塊;對(duì)所述數(shù)據(jù)塊進(jìn)行正確性校驗(yàn);若所述正確性校驗(yàn)結(jié)果為正確,則恢復(fù)所述數(shù)據(jù)塊。采用本發(fā)明,可以簡單高效的進(jìn)行數(shù)據(jù)恢復(fù)。
文檔編號(hào)G06F11/14GK101308471SQ200810028419
公開日2008年11月19日 申請(qǐng)日期2008年5月30日 優(yōu)先權(quán)日2008年5月30日
發(fā)明者耿 張 申請(qǐng)人:華為技術(shù)有限公司