La saisie des données et la réparation d'un miroir RAID1?

Dans Linux, si j'ai un logiciel RAID1 mirror /dev/md1 avec N ≥ 1 périphériques actifs, quelle est la sémantique de la command de repair ?

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

Suis-je correct de supposer que

  • Dans le cas d'un dispositif actif, la command de repair ne fait rien,
  • Dans le cas de 2 dispositifs actifs, la command de repair search les anomalies de données et écrase datatables incompatibles d'un des périphériques avec datatables incompatibles du second périphérique et
  • dans le cas de 3 (ou plus) dispositifs actifs, la command de repair search les anomalies de données, décrive (si possible) ou décide quel contenu de données est le plus répandu et ces données écrasent datatables incompatibles sur d'autres appareils?

J'ai lu Documentation / admin-guide / md.rst et même Documentation / device-mapper / dm-raid.txt à partir de la documentation du kernel Linux, mais ceux-ci ne sont actuellement pas très informatifs. J'ai également essayé de comprendre les drivers / md / raid1.c, mais ce n'est pas très bien commenté et je ne suis pas au courant des composants internes de kernel Linux pour le comprendre.

Si le code n'a pas changé, RAID1 à 3 voies ne vous donnera pas une meilleure récupération intelligente ou supérieure à celle de BTRFS / ZFS.

Du blog principal du développeur mdraid:

Je suis d'avis que s'il y a une incohérence qui doit être corrigée, cela devrait être corrigé d'une manière simple et prévisible et que toute complexité supplémentaire est injustifiée. Pour RAID1, cela signifie copyr au premier bloc sur tous les autres

Donnez également un coup d'oeil ici . Un abstrait:

Il a déjà lu tous les blocs et les compare maintenant pour voir s'ils sont identiques. Si ce n'est pas le cas, il copy le premier à tout ce qui est différent.