Linux mdadm software RAID 6 - prend-il en charge la récupération de la corruption de bits?

15

Wikipedia dit que "RAID 2 est le seul niveau RAID standard, à part certaines implémentations de RAID 6, qui peuvent récupérer automatiquement des données précises à partir d'une corruption d'un bit dans les données."

Est-ce que quelqu'un sait si l'implémentation RAID 6 mdadm sous Linux est une implémentation de ce type qui peut automatiquement détecter et récupérer d'une corruption de données sur un seul bit. Cela concerne CentOS / Red Hat 6 s'ils sont différents des autres versions. J'ai essayé de chercher en ligne mais je n'ai pas eu beaucoup de chance.

Avec des taux d'erreur SATA de 1 sur 1E14 bits et un disque SATA de 2 To contenant 1,6E13 bits, cela est particulièrement pertinent pour prévenir la corruption des données.

EDIT 17-Jun-2015

Je crois que c'est moins une préoccupation que je pensais à l'origine - voir Disque dur / SSD - détection et gestion des erreurs - la corruption silencieuse des données est-elle empêchée de manière fiable? pour plus de détails

sa289
la source

Réponses:

15

Le RAID logiciel Linux ne vous protégera pas de la corruption des bits et la corruption silencieuse des données est un problème bien connu. En fait, si le noyau est capable de lire les données d'un disque, il ne saurait jamais qu'il est mauvais. Le RAID intervient uniquement en cas d'erreur d'E / S lors de la lecture des données.

Si vous vous inquiétez de l'intégrité des données, vous devriez envisager d'utiliser un système de fichiers comme Btrfs ou ZFS qui garantissent l'intégrité des données en stockant et en vérifiant les sommes de contrôle. Ces systèmes de fichiers prennent également en charge la fonctionnalité RAID, vous n'avez donc pas besoin du raid logiciel du noyau si vous procédez de cette façon.

chutz
la source
Merci. Au cas où cela serait utile à quelqu'un, j'ai obtenu d'autres idées de recherche dans la réponse de chutz et j'ai vu que le responsable de mdadm (je crois) a déclaré le 17 février 2011 qu'il n'avait pas l'intention d'ajouter la possibilité de forcer la vérification de la parité à chaque lecture. Voir spinics.net/lists/raid/msg32816.html
sa289
3

RAID5 et RAID6 peuvent détecter et généralement corriger la corruption de bits si vous vérifiez la parité de l'ensemble du lecteur. Ceci est appelé "nettoyage" ou "contrôle de parité" et prend généralement 24 à 48 heures sur la plupart des systèmes RAID de production. Pendant ce temps, les performances peuvent être considérablement dégradées. (Certains systèmes permettent à l'opérateur de prioriser le nettoyage sur l'accès en lecture / écriture ou en dessous.) RAID6 a plus de chances de le corriger, car il peut le corriger si vous avez deux pannes de disque, tandis que RAID5 ne peut gérer qu'une seule panne de disque, et les pannes de disque sont plus probables lorsque vous nettoyez en raison de l'augmentation de l'activité.

vy32
la source
1
Il n'est pas universellement vrai que les performances seront sensiblement dégradées lors d'un nettoyage RAID. Si le scrub utilise toutes les ressources système disponibles et est "stupide", il le fera. Mais, tous les SAN et j'imagine que la plupart des contrôleurs RAID exécuteront le scrub à une priorité inférieure ou "agréable", ajustant dynamiquement l'utilisation des ressources afin de ne pas consommer les ressources nécessaires pour maintenir les performances de production.
Jeremy
Vous avez raison. J'ai édité la réponse pour ajouter des nuances.
vy32
si votre tableau mdadm raid 6 est / dev / md1, alors la commande pour le faire vérifier la parité et tenter de réparer la corruption sur un seul bit "écho check> / sys / block / md1 / md / sync_action"
BeowulfNode42
2
Ils ne "protègent pas contre la corruption de bits", ils détectent la corruption de bits si vous frottez. Voir ma question ici pour plus de détails.
Je suggère de changer la réponse en "RAID5 et RAID6 est capable de réparer la corruption de bits"
Waxhead
2

J'aurais ajouté ceci en tant que commentaire mais je n'ai pas une réputation suffisante; Je voulais clarifier: RAID5 peut DETECTER la corruption de bits mais il ne sait pas quel lecteur a la corruption sans erreur de lecture. Par conséquent, un nettoyage ne pourrait pas résoudre ce problème sans erreur de lecture - il le consignerait probablement et mettrait à jour le bit de parité pour qu'il corresponde. L'algorithme de RAID6 dépend de la position afin qu'il puisse détecter le lecteur qui contenait l'erreur et corriger la corruption de bits.

sbingner
la source
Ce serait génial si c'est vrai! Pouvez-vous s'il vous plaît fournir des liens sur où est-il documenté ??
Alek_A
2

Toutes les réponses ci-dessus sont incorrectes en ce qui concerne les capacités de RAID 6. Les algorithmes RAID 6 fonctionnent octet par octet tout comme RAID 5, et si un seul octet sur un lecteur est corrompu, même sans erreur indiquée par le lecteur, il peut être détecté ET CORRIGÉ. L'algorithme pour ce faire est complètement expliqué dans

https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

Pour effectuer cette vérification, les lecteurs de parité P et Q doivent également être lus avec les lecteurs de données. Si la parité calculée P 'et Q' diffère sans erreur de lecteur, une analyse peut identifier lequel des lecteurs est incorrect et corriger les données.

En outre, si l'identification du lecteur concerne un lecteur qui n'est pas présent (tel que le lecteur 137 s'il n'y a que 15 lecteurs), plusieurs lecteurs fournissent des données corrompues pour cet octet, signalant une erreur d'erreur non corrigible. Lorsqu'il y a beaucoup moins de 256 lecteurs dans l'ensemble, cela est détecté avec une forte probabilité par octet, et puisqu'il y a beaucoup d'octets dans un bloc, avec une probabilité extrêmement élevée par bloc. Si l'identification du lecteur n'est pas cohérente pour tous les octets du bloc RAID, là encore, plusieurs lecteurs fournissent des données corrompues, et généralement on peut rejeter la condition, mais tant que toutes les identifications de lecteur sont valides, le bloc n'a pas nécessairement besoin être rejeté.

Il faut plus de temps que le temps de vérification habituel pour effectuer cette correction, mais cela ne doit être effectué qu'avec le syndrome (P et Q), le calcul montre une erreur.

Tout cela étant dit, cependant, je n'ai pas examiné le code mdadm pour déterminer si la corruption à un octet est gérée. Je suis conscient que mdadm signale des erreurs de syndrome RAID6 sur l'analyse mensuelle, mais à partir du message d'erreur, il n'est pas clair si elles sont corrigées - cela n'arrête pas la matrice de disques ni n'identifie aucun disque particulier dans le message.

Cafe Hunk
la source