某公司的一臺服務器數據恢復需求。該公司有一臺emc的服務器,搭建了raid5磁盤陣列進行數據存儲,有兩塊熱備盤,由於服務器上有兩塊硬盤出現故障,可是熱備盤中只有一塊被成功激活,致使了raid陣列癱瘓,服務器的上層應用不可用。須要進行服務器數據恢復。服務器
首先對客戶的兩塊掉線的硬盤進行物理檢測,若是發現物理故障,須要對物理硬盤進行修復,而後才能繼續下一步數據恢復操做,在本次服務器數據恢復案例中,硬盤不存在物理故障及壞道。ide
在服務器數據恢復開始前須要將客戶的全部硬盤進行鏡像備份。因爲客戶的服務器硬盤不存在物理故障,所以直接備份便可。使用winhex將全部磁盤都鏡像成文件,因爲源磁盤的扇區大小爲520字節,所以還須要使用特殊工具將全部備份的數據再作520 to 512字節的轉換。工具
先對服務器底層raid組進行數據分析,以便經過基礎raid信息重組陣列,恢復服務器數據。通過對raid陣列的分析發現,客戶原服務器內的兩塊熱備盤內均爲空,沒有寫入任何數據(所以推斷有一塊熱備盤雖然上線,但此時raid組仍然處於缺盤狀態,數據並無開始同步。)隨後工程師依次分析到了整個raid5陣列上的條帶大小,磁盤順序等基礎信息,開始進行raid重組。
根據上述分析的RAID信息,嘗試經過北亞自主開發的RAID虛擬程序將原始的RAID組虛擬出來。但因爲整個RAID組中一共掉線兩塊盤,所以須要分析這兩塊硬盤掉線的順序。仔細分析每一塊硬盤中的數據,發現有一塊硬盤在同一個條帶上的數據和其餘硬盤明顯不同,所以初步判斷此硬盤多是最早掉線的,經過北亞自主開發的RAID校驗程序對這個條帶作校驗,發現除掉剛纔分析的那塊硬盤得出的數據是最好的,所以能夠明確最早掉線的硬盤了。
因爲LUN是基於RAID組的,所以須要根據上述分析的信息將RAID組重組出來。而後分析LUN在RAID組中的分配信息,以及LUN分配的數據塊MAP。因爲底層只有一個LUN,所以只須要分析一份LUN信息就OK了。而後根據這些信息使用北亞raid恢復程序,解釋LUN的數據MAP並導出LUN的全部數據。debug
利用ZFS文件系統解釋程序對生成的LUN作文件系統解釋,發現程序在解釋某些文件系統元文件的時候報錯。迅速安排開發工程師對程序作debug調試,分析程序報錯緣由。接着安排文件系統工程師分析ZFS文件系統是否由於版本緣由,致使程序不支持。通過長達7小時的分析與調試,發現ZFS文件系統因存儲忽然癱瘓致使其中某些元文件損壞,從而致使解釋ZFS文件系統的程序沒法正常解釋。
上述分析明確了ZFS文件系統因存儲癱瘓致使部分文件系統元文件損壞,所以須要對這些損壞的文件系統元文件作修復,才能正常解析ZFS文件系統。分析損壞的元文件發現,因當初ZFS文件正在進行IO操做的同時存儲癱瘓,致使部分文件系統元文件沒有更新以及損壞。人工對這些損壞的元文件進行手工修復,保證ZFS文件系統可以正常解析。調試
對修復後的文件系統進行解析並驗證最新數據。通過客戶服務器管理員的驗證,確認服務器內全部數據被成功恢復,本次數據恢復100%成功。開發