服務(wù)器存儲(chǔ)故障:
某單位同友存儲(chǔ),存儲(chǔ)設(shè)備中若干磁盤(pán)組建了raid5磁盤(pán)陣列。未知原因?qū)е麓鎯?chǔ)設(shè)備崩潰無(wú)法啟動(dòng),raid5陣列上層的虛擬機(jī)全部丟失,其中存放了重要數(shù)據(jù)的3臺(tái)虛擬機(jī)需要恢復(fù)。
服務(wù)器存儲(chǔ)數(shù)據(jù)恢復(fù)過(guò)程:
1、磁盤(pán)鏡像過(guò)程就不贅述了。通過(guò)與用戶(hù)方的溝通以及對(duì)raid陣列的分析,獲悉故障存儲(chǔ)的存儲(chǔ)結(jié)構(gòu):若干物理磁盤(pán)組成一個(gè)存儲(chǔ)池,劃分了多個(gè)lun,其中需要恢復(fù)的那3臺(tái)虛擬機(jī)在lun1。
存儲(chǔ)結(jié)構(gòu):
北亞企安數(shù)據(jù)恢復(fù)——同友存儲(chǔ)數(shù)據(jù)恢復(fù)
2、嘗試對(duì)故障存儲(chǔ)中raid5陣列進(jìn)行分析重組,發(fā)現(xiàn)故該raid5陣列缺失2塊硬盤(pán),熱備盤(pán)已經(jīng)啟用。
基于現(xiàn)在掌握的信息,可以還原當(dāng)時(shí)故障發(fā)生過(guò)程:raid5陣列中第一塊硬盤(pán)掉線(xiàn)后,熱備盤(pán)自動(dòng)啟動(dòng)替換掉線(xiàn)硬盤(pán)。當(dāng)?shù)诙K硬盤(pán)掉線(xiàn)后,raid5陣列處于降級(jí)狀態(tài)。當(dāng)?shù)谌龎K硬盤(pán)掉線(xiàn),raid5陣列崩潰。
通常這種情況是無(wú)法通過(guò)校驗(yàn)直接獲取丟失硬盤(pán)的數(shù)據(jù),只能?chē)L試使用磁盤(pán)同等大小的全0鏡像進(jìn)行重組(使用全0鏡像組建的raid,文件系統(tǒng)結(jié)構(gòu)會(huì)被嚴(yán)重破壞,相當(dāng)于每個(gè)條帶都會(huì)缺失兩個(gè)塊的數(shù)據(jù),所以一般情況下不建議使用全0鏡像組建raid。)
重建raid:
北亞企安數(shù)據(jù)恢復(fù)——同友存儲(chǔ)數(shù)據(jù)恢復(fù)
3、通過(guò)重組的raid陣列提取LUN。通過(guò)對(duì)存儲(chǔ)結(jié)構(gòu)的進(jìn)一步分析,數(shù)據(jù)恢復(fù)工程師獲取到存儲(chǔ)劃分的MAP塊。解析各個(gè)LUN的數(shù)據(jù)塊指針,北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)數(shù)據(jù)提取程序提取LUN碎片,完成碎片提取后通過(guò)拼接碎片組建出完整的LUN。
提取LUN:
北亞企安數(shù)據(jù)恢復(fù)——同友存儲(chǔ)數(shù)據(jù)恢復(fù)
4、導(dǎo)出LUN內(nèi)所有虛擬機(jī)并嘗試啟動(dòng),由于操作系統(tǒng)被破壞,虛擬機(jī)無(wú)法成功啟動(dòng)。
5、由于虛擬機(jī)無(wú)法啟動(dòng),只能對(duì)虛擬機(jī)內(nèi)的文件進(jìn)行提取,但虛擬機(jī)內(nèi)的多數(shù)文件被破壞嚴(yán)重,只有少部分文件可用,只好嘗試其他數(shù)據(jù)恢復(fù)方案。
6、本案例中需要恢復(fù)數(shù)據(jù)的虛擬機(jī)中有mysql數(shù)據(jù)庫(kù),于是北亞企安數(shù)據(jù)恢復(fù)工程師嘗試通過(guò)利用數(shù)據(jù)庫(kù)底層存儲(chǔ)的特殊性?huà)呙钄?shù)據(jù)頁(yè)的方案來(lái)提取數(shù)據(jù)。在找到有數(shù)據(jù)庫(kù)的虛擬機(jī)后,發(fā)現(xiàn)該虛擬機(jī)啟用快照。父盤(pán)和快照文件都損壞的情況下常規(guī)合并操作無(wú)法完成,使用北亞企安自主研發(fā)的VMFS快照合并程序進(jìn)行快照合并。
北亞企安數(shù)據(jù)恢復(fù)——同友存儲(chǔ)數(shù)據(jù)恢復(fù)
7、根據(jù)mysql數(shù)據(jù)頁(yè)特征掃描數(shù)據(jù)頁(yè)并導(dǎo)出(innodb引擎的數(shù)據(jù)庫(kù)可以使用此方案,myisam引擎的數(shù)據(jù)庫(kù)無(wú)“數(shù)據(jù)頁(yè)”概念),分析系統(tǒng)表獲取各用戶(hù)表信息,根據(jù)各個(gè)表的id進(jìn)行數(shù)據(jù)頁(yè)分割。
8、因?yàn)閿?shù)據(jù)庫(kù)使用時(shí)間已久,表結(jié)構(gòu)曾多次變更,在存儲(chǔ)損壞后系統(tǒng)表中也有部分?jǐn)?shù)據(jù)丟失,記錄提取過(guò)程很不順利。
9、首先獲取最初版本數(shù)據(jù)庫(kù)各個(gè)表的表結(jié)構(gòu):合并快照前的父盤(pán)因?yàn)閷?xiě)入較早,使用第一塊掉線(xiàn)盤(pán)進(jìn)行校驗(yàn)獲取到這個(gè)文件的完整數(shù)據(jù),然后提取出其中的數(shù)據(jù)庫(kù)各個(gè)表的表結(jié)構(gòu)。用戶(hù)方提供了最新版的數(shù)據(jù)庫(kù)建表腳本。
10、分別使用兩組不同表結(jié)構(gòu)對(duì)數(shù)據(jù)記錄進(jìn)行提取,導(dǎo)入數(shù)據(jù)恢復(fù)環(huán)境中的mysql數(shù)據(jù)庫(kù)內(nèi),剔除各個(gè)表中因?yàn)楸斫Y(jié)構(gòu)變更造成的亂碼數(shù)據(jù),最后將兩組數(shù)據(jù)分別導(dǎo)出為.sql文件。
11、因?yàn)閮蓚€(gè)版本的數(shù)據(jù)庫(kù)的表結(jié)構(gòu)不同,所以聯(lián)系了用戶(hù)方的應(yīng)用工程師進(jìn)行調(diào)試,調(diào)試完成后導(dǎo)入平臺(tái),平臺(tái)調(diào)試成功,用戶(hù)方經(jīng)過(guò)檢測(cè)后認(rèn)可本次數(shù)據(jù)恢復(fù)結(jié)果。
審核編輯 黃宇
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8701瀏覽量
84554 -
磁盤(pán)陣列
+關(guān)注
關(guān)注
0文章
43瀏覽量
14284 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
507瀏覽量
17204
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論