我應該使用 mdadm --create
來恢復我的 RAID 嗎?
有個傢伙一直告訴我,我們不應該用它
mdadm --create
來恢復我們的 RAID 陣列,它比邪惡更糟糕,是一個錯誤。這是為什麼?我的意思是我應該讓我的 RAID 重新工作,不是嗎?如果--create
是一個錯誤,我應該用什麼代替?
沒有什麼錯
--create
- 如果你知道你在做什麼。唯一的問題是:你不知道。
創建 RAID 時,命令通常很短,例如:
mdadm --create /dev/md42 --level=5 --raid-devices=3 /dev/sdx1 /dev/sdy1 /dev/sdz1
很簡單,對吧?
除了它不是,真的。RAID 有更多的變數。有一個數據偏移量、一個塊大小、一個元數據版本,我們不要忘記重新創建時容易出錯的驅動器順序,因為驅動器號可能會隨著時間而改變。
下面是一個正確的
--create
命令可能看起來的樣子:mdadm --create /dev/md42 --assume-clean \ --level=5 --chunk=512K --metadata=1.2 --data-offset=2048s \ --raid-devices=3 /dev/sdz1 missing /dev/sdy1
無論給你什麼,你都應該以只讀方式測試它。這可能不是全部。您是否知道也有幾種不同的 RAID 佈局?
--create
是最後一根稻草,陷阱並不明顯。理想情況下,您應該備份所有磁碟,或者至少備份元數據區域,或者在寫時複製覆蓋上進行操作。對於您未提供的任何內容,請
mdadm
使用預設設置。可惜這些都不是一成不變的,基本上都是過去改過的,以後很可能還會改。因此,當您
--create
用於恢復時,您必須非常了解 RAID,並且您需要知道您的舊 RAID 究竟是什麼樣子。然後你必須添加--assume-clean
或保留其中一個磁碟missing
,以防萬一你犯了錯誤。您還應該至少備份磁碟的開頭和結尾,以便您可以從寫入錯誤位置的元數據中恢復。在大多數情況下,您還有其他選擇。
--assemble --force
是一個,但它有自己的陷阱。您應該--examine
首先,如果其中一個驅動器比其他驅動器更過時,則不應將其包含在程序集中。還有不使用元數據的raid 以及可能讓您訪問您的數據的raid--build
。dmsetup
然而,這並不意味著它是安全的——你在上面寫字,如果你選擇的設置有誤,你就會失去數據。一般來說,數據恢復是一個廣泛的領域。您需要經驗才能決定正確的行動方案。盡可能避免該問題;進行備份、記錄您的設置並監控您的磁碟,這樣您的 RAID 就不會一開始就當機。