• # Raid 5 ?

    Posté par . En réponse au journal Plus c'est gros, plus ça fait mal. Évalué à 10.

    Je suis étonné de voir un particulier faire du Raid 5. Contrairement au Raid 1, pour être fiable dans le genre de situation que tu as rencontré (plusieurs coupures de courant pendant des écritures), il est nécessaire d'avoir une carte haut de gamme avec de la NVRAM qui garantie une écriture atomique sur tous les disques en même temps.

    Pour rappel, en Raid 1, on fait un mirroir exact des données sur les deux disques. La matrice enregistre dans le superblock un compteur d'evenement pour être capable de retrouver le mirroir le plus récent en cas de coupure sauvage. Au pire, on a une série de blocs qui est partiellement écrite. Si c'est dans les méta-données, le journal sait gérer les transactions terminées et en cours, si c'est dans les données, on a un fichier qui est partiellement écrit.

    En Raid 5, les secteurs sont répartis sur plusieurs disques et on doit en permanence maintenir le bloc de parité à jour. Si on a une coupure de courant sauvage, on ne sait plus trop quels sont les blocs de parités écrits ou non et il est impossible de les utiliser sans quoi on risque de corrompre les données, il faut tous les recalculer.

    Si on perd un disque avant d'avoir tout recalculé; on est mort, parce qu'on ne sait pas si nos blocs de parité sont utilisables pour reconstruire le disque manquant. Comme généralement, les disques meurts plutot lorsqu'on coupe ou redémarre le courant, cette situation a d'autant plus de chances de se produire.

    La couteuse NVRAM embarquée sur les cartes controleur haut de gamme conserve en mémoire, même en cas de coupure de courant, les blocs de parité qui restent à écrire, permettant de court-circuiter les phases de ré-écriture.

    Cette solution n'est quand même pas parfaite; ces cartes on un schéma de matrice Raid qui est propriétaire. Si jamais la carte lache; il faut installer la même carte avec le même firmware pour pouvoir accéder à la matrice en mode dégradé; et la reconstruction des blocs de parité est alors obligatoire.

    La documentation du kernel Linux dit au sujet du Raid 5 et 6:

    "If a raid5 or raid6 array is both dirty and degraded, it could have
    undetectable data corruption. This is because the fact that it is
    'dirty' means that the parity cannot be trusted, and the fact that it
    is degraded means that some datablocks are missing and cannot reliably be reconstructed (due to no parity)."