華為S5300存儲陣列RAID癱瘓,Oracle
數(shù)據(jù)庫內(nèi)有重要數(shù)據(jù)需要恢復(fù),恢復(fù)數(shù)據(jù)的整個(gè)存儲空間由450GB和600G FC的硬盤組成,共12塊,其中11塊硬盤組成一個(gè)RAID5的陣列,剩余1塊做成熱備盤使用。由于RAID5陣列中出現(xiàn)1塊硬盤故障,熱備盤成功激活,在進(jìn)行同步的過程中又一塊硬盤出現(xiàn)故障,因此導(dǎo)致RAID5陣列癱瘓,上層LUN無法正常使用。
一、檢測磁盤
由于存儲是因?yàn)镽AID陣列中某些磁盤掉線,從而導(dǎo)致整個(gè)存儲不可用。因此接收到磁盤以后先對所有磁盤做物理檢測,檢測完后發(fā)現(xiàn)一塊硬盤有物理故障,其他硬盤沒有物理故障。
二、備份數(shù)據(jù)
考慮到,數(shù)據(jù)的安全性以及可還原性,在做
數(shù)據(jù)恢復(fù)之前需要對所有源數(shù)據(jù)做備份,以防萬一其他原因?qū)е聰?shù)據(jù)無法再次恢復(fù)。使用dd命令或
winhex工具將所有磁盤都鏡像成文件。

三、故障分析
1、分析故障原因
由于前兩個(gè)步驟并檢測到磁盤有物理故障,由此推斷可能是由于某些磁盤讀寫不穩(wěn)定和物理故障導(dǎo)致故障發(fā)生。因?yàn)槿A為S5300控制器檢查磁盤的策略很嚴(yán)格,一旦某些磁盤性能不穩(wěn)定,華為S5300控制器就認(rèn)為是壞盤,就將認(rèn)為是壞盤的磁盤踢出RAID組。而一旦RAID組中掉線的盤到達(dá)到RAID級別允許掉盤的極限,那么這個(gè)RAID組將變的不可用,上層基于RAID組的LUN也將變的不可用,之后又新建RAID,有一塊硬盤在同步的過程中被損壞,目前初步了解的情況為基于RAID組的LUN分配給linux系統(tǒng)使用,重要數(shù)據(jù)為Oracle數(shù)據(jù)庫。
2、分析RAID組結(jié)構(gòu)
華為S5300存儲的LUN都是基于RAID組的,因此需要先分析底層RAID組的信息,然后根據(jù)分析的信息重構(gòu)原始的RAID組。分析每一塊數(shù)據(jù)盤,發(fā)現(xiàn)一塊盤的數(shù)據(jù)同其它數(shù)據(jù)盤不太一樣,初步認(rèn)為可能是hot Spare盤。接著分析其他數(shù)據(jù)盤,分析Oracle數(shù)據(jù)庫頁在每個(gè)磁盤中分布的情況,并根據(jù)數(shù)據(jù)分布的情況得出RAID組的條帶大小,磁盤順序及數(shù)據(jù)走向等RAID組的重要信息。
3、分析RAID組被同步損壞盤
根據(jù)上述分析的RAID信息,嘗試通過兆柏自主開發(fā)的RAID虛擬程序?qū)⒃嫉腞AID組虛擬出來。但由于整個(gè)RAID組中掉線兩塊盤并且有一塊硬盤數(shù)據(jù)被同步損壞。仔細(xì)分析每一塊硬盤中的數(shù)據(jù),發(fā)現(xiàn)有一塊硬盤在同一個(gè)條帶上的數(shù)據(jù)和其他硬盤明顯不一樣,因此初步判斷此硬盤可能是被同步掉損壞的硬盤,通過兆柏自主開發(fā)的RAID校驗(yàn)程序?qū)@個(gè)條帶做校驗(yàn),因此可以明確被同步損壞盤了。
4、分析RAID組中的LUN信息
由于LUN是基于RAID組的,因此需要根據(jù)上述分析的信息將RAID組最新的狀態(tài)虛擬出來。然后分析LUN在RAID組中的分配情況,以及LUN分配的數(shù)據(jù)塊MAP。因此只需要將LUN的數(shù)據(jù)塊分布MAP提取出來。然后針對這些信息編寫相應(yīng)的程序,LUN的數(shù)據(jù)MAP做解析,然后根據(jù)數(shù)據(jù)MAP并導(dǎo)出LUN的數(shù)據(jù)。
四、解析EXT3文件系統(tǒng)
1、解析EXT3文件系統(tǒng)
由于是使用熱備盤虛擬的RAID結(jié)構(gòu),EXT3文件系統(tǒng)無法正常掛載,所以只能提取oracle數(shù)據(jù)庫文件,利用自主開發(fā)的文件系統(tǒng)解析程序?qū)ζ溥M(jìn)行文件系統(tǒng)的解析,導(dǎo)出oracle數(shù)據(jù)庫文件,并把數(shù)據(jù)庫文件移交給數(shù)據(jù)庫工程師進(jìn)行校驗(yàn)和驗(yàn)證
五、檢測Oracle數(shù)據(jù)庫文件及修復(fù)
1、檢測數(shù)據(jù)庫文件是否完整
使用Oracle數(shù)據(jù)庫文件檢測工具檢測每個(gè)數(shù)據(jù)庫文件是否完整,發(fā)現(xiàn)有錯(cuò)誤。再使用兆柏自主研發(fā)的Oracle數(shù)據(jù)庫檢測工具(檢驗(yàn)更嚴(yán)格),發(fā)現(xiàn)有部分?jǐn)?shù)據(jù)庫文件和日志文件錯(cuò)誤, system 和 sysaux表空間各存在100多壞塊;3個(gè)控制文件都存在壞塊許多壞塊,控制文件全部損壞;eschoolspace表空間的3個(gè)文件的壞塊更多,達(dá)到1000個(gè);undotbs02丟失;數(shù)據(jù)庫工程師對此類文件進(jìn)行修復(fù):
2、修復(fù)Oracle數(shù)據(jù)庫
我們創(chuàng)建了控制文件,創(chuàng)建undo表空間,啟動數(shù)據(jù)庫到mount。system數(shù)據(jù)文件壞塊使得數(shù)據(jù)庫不能open。各種隱含參數(shù)也不能繞過system的壞塊;搭建數(shù)據(jù)庫環(huán)境。使用dmp文件還原數(shù)據(jù)庫。使用3月9號之后的導(dǎo)入,都報(bào)錯(cuò),大約只能導(dǎo)入10G左右的數(shù)據(jù),如下圖:
六、數(shù)據(jù)驗(yàn)證
由用戶方配合,啟動Oracle數(shù)據(jù)庫,在本地虛擬機(jī)安裝OA客戶端。通過OA客戶端對數(shù)據(jù)記錄進(jìn)行驗(yàn)證,并且用戶安排不同部門人員進(jìn)行遠(yuǎn)程驗(yàn)證。
七、數(shù)據(jù)恢復(fù)結(jié)論
由于故障發(fā)生后又重建RAID,導(dǎo)致一塊盤的數(shù)據(jù)被同步損壞,對后期的數(shù)據(jù)恢復(fù)造成了困難。因?yàn)闊醾浔P同步了一段時(shí)間寫入了部分?jǐn)?shù)據(jù),所以使用熱備盤里面的數(shù)據(jù)進(jìn)行恢復(fù),只能恢復(fù)部分?jǐn)?shù)據(jù),只有3月9日之前的數(shù)據(jù)。