Dans un effort pour nettoyer un bogue logiciel dans md, j'ai marqué la moitié d'un RAID (/ dev/sda1 et/dev/sdb1 dans RAID1) comme défectueux à l'aide de:
mdadm /dev/md2 --fail /dev/sdb1
mdadm /dev/md2 --remove /dev/sdb1
Mais maintenant, je veux utiliser la moitié "échoué" à la place. c'est-à-dire qu'au lieu d'utiliser /dev/sda1
, je souhaite utiliser /dev/sdb1
, mais mdadm refuse de le mettre en ligne:
mdadm --stop /dev/md2
mdadm -A /dev/md2 /dev/sdb1 --run --force
Cela échoue car il considère que /dev/sdb1
est un "extra" et n'est plus un membre réel du tableau.
Vous utilisez -A
qui est --assemble
, mais vous devriez utiliser -a
qui est --add
.
Si je me souviens bien, les périphériques (ré) ajoutés à un tableau existant sont toujours ajoutés en tant que pièces de rechange. Peu de temps après, le noyau remarquera que le tableau est à la fois dégradé et en réserve, puis il recommence la mise en miroir. Vous pouvez voir cela avec watch cat /proc/mdstat
.
La commande entière à exécuter est l’un des éléments suivants, à condition que le tableau ne soit pas assemblé ou en cours d’exécution (ce que l’opérateur affiche comme non actif):
Si le tableau ne fonctionne pas:
mdadm --assemble /dev/md2 /dev/sdb1
Cependant, si le tableau est en cours d'exécution:
mdadm --manage /dev/md2 -a /dev/sdb1
Je pense que le moyen le plus simple de décocher la partition serait de l'ajouter à nouveau au tableau. À propos, si vous devez faire un test, ne retirez pas le lecteur de la matrice. Signalez-le comme défectueux et si vous redémarrez, il se repliera sur l'autre partition.
mdadm /dev/md2 --add /dev/sdb1