儲存癱瘓導致虛擬化平臺丟失虛擬機器該怎麼解決

北亞資料恢復發表於2018-08-29

某教育局儲存,raid崩潰導致儲存無法啟動。儲存內部共有虛擬機器若干臺(≥ 5),其中linux虛擬機器3臺為客戶重要資料。
恢復流程:
1、制定恢復方案。經過與客戶溝通及檢視底層儲存情況分析本例中儲存層次結構,初步分析如下

儲存結構

1、重組raid;重組過程中發現本raid5缺失2塊盤(第一掉線盤掉線後熱備盤頂替,之後又掉線一塊盤使得RAID5處於降級狀態。最後在掉線第三塊盤時碟片劃傷RAID崩潰),無法透過校驗直接獲取丟失盤的資料,所以只能使用磁碟同等大小的全0映象進行重組(此方法只可用於緊急情況,因為依賴空映象組成的raid檔案系統結構會被嚴重破壞,相當於每個條帶都會缺失兩個塊的資料)。

重建raid

2、提取LUN;分析儲存結構,獲取儲存劃分的MAP塊。在找到MAP塊之後解析得到各個LUN的資料塊指標,編寫資料提取程式提取LUN碎片。提取完成後進行碎片拼接,組成完整LUN。

提取LUN

3、匯出LUN內所有虛擬機器,嘗試啟動;因虛擬機器名稱涉及客戶隱私且匯出過程較為簡單,此處不再贅述。匯出虛擬機器後嘗試啟動,同預想相同,作業系統被破壞虛擬機器無法啟動。
4、提取虛擬機器內檔案;在虛擬機器無法啟動的情況下只能退而求其次,提取虛擬機器內檔案。在取出檔案後進行測試,發現大多數檔案都被破壞,只有少部分小檔案可以開啟。


虛擬機器內取出圖片

5、與客戶溝通分析後續恢復可能性,制定後續恢復方案;在與客戶溝通後得知虛擬機器內有mysql資料庫,因為資料庫底層儲存的特殊性,可以透過掃描資料頁進行資料提取。在找到此虛擬機器後發現虛擬機器啟用快照,父盤和快照檔案都被損壞的情況下常規合併操作無法完成,使用本公司自主研發VMFS快照合併程式進行快照合併。

6、獲取mysql資料頁並分析;根據mysql資料頁特徵進行資料頁掃描並匯出(innodb引擎可以使用此方案,myisam因為沒有“資料頁”概念所以不可用),分析系統表獲取各使用者表資訊,根據各個表的id進行資料頁分割。因為表內容涉及使用者隱私,此處未配圖
7、提取表結構;因為資料庫使用時間已久,表結構也曾多次變更,加上系統表在儲存損壞後也有部分資料丟失,記錄提取過程遇到很大阻力。首先獲取最初版本資料庫各個表的表結構:合併快照前的父盤因為寫入較早,使用第一塊掉線盤進行校驗獲取到這個檔案的完整資料,然後提取出其中資料庫各個表的表結構,之後客戶方提供了最新版的資料庫建表指令碼。
8、提取記錄;分別使用兩組不同表結構對資料記錄進行提取並匯入恢復環境中的mysql資料庫內,然後剔除各個表中因為表結構變更造成的亂碼資料,最後將兩組資料分別匯出為.sql檔案。
9、驗證資料;因為兩個版本的資料庫表結構不同,所以聯絡了客戶方的應用工程師進行除錯。除錯完成後匯入平臺,平臺除錯成功,資料恢復完畢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2213122/,如需轉載,請註明出處,否則將追究法律責任。

相關文章