虛擬機器vmdk檔案刪除後如何恢復資料

北亞資料恢復發表於2018-08-21

伺服器資料恢復故障:

Dell PS4000伺服器(用於VMware虛擬主機),VMware ESXi 5.5版本,因意外斷電,導致某臺虛擬機器不能正常啟動,檢視虛擬機器的配置檔案時發現此虛擬機器的配置檔案除了磁碟檔案以外其他配置檔案全部丟失。此時xxx-flat.vmdk磁碟檔案和xxx-000001-delta.vmdk快照檔案還存在。找VMware工程師診斷後,嘗試新建一個虛擬機器來解決故障,但發現ESXi儲存空間不足。因此就將故障虛擬機器下的xxx-flat.vmdk磁碟檔案刪除了,這時ESXi儲存就有200多G的剩餘空間了,而後VMware工程師就重新建了一個40G的虛擬機器,並且分配了固定大小的虛擬磁碟,Windows Server 2008(虛擬機器作業系統),資料庫應用環境SQL Server 2008資料庫伺服器(管理宏橋和索菲兩套應用資料庫),虛擬機器磁碟容量200G資料盤(精簡模式)+ 160G快照資料盤。

伺服器資料恢復解決方法:

1、備份資料
在VMware vSphere Client上將掛載的RD220i儲存中VMFS卷以正常方式解除安裝掉。然後將RD220i儲存上的VMFS卷透過網線的方式連線到備份伺服器上,接著使用專業的工具將整個VMFS卷以扇區的方式映象到已準備的備份空間上,以確保客戶的資料安全,之後的分析和恢復操作均在備份的資料上進行。

2、分析故障原因
仔細分析VMFS卷的底層資料發現,ESXi主機的突然斷電導致故障虛擬機器目錄下的目錄項出現破壞,但是這種破壞不會影響虛擬機器的重要資料,只是破壞了檔案的目錄項而已,可以透過人工修復即可解決。而人為刪除某個檔案的話,則目錄項對應的資料區索引會被清掉,也不會影響刪除檔案的實際資料。這種情況可根據刪除虛擬磁碟檔案中的檔案系統以及虛擬磁碟中的檔案型別在VMFS卷自由空間中進行碎片匹配和合並,最終也可恢復刪除的虛擬磁碟檔案。但是在上述的兩種情況之下又新建了一臺虛擬機器,並且分配了虛擬磁碟。經過仔細分析發現分配的40G虛擬磁碟已經全部清零了(在建立虛擬磁碟的時候會選擇建立磁碟的型別),也是這個新建的虛擬機器所佔用的磁碟空間全部被清零。 如果新虛擬磁碟佔用了刪除虛擬機器磁碟所釋放的空間,那麼此部分空間將無法恢復的。
圖一:(是故障虛擬機器的目錄項區域)
    
3、實施過程一
按照方向一的思路進行底層分析,根據VMFS卷的結構以及刪除虛擬磁碟的檔案系統資訊,在底層的自由空間中掃描符合刪除虛擬機器磁碟的區域,並統計其數量和大小是否符合刪除虛擬磁碟的大小。再根據虛擬磁碟中的檔案系統的資訊將這些掃描到的碎片進行排列組合,結果發現中間有好多碎片缺失,仔細再對這些缺失的碎片進行重新掃描,發現這些碎片確實沒有找到。接著將掃描到的碎片安照虛擬磁碟原本的順序重組,對於沒有找到的碎片暫且留空。接下來利用虛擬磁碟快照程式將重組好的父盤和快照盤進行合併,生成一個新的虛擬磁碟。再用專業工具解釋虛擬磁碟中的檔案系統,因缺失好多資料,檔案系統解釋過程中報好多錯誤,提示某些檔案損壞。
圖二(解釋完的檔案系統):
    
在解析完檔案系統後發現沒有找到原始的資料庫檔案,而宏橋備份和索菲備份這兩個目錄的目錄結構正常。但是在嘗試將備份匯入資料庫中時,資料庫匯入程式提示報錯。
圖三(宏橋備份和索菲備份的部分目錄結構):

匯入.BAK檔案報錯資訊如下
圖四:


4、實施過程二
由於方向一中並沒有將原始的資料庫檔案恢復出來,並且其中好多備份檔案都無法正常使用。因此需採用第二套方案來恢復尚未恢復的資料庫檔案。根據SQL Server資料庫的結構去自由空間中找到資料庫的開始位置。在資料庫的結構中,資料庫的第9個頁會記錄本資料庫的資料庫名。因此根據這個特徵可以核對此資料庫的頭部頁是否是正在查詢的。並且資料庫的每個頁中都會記錄資料庫頁編號以及檔案號,所以根據這些特徵編寫資料庫掃描程式,然後利用程式去底層掃描所有符合資料庫頁的資料碎片。接著將掃描出來的碎片按順序重組成一個完整MDF檔案,再透過MDF校驗程式檢測整個MDF檔案是否完整。在整個校驗過程中,只有cl_system3.dbf和erp42_jck.dbf因有部分碎片沒有找到外,其餘資料庫均校驗成功。校驗完的MDF檔案如下
圖五:

cl_system3.dbf和erp42_jck.dbf因底層有很多碎片沒有找不到(初步懷疑可能被覆蓋),因此校驗不透過。如下是cl_system3.dbf檔案中某個碎片丟失的區域
圖六:

5、實施過程三
由於上述兩個方向實施完後,並沒有將所有的資料庫檔案全部恢復出來,還有cl_system3.dbf和erp42_jck.dbf這裡個檔案因缺失部分頁導致其無法正常使用。因此需要採用備份來恢復這兩個資料庫檔案,但是在檢查完這兩個檔案的備份後發現cl_system3.dbf的3月30號全部備份因備份機制故障導致沒有備份出來,而erp42_jck.dbf的3月份備份全部沒有,只有4月份的全部增量備份
圖七:

由於erp42_jck.dbf檔案中只缺失少量的頁,因此可以根據缺失的頁號在增量備份中查詢,再將找到的頁補到erp42_jck.dbf檔案中,這樣可以恢復一部分丟失的資料庫頁。最終補完後還是缺失部分頁,無法正常使用。但是可以透過自主開發的資料庫解析程式將erp42_jck.dbf檔案中使用者比較重要的幾十張表成功匯出,併成功匯入到新建的資料庫中。


6、驗證資料
在本地伺服器中搭建和原始環境一樣的資料庫環境(SQL Server 2008),由客戶透過Teamviewer遠端工具連線到驗證伺服器,並安裝上層宏橋應用軟體。再由客戶安排工程驗證資料庫是否完整,經過仔細的驗證後,資料庫恢復基本沒問題。上層應用可以正常執行,資料記錄也都基本沒有缺失,資料庫成功掛載,
圖八:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2212480/,如需轉載,請註明出處,否則將追究法律責任。

相關文章