一種跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法
【專(zhuān)利摘要】本發(fā)明涉及一種跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,通過(guò)文件系統(tǒng)位圖文件來(lái)獲取磁盤(pán)簇的使用信息,完全備份時(shí),獲取磁盤(pán)中已經(jīng)使用的簇對(duì)應(yīng)的扇區(qū)使用信息,將該簇存儲(chǔ)地址的數(shù)據(jù)進(jìn)行備份并做hash操作,將hash值保存到hashmap中;增量備份時(shí),將已使用簇與之前備份的簇進(jìn)行比較,若此簇不存在則直接備份此簇對(duì)應(yīng)的扇區(qū)的數(shù)據(jù),并將此扇區(qū)中的值做hash插入到之前的hashmap中,若找到此簇,則比較現(xiàn)在數(shù)據(jù)的hash值和之前的hash值是否相同,相同則跳過(guò)不需要備份,不同則備份此簇對(duì)應(yīng)扇區(qū)的數(shù)據(jù),并使用新的hash值替換之前的值存入hashmap中。本發(fā)明可在CBT失效時(shí),也可以達(dá)到增量備份的目的。
【專(zhuān)利說(shuō)明】一種跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及屬于VMware磁盤(pán)備份和恢復(fù)領(lǐng)域,尤其是涉及一種跟蹤扇區(qū)數(shù)據(jù)變 化虛擬機(jī)備份方法。
【背景技術(shù)】
[0002] VDDK作為VMware虛擬機(jī)的文件系統(tǒng),就目前的表現(xiàn)來(lái)看還是存在不少的問(wèn)題,因 此各個(gè)商家的備份軟件在應(yīng)對(duì)VDDK自身產(chǎn)生的一些問(wèn)題上均沒(méi)有較好的避免方法,這也 引起了數(shù)據(jù)保護(hù)成本的提升,或者保護(hù)失效,給客戶(hù)帶來(lái)數(shù)據(jù)丟失的災(zāi)難。
[0003] NTFS系統(tǒng)是以MFT(主文件表)為核心,將整個(gè)分區(qū)的系統(tǒng)文件和用戶(hù)文件有 機(jī)的組合在一起的文件系統(tǒng)。文件系統(tǒng)中每個(gè)對(duì)象都是一種文件,因此它也包含$MFT、 $MFTMirr、$Bitmap、$boot等16個(gè)系統(tǒng)文件。位圖文件($Bitmap)存在NTFS文件系統(tǒng)中, 且存在于元數(shù)據(jù)文件中,對(duì)硬盤(pán)簇使用情況進(jìn)行記錄,在位圖文件的MTF表中記錄了位圖 文件的數(shù)據(jù)存儲(chǔ)地址。
[0004] MFT包含很多帶有文件信息的記錄,這些記錄將整個(gè)文件系統(tǒng)的內(nèi)容全部標(biāo)注起 來(lái),所有的記錄都可以當(dāng)成文件來(lái)處理。
[0005] VMware在ESX/ESXI 4. 0 以后更高的版本引入了 CBT (changed blocktracking)虛 擬機(jī)磁盤(pán)的修改塊跟蹤技術(shù),而此項(xiàng)技術(shù)正常的運(yùn)行需要虛擬機(jī)啟動(dòng)CBT時(shí),虛擬機(jī)包含 零個(gè)快照,如果有快照則需要清空快照且重啟虛擬機(jī),這樣顯然不能符合用戶(hù)業(yè)務(wù)連續(xù)不 中斷的宗旨。也就是說(shuō)大部分情況下虛擬機(jī)的CBT設(shè)置是失敗的。在通常的處理方式中對(duì) 于CBT失效的問(wèn)題都是重新去備份其整個(gè)完全磁盤(pán),來(lái)達(dá)到備份保護(hù)數(shù)據(jù)的目的,這樣的 方式已經(jīng)越來(lái)越不能滿(mǎn)足當(dāng)下虛擬機(jī)迅速增加、數(shù)據(jù)量急劇膨脹的情況,這樣不僅在備份 的時(shí)候需要消耗更多的時(shí)間,而且使儲(chǔ)存的利用率呈指數(shù)下降,最重要的是這樣的話(huà)就不 能靈活做到在最佳時(shí)機(jī)完成保護(hù)虛擬機(jī)數(shù)據(jù)的目的。針對(duì)此類(lèi)問(wèn)題要想繼續(xù)進(jìn)行快跟蹤備 份目前沒(méi)有發(fā)現(xiàn)有任何來(lái)解決此問(wèn)題的方法。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種跟蹤扇區(qū)數(shù)據(jù) 變化虛擬機(jī)備份方法,在使用CBT失效時(shí),仍然可以進(jìn)行增量數(shù)據(jù)的備份,而不必要在備份 整個(gè)磁盤(pán)全部數(shù)據(jù)。
[0007] 本發(fā)明的目的可以通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0008] 一種跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,包括完全備份和增量備份,所述完全備 份包括:
[0009] Al)獲取位圖文件,讀取該位圖文件的數(shù)據(jù)區(qū)中記錄的磁盤(pán)簇使用情況信息;
[0010] A2)根據(jù)所述磁盤(pán)簇使用情況信息以簇為單元計(jì)算已使用簇的hash值,并存儲(chǔ)至 hashmap中,同時(shí)對(duì)相應(yīng)已使用簇對(duì)應(yīng)的扇區(qū)數(shù)據(jù)進(jìn)行備份;
[0011] 所述增量備份包括:
[0012] BI)獲取位圖文件,讀取該的數(shù)據(jù)區(qū)中記錄的磁盤(pán)簇使用情況信息;
[0013] B2)根據(jù)所述磁盤(pán)簇使用情況信息以簇為單元計(jì)算已使用簇的hash值;
[0014] B3)判斷hashmap中是否存在步驟B2)所計(jì)算的已使用簇的hash值,若是,則執(zhí)行 步驟B4),若否,則將步驟B2)計(jì)算得的hash值添加入hashmap中,同時(shí)對(duì)相應(yīng)已使用簇對(duì) 應(yīng)的扇區(qū)數(shù)據(jù)進(jìn)行備份;
[0015] B4)將步驟B2)計(jì)算得的hash值與hashmap中保存的hash值進(jìn)行比較,判斷兩個(gè) 值是否相同,若是,則備份結(jié)束,若否,則對(duì)相應(yīng)已使用簇對(duì)應(yīng)的扇區(qū)數(shù)據(jù)進(jìn)行備份,同時(shí)用 步驟B2)計(jì)算得的hash值替換hashmap中保存的hash值。
[0016] 優(yōu)選地,進(jìn)行備份前,判斷當(dāng)前執(zhí)行任務(wù)為完全備份還是增量備份。
[0017] 優(yōu)選地,所述步驟Al)與步驟BI)中,獲取位圖文件后,判斷已使用簇是否為壞簇, 若是,則跳過(guò)該簇,若否,則執(zhí)行進(jìn)一步操作。
[0018] 所述位圖文件的獲取方式為:通過(guò)run Data屬性來(lái)獲取整個(gè)文件系統(tǒng)的Bitmap 屬性。
[0019] 所述步驟A2)與步驟B2)中,計(jì)算已使用簇的hash值具體為:
[0020] (a)獲取簇對(duì)應(yīng)的位圖信息;
[0021] (b)將簇對(duì)應(yīng)的位圖信息轉(zhuǎn)換成扇區(qū)對(duì)應(yīng)的位圖信息;
[0022] (c)將步驟(b)獲得的位圖信息按扇區(qū)設(shè)定的塊大小進(jìn)行分組;
[0023] (d)對(duì)每一個(gè)組內(nèi)的連續(xù)扇區(qū)的數(shù)據(jù)值進(jìn)行hash操作,獲得hash值。
[0024] 所述位圖文件對(duì)應(yīng)的數(shù)據(jù)中每一個(gè)字節(jié)的每一位表示在邏輯驅(qū)動(dòng)器中每個(gè)磁盤(pán) 簇的使用情況,"〇"表示其對(duì)應(yīng)的磁盤(pán)簇為未使用簇,"1"表示其對(duì)應(yīng)的磁盤(pán)簇為已使用簇。
[0025] 與現(xiàn)有技術(shù)相比,本發(fā)明方法讓CBT失效的虛擬機(jī)同樣也可以達(dá)到被增量備份的 目的,同時(shí)由于本發(fā)明站在整個(gè)文件系統(tǒng)層面來(lái)進(jìn)行描述和處理,故系統(tǒng)完整性高,處理速 度快,特別適用于要求處理速度優(yōu)先的生產(chǎn)場(chǎng)景。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0026] 圖1為虛擬機(jī)內(nèi)部文件示意圖;
[0027] 圖2為本發(fā)明備份具體流程示意圖;
[0028] 圖3為本發(fā)明hash值值過(guò)程流程圖。
【具體實(shí)施方式】
[0029] 下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。本實(shí)施例以本發(fā)明技術(shù)方案 為前提進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過(guò)程,但本發(fā)明的保護(hù)范圍不限于 下述的實(shí)施例。
[0030] 本發(fā)明實(shí)施例提供一種跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,通過(guò)文件系統(tǒng)位圖文 件($Bitmap)來(lái)獲取磁盤(pán)簇的使用信息,從而獲取磁盤(pán)中已經(jīng)使用的簇對(duì)應(yīng)的扇區(qū)使用信 息,接著將該簇存儲(chǔ)地址的數(shù)據(jù)進(jìn)行備份并做hash操作,將hash值保存到hashmap中;增 量備份的時(shí)候,獲取到已分配的簇與之前備份的簇進(jìn)行比較,若此簇不存在則直接備份此 簇對(duì)應(yīng)的扇區(qū)的數(shù)據(jù),并將此扇區(qū)中的值做hash插入到之前的hashmap中,若找到此簇,則 比較現(xiàn)在數(shù)據(jù)的hash值和之前的hash值是否相同,相同則跳過(guò)不需要備份,不同則備份此 簇對(duì)應(yīng)扇區(qū)的數(shù)據(jù),并使用新的hash值替換之前的值存入hashmap中。
[0031] 進(jìn)行備份時(shí),需要在客戶(hù)端安裝備份代理客戶(hù)端(當(dāng)然可以將代理放入存儲(chǔ)柜 中,這里以安裝外部代理為例來(lái)介紹),客戶(hù)選擇好要備份的虛擬機(jī)后,通過(guò)控制臺(tái)給客戶(hù) 端發(fā)送需要備份虛擬機(jī)的一些信息,客戶(hù)端通過(guò)WSDL(-種網(wǎng)絡(luò)通信服務(wù)語(yǔ)言)獲取ESXI 平臺(tái)虛擬機(jī)信息,并將需要備份的信息返回給客戶(hù)端,客戶(hù)端再將此數(shù)據(jù)返回給控制臺(tái),控 制臺(tái)便將此數(shù)據(jù)信息保存到柜子的存儲(chǔ)中完成整個(gè)備份過(guò)程。
[0032] 圖1所示為正常使用關(guān)機(jī)狀態(tài)下虛擬機(jī)包含的文件圖。具體文件的作用如表1所 不O
[0033] 表 1
[0034]
【權(quán)利要求】
1. 一種跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,其特征在于,包括完全備份和增量備份,所 述完全備份包括: A1)獲取位圖文件,讀取該位圖文件的數(shù)據(jù)區(qū)中記錄的磁盤(pán)簇使用情況信息; A2)根據(jù)所述磁盤(pán)簇使用情況信息W簇為單元計(jì)算已使用簇的hash值,并存儲(chǔ)至 hashmap中,同時(shí)對(duì)相應(yīng)已使用簇對(duì)應(yīng)的扇區(qū)數(shù)據(jù)進(jìn)行備份; 所述增量備份包括: B1)獲取位圖文件,讀取該位圖文件的數(shù)據(jù)區(qū)中記錄的磁盤(pán)簇使用情況信息; B2)根據(jù)所述磁盤(pán)簇使用情況信息W簇為單元計(jì)算已使用簇的hash值; B3)判斷hashmap中是否存在步驟B2)所計(jì)算的已使用簇的hash值,若是,則執(zhí)行步 驟B4),若否,則將步驟B2)計(jì)算得的hash值添加入hashmap中,同時(shí)對(duì)相應(yīng)已使用簇對(duì)應(yīng) 的扇區(qū)數(shù)據(jù)進(jìn)行備份; B4)將步驟B2)計(jì)算得的hash值與hashmap中保存的hash值進(jìn)行比較,判斷兩個(gè)值是 否相同,若是,則備份結(jié)束,若否,則對(duì)相應(yīng)已使用簇對(duì)應(yīng)的扇區(qū)數(shù)據(jù)進(jìn)行備份,同時(shí)用步驟 B2)計(jì)算得的hash值替換hashmap中保存的hash值。
2. 根據(jù)權(quán)利要求1所述的跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,其特征在于,進(jìn)行備份 前,判斷當(dāng)前執(zhí)行任務(wù)為完全備份還是增量備份。
3. 根據(jù)權(quán)利要求1所述的跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,其特征在于,所述步驟 A1)與步驟B1)中,獲取位圖文件后,判斷已使用簇是否為壞簇,若是,則跳過(guò)該簇,若否,貝U 執(zhí)行進(jìn)一步操作。
4. 根據(jù)權(quán)利要求1所述的跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,其特征在于,所述位圖 文件的獲取方式為;通過(guò)run化ta屬性來(lái)獲取整個(gè)文件系統(tǒng)的Bitmap屬性。
5. 根據(jù)權(quán)利要求1所述的跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,其特征在于,所述步驟 A2)與步驟B2)中,計(jì)算已使用簇的hash值具體為: (a)獲取簇對(duì)應(yīng)的位圖信息; 化)將簇對(duì)應(yīng)的位圖信息轉(zhuǎn)換成扇區(qū)對(duì)應(yīng)的位圖信息; (C)將步驟化)獲得的位圖信息按扇區(qū)設(shè)定的塊大小進(jìn)行分組; (d)對(duì)每一個(gè)組內(nèi)的連續(xù)扇區(qū)的數(shù)據(jù)值進(jìn)行hash操作,獲得hash值。
6. 根據(jù)權(quán)利要求1所述的跟蹤扇區(qū)數(shù)據(jù)變化虛擬機(jī)備份方法,其特征在于,所述位圖 文件對(duì)應(yīng)的數(shù)據(jù)中每一個(gè)字節(jié)的每一位表示在邏輯驅(qū)動(dòng)器中每個(gè)磁盤(pán)簇的使用情況,"〇" 表示其對(duì)應(yīng)的磁盤(pán)簇為未使用簇,"1"表示其對(duì)應(yīng)的磁盤(pán)簇為已使用簇。
【文檔編號(hào)】G06F9/455GK104461783SQ201410756594
【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2014年12月10日 優(yōu)先權(quán)日:2014年12月10日
【發(fā)明者】袁康健 申請(qǐng)人:上海愛(ài)數(shù)軟件有限公司