EXSI5.5虛擬機還原快照數據恢復案例
現在由於虛擬化技術的興起,很多企業開始運用虛擬化技術。虛擬化技術的原理就是將硬件虛擬化給不同的虛擬機使用。也就是一臺物理的機器上可以有多臺虛擬機。但如果物理機器出現故障或者存儲服務器出現故障都會導致上層的虛擬機不可用。還有包括員工的誤操作等原因。這些都會導致虛擬機裏面的重要數據丟失,而彌補這些數據的唯一方法就是恢復數據。今天要說的就是一起vmware虛擬化誤操作的數據恢復案例。
【環境描述】
1)故障虛擬機是由物理機遷移到EXSI上面的,遷移完成後以防不穩定做了一個快照。
2)虛擬機上運行的是一個SQL 2005的數據庫,記錄了從2008年到2014年所有的數據。
3)整個EXSI上一共有20幾臺虛擬機,EXSI連接的存儲是一臺HP EVA4400,所有的虛擬機(包括故障虛擬機)都放在EVA上。
【故障描述】
由於員工的誤操作,不小心還原快照了。快照是3年前做完遷移時建的,也就是虛擬機還原到3年前了。也就意味着這3年的數據都被刪除了,而這些數據都是特別重要的。
【準備工作】
還原快照就相當於刪除數據,也就意味着底層的存儲空間會被釋放一部分。爲了不讓這部分空間重用,需要將連接這臺存儲的所有虛擬機都關掉,如果有重要的虛擬機不能長時間宕機,則需要遷移到別的EXSI上。而客戶這裏有一臺虛擬機很重要,不能關機,只能做熱遷移。而vmware的熱遷移則是需要建立N多個快照來完成遷移的,這給後期的恢復快照工作帶來很多麻煩。遷移完所有虛擬機後就需要對底層的EVA存儲做鏡像了,但是客戶比較着急,鏡像整個存儲需要的時間太長。最後將EVA存儲以只讀的方式掛載到一臺服務器上,我們以只讀的方式恢復數據。
【解決方案】
Vmfs文件系統介紹:
Vmware自己的文件系統叫做Vmfs,所有的虛擬機都存放在這個文件系統中。Vmfs文件系統中默認會將整個磁盤分成1M的Block,分配給文件的最小單位爲一個Block。Vmfs文件系統中會有一片區域描述這些1M Block的使用情況,而每1024個Block(也就是1GB)會用一個MAP來記錄。這個MAP裏面記錄的1M Block在物理磁盤上不一定是連續的。但這個MAP所記錄的所有1M Block一定是同一個文件的。可以理解爲一個文件是由N多個MAP中的1024個Block組成的,即FileSize = N * MAP * 1024(Block)。
Vmware的快照其實就是一個文件,還原快照也就意味着是刪掉一個文件。而在Vmfs文件系統中,刪除一個文件只會刪掉文件的索引項,而不會刪掉文件的實際數據以及指向數據的MAP。而我們要做的就是提取整個vmfs文件系統中空閒的MAP,然後在空閒的MAP中找到一個符合快照文件頭結構的MAP。然後根據快照文件的結構,提取快照文件剩下的碎片。提取完快照文件後,需要將快照文件和原vmdk合併生成新的vmdk。新的vmdk中包涵了所有的數據,接下來掛載新的vmdk解釋裏面的數據即可。
【數據恢復成功】
由於客戶做過熱遷移虛擬機,所以導致快照有幾個碎片被重用了。最終恢復的數據中,最新的數據不可用。但由於客戶的數據是數據庫,並每天都備份2次,最新的數據不可用,但備份的數據可用,客戶還是接受恢復的結果。整個恢復的過程一個耗時2天,包括驗證數據庫的工作。
隨着虛擬化技術興起,越來越多的企業開始應用虛擬化技術。伴隨的虛擬化故障也越來越多,但虛擬化的數據恢復技術在國內卻沒有幾家公司可以做。
作者:鄧奇 (北亞服務器數據恢復工程師)
聯繫方式:010-4006505808-801