閱讀799 返回首頁    go 技術社區[雲棲]


恢複Hyper-V虛擬機丟失的數據文件過程

簡介:
由於MD3200存儲中虛擬機的數據文件丟失,導致整個Hyper-V服務癱瘓,虛擬機無法使用,故障環境為Windows Server 2012服務器,係統中部署了Hyper-V虛擬機環境,虛擬機的硬盤文件和配置文件放在朝陽區某托管中心托管的DELL MD3200存儲中(注:硬盤600G*4,4T*1)。MD3200存儲是由4塊600G硬盤組成的陣列,用作存儲虛擬機的數據文件。單塊4T硬盤用作虛擬機數據文件的備份。
故障:
由於MD3200存儲中虛擬機的數據文件丟失,導致整個Hyper-V服務癱瘓,虛擬機無法使用。以如下流程進行數據檢測:
1、對MD3200存儲服務器進行物理檢測,發現存儲並未出現物理故障,涉事硬盤均正常工作
2、檢查操作係統:工作正常中,未發現出錯進程,排除因操作係統BUG導致的數據丟失。
3、分析丟失數據硬盤的文件係統:打開正常,不符合病毒破壞的表現特征,同時經殺毒軟件檢測無病毒。再仔細分析硬盤的文件係統,發現此文件係統的元文件創建時間為11月28日,表明文件係統的創建時間為11月28日,與數據丟失的時間相吻合。通常這種故障表明:文件係統被人為重寫了,即分區被格式化了。
4、檢查係統日誌:發現係統日誌11月28號之前以及當天的係統日誌已被清空,審核日誌和服務日誌卻並未清空。通常情況下,此操作應該由人為導致。而格式化分區的操作隻記錄在係統日誌中,這與上述人為破壞的表現相符。
5、嚐試恢複係統日誌:仔細分析硬盤底層數據,發現硬盤底層中需要恢複的係統日誌已被新的日誌記錄覆蓋,無法恢複。
6、分析操作係統中的所有分區:發現隻有MD3200存儲中的兩個分區的文件係統被重新寫入文件係統了。通常情況下,對兩個分區的格式化需要有兩個獨立的過程,因此這種針對性的操作應該由人為導致。

解決方案
1、備份用戶數據
由於數據全部都放Dell M3200存儲中,因此隻需要恢複Dell M3200存儲中的數據即可。將Dell M3200存儲中所有的硬盤標上編號,然後後從存儲中拔下來交給硬件部門檢測硬盤是否存在物理故障。經檢測沒問題後對每塊硬盤做全盤鏡像,使用專用工具(Winhex)將硬盤中所有扇區鏡像到一塊備份硬盤中。
如下圖1.:使用專業工具備份所有硬盤數據
1

2、重組磁盤陣列
鏡像完所RAID 5的相關信息,如:條帶大小,條帶走向等信息。根據這些信息即可重組有硬盤後,分析每塊硬盤上的數據。分析後發現4塊600G硬盤做了一個RAID5,另一塊4T硬盤是做為數據備份使用。仔細分析4塊600G硬盤中的數據結構,可以得出這個此RAID。
如下圖2.:使用專業工具重組RAID
2

如下圖3.:是用專業工具打開硬盤陣列的情況
3

3、掃描舊的文件索引項
仔細分析硬盤底層數據,發現硬盤底層中還殘留著許多以前文件係統的目錄項及文件索引。經過仔細核對發現這些文件索引指向的數據都是用戶丟失的文件內容。但由於整個硬盤太大,人工去搜索文件索引會很慢,因此編寫一個提取文件索引項的小程序,對整個硬盤中所有存在的文件索引項做掃描,提取所有文件的文件索引項。

4、分析掃描到文件索引項
對掃描到的所有文件索引項做詳細的分析,發現其索引項都是不連續的,並且大多都是以16K或8K對齊的。正常情況下的文件索引項是連續的,大小為固定的1K,每個文件索引項對應一個文件或目錄。而掃描出來的這些不連續,並且不完整的文件索引項是無法正常索引到文件的內容。因此需要對掃描出來的文件索引項做加工處理。在掃描出來的文件索引項中搜索” .VHD”,能找到一個” .VHD”的文件記錄。然後將這個片連續的文件索引項提取出來。接著再查看這段提取出來的文件索引項中是否有指向下一段文件索引項的記錄或者是H20屬性。如果有則根據文件索引項中的特征去匹配下一段文件索引項,如果沒有則跳過這段文件索引項。根據以上方法基本能查到大多數的文件索引項片段。而缺失的文件索引項片段有可能被破壞了,但是可以從數據備份盤中去查找缺失的文件索引項片段,因此基本可以搜索到大部分的文件索引項。
如下圖4.:是文件索引項截圖
4

5、將文件索引項組成完整的目錄結構
根據上述方法找到所有的文件索引項,然後根據文件索引項的編號將其拚接成整個目錄項結構。以下是搜索到的部分文件索引項,由於有部分文件索引項被破壞,因此隻能找到大部分文件索引項,但這些文件索引項已經足以拚接成整個目錄結構了。
如下圖5.:是掃描到的文件索引項碎片
5

6:修複文件係統
將重建好的目錄結構和現有文件係統中的目錄結構進行替換,然後使用專業工具修改部分校驗值。再使用專業的工具解釋這個目錄結構即可看到原有丟失的數據了。
如下圖6.:是用專業工具解釋出來的目錄結構
6

如下圖7
7

為了確定數據是否正確,將其中一個最新的VHD文件恢複出來。然後將其拷貝到一台支持附加VHD的服務器上,嚐試附加此VHD。結果附加成功,檢查VHD中最新的數據是否完整。一切檢查完整後將所有數據恢複到一塊硬盤中。
如下圖8:是恢複出來的所有虛擬機數據文件
8

7、驗證所有數據
在一台測試服務器上搭建Hyper-V的環境,將恢複的虛擬機文件連接到這台服務器上。然後通過導入虛擬機的方式,將恢複的數據都遷移到新的Hyper-V環境。然後讓客戶來驗證所有虛擬機是否完整。
如下圖9.:是虛擬機導入的過程
9

如下圖10.
10

8、遷移所有數據
在客戶驗證所有虛擬機沒問題後,將所有數據拷貝至客戶服務器中。然後利用導入的方式將虛擬機導入到客戶的Hyper-V環境中,需要以下麵的方式導入虛擬機,導入後沒有報錯,嚐試啟動所有虛擬機,所有虛擬機啟動都沒問題
11
12
13

最後更新:2017-06-27 15:02:00

  上一篇:go  nginx error_log 錯誤日誌配置說明
  下一篇:go  網站SEO優化:新網站如何篩選關鍵詞