1. 程式人生 > >虛擬機vmdk文件誤刪除怎麽恢復

虛擬機vmdk文件誤刪除怎麽恢復

分析 fff cdc http ces log 連接 HERE 數據區

服務器數據恢復故障:

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遠程工具連接到驗證服務器,並安裝上層宏橋應用軟件。再由客戶安排工程驗證數據庫是否完整,經過仔細的驗證後,數據庫恢復基本沒問題。上層應用可以正常運行,數據記錄也都基本沒有缺失,數據庫成功掛載,
圖八:

虛擬機vmdk文件誤刪除怎麽恢復