Migration de SHR-1 vers SHR-2

Le SHR de Synology correspond à une couche raid (mdadm) et une couche de LVM.

Il existe 2 type de SHR :

SHR-1 : raid avec 1 disque de parité
SHR-2 : raid avec 2 disques de parité

Mais comment passer de 1 à 2 disques de parité ? Officiellement, c’est impossible…

Mais c’est tout a fait possible :

Pour cela il faut :

Avoir un sauvegarde de ses données contenue sur le nas
Que les disques de la plus grande capacité soit au nombre de 3 minimum.
Avoir un nouveau disque de capacité égale au plus grand disques

Code couleur du tuto :

  • Vert : les commandes a taper tels quels
  • Bleu : ce qu’il faut modifier avec le résultat d’une commande précédente

Dans cet exemple, on utilisera 3 disques de 40GB en SHR raid5-1

On commence par ajouter le nouveau disque dans le nas:
Si le nas supporte le hotplug, on ajoute le disque quand le nas est allumé, sinon, on éteint la nas, on insère le disque et on rallume le nas

raid5-2

On a donc 3 disque en état « normal » et le nouveau disque en état « non initialisé »

Pour effectuer la migration, on a besoin d’activer le ssh:
raid5-3

Un fois que cela est fait, on se connecte avec putty au nas en ssh

login as: root
[email protected]’s password:
BusyBox v1.16.1 (2014-05-29 11:29:41 CST) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.

DsmDemo>

Le nouveau disque étant le disque 4, il s’appelle donc pour le système /dev/sdd

Il faut ensuite trouver le plus grand disque du volume, ici, c’est le disque 1, il s’appelle donc pour le système /dev/sda

Pour commencer, on va mettre a blanc la table de table de partition du nouveau disque :

DsmDemo> synopartition –remove /dev/sdd
Cleaning all partitions…

Ensuite, on va partitionner le disque de manière identique au plus grand disques :

On récupère le partitionnement du plus grand disque :

 DsmDemo> sfdisk -l /dev/sda
/dev/sda1 256 4980735 4980480 fd
/dev/sda2 4980736 9175039 4194304 fd
/dev/sda3 9437184 83882367 74445184 f
/dev/sda5 9453280 83882367 74429088 fd

On crée la 1° partition :

DsmDemo> sfdisk -N 1 -o 256 -z 4980480 -t fd /dev/sdd

et on vérifie le résultat :

DsmDemo> sfdisk -l /dev/sdd
/dev/sdd1 256 4980735 4980480 fd

On récupère le partitionnement du plus grand disque :

 DsmDemo> sfdisk -l /dev/sda
/dev/sda1 256 4980735 4980480 fd
/dev/sda2 4980736 9175039 4194304 fd
/dev/sda3 9437184 83882367 74445184 f
/dev/sda5 9453280 83882367 74429088 fd

On crée la 2° partition :

DsmDemo> sfdisk -N 2 -o 4980736 -z 4194304 -t fd /dev/sdf

et on vérifie le résultat :

DsmDemo> sfdisk -l /dev/sdd
/dev/sdd1 256 4980735 4980480 fd
/dev/sdd2 4980736 9175039 4194304 fd

On recupère le partitionnement du plus grand disque :

 DsmDemo> sfdisk -l /dev/sda
/dev/sda1 256 4980735 4980480 fd
/dev/sda2 4980736 9175039 4194304 fd
/dev/sda3 9437184 83882367 74445184 f
/dev/sda5 9453280 83882367 74429088 fd

Ici, la ligne se termine par « f » ce qui signifie que c’est la partition étendue. Si cette partition n’existe pas, ignorez cette étape :

DsmDemo> sfdisk -N3 -E -o 9437184 -z 74445184 /dev/sdd

et on vérifie le résultat :

DsmDemo> sfdisk -l /dev/sdd
/dev/sdd1 256 4980735 4980480 fd
/dev/sdd2 4980736 9175039 4194304 fd
/dev/sdd3 9437184 83882367 74445184 f

On récupère le partitionnement du plus grand disque :

 DsmDemo> sfdisk -l /dev/sda
/dev/sda1 256 4980735 4980480 fd
/dev/sda2 4980736 9175039 4194304 fd
/dev/sda3 9437184 83882367 74445184 f
/dev/sda5 9453280 83882367 74429088 fd

On crée la partition restante :

DsmDemo> sfdisk -N5 -o 9453280 -z 74429088 -t fd /dev/sdd

et on vérifie le résultat :

DsmDemo> sfdisk -l /dev/sdd
/dev/sdd1 256 4980735 4980480 fd
/dev/sdd2 4980736 9175039 4194304 fd
/dev/sdd3 9437184 83882367 74445184 f
/dev/sdd5 9453280 83882367 74429088 fd

Si il y d’autres partitions a créer, il suffit de reprendre la procédure décrite pour la dernière partition.

Arrivé ici, les partitions doivent être ABSOLUMENT identique

Ensuite, on va vérifier l’état du raid :

DsmDemo> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sda5[0] sdc5[2] sdb5[1]
74426880 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sda2[0] sdb2[1] sdc2[2]
2097088 blocks [12/3] [UUU_________]

md0 : active raid1 sda1[0] sdb1[1] sdc1[2]
2490176 blocks [12/3] [UUU_________]

unused devices:

On vois ici 3 grappes raid :

  • md0 utilisé pour le système avec les partitions se terminant toute par 1,
  • md1 utilisé pour le swap avec les partitions se terminant toute par 2,
  • md2 pour les données avec les partitions se terminant toute par 5.

Il faudra travailler sur chaque md qui contient des disques du volume.

Dans notre cas, le disque 1, 2 et 3 sont dans le volume, c’est donc sda, sdb, sdc; Il faudra donc travailler sur md0, md1, md2

on va ajouter le disque dans le raid utilisé pour la partition système (md0) :

DsmDemo> mdadm –add /dev/md0 /dev/sdd1
mdadm: added /dev/sdd1

On vérifie l’état du raid :

DsmDemo> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sda5[0] sdc5[2] sdb5[1]
74426880 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sda2[0] sdb2[1] sdc2[2]
2097088 blocks [12/3] [UUU_________]

md0 : active raid1 sdd1[12] sda1[0] sdb1[1] sdc1[2]
2490176 blocks [12/3] [UUU_________]
[==>………………] recovery = 11.6% (290880/2490176) finish=2.3min speed=15309K/sec

unused devices:

On constate que md0 est en « recovery », on répète la même commande jusqu’à ce que ce soit fini :

DsmDemo> cat /proc/mdstat

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sda5[0] sdc5[2] sdb5[1]
74426880 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sda2[0] sdb2[1] sdc2[2]
2097088 blocks [12/3] [UUU_________]

md0 : active raid1 sdd1[3] sda1[0] sdb1[1] sdc1[2]
2490176 blocks [12/4] [UUUU________]

unused devices:

Ici, le raid est ok et md0 contient 4 disques.

Ensuite, on va ajouter le disque dans le raid utilisé pour la partition swap (md1) :

DsmDemo> mdadm –add /dev/md1 /dev/sdd2
mdadm: added /dev/sdd2

On vérifie l’état du raid :

DsmDemo> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sda5[0] sdc5[2] sdb5[1]
74426880 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sdd2[12] sda2[0] sdb2[1] sdc2[2]
2097088 blocks [12/3] [UUU_________]
[=>……………….] recovery = 9.9% (208768/2097088) finish=2.1min speed=14912K/sec

md0 : active raid1 sdd1[3] sda1[0] sdb1[1] sdc1[2]
2490176 blocks [12/4] [UUUU________]

unused devices:

On constate que md1 est en « recovery », on répète la même commande jusqu’à ce que ce soit fini :

DsmDemo> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sda5[0] sdc5[2] sdb5[1]
74426880 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sdd2[3] sda2[0] sdb2[1] sdc2[2]
2097088 blocks [12/4] [UUUU________]

md0 : active raid1 sdd1[3] sda1[0] sdb1[1] sdc1[2]
2490176 blocks [12/4] [UUUU________]

unused devices:

Ici, le raid est ok et md1 contient 4 disques.

Graphiquement, on peut constater que le statut du disque est passé à « Normal »

raid5-4

Ensuite, on va ajouter le disque dans le raid utilisé pour la partition de données (md2) :

DsmDemo> mdadm –add /dev/md2 /dev/sdd5
mdadm: added /dev/sdd5

et on va convertir md2 de raid5 en raid6 :

DsmDemo> mdadm –grow /dev/md2 –level=6 –backup-file=/root/raid5to6.bak
mdadm level of /dev/md2 changed to raid6

On vérifie l’état du raid :

DsmDemo> cat /proc/mdstat

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid6 sdd5[3] sda5[0] sdc5[2] sdb5[1]
74426880 blocks super 1.2 level 6, 64k chunk, algorithm 18 [4/3] [UUU_]
[=>……………….] reshape = 5.9% (2203648/37213440) finish=146.3min speed=3985K/sec

md1 : active raid1 sdd2[3] sda2[0] sdb2[1] sdc2[2]
2097088 blocks [12/4] [UUUU________]

md0 : active raid1 sdd1[3] sda1[0] sdb1[1] sdc1[2]
2490176 blocks [12/4] [UUUU________]

unused devices:

La conversion est en cours, celle-ci prend plusieurs heures, c’est tout a fait normal.

Dans l’interface graphique, on peut voir les changements :

raid5-5

La vérification du volume est en cours et le volume est protégé avec 2 disques de parité.

… Plusieurs heures après :

On peut constater que la conversion est finie :

DsmDemo> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid6 sdd5[3] sdc5[2] sdb5[1] sda5[0]
74426880 blocks super 1.2 level 6, 64k chunk, algorithm 2 [4/4] [UUUU]

md1 : active raid1 sdd2[2] sda2[4] sdb2[0] sdc2[1]
2097088 blocks [12/4] [UUU_U_______]

md0 : active raid1 sdd1[2] sda1[4] sdb1[0] sdc1[1]
2490176 blocks [12/4] [UUU_U_______]

unused devices:

et graphiquement, le volume est de nouveau à un statut « Normal »

raid5-6

Tout est fini, on peut donc refermer Putty :

DsmDemo> exit

Une réflexion au sujet de « Migration de SHR-1 vers SHR-2 »

  1. Merci pour ton tuto, il me rend un énorme service. Bravo pour la découverte, c’est impeccable!

    Je te signale au passage quelques petites erreurs qui m’ont bloqué :
    – Les arguments -add –grow –level, etc. doivent s’écrire avec deux tirets (ex: –add), en tout cas chez moi avec DSM 6.
    – Sinon il y a une petite erreur dans la commande de création de la 2ème partition: sdf au lieu de sdd.
    – Enfin, pour les partitions sdd3 et sdd5 tu as collé -N et le chiffre (respectivement 3 ou 5).

    Encore un grand merci à toi!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *