Dd

mdraid 重新同步如何工作?

  • February 23, 2013

我在鏡像中有兩個驅動器(linux sw raid/mdadm);一個驅動器過去不知何故離開了鏡像,現在它的內容已有幾天了。目前,我正在使用降級鏡像(缺少一個驅動器)並考慮:

  • 將最新驅動器複製到第二個驅動器dd
  • 添加第二個驅動器並重新同步,但我不知道重新同步過程如何工作以及哪些數據將被覆蓋(該鏡像上有 LVM 卷)

我認為這dd是安全的方式,無論如何我對重新同步的工作原理很感興趣。

正確的做法是mdadm --add /dev/md0 /dev/sdb1. 使用正確的數組代替,md0使用正確的分區代替sdb1.

關鍵是陣列正在執行。它完全明確要複製哪些數據:目前正在執行的數據。如果您啟用了點陣圖,則重新同步將相當快,因為它只會複製已更改的內容。否則,它將複製所有內容。

如果你非常偏執——或者你擔心你的磁碟系統可能失去了寫入,並且點陣圖可能不正確——並且不介意強制進行完整複製,你可以擦除你要使用的磁碟上的超級塊添加使用mdadm --zero-superblock /dev/sdb1(再次使用正確的分區)。

如果陣列目前沒有執行(例如,如果這是從不干淨的關閉中重新組裝組裝),則使用儲存在超級塊中的更新計數欄位來決定複製什麼。它可能會拒絕重新添加更新計數過高的磁碟(迫使您將超級塊歸零),但它不會覆蓋活動數據。

如果您要使用該dd方法,那麼: (a) 您最終會複製超級塊,並且最終會得到兩個磁碟 1(超級塊儲存磁碟在陣列中的位置);(b) 你會有一個不一致的副本,除非你在復製過程中停止了陣列(或者可能處於只讀模式)。(然後,要修復 a 和 b,您將擦除超級塊並讓 mdraid 複製數據,如上所述)。

簡而言之,當您決定使用 mdraid(或任何其他 RAID)時,您需要對其進行冗餘管理。你幾乎從不想繞過它。與 LVM 相同:如果你想移動數據,你可以使用pvmove,等等。你不使用dd.

PS:“一個驅動器不知何故離開了鏡子”不是你應該接受的。有日誌;弄清楚它為什麼離開鏡子。即使是半新核心,壞塊也不會再丟棄驅動器,因此不應該發生隨機驅動器丟棄。檢查智能狀態等。

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