Migration from RAID6 to RAID5

Tags: #<Tag:0x00007f63e59c29d0>

Bonjour,
Je veux convertir ma grappe RAID6 (6 x 4TB) vers RAID5.
Pour faire ça, j’ai utilisé la commande:

mdadm --grow /dev/md126 --level=raid5 --raid-devices=5 --backup-file=/root/mdadm-backup-310823

Apres 3 jours de reshape… et beaucoup d’inquietude… Le processus s’est terminé, mais pas comme attendu:
La grappe est toujours en RAID6. Mais on dirait maintenant qu’il y a 1 seul HDD utilisé pour la parité (comme en RAID5)
Voici le detail de la grappe:

/dev/md127:
           Version : 1.2
     Creation Time : Tue Jul 10 00:43:21 2018
        Raid Level : raid6
        Array Size : 15627554816 (14903.60 GiB 16002.62 GB)
     Used Dev Size : 3906888704 (3725.90 GiB 4000.65 GB)
      Raid Devices : 6
     Total Devices : 6
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sat Sep  2 17:58:04 2023
             State : clean
    Active Devices : 6
   Working Devices : 6
     Failed Devices : 0
      Spare Devices : 0

             Layout : left-symmetric-6
         Chunk Size : 512K

 Consistency Policy : bitmap

               Name : OMV-JEROME:BIGSPACE
               UUID : 919d5af5:b8bea9c0:00b903a0:2016c45f
             Events : 789024

     Number   Major   Minor   RaidDevice State
        9       8       80        0      active sync   /dev/sdf
       10       8       64        1      active sync   /dev/sde
        6       8       32        2      active sync   /dev/sdc
        4       8       48        3      active sync   /dev/sdd
        7       8       16        4      active sync   /dev/sdb
        8       8       96        5      active sync   /dev/sdg

On peut voir que Used Dev Size : 3906888704 (3725.90 GiB 4000.65 GB), ce qui correspond à 1 HDD

j’esérait etre en RAID5 avec 1 disque spare … mais je me retrouve dans une situation hybride

QUe dois je faire? Comment terminer la migration vers RAID5?
Merci pour votre aide

Ce forum est francophone.

oups! je corrige

Ça sent le cross-post ça.

J’ai probablement raté un truc, mais il y a une différence fondamentale entre un RAID6 à un seul disque de parité et un RAID5 ?

RAID5: parité simple, perte d’un seul disque. Minimum 3 disques
RAID6: parité double, perte de deux disques. Minimum 4 disques

Tu as lancé le reshape sur md126 mais tu affiches les informations de md127.

Qu’est-ce qui te fait dire cela ?
Que contient /proc/mdstat ?
Que dit mdadm --examine sur chaque disque membre ?

Oui, et alors ? A quoi d’autre t’attendais-tu ?

As-tu essayé --continue ?

Contrairement au RAID4, Il n’y a pas de disque de parité en RAID5 ni RAID6, la parité est répartie sur tous les disques.
Le RAID6 de Linux a une double parité fixe, ce n’est pas un RAID6 générique avec n-parité.

oui, sorry, j ai repris l historique des commandes, mais entre temps j ai rebooté en systemrescue et la numerotation a changé

je m’attendais au double 8000 GB pour un RAID6 (l’equivalent de 2 disques)

oui, j’ai compris ça ensuite en lisant la doc… c’est donc une simplification pour dire qu’en RAID5 l’equivalent d’1 HDD est pris pour la parité, et en RAID6, c’est l’equivalent de 2 HDD

finalement non, j’ai relancé la commande initiale:

mdadm --grow /dev/md126 --level=raid5 --raid-devices=5 --backup-file=/root/mdadm-backup

et instantanément, la grappe est passée en RAID5 5 HDD+1 spare

j’ai donc pu continuer mon process en basculant le spare en actif:

mdadm --grow -n 6 /dev/md126

et maintenant il reshape de nouveau…suite dans quelques heures

donc probleme résolu, meme si je ne sais pas vraiment ce qui s’est passé
merci pour les réponses

« Used Dev Size » est la taille utilisée sur chaque disque, pas l’espace occupé par la parité.

Si tel était l’objectif final, pourquoi n’avoir pas fait le reshape initial de RAID6 en RAID5 en laissant tous les disques actifs ?
D’autant plus que d’après les pages de manuel de md et mdadm, la conversion de RAID6 avec 6 disques actifs en RAID5 avec 5 disques actifs donc sans changement de la taille de l’ensemble était plus délicate et plus lente qu’une conversion avec changement de taille de l’ensemble.

tu es sur de ça?
moi j’ai lu ça:

It refers to " disk size that are not for data ". For RAID0, « Used Dev Size » does not exist. For RAID1, « Used Dev Size » equals to half of total disks’ size. For RAID5, « Used Dev Size » equals to size that are used for parity

donc pour un RAID5 à 6 HDD de 4TB = 4000
pour un RAID6 à 6 HDD de 4TB = 8000

mais je ne fais que supposer :wink: peut etre à tort!

parce que le seul tuto que j’ai trouvé decrivant un passage de RAID6 à RAID5 passait par cette étape:

Où ça ? C’est du très grand n’importe quoi.

Vu, l’auteur invoque comme raison que « mdadm recommends using having a spare when downgrading » mais je ne trouve pas de telle recommandation dans la page de manuel de mdadm.

L’auteur est à coté de la plaque. Pourtant ce ne sont pas les calculateur de RAID qui manquent en ligne.
Pour 6 disques de 4To ça te fait 18,5To à peu près de datas utilisable en RAID5.
Pour un RAID6 tu auras 16 To à peu près.

La valeur n’existe pas en RAID0 parce que la taille utilisée sur chaque disque peut être différente, alors qu’elle doit être la même dans les autres modes RAID (par défaut la taille du plus petit disque).

Ce n’est vrai que pour un ensemble RAID1 à deux disques. Il suffit de créer un ensemble RAID1 avec 3 disques ou plus pour constater que cette affirmation est fausse.

Cette fois c’est indirectement vrai puisque la parité en RAID5 occupe l’équivalent d’un disque. Mais ce serait faux en RAID6 où la parité occupe l’équivalent de deux disques.

Je ne vois pas le rapport avec la définition de « Used Dev Size ».
Si c’est l’un d’eux qui t’a fourni les valeurs qui suivent, il n’est pas très fiable.
De toute façon je n’en vois pas l’utiliité, il n’est quand même pas compliqué de calculer la capacité d’un ensemble RAID.

5 * 4 = 20 To exactement.

4 * 4 To = 16 To exactement, « pas à peu près »

Le probleme n’etait pas de calculer la taille de mon RAID, je savais dejà vers quoi j’allais
C’etait de comprendre pourquoi mdadm me sortait un RAID6 à 16To alors que je venais de lui passer la commande grow --level=raid5. et à ce moment je pensais (à tort) que le Used Dev Size aurait du etre à 8000 pour un RAID6 alors qu’il m’indiquait 4000.
Bref je pensais etre dans une situation hybride bancale… mais comme je l’ai dit plus haut, repasser la meme commande de migration RAID6 > RAID5 a instantanément (sans nouveau reshape) passé la grappe en RAID5 avec un spare (ce qui etait prévu)
donc pour moi le probleme est résolu (sans comprendre le pourquoi cette etape intermediaire)
Actuellement ma grappe est en reshape après ajout du Spare pour augmenter la capacité…

Pourquoi 5 et 4? si tu utilises 6 disques pour faire ta grappe RAID les valeurs que j’ai donné sont juste.
Pourquoi seulement 4 sur le RAID6? Et seulement 5 pour le RAID 5?

En RAID5 la parité occupe l’équivalent d’un disque. 6 - 1 = 5
En RAID6 la parité occupe l’équivalent de deux disques. 6 - 2 = 4

Donne tes calculs.

Tu as pas tout lu? j’ai utilisé un calculateur justement.
Mais effectivement en refaisant quelques vérifications, j’ai des écarts.
Et j’ai fini par trouver pourquoi, il y a une confusion sur certains entre calculer en binaire ou en decimal.
Dans le cas du décimal 1G = 1 000 000 d’octets
Dans le cas du binaire 1G = 1024 x 1024 = 1 048 576.

Je n’aurais pas du effectivement chercher un calculateur et considérer de facto juste la perte d’un disque pour RAID 5 et 2 pour RAID 6.

Lu quoi ?
Si un calculateur confond les préfixes binaires et décimaux, je recommande de l’éviter et de faire son propre calcul, ce sera plus sûr.

Il n’y a pas de « cas du décimal » ni de « cas du binaire ». Il y a des préfixes décimaux (k M G T…) et des préfixes binaires (Ki Mi Gi Ti…). 1 G, c’est toujours 1 000 000. Les problèmes commencent forcément quand on utilise la notation des uns avec la valeur des autres. On a crashé des sondes sur Mars pour moins que ça…

1 J'aime

:laughing: