web-dev-qa-db-ja.com

RAID1ミラーのデータスクラビングと修復?

Linuxでは、ソフトウェアRAID1ミラーを使用している場合/dev/md1N≥1のアクティブデバイスの場合、repairコマンドのセマンティクスは何ですか?

echo "repair" >/sys/block/md1/md/sync_action

私はそれを仮定するのは正しいですか

  • アクティブなデバイスが1つある場合、repairコマンドは何もしません。
  • アクティブなデバイスが2つある場合、repairコマンドはデータの不一致を検索し、一方のデバイスの不一致データを2番目のデバイスの不一致データで上書きします。
  • 3つ(またはそれ以上)のアクティブなデバイスの場合、repairコマンドはデータの不一致を検索し、(可能であれば)どのデータコンテンツが最も普及しているかを判断または決定し、このデータで他のデバイスの不一致データを上書きしますか?

Linuxカーネルのドキュメントから Documentation/admin-guide/md.rst 、さらには Documentation/device-mapper/dm-raid.txt を読みましたが、これらは現在あまり有益ではありません。私も理解しようとしました drivers/md/raid1.c しかし、それはあまりよくコメントされておらず、それを理解するためのLinuxカーネル内部の知識が不足しています。

2
jotik

コードが変更されていない場合、3ウェイRAID1は、BTRFS/ZFSスクラブに匹敵するスマートで優れたリカバリを提供しません。

メインのmdraid開発者から ブログ

修正する必要のある不整合がある場合は、単純な予測可能な方法で修正する必要があり、余分な複雑さは正当化されないというのが私の立場です。 RAID1の場合、これは他のすべてのブロックよりも最初のブロックにコピーすることを意味します

また見てください ここ 。要約:

すでにすべてのブロックを読み取り、それらを比較して同じかどうかを確認します。そうでない場合は、最初のものを異なるものにコピーします。

3
shodanshok