mdraid 重新同步如何工作?
我在鏡像中有兩個驅動器(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:“一個驅動器不知何故離開了鏡子”不是你應該接受的。有日誌;弄清楚它為什麼離開鏡子。即使是半新核心,壞塊也不會再丟棄驅動器,因此不應該發生隨機驅動器丟棄。檢查智能狀態等。