如何修複擁有多於一個失效硬盤的軟件 RAID5 磁區
作者:LevShamardin
當一個 RAID5 磁區內的某個硬盤失效,基本上大事已經不妙,但有時情況可以更壞,而一個 RAID5 磁區更可能有多於一個硬盤失效。在這些情形下,mdadm 不會容許你啟動這個磁區。基於 RAID5 的內部資料架構,當有多於一個失效的硬盤時,便無法修複磁區內的所有資料。但在不少情況下,磁區內的大部份資料仍是可救回的,因為一般來說硬盤只會出現局部故障,而其餘部份仍是可讀的。這頁描述啟動一個擁有多於一個失效硬盤的 RAID5 磁區時所需的步驟。
1. 鄭重警告
這些指令可能會損壞你的資料致無法修複的地步。我們強烈地建議你將失效 RAID 磁區內的所有硬盤進行複製,包括有毛病的硬盤,然後在複製本上進行修複的程序。請注意,在沒有特殊儀器的情況下,單單嘗試複製失效硬盤上的資料足以對硬盤構成更多損壞。後果請自負。
2. 如何啟動擁有多於一個失效硬盤的磁區
這裡的指令假設在一個 RAID5 磁區內存有兩個失效的硬盤,但這些指令可以延伸至甚何數量的壞硬盤。我們會假設這個 RAID 磁區由 /dev/sda1、dev/sdb1、/dev/sdc1、/dev/sdd1 及 /dev/sde1 這些硬盤所組成,並假定 /dev/sdc 及 /dev/sdd 失了效。
- 你必須最少一個新的可用硬盤,它會用來代替其中一個失效的硬盤。
請將其中一個失效的硬盤複製到新的硬盤。你應該選擇那個損毀較少的硬盤。這個硬盤將會被稱為「較好的硬盤」,而第二個有問題的硬盤會被稱名「較壞的硬盤」。請以你剛複製好硬盤取代較好的硬盤。切勿利用一個有毛病的硬盤來進行以下步驟,因為一旦它失效,整個磁區又會再次被停頓。在我們的範例裡,我們會將 /dev/sdc 複製到一個新的硬盤上,然後以複製品取代有問題的 /dev/sdc 。
查閱 RAID5 磁區的參數。在任何一個有效的硬盤上執行 mdadm -E:
mdadm -E /dev/sdb1
留意 Chunk Size 及 Layout。
- 在降級模式下重建 RAID 磁區。你必須知道以下資料才能完成:
- XXX —— 你的 RAID 磁區內的硬盤數量。
- YYY —— 你的 RAID 磁區的資料塊大小。這已經在上一步斷定了。
- ZZZ —— RAID 磁區的佈局。這已經在上一步斷定了。
- 哪一個硬盤並不存在(也就是較壞的硬盤,在範例中是 /dev/sdd1)。
執行如下的指令:
mdadm --create /dev/md0 -n XXX -c YYY -l 5 -p ZZZ --assume-clean /dev/sda1 /dev/sdb1 /dev/sdc1 missing /dev/sde1
你應該根據你失去了的硬盤(即較壞的硬盤)的實際位置及 RAID 磁區的佈局來調整這個指令,以 missing 這個參數來代替較壞的硬盤。
現在,既然你已將 RAID 磁區在降級模式下啟動,你便可以嘗試修複你的資料。你亦可以用一個新的硬盤來取代失去了的硬盤並重建這個 RAID,因為它已經不再包含失效的硬盤。重建後的 RAID 磁區上大部份資料應該沒有錯誤;如果幸運地,所有硬盤的故障都出現在檔案系統的空白位置上,你甚至可能救回全部資料。
Translation of revision 6