mdadmは他のデバイスと同期するのに適したデバイスをどのように識別しますか?

mdadmは他のデバイスと同期するのに適したデバイスをどのように識別しますか?

2つのディスクを持つmdadm raid1があるとします。

その後、サーバーをシャットダウンし、各ディスクを別のシステムに分割して起動すると、少し一貫性がなくなります。

今、両方のボックスを閉じて、ディスクを元のマシンに戻して起動します。

mdadmは、これら2つのディスクのうちどのディスクが正しいか、どのディスクが「間違っているか」をどのように決定し、正しいディスクと同期しますか?

これを何とか指定できますか?これで実際に何が起こりますか?ディスクは自動的に同期されますか、それともアレイが破損していますか?

ベストアンサー1

この場合、各ディスクは他のディスクにエラーが発生したと主張します。

結果はディスクをどれだけ正確に組み立てるかによって異なりますが、基本的に1つのディスクを使用し、別のディスクを無視するか、別のディスクを別々の攻撃で組み立てることによって分割脳を提供できます。

ループデバイスを使って実験しましたが、最初に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_]

このような状況は絶対に望ましくないので避けてください(説明したようにディスクを動かして意図的に発生させないでください)。このような競合は手動で解決する必要があります。

おすすめ記事