一、故障描述
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供漳州企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、做網(wǎng)站、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為漳州眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
HP FC MSA2000存儲 整個存儲空間由8塊450GB SAS的硬盤組成,其中7塊硬盤組成一個RAID5的陣列,剩余1塊做成熱備盤使用。由于RAID5陣列中出現(xiàn)2塊硬盤損壞,而此時只有一塊熱備盤成功激活,因此導(dǎo)致RAID5陣列癱瘓,上層LUN無法正常使用。
由于存儲是因為RAID陣列中某些磁盤掉線,從而導(dǎo)致整個存儲不可用。因此接收到磁盤以后先對所有磁盤做物理檢測,檢測完后發(fā)現(xiàn)沒有物理故障。接著使用壞道檢測工具檢測磁盤壞道,發(fā)現(xiàn)也沒有壞道。
二、備份數(shù)據(jù)
考慮到數(shù)據(jù)的安全性以及可還原性,在做數(shù)據(jù)恢復(fù)之前需要對所有源數(shù)據(jù)做備份,以防萬一其他原因?qū)е聰?shù)據(jù)無法再次恢復(fù)。使用dd命令或winhex工具將所有磁盤都鏡像成文件。備份完部分?jǐn)?shù)據(jù)如下圖:
三、故障分析
1、分析故障原因
由于前兩個步驟并沒有檢測到磁盤有物理故障或者是壞道,由此推斷可能是由于某些磁盤讀寫不穩(wěn)定導(dǎo)致故障發(fā)生。因為HP MSA2000控制器檢查磁盤的策略很嚴(yán)格,一旦某些磁盤性能不穩(wěn)定,HP MSA2000控制器就認(rèn)為是壞盤,就將認(rèn)為是壞盤的磁盤踢出RAID組。而一旦RAID組中掉線的盤到達到RAID級別允許掉盤的極限,那么這個RAID組將變的不可用,上層基于RAID組的LUN也將變的不可用。目前初步了解的情況為基于RAID組的LUN有6個,均分配給HP-Unix小機使用,上層做的LVM邏輯卷,重要數(shù)據(jù)為Oracle數(shù)據(jù)庫及OA服務(wù)端。
2、分析RAID組結(jié)構(gòu)
HP MSA2000存儲的LUN都是基于RAID組的,因此需要先分析底層RAID組的信息,然后根據(jù)分析的信息重構(gòu)原始的RAID組。分析每一塊數(shù)據(jù)盤,發(fā)現(xiàn)4號盤的數(shù)據(jù)同其它數(shù)據(jù)盤不太一樣,初步認(rèn)為可能是hot Spare盤。接著分析其他數(shù)據(jù)盤,分析Oracle數(shù)據(jù)庫頁在每個磁盤中分布的情況,并根據(jù)數(shù)據(jù)分布的情況得出RAID組的條帶大小,磁盤順序及數(shù)據(jù)走向等RAID組的重要信息。
3、分析RAID組掉線盤
根據(jù)上述分析的RAID信息,嘗試通過北亞自主開發(fā)的RAID虛擬程序?qū)⒃嫉腞AID組虛擬出來。但由于整個RAID組中一共掉線兩塊盤,因此需要分析這兩塊硬盤掉線的順序。仔細分析每一塊硬盤中的數(shù)據(jù),發(fā)現(xiàn)有一塊硬盤在同一個條帶上的數(shù)據(jù)和其他硬盤明顯不一樣,因此初步判斷此硬盤可能是最先掉線的,通過北亞自主開發(fā)的RAID校驗程序?qū)@個條帶做校驗,發(fā)現(xiàn)除掉剛才分析的那塊硬盤得出的數(shù)據(jù)是最好的,因此可以明確最先掉線的硬盤了。
4、分析RAID組中的LUN信息
由于LUN是基于RAID組的,因此需要根據(jù)上述分析的信息將RAID組最新的狀態(tài)虛擬出來。然后分析LUN在RAID組中的分配情況,以及LUN分配的數(shù)據(jù)塊MAP。由于底層有6個LUN,因此只需要將每一個LUN的數(shù)據(jù)塊分布MAP提取出來。然后針對這些信息編寫相應(yīng)的程序,對所有LUN的數(shù)據(jù)MAP做解析,然后根據(jù)數(shù)據(jù)MAP并導(dǎo)出所有LUN的數(shù)據(jù)。
四、LVM邏輯卷及VXFS文件系統(tǒng)修復(fù)
1、解析LVM邏輯卷
分析生成出來的所有LUN,發(fā)現(xiàn)所有LUN中均包含HP-Unix的LVM邏輯卷信息。嘗試解析每個LUN中的LVM信息,發(fā)現(xiàn)其中一共有三套LVM,其中45G的LVM中劃分了一個LV,里面存放OA服務(wù)器端的數(shù)據(jù),190G的LVM中劃分了一個LV,里面存放臨時備份數(shù)據(jù)。剩余4個LUN組成一個2.1T左右的LVM,也只劃分了一個LV,里面存放Oracle數(shù)據(jù)庫文件。編寫解釋LVM的程序,嘗試將每套LVM中的LV卷都解釋出來,但發(fā)現(xiàn)解釋程序出錯。
2、修復(fù)LVM邏輯卷
仔細分析程序報錯的原因,安排開發(fā)工程師debug程序出錯的位置,并同時安排高級文件系統(tǒng)工程師對恢復(fù)的LUN做檢測,檢測LVM信息是否會因存儲癱瘓導(dǎo)致LMV邏輯卷的信息損壞。經(jīng)過仔細檢測,發(fā)現(xiàn)確實因為存儲癱瘓導(dǎo)致LVM信息損壞。嘗試人工對損壞的區(qū)域進行修復(fù),并同步修改程序,重新解析LVM邏輯卷。
3、解析VXFS文件系統(tǒng)
搭建HP-Unix環(huán)境,將解釋出來的LV卷映射到HP-Unix,并嘗試Mount文件系統(tǒng)。結(jié)果Mount文件系統(tǒng)出錯,嘗試使用“fsck –F vxfs” 命令修復(fù)vxfs文件系統(tǒng),但修復(fù)結(jié)果還是不能掛載,懷疑底層vxfs文件系統(tǒng)的部分元數(shù)據(jù)可能破壞,需要進行手工修復(fù)。
4、修復(fù)VXFS文件系統(tǒng)
仔細分析解析出來的LV,并根據(jù)VXFS文件系統(tǒng)的底層結(jié)構(gòu)校驗此文件系統(tǒng)是否完整。分析發(fā)現(xiàn)底層VXFS文件系統(tǒng)果然有問題,原來當(dāng)時存儲癱瘓的同時此文件在系統(tǒng)正在執(zhí)行IO操作,因此導(dǎo)致部分文件系統(tǒng)元文件沒有更新以及損壞。人工對這些損壞的元文件進行手工修復(fù),保證VXFS文件系統(tǒng)能夠正常解析。再次將修復(fù)好的LV卷掛載到HP-Unix小機上,嘗試Mount文件系統(tǒng),文件系統(tǒng)沒有報錯,成功掛載。
五、檢測Oracle數(shù)據(jù)庫文件并啟動數(shù)據(jù)庫
1、恢復(fù)所有用戶文件
在HP-Unix機器上mount文件系統(tǒng)后,將所有用戶數(shù)據(jù)均備份至指定磁盤空間。所有用戶數(shù)據(jù)大小在1.2TB左右。部分文件目錄截圖如下:
2、檢測數(shù)據(jù)庫文件是否完整
使用Oracle數(shù)據(jù)庫文件檢測工具“dbv”檢測每個數(shù)據(jù)庫文件是否完整,發(fā)現(xiàn)并沒有錯誤。再使用北亞自主研發(fā)的Oracle數(shù)據(jù)庫檢測工具(檢驗更嚴(yán)格),發(fā)現(xiàn)有部分?jǐn)?shù)據(jù)庫文件和日志文件校驗不一致,安排高級數(shù)據(jù)庫工程師對此類文件進行修復(fù),并在次校驗,直到所有文件校驗均完全通過。
3、啟動Oracle數(shù)據(jù)庫
由于我們提供的HP-Unix環(huán)境沒有此版本的Oracle數(shù)據(jù),因此和用戶協(xié)調(diào)將原始生成環(huán)境帶至北亞數(shù)據(jù)恢復(fù)中心,然后將恢復(fù)的Oracle數(shù)據(jù)庫附加到原始生產(chǎn)環(huán)境的HP-Unix服務(wù)器中,嘗試啟動Oracle數(shù)據(jù)庫,Oracle數(shù)據(jù)庫啟動成功。部分截圖如下:
六、數(shù)據(jù)驗證
由用戶方配合,啟動Oracle數(shù)據(jù)庫,啟動OA服務(wù)端,在本地筆記本安裝OA客戶端。通過OA客戶端對最新的數(shù)據(jù)記錄以及歷史數(shù)據(jù)記錄進行驗證,并且有用戶安排遠程不同部門人員進行遠程驗證。最終數(shù)據(jù)驗證無誤,數(shù)據(jù)完整,數(shù)據(jù)恢復(fù)成功。
七、數(shù)據(jù)恢復(fù)結(jié)論
由于故障發(fā)生后保存現(xiàn)場環(huán)境良好,沒用做相關(guān)危險的操作,對后期的數(shù)據(jù)恢復(fù)有很大的幫助。整個數(shù)據(jù)恢復(fù)過程中雖然遇到好多技術(shù)瓶頸,但也都一一解決。最終在預(yù)期的時間內(nèi)完成整個數(shù)據(jù)恢復(fù),恢復(fù)的數(shù)據(jù)用戶方也相當(dāng)滿意,Oracle數(shù)據(jù)庫服務(wù),OA服務(wù)端等所有服務(wù)能夠正常啟動。