hyper-v虛擬化未知原因故障導致數據丟失解決過程

簡介:

由於MD3200存儲中虛擬機的數據文件丟失,導致整個Hyper-V服務癱瘓,虛擬機無法使用,故障環境爲Windows Server 2012服務器,系統中部署了Hyper-V虛擬機環境,虛擬機的硬盤文件和配置文件放在朝陽區某託管中心託管的DELL MD3200存儲中(注:硬盤600G4,4T1)。MD3200存儲是由4塊600G硬盤組成的陣列,用作存儲虛擬機的數據文件。單塊4T硬盤用作虛擬機數據文件的備份。

故障:

由於MD3200存儲中虛擬機的數據文件丟失,導致整個Hyper-V服務癱瘓,虛擬機無法使用。以如下流程進行數據檢測:

  1. 對MD3200存儲服務器進行物理檢測,發現存儲並未出現物理故障,涉事硬盤均正常工作
  2. 檢查操作系統:工作正常中,未發現出錯進程,排除因操作系統BUG導致的數據丟失。
  3. 分析丟失數據硬盤的文件系統:打開正常,不符合病毒破壞的表現特徵,同時經殺毒軟件檢測無病毒。再仔細分析硬盤的文件系統,發現此文件系統的元文件創建時間爲11月28日,表明文件系統的創建時間爲11月28日,與數據丟失的時間相吻合。通常這種故障表明:文件系統被人爲重寫了,即分區被格式化了。
  4. 檢查系統日誌:發現系統日誌11月28號之前以及當天的系統日誌已被清空,審覈日誌和服務日誌卻並未清空。通常情況下,此操作應該由人爲導致。而格式化分區的操作只記錄在系統日誌中,這與上述人爲破壞的表現相符。
  5. 嘗試恢復系統日誌:仔細分析硬盤底層數據,發現硬盤底層中需要恢復的系統日誌已被新的日誌記錄覆蓋,無法恢復。
  6. 分析操作系統中的所有分區:發現只有MD3200存儲中的兩個分區的文件系統被重新寫入文件系統了。通常情況下,對兩個分區的格式化需要有兩個獨立的過程,因此這種針對性的操作應該由人爲導致。

解決方案

備份用戶數據
由於數據全部都放Dell M3200存儲中,因此只需要恢復Dell M3200存儲中的數據即可。將Dell M3200存儲中所有的硬盤標上編號,然後後從存儲中拔下來交給硬件部門檢測硬盤是否存在物理故障。經檢測沒問題後對每塊硬盤做全盤鏡像,使用專用工具(Winhex)將硬盤中所有扇區鏡像到一塊備份硬盤中。
如下圖:使用專業工具備份所有硬盤數據
hyper-v虛擬化未知原因故障導致數據丟失解決過程
重組磁盤陣列
鏡像完所RAID 5的相關信息,如:條帶大小,條帶走向等信息。根據這些信息即可重組有硬盤後,分析每塊硬盤上的數據。分析後發現4塊600G硬盤做了一個RAID5,另一塊4T硬盤是做爲數據備份使用。仔細分析4塊600G硬盤中的數據結構,可以得出這個此RAID。
如下圖:使用專業工具重組RAID

hyper-v虛擬化未知原因故障導致數據丟失解決過程
如下圖:是用專業工具打開硬盤陣列的情況
hyper-v虛擬化未知原因故障導致數據丟失解決過程

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

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

將文件索引項組成完整的目錄結構
根據上述方法找到所有的文件索引項,然後根據文件索引項的編號將其拼接成整個目錄項結構。以下是搜索到的部分文件索引項,由於有部分文件索引項被破壞,因此只能找到大部分文件索引項,但這些文件索引項已經足以拼接成整個目錄結構了。
如下圖:是掃描到的文件索引項碎片
hyper-v虛擬化未知原因故障導致數據丟失解決過程
修復文件系統
將重建好的目錄結構和現有文件系統中的目錄結構進行替換,然後使用專業工具修改部分校驗值。再使用專業的工具解釋這個目錄結構即可看到原有丟失的數據了。
如下圖:是用專業工具解釋出來的目錄結構
hyper-v虛擬化未知原因故障導致數據丟失解決過程
hyper-v虛擬化未知原因故障導致數據丟失解決過程

爲了確定數據是否正確,將其中一個最新的VHD文件恢復出來。然後將其拷貝到一臺支持附加VHD的服務器上,嘗試附加此VHD。結果附加成功,檢查VHD中最新的數據是否完整。一切檢查完整後將所有數據恢復到一塊硬盤中。

如下圖:是恢復出來的所有虛擬機數據文件
hyper-v虛擬化未知原因故障導致數據丟失解決過程

驗證所有數據
在一臺測試服務器上搭建Hyper-V的環境,將恢復的虛擬機文件連接到這臺服務器上。然後通過導入虛擬機的方式,將恢復的數據都遷移到新的Hyper-V環境。然後讓客戶來驗證所有虛擬機是否完整。
如下圖:是虛擬機導入的過程
hyper-v虛擬化未知原因故障導致數據丟失解決過程

遷移所有數據
在客戶驗證所有虛擬機沒問題後,將所有數據拷貝至客戶服務器中。然後利用導入的方式將虛擬機導入到客戶的Hyper-V環境中,需要以下面的方式導入虛擬機,導入後沒有報錯,嘗試啓動所有虛擬機,所有虛擬機啓動都沒問題
hyper-v虛擬化未知原因故障導致數據丟失解決過程
hyper-v虛擬化未知原因故障導致數據丟失解決過程
hyper-v虛擬化未知原因故障導致數據丟失解決過程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章