clone un raid 1

Conditions préalables: ces instructions sont destinées aux disques NON GPT, c'est-à-dire configurés avec des styles de partition hérités DOS. Le partitionnement de style sfdisk est la méthode par défaut pour le serveur LTS ubuntu 16.04.2, c'est ce que nous voulons. Si vous voulez que le clone soit amorçable, vous devez utiliser sfdisk si les périphériques sources ne sont PAS configurés en tant que GPT, n'utilisez PAS sgdisk, si vous faites cela pour un périphérique non GPT, vous ne pourrez pas le faire démarrer à cause de une partition de démarrage bios manquante.

Les tables de partition doivent être créées à l'aide de sfdisk (partitions non GPT, compatibles DOS). Les paramètres par défaut d'Ubuntu 16.04.2 pour RAID1 sont suffisants.  Pour mes tests, j'ai utilisé le serveur Ubuntu 16.04.2 mais les mêmes instructions devrait fonctionner sur d'autres distributions et versions.

Description des étapes de clonage. Vous allez cloner les paramètres de la partition, ALORS vous allez en fait ajouter le nouveau périphérique au miroir RAID1, mdadm va "récupérer" automatiquement la matrice, faisant essentiellement de votre nouveau périphérique sur la matrice un clone. Ensuite, une fois qu'il est totalement synchronisé dans la matrice RAID1, dans mon exemple, 41 minutes plus tard, vous installez grub qui créera un enregistrement de démarrage principal (MBR) et rend votre appareil amorçable. Vous pouvez ensuite éteindre l'ordinateur, prendre le nouveau lecteur unique que vous venez d'ajouter, le mettre dans un nouvel ordinateur et il démarrera, puis vous pourrez ajouter des périphériques RAID à cet ordinateur comme vous le souhaitez.

 

dites /dev/sdb et /dev/sdc sont vos nouveaux disques, vérifiez en faisant ls /dev/disks/by-id pour localiser votre appareil
restaurer /dev/sda
copiez la table de partition de /dev/sda vers /dev/sdb:

sfdisk -d /dev/sda | sfdisk /dev/sdb
AND for the other device /dev/sdc
sfdisk -d /dev/sda | sfdisk /dev/sdc

Ne confondez pas les lecteurs (vous avez toujours une sauvegarde, cependant)
rajoutez des partitions sur /dev/sdb au tableau, par exemple

mdadm --add /dev/md0 /dev/sdb1
mdadm --add /dev/md1 /dev/sdb2
mdadm --add /dev/md2 /dev/sdb3

Important

Installez grub sur les deux disques après les avoir restaurés. La procédure dépend de si vous avez grub legacy ou grub2

Pour grub (legacy):

root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

Pour grub2 (serveur LTS ubuntu 16.04.2)

grub-install /dev/sdb
grub-install /dev/sdc

après cela, l'un ou l'autre de ces nouveaux disques sera amorçable tout seul sans l'autre.  Test en retirant l'autre disque dur et allume-le dans un nouvel ordinateur.

basé sur: https://blog.bandinelli.net/index.php?post/2013/10/10/Ajouter-un-disque-additionnel-%C3%A0-un-RAID-1-en-5-lignes-de-commande

https://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array

Cloner à distance un disque d'une matrice RAID1 sur une autre machine: Fail, Remove, cloner le disque, puis l'ajouter (re-add) à la matrice

en supposant:

md0 : active raid1 sdb1[2] sda1[0]
      488253440 blocks super 1.2 [2/2] [UU]
      bitmap: 4/4 pages [16KB], 65536KB chunk

1) Dit à mdadm que ce disque a besoin d'être retiré: 

mdadm --fail /dev/md0 /dev/sdb1

mdadm: set /dev/sdb1 faulty in /dev/md0
2) Enlève le

mdadm --manage /dev/md0 --re-add /dev/sdb1

mdadm: Cannot open /dev/sdb1: Device or resource busy

mdadm --remove /dev/md0 /dev/sdb1

mdadm: hot removed /dev/sdb1 from /dev/md0
3) clone ce disque:

dd if=/dev/sdb1 bs=4096 conv=sync,noerror | gzip -c > ~/sdb1_image.img.gz

4) afficher le progrès du clonage dans un autre shell: kill -USR1 <pid> #ps aux | grep dd # (cherche le pid)
13126009+0 enregistrements lus
13126008+0 enregistrements écrits
OR

watch -n 10 kill -USR1 {substitution du pid de dd ici}

53764128768 bytes (54 GB, 50 GiB) copied, 326,995 s, 164 MB/s
5) clone mbr (sigle pour "master boot record" qui veut dire enregistrement d'amorçage principal ou enregistrement d'amorçage maïtre))

dd if=/dev/sdb2 bs=512 of=~/sdb2_mbr.img count=1

6) Copiez les fichiers clones sur un autre serveur scp -P52224 ~/sdb1_* user@server:~
   a) Comment reprendre un téléchargement interrompu en utilisant rsync --partial --progress -e "ssh -p 52224" user@host:~/sdb1_image.img.gz sdb1_image.img.gz
7) restaurer sdb1_mbr.img vers un autre disque 

dd if=~/sdb1_mbr.img bs=512 of=/dev/sdb1 count=1

8) restaurer sdb1_image.img.gz vers un autre disque

gunzip -c ~/sdb1_image.img.gz | dd of=/dev/sdb1 bs=4096 conv=sync,noerror

9) mdadm --manage /dev/md0 --re-add /dev/sdb1
mdadm: re-added /dev/sdb1

10) cat /proc/mdstat
 

md0 : active raid1 sdb1[2] sda1[0]
      488253440 blocks super 1.2 [2/1] [U_]
      [=========>...........]  recovery = 47.9% (234116736/488253440) finish=17.6min speed=240358K/sec
      bitmap: 4/4 pages [16KB], 65536KB chunk