專利名稱::基于塊級(jí)的增量備份和整卷恢復(fù)的方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)增量備份和恢復(fù)領(lǐng)域,具體是基于塊級(jí)的增量備份和整巻恢復(fù)的方法。技術(shù)背景在文件增量備份和恢復(fù)領(lǐng)域,一般的方法,是采用備份增量文件的方法。例如用戶修改了某個(gè)文件,就把整個(gè)文件備份起來。而其實(shí)用戶只修改了部分?jǐn)?shù)據(jù),此種備份方法造成大量數(shù)據(jù)冗余。
發(fā)明內(nèi)容本發(fā)明提供一種基于塊級(jí)的增量備份和整巻恢復(fù)的方法,本發(fā)明方法是以數(shù)據(jù)塊為單位備份,粒度很小,可以真正捕獲到增量數(shù)據(jù)。本發(fā)明的技術(shù)解決方案是一種基于塊級(jí)的增量備份和整巻恢復(fù)的方法,包括以下步驟首先,劃分存儲(chǔ)介質(zhì)和備份介質(zhì);(1)基礎(chǔ)備份確定備份介質(zhì)后,第一步初始化備份庫和索引庫,使之處于正常工作狀態(tài);第二步存儲(chǔ)介質(zhì)做基礎(chǔ)備份;(2)記錄操作系統(tǒng)的讀寫基礎(chǔ)備份完成后,操作系統(tǒng)安裝一個(gè)磁盤讀寫的記錄程序,記錄操作系統(tǒng)對(duì)存儲(chǔ)介質(zhì)的讀寫操作;(3)增量備份在目標(biāo)機(jī)器上,用戶可以手工或每隔一定時(shí)間做一次增量數(shù)據(jù)備份,增量備份時(shí),系統(tǒng)可以正常運(yùn)行;(4)快速恢復(fù)或裸巻恢復(fù)根據(jù)快速恢復(fù)或裸巻恢復(fù)指令,存儲(chǔ)介質(zhì)上數(shù)據(jù)恢復(fù)至指定的以前時(shí)間點(diǎn)的數(shù)據(jù)狀態(tài)快速恢復(fù)是指以存儲(chǔ)介質(zhì)上數(shù)據(jù)的當(dāng)前狀態(tài)為基礎(chǔ),回滾到以前的備份點(diǎn);裸巻恢復(fù)是恢復(fù)的另外一種方法,它以基礎(chǔ)備份為基礎(chǔ),不依賴當(dāng)前數(shù)據(jù)狀態(tài),因此,可以在空存儲(chǔ)介質(zhì)上恢復(fù)指定時(shí)間點(diǎn)的數(shù)據(jù);(5)更新基礎(chǔ)備份根據(jù)更新基礎(chǔ)備份指令,把基礎(chǔ)備份往后移動(dòng)到指定的備份點(diǎn)上,從而釋放之前的備份點(diǎn)占有空間。所述的存儲(chǔ)介質(zhì)和備份介質(zhì)可以在同一物理設(shè)備上,只是存儲(chǔ)區(qū)域不同;也可以是不同的物理設(shè)備,通過網(wǎng)絡(luò)相連。所述的基礎(chǔ)備份的流程如下(1)掃描存儲(chǔ)介質(zhì)的有效數(shù)據(jù)塊;(2)把掃描得到的有效數(shù)據(jù)塊存儲(chǔ)到備份庫中;(3)把數(shù)據(jù)塊的備份塊號(hào),備份時(shí)間,備份庫Id號(hào)作為一項(xiàng)記錄存儲(chǔ)到索引庫。所述的磁盤讀寫記錄具體的記錄方法是,在存儲(chǔ)介質(zhì)上存放一張?jiān)隽繑?shù)據(jù)位表,位表中的每一位表示一個(gè)數(shù)據(jù)塊,位等于l表示從上次增量備份之后,此塊被寫過,位等于O表示從上次增量備份之后,沒被寫過,當(dāng)操作系統(tǒng)寫數(shù)據(jù)的時(shí)候,需要在增量數(shù)據(jù)位表中找到所在塊位置,然后把相應(yīng)位置l。增量備份主要步驟是(1).備份當(dāng)前的增量數(shù)據(jù)位表,備份表記為tablel,并清零當(dāng)前的增量數(shù)據(jù)位表,記為table0;(2).根據(jù)tablel的內(nèi)容,備份增量數(shù)據(jù)塊,凡是tablel內(nèi)位等于1的數(shù)據(jù)塊,都是需要備份到備份庫中,備份的方法和基礎(chǔ)備份一樣??焖倩謴?fù)具體由下面步驟進(jìn)行'1).査詢索引庫,找出指定時(shí)間點(diǎn)T以后,被破壞的所有數(shù)據(jù)塊,并生成一張數(shù)據(jù)塊列表;2).遍歷數(shù)據(jù)塊列表,逐個(gè)査詢索引庫,找出被破壞扇區(qū)在指定時(shí)間點(diǎn)T之前的原始數(shù)據(jù);3).從備份庫中,獲得原始數(shù)據(jù),然后覆蓋數(shù)據(jù)塊當(dāng)前數(shù)據(jù)。裸巻恢復(fù)具體實(shí)現(xiàn)步驟是l)建立一張表,其中每個(gè)元素對(duì)應(yīng)存儲(chǔ)介質(zhì)上的每一個(gè)塊號(hào),填入備份庫中的id號(hào),生成這張表的方法是逐個(gè)査詢索引中心,給定時(shí)間點(diǎn)和原始?jí)K號(hào),得到最新的數(shù)據(jù)塊ID,如果找不到,則此塊數(shù)據(jù)不使用;2)根據(jù)生成的表,遍歷所有元素,根據(jù)Id號(hào)從備份庫把相應(yīng)的數(shù)據(jù)寫到對(duì)應(yīng)得塊號(hào)中。更新基礎(chǔ)備份具體步驟是1).在備份庫中找出指定備份點(diǎn)之前備份的數(shù)據(jù)塊tablel;2).和裸巻恢復(fù)的第一步一樣,找出每個(gè)塊號(hào)在指定時(shí)間上的最新數(shù)據(jù),并生成列表table2;3).tablel的這些數(shù)據(jù)塊,如果沒有出現(xiàn)在table2中,就可以把相應(yīng)數(shù)據(jù)塊從備份庫中刪除。本發(fā)明的優(yōu)點(diǎn)是1備份數(shù)據(jù)量較?。?恢復(fù)速度很快,備份點(diǎn)距離當(dāng)前時(shí)間越近,恢復(fù)速度越快,因?yàn)榛謴?fù)時(shí)只需要拷貝被改動(dòng)的數(shù)據(jù)量。與現(xiàn)有技術(shù)相比,增量備份時(shí),只備份修改的數(shù)據(jù)塊,備份數(shù)據(jù)量較小。圖l是本發(fā)明流程圖。圖2是增量備份或基礎(chǔ)備份的數(shù)據(jù)流圖。圖3是快速恢復(fù)實(shí)施例的數(shù)據(jù)塊示意圖。圖4是裸巻恢復(fù)實(shí)施例的數(shù)據(jù)塊示意圖。圖5是更新基礎(chǔ)備份實(shí)施例的數(shù)據(jù)塊示意圖。具體實(shí)施方式術(shù)語基礎(chǔ)備份基礎(chǔ)備份是一個(gè)全備份,存儲(chǔ)介質(zhì)上全部的有效資料都備份到備份設(shè)備上,基礎(chǔ)備份是增量備份的基礎(chǔ)。做增量備份之前必須做基礎(chǔ)備份。增量備份增量備份只備份某段時(shí)間內(nèi)數(shù)據(jù)的改變量,一個(gè)增量備份之后,即生成一個(gè)增量備份點(diǎn)。增量備份點(diǎn)之間,是先前的依賴關(guān)系,第一個(gè)增量備份點(diǎn)備份的是基礎(chǔ)備份后的增量數(shù)據(jù),第二個(gè)增量備份點(diǎn)備份的是第一個(gè)備份點(diǎn)以后的增量數(shù)據(jù),以此類推。備份庫備份庫是一個(gè)用于存放備份數(shù)據(jù)的核心模塊,其作用是存放備份數(shù)據(jù)(包括基礎(chǔ)備份和增量備份)。每個(gè)加入備份庫的數(shù)據(jù)塊都會(huì)自動(dòng)分配一個(gè)id編號(hào),根據(jù)id編號(hào)就能在備份庫中索引到一個(gè)唯一的數(shù)據(jù)塊。索引庫索引庫中存放備份庫中每個(gè)數(shù)據(jù)塊的索引關(guān)系,索引庫中每項(xiàng)記錄包含三個(gè)元素備份時(shí)間,備份塊號(hào),備份庫W。索引庫的實(shí)現(xiàn)方式可以是數(shù)據(jù)庫,也可以用散列表等數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。實(shí)施例-首先,劃分存儲(chǔ)介質(zhì)和備份介質(zhì)。存儲(chǔ)介質(zhì)和備份介質(zhì)可以在同一物理設(shè)備上,只是存儲(chǔ)區(qū)域不同;也可以是不同的物理設(shè)備,通過網(wǎng)絡(luò)相連。1基礎(chǔ)備份確定備份介質(zhì)后,第一步初始化備份庫和索引庫,使之處于正常工作狀態(tài)。第二步存儲(chǔ)介質(zhì)做基礎(chǔ)備份,備份的流程如下(1)掃描存儲(chǔ)介質(zhì)的有效數(shù)據(jù)塊(2)把掃描得到的有效數(shù)據(jù)塊存儲(chǔ)到備份庫中。(3)把數(shù)據(jù)塊的備份塊號(hào),備份時(shí)間,Id號(hào)作為一項(xiàng)記錄存儲(chǔ)到索引庫。以一個(gè)塊號(hào)是A的數(shù)據(jù)塊為例,它存儲(chǔ)到備份庫后,返回一個(gè)id號(hào),那個(gè)A,id,當(dāng)前備份時(shí)間就存入索引庫。如圖2所示,描述增量備份或基礎(chǔ)備份的數(shù)據(jù)流,數(shù)據(jù)流開始由三部分組成l備份時(shí)間,2備份塊號(hào),3.備份數(shù)據(jù)。經(jīng)過備份庫時(shí),把備份數(shù)據(jù)存入備份庫,返回得到備份庫Id,經(jīng)過備份庫后,數(shù)據(jù)流由三部分l備份時(shí)間,2備份塊號(hào),3.備份庫id組成,最后三項(xiàng)一起遞交到索引庫中。2記錄操作系統(tǒng)的讀寫基礎(chǔ)備份完成后,操作系統(tǒng)安裝一個(gè)磁盤讀寫的記錄程序,記錄操作系統(tǒng)對(duì)存儲(chǔ)介質(zhì)的讀寫操作。記錄的內(nèi)容只是操作系統(tǒng)對(duì)哪些數(shù)據(jù)塊寫過,而不記錄具體寫哪些數(shù)據(jù)。具體的記錄方法是,在存儲(chǔ)介質(zhì)上存放一張?jiān)隽繑?shù)據(jù)位表,位表中的每一位表示一個(gè)數(shù)據(jù)塊。位等于1表示從上次增量備份之后,此塊被寫過,位等于o表示從上次增量備份之后,沒被寫過。記錄程序的的流程是,當(dāng)操作系統(tǒng)寫數(shù)據(jù)的時(shí)候,需要在增量數(shù)據(jù)位表中的所在塊位置,然后把相應(yīng)位置l。3增量備份在目標(biāo)機(jī)器上,用戶可以手工或每隔一定時(shí)間做一次增量數(shù)據(jù)備份,增量備份時(shí),系統(tǒng)可以正常運(yùn)行,不受影響。其主要步驟是(1)備份當(dāng)前的增量數(shù)據(jù)位表,備份的那張記為tablel,原來的那張記為table0,備份完成后,再把原來的那張清零。(2)根據(jù)tablel的內(nèi)容,備份增量數(shù)據(jù)塊,凡是tablel內(nèi)位等于1的數(shù)據(jù)塊,都是需要備份到備份庫中。備份的方法和基礎(chǔ)備份一樣。4快速恢復(fù)快速恢復(fù)是指以存儲(chǔ)介質(zhì)上數(shù)據(jù)的當(dāng)前狀態(tài)為基礎(chǔ),回滾到以前的備份點(diǎn),具體分下面兩個(gè)步驟進(jìn)行(以恢復(fù)到指定時(shí)間T為例)(1)查詢索引庫,找出指定時(shí)間點(diǎn)T以后,被破壞的所有數(shù)據(jù)塊,并生成一張數(shù)據(jù)塊列表。(2)遍歷數(shù)據(jù)塊列表,逐個(gè)查詢索引庫,找出被破壞數(shù)據(jù)塊在指定時(shí)間點(diǎn)T之前的原始數(shù)據(jù);(3)從備份庫中,獲得原始數(shù)據(jù),然后覆蓋數(shù)據(jù)塊當(dāng)前數(shù)據(jù)。如圖3所示,顯示四個(gè)備份點(diǎn)修改的數(shù)據(jù)塊情況,備份點(diǎn)1備份了塊1,2,3,4;備份點(diǎn)2備份了塊2,3,4;備份點(diǎn)3備份了塊1,2;備份點(diǎn)4備份了塊2,3;當(dāng)前系統(tǒng)處于備份點(diǎn)4后的狀態(tài)時(shí),需要快速恢復(fù)到備份點(diǎn)2的狀態(tài),按本發(fā)明原理只要把備份點(diǎn)2以后被修改過的數(shù)據(jù)塊恢復(fù)回來就可以,從圖3可知,塊l,2,3被修改過,所以需要把修改以前的數(shù)據(jù)塊拷貝回來,圖中的黑色數(shù)據(jù)塊就是修改以前的數(shù)據(jù)塊,白色和黑色方框表示對(duì)應(yīng)的數(shù)據(jù)塊被操作系統(tǒng)修改,且已經(jīng)把數(shù)據(jù)備份到數(shù)據(jù)中心。當(dāng)處于備份點(diǎn)4,,需要恢復(fù)到備份點(diǎn)2時(shí),需要把黑色方框所代表的數(shù)據(jù)塊拷貝回原處,備份點(diǎn)l所備份的塊1的內(nèi)容覆蓋到磁盤塊1位置,備份點(diǎn)2備份的塊2的內(nèi)容覆蓋回磁盤塊2位置,備份點(diǎn)2備份的塊3的內(nèi)容拷貝回磁盤塊3位置,這些數(shù)據(jù)塊都是在備份點(diǎn)2以后的時(shí)間內(nèi),被修改的數(shù)據(jù)塊。5裸巻恢復(fù)裸巻恢復(fù)是恢復(fù)的另外一種方法,它以基礎(chǔ)備份為基礎(chǔ),不依賴當(dāng)前數(shù)據(jù)狀態(tài),因此,可以在空存儲(chǔ)介質(zhì)上恢復(fù)指定時(shí)間點(diǎn)的數(shù)據(jù)。裸巻恢復(fù)的關(guān)鍵是找出指定備份點(diǎn)的全部數(shù)據(jù)塊的最新數(shù)據(jù)。具體實(shí)現(xiàn)過程(1)建立一張表,其中每個(gè)元素對(duì)應(yīng)存儲(chǔ)介質(zhì)上的每一個(gè)塊號(hào),填入索引庫中的id號(hào)。生成這張表的方法是逐個(gè)査詢索引中心,給定時(shí)間點(diǎn)和原始?jí)K號(hào),得到最新的數(shù)據(jù)塊ID。如果找不到,則此塊數(shù)據(jù)不使用。(2)根據(jù)生成的表,遍歷所有元素,根據(jù)Id號(hào)從備份庫把相應(yīng)的數(shù)據(jù)寫到對(duì)應(yīng)得塊號(hào)中。如圖4所示裸巻恢復(fù)到備份點(diǎn)3,需要把黑色方框代表的數(shù)據(jù)塊拷貝到原處,把備份點(diǎn)3備份的塊1,2的內(nèi)容,覆蓋到磁盤塊1,塊2的位置,把備份點(diǎn)2備份的塊3,4的內(nèi)容覆蓋到磁盤塊3,4的位置。6更新基礎(chǔ)備份隨著系統(tǒng)運(yùn)行時(shí)間越來越長(zhǎng),增量數(shù)據(jù)也會(huì)不斷增多,備份介質(zhì)上的容量畢竟是有限的,遲早會(huì)耗盡。所以,有必要定期釋放-些空間,以供循環(huán)利用。方法是更新基礎(chǔ)備份,把基礎(chǔ)備份往后移動(dòng)到指定的備份點(diǎn)上。從而釋放之前的備份點(diǎn)占有空間,具體方法是指定備份點(diǎn)之前備份的數(shù)據(jù)塊tablel;(2)和裸巻恢復(fù)的第一步一樣,找出每個(gè)塊號(hào)在指定時(shí)間上的最新數(shù)據(jù),并生成列表table2。(3)tablel的這些數(shù)據(jù)塊,如果沒有出現(xiàn)在table2中,就可以把相應(yīng)數(shù)據(jù)塊從備份庫中刪除。如圖5所示要更新基礎(chǔ)備份到備份點(diǎn)4,那么圖中黑色方框所代表的數(shù)據(jù)塊都可以刪除,將數(shù)據(jù)塊1的備份點(diǎn)3狀態(tài)和數(shù)據(jù)塊4備份點(diǎn)2的狀態(tài)和數(shù)據(jù)塊2、3備份點(diǎn)4的狀態(tài)作為基礎(chǔ)備份。權(quán)利要求1、一種基于塊級(jí)的增量備份和整卷恢復(fù)的方法,其特征在于包括以下步驟首先,劃分存儲(chǔ)介質(zhì)和備份介質(zhì);(1)基礎(chǔ)備份確定備份介質(zhì)后,第一步初始化備份庫和索引庫,使之處于正常工作狀態(tài);第二步存儲(chǔ)介質(zhì)做基礎(chǔ)備份;(2)記錄操作系統(tǒng)的讀寫基礎(chǔ)備份完成后,操作系統(tǒng)安裝一個(gè)磁盤讀寫的記錄程序,記錄操作系統(tǒng)對(duì)存儲(chǔ)介質(zhì)的讀寫操作;(3)增量備份在目標(biāo)機(jī)器上,用戶可以手工或每隔一定時(shí)間做一次增量數(shù)據(jù)備份,增量備份時(shí),系統(tǒng)可以正常運(yùn)行;(4)快速恢復(fù)或裸卷恢復(fù)根據(jù)快速恢復(fù)或裸卷恢復(fù)指令,存儲(chǔ)介質(zhì)上數(shù)據(jù)恢復(fù)至指定的以前時(shí)間點(diǎn)的數(shù)據(jù)狀態(tài)快速恢復(fù)是指以存儲(chǔ)介質(zhì)上數(shù)據(jù)的當(dāng)前狀態(tài)為基礎(chǔ),回滾到以前的備份點(diǎn);裸卷恢復(fù)是恢復(fù)的另外一種方法,它以基礎(chǔ)備份為基礎(chǔ),不依賴當(dāng)前數(shù)據(jù)狀態(tài),因此,可以在空存儲(chǔ)介質(zhì)上恢復(fù)指定時(shí)間點(diǎn)的數(shù)據(jù);(5)更新基礎(chǔ)備份根據(jù)更新基礎(chǔ)備份指令,把基礎(chǔ)備份往后移動(dòng)到指定的備份點(diǎn)上,從而釋放之前的備份點(diǎn)占有空間。2、如權(quán)利要求1所述的方法,其特征在于所述的存儲(chǔ)介質(zhì)和備份介質(zhì)可以在同一物理設(shè)備上,只是存儲(chǔ)區(qū)域不同;也可以是不同的物理設(shè)備,通過網(wǎng)絡(luò)相連。3、如權(quán)利要求1所述的方法,其特征在于所述的基礎(chǔ)備份的流程如下(1)掃描存儲(chǔ)介質(zhì)的有效數(shù)據(jù)塊;(2)把掃描得到的有效數(shù)據(jù)塊存儲(chǔ)到備份庫中;(3)把數(shù)據(jù)塊的備份塊號(hào),備份時(shí)間,備份庫Id號(hào)作為一項(xiàng)記錄存儲(chǔ)到索引庫。4、如權(quán)利要求1所述的方法,其特征在于所述的磁盤讀寫記錄具體的記錄方法是,在存儲(chǔ)介質(zhì)上存放一張?jiān)隽繑?shù)據(jù)位表,位表中的每一位表示一個(gè)數(shù)據(jù)塊,位等于l表示從上次增量備份之后,此塊被寫過,位等于o表示從上次增量備份之后,沒被寫過,當(dāng)操作系統(tǒng)寫數(shù)據(jù)的時(shí)候,需要在增量數(shù)據(jù)位表中找到所在塊位置,然后把相應(yīng)位置l。5、如權(quán)利要求1所述的方法,其特征在于增量備份主要?dú)i驟是(1).備份當(dāng)前的增量數(shù)據(jù)位表,備份表記為tablel,并清零當(dāng)前的增量數(shù)據(jù)位表,記為table0;(2).根據(jù)tablel的內(nèi)容,備份增量數(shù)據(jù)塊,凡是tablel內(nèi)位等于1的數(shù)據(jù)塊,都是需要備份到備份庫中,備份的方法和基礎(chǔ)備份一樣。6、如權(quán)利要求1所述的方法,其特征在于快速恢復(fù)具體由下面步驟進(jìn)行1).查詢索引庫,找出指定時(shí)間點(diǎn)T以后,被破壞的所有數(shù)據(jù)塊,并生成一張數(shù)據(jù)塊列表;2).遍歷數(shù)據(jù)塊列表,逐個(gè)査詢索引庫,找出被破壞數(shù)據(jù)塊在指定時(shí)間點(diǎn)T之前的原始數(shù)據(jù);3).從備份庫中,獲得原始數(shù)據(jù),然后覆蓋數(shù)據(jù)塊當(dāng)前數(shù)據(jù)。7、如權(quán)利要求1所述的方法,其特征在于裸巻恢復(fù)具體實(shí)現(xiàn)步驟是l)建立一張表,其中每個(gè)元素對(duì)應(yīng)存儲(chǔ)介質(zhì)上的每一個(gè)塊號(hào),填入備份庫中的id號(hào),生成這張表的方法是逐個(gè)査詢索引庫,給定時(shí)間點(diǎn)和原始?jí)K號(hào),得到最新的數(shù)據(jù)塊ID,如果找不到,則此塊數(shù)據(jù)不使用;2)根據(jù)生成的表,遍歷所有元素,根據(jù)Id號(hào)從備份庫把相應(yīng)的數(shù)據(jù)寫到對(duì)應(yīng)得塊號(hào)中。8、如權(quán)利要求1所述的方法,其特征在于更新基礎(chǔ)備份具體步驟是1).在備份庫中找出指定備份點(diǎn)之前備份的數(shù)據(jù)塊tablel;2).和裸巻恢復(fù)的第一步一樣,找出每個(gè)塊號(hào)在指定時(shí)間上的最新數(shù)據(jù),并生成列表table2;3).tablel的這些數(shù)據(jù)塊,如果沒有出現(xiàn)在table2中,就可以把相應(yīng)數(shù)據(jù)塊從備份庫中刪除。全文摘要本發(fā)明公開了一種基于塊級(jí)的增量備份和整卷恢復(fù)的方法,包括基礎(chǔ)備份、增量備份、快速恢復(fù)、裸卷恢復(fù)和更新基礎(chǔ)備份步驟,本發(fā)明的優(yōu)點(diǎn)是1備份數(shù)據(jù)量較??;2恢復(fù)速度很快,備份點(diǎn)距離當(dāng)前時(shí)間越近,恢復(fù)速度越快,因?yàn)榛謴?fù)時(shí)只需要拷貝被改動(dòng)的數(shù)據(jù)量。與現(xiàn)有技術(shù)相比,增量備份時(shí),只備份修改的數(shù)據(jù)塊,備份數(shù)據(jù)量較小。文檔編號(hào)G06F11/14GK101149694SQ20071001899公開日2008年3月26日申請(qǐng)日期2007年11月2日優(yōu)先權(quán)日2007年11月2日發(fā)明者張有成,李增勝,管繼崗申請(qǐng)人:西安三茗科技有限責(zé)任公司