1. 程式人生 > >開學季出大事:某教育局丟失3臺虛擬機

開學季出大事:某教育局丟失3臺虛擬機

用戶表 程序 isa 數據塊 數據頁 名稱 pro 分享 ima

某教育局存儲,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、驗證數據;因為兩個版本的數據庫表結構不同,所以聯系了客戶方的應用工程師進行調試。調試完成後導入平臺,平臺調試成功,數據恢復完畢。

開學季出大事:某教育局丟失3臺虛擬機