Raid

mdadm 如何辨識哪個設備適合與其他設備同步

  • February 22, 2015

想像一下,您有帶有 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_]

你永遠不想處於這種情況,所以你應該避免它(不要通過按照你描述的方式移動磁碟來故意激起它)。諸如此類的衝突必須手動解決。

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