Hyper-V數據文件丟失數據恢復過程
一、Hyper-V虛擬化故障概述
1、虛擬機環境
故障虛擬化環境為ESXI虛擬化伺服器,虛擬機環境,虛擬機的硬碟文件和配置文件放在北京某伺服器託管公司的DELL MD3200存儲中(存儲由5塊容量為600G的硬碟組成raid磁碟陣列)。該存儲中4塊硬碟用作存儲虛擬機的數據文件。單塊硬碟用作虛擬機數據文件的備份。
2、虛擬機故障分析
對MD3200存儲伺服器進行物理檢測:發現存儲並未出現物理故障,涉事硬碟均正常工作
檢查操作系統:工作正常中,未發現出錯進程,排除因操作系統BUG導致的數據丟失。
分析丟失數據硬碟的文件系統:打開正常,不符合病毒破壞的表現特徵,同時經殺毒軟體檢測無病毒。再仔細分析硬碟的文件系統,發現此文件系統的元文件創建時間為4月24日,表明文件系統的創建時間為4月24日,與數據丟失的時間相吻合。通常這種故障表明文件系統被人為重寫了,即分區被格式化了。
檢查系統日誌:發現系統日誌11月28號之前以及當天的系統日誌已被清空,審核日誌和服務日誌卻並未清空。通常情況下,此操作應該由人為導致。而格式化分區的操作只記錄在系統日誌中,這與上述人為破壞的表現相符。
嘗試恢復系統日誌:仔細分析硬碟底層數據,發現硬碟底層中需要恢復的系統日誌已被新的日誌記錄覆蓋,無法恢復。
分析操作系統中的所有分區:發現只有MD3200存儲中的兩個分區的文件系統被重新寫入文件系統了。通常情況下,對兩個分區的格式化需要有兩個獨立的過程,因此這種針對性的操作應該由人為導致。
3、導致該故障的常見方式總結
通過在分區上「右鍵」,選擇「格式化」按鈕,可以格式化選中的分區。
在開始菜單「運行」中輸入「cmd」命令進入到命令行模式,然後使用FORMAT命令,可以格式化指定分區。
創建一個bat文件,在文件中寫入格式化的命令,然後運行bat文件可以格式化指定分區。
因為有兩個獨立的文件系統數據丟失,故上述的流程可能被執行了多次。應該因人為操作導致。
二、制定虛擬機數據恢復方案
1.對丟失數據的硬碟。做全盤備份,以確保數據的安全性。
2.分析每個硬碟的數據,根據分析的結構重組RAID 陣列。
3.分析重組完的陣列,看能否找到原有的文件索引項及對應的數據區。
4.核對查到的文件索引項是否符合用戶數據,並核對相應的數據區有無破壞。
5. 根據掃描到的文件索引項碎片,將其拼接成一個完整的目錄結構。
6.根據拼接好的目錄項去底層恢復對應的數據,並檢查數據是否正確。
7.核對數據沒問題後恢復所有數據。
三、實施解決方案
1.備份用戶數據
由於數據全部都放Dell M3200存儲中,因此只需要恢復Dell M3200存儲中的數據即可。將Dell M3200存儲中所有的硬碟編號標記後從存儲中拔下來交給硬體數據恢復團隊檢測硬碟是否存在物理故障。經檢測沒問題後對每塊硬碟做全盤鏡像,使用數據恢復工具將硬碟中所有扇區鏡像到一塊備份硬碟中。
2、重組磁碟陣列
對所有硬碟進行鏡像備份後分析每塊硬碟上的數據。發現4塊600G硬碟做了一個RAID5,另一塊600G硬碟做為數據備份使用。通過對硬碟結構進行詳細分析得出該RAID 5磁碟陣列的相關信息,如:條帶大小,條帶走向等信息。根據這些信息即可重組此RAID。
3、掃描舊的文件索引項
仔細分析硬碟底層數據,發現硬碟底層中還殘留著許多以前文件系統的目錄項及文件索引。經過仔細核對發現這些文件索引指向的數據都是用戶丟失的文件內容。但由於整個硬碟太大,人工去搜索文件索引會很慢,因此編寫一個提取文件索引項的小程序,對整個硬碟中所有存在的文件索引項做掃描,提取所有文件的文件索引項。
4、分析掃描到文件索引項
對掃描到的所有文件索引項分析,發現其索引項均不連續並且大多以14K或6K對齊。正常情況下的文件索引項是連續且大小固定,每個文件索引項對應一個文件或目錄。掃描出來的這些不連續、不完整的文件索引項是無法正常索引到文件的內容,因此需要對掃描出來的文件索引項做加工處理。在掃描出來的文件索引項中搜索」 .VHD」,能找到一個」 .VHD」的文件記錄。然後將這個片連續的文件索引項提取出來。接著再查看這段提取出來的文件索引項中是否有指向下一段文件索引項的記錄或者是H20屬性。如果有則根據文件索引項中的特徵去匹配下一段文件索引項,如果沒有則跳過這段文件索引項。根據以上方法基本能查到大多數的文件索引項片段。而缺失的文件索引項片段有可能被破壞了,但是可以從數據備份盤中去查找缺失的文件索引項片段,因此基本可以搜索到大部分的文件索引項。
5、將文件索引項組成完整的目錄結構
根據上述方法找到所有文件索引項,根據文件索引項的編號將其拼接成整個目錄項結構。以下是搜索到的部分文件索引項,由於有部分文件索引項被破壞,因此只能找到大部分文件索引項,但這些文件索引項已經足以拼接成整個目錄結構了。
四、修復文件系統
將重建好的目錄結構和現有文件系統中的目錄結構進行替換,然後使用數據恢復工具修改部分校驗值。再使用數據恢復工具解釋這個目錄結構即可看到原有丟失的數據。
為了確定數據是否正確,將其中一個最新的VHD文件恢復出來。然後將其拷貝到一台支持附加VHD的伺服器上,嘗試附加此VHD。結果附加成功,檢查VHD中最新的數據是否完整。一切檢查完整後將所有數據恢復到一塊硬碟中。
五、驗證所有數據
在一台測試伺服器上搭建Hyper-V的環境,將恢復的虛擬機文件連接到這台伺服器上,通過導入虛擬機的方式將恢復的數據都遷移到新的Hyper-V環境。最後讓客戶來驗證所有虛擬機是否完整。
六、遷移所有數據
在客戶驗證所有虛擬機數據恢復成功後,將所有數據拷貝至客戶伺服器中。然後利用導入的方式將虛擬機導入到客戶的Hyper-V環境中。
推薦閱讀:
※Hyper-v的使用(安裝Ubuntu 14.04)
※Hadoop環境搭建筆記整理(一)——VM下的centos7安裝及jdk配置
※教程 :: 在Windows下使用VirtualBox部署Ubuntu虛擬機
※總結篇4-1 虛擬機擴展2——解釋運行高級語言
※Ubuntu搭建Hadoop的踩坑之旅(一)