Dell MD 3200系列存儲,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因有部分碎片沒有找到外,其餘數據庫均校驗成功。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月份備份全部沒有。由于erp42_jck.dbf文件中隻缺失少量的頁,因此可以根據缺失的頁号在增量備份中查找,再将找到的頁補到erp42_jck.dbf文件中,這樣可以恢複一部分丢失的數據庫頁。最終補完後還是缺失部分頁,無法正常使用。但是可以通過自主開發的數據庫解析程序将erp42_jck.dbf文件中用戶比較重要的幾十張表成功導出,并成功導入到新建的數據庫中。 6、驗證數據在本地服務器中搭建和原始環境一樣的數據庫環境(SQL Server 2008),由客戶遠程連接到驗證服務器。經客戶驗證後,數據庫恢複基本沒問題。上層應用可以正常運行,數據記錄也都基本沒有缺失,數據庫成功挂載,本次數據恢複成功。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!