Raid
mdadm 如何辨識哪個設備適合與其他設備同步
想像一下,您有帶有 2 個磁碟的 mdadm raid1。
然後你關閉伺服器,將磁碟分成不同的機器並啟動它們,所以它們會變得有點不一致
現在您關閉這兩個盒子並將磁碟放回原始機器並啟動它。
mdadm 如何確定這 2 個磁碟中的哪一個是正確的,哪一個是“錯誤的”,可以與正確的一個同步?
甚至有可能以某種方式指定這一點嗎?如果您這樣做,實際會發生什麼,磁碟會自動同步還是陣列會中斷?
在這種情況下,每個磁碟都會聲稱另一個磁碟發生故障。
結果取決於您組裝磁碟的準確程度,但本質上,它將與一個磁碟一起使用而忽略另一個;或者它可能將另一個組合成一個單獨的團隊,這會讓你腦裂。
我用循環設備做了一個實驗,我首先更改了 loop1,然後更改了 loop2,所以 loop2 是更“最近”的一個,但它被忽略了:
# mdadm --assemble /dev/md42 /dev/loop1 /dev/loop2 mdadm: ignoring /dev/loop2 as it reports /dev/loop1 as failed mdadm: /dev/md42 has been started with 1 drive (out of 2).
如果您以相反的方式執行此操作,則只會忽略另一個磁碟:
# mdadm --assemble /dev/md42 /dev/loop2 /dev/loop1 mdadm: ignoring /dev/loop1 as it reports /dev/loop2 as failed mdadm: /dev/md42 has been started with 1 drive (out of 2).
這讓我相信它只會粘在它首先找到的任何磁碟上。因此,完全有可能在重新啟動後,您會突然看到 RAID 的另一面。這真的很糟糕。
它不會自動同步,它甚至會完全忽略另一個磁碟:
# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] md42 : active raid1 loop1[0] 102272 blocks super 1.2 [2/1] [U_]
你永遠不想處於這種情況,所以你應該避免它(不要通過按照你描述的方式移動磁碟來故意激起它)。諸如此類的衝突必須手動解決。