raid5兩塊硬碟離線lvm下vxfs檔案系統恢復資料方案

北亞資料恢復發表於2018-07-04
伺服器資料恢復故障描述
某公司的一臺HP FC MSA2000伺服器,伺服器中搭建RAID5陣列,伺服器正常使用過程中出現2塊硬碟損壞並離線,而此時只有一塊熱備盤成功啟用,因此導致RAID5陣列癱瘓,上層LUN無法正常使用,使用者聯絡資料恢復中心進行伺服器資料恢復。
由於伺服器儲存是因為RAID陣列中某些磁碟掉線,從而導致整個儲存不可用。因此接收到磁碟以後先對所有磁碟做物理檢測,檢測完後發現沒有物理故障。接著使用壞道檢測工具檢測磁碟壞道,發現也沒有壞道。

伺服器資料恢復過程:
1、備份伺服器資料
考慮到資料的安全性以及可還原性,在做資料恢復之前需要對所有源資料做備份,以防萬一其他原因導致資料無法再次恢復。使用dd命令或winhex工具將所有磁碟都映象成檔案。備份完部分資料如下圖:
圖一:

2、分析伺服器故障原因
由於前兩個步驟並沒有檢測到磁碟有物理故障或者是壞道,由此推斷可能是由於某些磁碟讀寫不穩定導致故障發生。因為HP MSA2000控制器檢查磁碟的策略很嚴格,一旦某些磁碟效能不穩定,HP MSA2000控制器就認為是壞盤,就將認為是壞盤的磁碟踢出RAID組。而一旦RAID組中掉線的盤到達到RAID級別允許掉盤的極限,那麼這個RAID組將變的不可用,上層基於RAID組的LUN也將變的不可用。目前初步瞭解的情況為基於RAID組的LUN有6個,均分配給HP-Unix小機使用,上層做的LVM邏輯卷,重要資料為Oracle資料庫及OA服務端。
3、分析伺服器RAID組結構
HP MSA2000儲存的LUN都是基於RAID組的,因此需要先分析底層RAID組的資訊,然後根據分析的資訊重構原始的RAID組。分析每一塊資料盤,發現4號盤的資料同其它資料盤不太一樣,初步認為可能是hot Spare盤。接著分析其他資料盤,分析Oracle資料庫頁在每個磁碟中分佈的情況,並根據資料分佈的情況得出RAID組的條帶大小,磁碟順序及資料走向等RAID組的重要資訊。
4、分析RAID組掉線盤
根據上述分析的RAID資訊,嘗試透過北亞自主開發的RAID虛擬程式將原始的RAID組虛擬出來。但由於整個RAID組中一共掉線兩塊盤,因此需要分析這兩塊硬碟掉線的順序。仔細分析每一塊硬碟中的資料,發現有一塊硬碟在同一個條帶上的資料和其他硬碟明顯不一樣,因此初步判斷此硬碟可能是最先掉線的,透過北亞自主開發的RAID校驗程式對這個條帶做校驗,發現除掉剛才分析的那塊硬碟得出的資料是最好的,因此可以明確最先掉線的硬碟了。
5、分析RAID組中的LUN資訊
由於LUN是基於RAID組的,因此需要根據上述分析的資訊將RAID組最新的狀態虛擬出來。然後分析LUN在RAID組中的分配情況,以及LUN分配的資料塊MAP。由於底層有6個LUN,因此只需要將每一個LUN的資料塊分佈MAP提取出來。然後針對這些資訊編寫相應的程式,對所有LUN的資料MAP做解析,然後根據資料MAP並匯出所有LUN的資料。
圖二:

6、解析LVM邏輯卷
分析生成出來的所有LUN,發現所有LUN中均包含HP-Unix的LVM邏輯卷資訊。嘗試解析每個LUN中的LVM資訊,發現其中一共有三套LVM,其中45G的LVM中劃分了一個LV,裡面存放OA伺服器端的資料,190G的LVM中劃分了一個LV,裡面存放臨時備份資料。剩餘4個LUN組成一個2.1T左右的LVM,也只劃分了一個LV,裡面存放Oracle資料庫檔案。編寫解釋LVM的程式,嘗試將每套LVM中的LV卷都解釋出來,但發現解釋程式出錯。
7、修復LVM邏輯卷
仔細分析程式報錯的原因,安排開發工程師debug程式出錯的位置,並同時安排高階檔案系統工程師對恢復的LUN做檢測,檢測LVM資訊是否會因儲存癱瘓導致LMV邏輯卷的資訊損壞。經過仔細檢測,發現確實因為儲存癱瘓導致LVM資訊損壞。嘗試人工對損壞的區域進行修復,並同步修改程式,重新解析LVM邏輯卷。
8、解析VXFS檔案系統
搭建HP-Unix環境,將解釋出來的LV卷對映到HP-Unix,並嘗試Mount檔案系統。結果Mount檔案系統出錯,嘗試使用“fsck –F vxfs” 命令修復vxfs檔案系統,但修復結果還是不能掛載,懷疑底層vxfs檔案系統的部分後設資料可能破壞,需要進行手工修復。
9、修復VXFS檔案系統
仔細分析解析出來的LV,並根據VXFS檔案系統的底層結構校驗此檔案系統是否完整。分析發現底層VXFS檔案系統果然有問題,原來當時儲存癱瘓的同時此檔案在系統正在執行IO操作,因此導致部分檔案系統元檔案沒有更新以及損壞。人工對這些損壞的元檔案進行手工修復,保證VXFS檔案系統能夠正常解析。再次將修復好的LV卷掛載到HP-Unix小機上,嘗試Mount檔案系統,檔案系統沒有報錯,成功掛載。
10、恢復所有使用者檔案
在HP-Unix機器上mount檔案系統後,將所有使用者資料均備份至指定磁碟空間。所有使用者資料大小在1.2TB左右。部分檔案目錄截圖如下:
圖三:

11、檢測資料庫檔案是否完整
使用Oracle資料庫檔案檢測工具“dbv”檢測每個資料庫檔案是否完整,發現並沒有錯誤。再使用北亞自主研發的Oracle資料庫檢測工具(檢驗更嚴格),發現有部分資料庫檔案和日誌檔案校驗不一致,安排高階資料庫工程師對此類檔案進行修復,並在次校驗,直到所有檔案校驗均完全透過。
12、啟動Oracle資料庫
由於我們提供的HP-Unix環境沒有此版本的Oracle資料,因此和使用者協調將原始生成環境帶至資料恢復中心,然後將恢復的Oracle資料庫附加到原始生產環境的HP-Unix伺服器中,嘗試啟動Oracle資料庫,Oracle資料庫啟動成功。部分截圖如下:
圖四:

13、伺服器資料驗證
由使用者方配合,啟動Oracle資料庫,啟動OA服務端,在本地筆記本安裝OA客戶端。透過OA客戶端對最新的資料記錄以及歷史資料記錄進行驗證,並且有使用者安排遠端不同部門人員進行遠端驗證。最終資料驗證無誤,資料完整,資料恢復成功。
由於故障發生後儲存現場環境良好,沒用做相關危險的操作,對後期的資料恢復有很大的幫助。整個資料恢復過程中雖然遇到好多技術瓶頸,但也都一一解決。最終在預期的時間內完成整個伺服器資料恢復,恢復的資料使用者方也相當滿意,Oracle資料庫服務,OA服務端等所有服務能夠正常啟動。

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

相關文章