Raid

我應該使用 mdadm --create 來恢復我的 RAID 嗎?

  • April 23, 2019

有個傢伙一直告訴我,我們不應該用它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 --builddmsetup然而,這並不意味著它是安全的——你在上面寫字,如果你選擇的設置有誤,你就會失去數據。

一般來說,數據恢復是一個廣泛的領域。您需要經驗才能決定正確的行動方案。盡可能避免該問題;進行備份、記錄您的設置並監控您的磁碟,這樣您的 RAID 就不會一開始就當機。

引用自:https://unix.stackexchange.com/questions/131915