2013年10月30日 星期三

Oracle Linux + Hardware Raid 6 + Software Raid 1 死5顆硬盤後的救援記事 (實驗)

前言: 本篇純粹測試,想想也和業界最有效的方法應有差異,說明文件也沒翻多少,同時間只是作為敝人以後參考之用。

測試環境:
Dell PowerEdge R910
SAS HDD x 16
Raid Controller: PREC H700
OS: Oracle Linux 6.4

設置:
首先本身我已準備好,將16隻硬盤的 (0-7) (8-15) 設置成兩個相同容量的Raid 6 VD。就分別給個代號叫做 VD0 和 VD1 好了。 H700的預設開機盤設了在VD0。而VD0和VD1 已在Oracle Linux中,做了Software Raid 1。

關機,從VD0中拔掉3顆硬盤,從VD1中拔掉2顆硬盤。預期結果,VD0立即掛掉,VD1苟延殘喘。
重啟服務器,因為VD0已死的關係,所以找不到Boot OS。 重啟,使用Ctrl+R進入Raid Controller Configuration Page。 Ctrl+N設換至第3頁的Ctrl-Mgmt,將啟動盤設置成VD1。

試開機,順利Boot入Linux, 但Boot機時間比平時長很多。

救援:
現在掛了5隻硬盤,所以實況應要換回5隻新的,這裡用之前拔出來的。
﹣VD1沒太大問題,在開機狀態下把2隻硬盤插回去,自動Rebuild。
﹣VD0比較麻煩,把3隻硬盤插回去,沒反應。
﹣進入Raid Controller,想當然地,VD0那3隻硬盤已變成Forigen,把Forigen的Config Clear掉。
﹣抄下VD0的Properties. Delete VD0, 重建Raid 6,記得用回之前的Config。不要Init, 讓他在Background自己做。
﹣理論上VD0在這樣的重建方式下,有可能保住資料。不過Linux已將VD0 Mark了Removed狀態。加上我們的VD1尚健在,所以VD0的資料存在與否,似乎不是重點。
﹣Boot到Linux中,使用Root登入。在Terminal中輸入 #mdadm --detail /dev/md0 ,清楚看到VD0已被remove, VD0在Linux上應該被當成是sda。所以我們現在下一步動作是要把 Software Raid 1 Rebuild回來。
﹣指令我不太會,所以我安裝了webmin, 裡面有"Linux Raid" 功能,用這個只要簡單按幾下就能把之前的設置加回去。
﹣再輸入一次 #mdadm --detail /dev/md0 。 可以看到sda正在Rebuild。
﹣完成,等結束,其間服務器照常運作。結束後可以重啟Ctrl+R 進入 Raid Controller把啟動盤設置回VD0,但其實也不太重要。






Google