Est-ce que RAID 1 protège contre la corruption?


13

Raid 1 protège-t-il contre la corruption de données? Par exemple, supposons que je conserve tous mes fichiers importants sur un NAS qui utilise 2 disques dans un RAID 1. Si un disque dur a un problème interne et que les données sont corrompues, le RAID le reconnaît-il automatiquement et le corrige-t-il -ce en utilisant les données de l'autre bon disque?

Pourrait-il même savoir quelle copie est la bonne?

Est-ce que RAID 5 protège contre la corruption?

Je sais que le RAID n'est pas une solution de sauvegarde. J'essaie de comprendre comment m'assurer que je ne sauvegarde pas de données corrompues!

Réponses:


12

RAID-1 protège contre la défaillance complète de l'un des deux disques. Si le lecteur n'est pas marqué comme étant en panne, son contenu est supposé exact. Mais si, pour une raison quelconque, l'un des deux disques renvoyait des données incohérentes, le système RAID ne détecterait pas cette erreur et l'application obtiendrait des données incorrectes.

De nombreux contrôleurs ont un processus de vérification qui s'exécute périodiquement, mais l'objectif est de tester les pannes de disque, et non l'intégrité des données. Les disques durs implémentent leurs propres tests et totaux de contrôle d'intégrité des données qu'ils utilisent pour détecter les secteurs défectueux, mais l'algorithme est conçu pour être rapide, compact et non exhaustif, de sorte que les erreurs peuvent fuir.

Bien que la corruption de données soit l'exception plutôt que la règle, elle n'est également pas inouïe. Un membre de l'équipe ZFS, par exemple, a rapporté dans une interview avoir vu des données corrompues leur être transmises par leur périphérique RAID-5 haut de gamme qu'ils ont repéré en raison du fait que ZFS implémentait des sommes de contrôle à ce niveau de système de fichiers.


5

Cela dépend d'où provient la corruption. Si un lecteur dans un miroir RAID 1 est visqueux et écrit des sottises, le miroir RAID se dégradera et le bon lecteur sera utilisé et vous obtiendrez les bons fichiers. Dans le cas de RAID 5, cela se fait avec 2 lecteurs de données et un lecteur de parité (sous la forme la plus simple) et si l’un des 3 lecteurs ne parvient pas à écrire les fichiers appropriés, il échouera et vous laisserez soit 2 données. lecteurs ou 1 lecteur de données et un lecteur de parité.

Voyons maintenant ce qui se passe si la corruption est causée par un virus ou un bogue dans un programme. En RAID 1 et RAID 5, aucun lecteur ne sera mis hors service, car les lecteurs écrivent correctement. Rien n'a échoué. Toutefois, les fichiers seront détruits car le virus ou le bogue écrit des fichiers indésirables. Ils seront également écrits sur vos disques dans un miroir RAID 1 et sur les trois de vos disques dans un système RAID 5.

C'est pourquoi le RAID n'est pas une sauvegarde. Il évite la défaillance la plus probable, à savoir une défaillance de disque, mais ne prend pas en compte de nombreux autres scénarios.


4
+1 "C'est pourquoi le RAID n'est pas une sauvegarde" Dieu sait combien de fois j'ai entendu "je vais bien, ma sauvegarde est recouverte d'un RAID"
Urda

2
Comment le RAID peut-il distinguer entre quelles données sont bonnes et lesquelles sont mauvaises?

1
Shaun ... si vos données sont dévorées par un virus ou supprimées accidentellement, le RAID ne pourra jamais les distinguer de bonnes ou mauvaises. Tout ce dont le RAID est chargé est de s’assurer que (dans un RAID 1) les deux disques sont égaux. Si un secteur échoue dans une somme de contrôle, le contrôleur RAID compense sa réparation ou déclenche une reconstruction. Dans un RAID 5, si un secteur échoue à un contrôle de parité, une reconstruction est déclenchée. RAID protège les disques physiques contre les pannes et les pertes de données. Ils ne peuvent pas se protéger contre la perte de données due à la programmation de défauts ou de virus.
Urda

6
Votre caractérisation de RAID 5 est inexacte. Il n'y a pas de lecteur de parité séparé, mais la parité est répartie sur tous les lecteurs. Vous vous retrouvez avec un espace total disponible de n-1, mais aucun lecteur n'est dédié à la parité.
MDMarra

2
Je dois voter par RAID1 ne fait pas de checksum, il protège uniquement contre une panne totale du disque. Si un lecteur commence à renvoyer des ordures, il n'a aucun moyen de dire lequel est correct et renverra volontiers les données inutilisables. RAID5 dont je ne suis pas sûr, à cause des contrôles de parité. C’est exactement pourquoi les systèmes de fichiers tels que ZFS et BTRFS ont été inventés, de sorte que vous obtenez un système de type RAID «sensible aux données», capable de corriger les données parasites avec des sommes de contrôle permettant de vérifier des blocs de données.
Alex

5

Comme d'autres l'ont noté, un système de raid1 n'a aucun moyen de dire lequel des deux secteurs est mauvais.

Les systèmes raid d'extrémité supérieure exécutent une opération de nettoyage en arrière-plan pour comparer les deux copies et signaler les différences. Mieux encore, c’est un système qui lit les deux blocs du lecteur à chaque fois et les compare au moment de la lecture. Résoudre ces différences est cependant impossible pour le contrôleur RAID.

Sur les systèmes Unix sous mdadm, une vérification de nettoyage peut être lancée avec "sync_action":

Les tableaux md peuvent être nettoyés en écrivant chèque ou réparation dans le fichier md / sync_action du répertoire sysfs du périphérique.

Si vous demandez un nettoyage, md lira tous les blocs de tous les périphériques de la baie et vérifiera la cohérence des données. Pour RAID1 et RAID10, cela signifie que vous devez vérifier que les copies sont identiques. Pour RAID4, RAID5, RAID6, cela signifie que vous vérifiez que le bloc de parité est correct (ou les blocs sont corrects).

raid1 a pour but de protéger contre une panne totale soudaine de lecteur. Cherchez ailleurs une protection contre la corruption. Au-delà de cela, Raid1 n'offre pas d '"historique", il est donc impossible de récupérer d'une erreur humaine ou logicielle. Recherchez des systèmes de fichiers tels que ZFS ou un système de fichiers préservant l'historique, comme Hammer, pour vous protéger contre la corruption.


3

En pratique, oui. La grande majorité des pannes de disque dur se produisent tout ou rien. Soit (a) le câble est débranché, soit le microcontrôleur du lecteur est en panne, de sorte que le contrôleur RAID ne reçoit aucune réponse - un lecteur en panne évident. Ou bien (b) Le microcontrôleur câble et lecteur est bon, mais lorsqu'il tente de lire un secteur, le microcontrôleur interne détecte la corruption des données car la somme de contrôle ECC interne a échoué et des tentatives répétées de lecture de ce secteur (en cas de problème de lecture temporaire). ), le contrôleur RAID obtient une réponse "désolé" polie - un disque en panne évident. Dans les deux cas, il est évident pour le contrôleur RAID-1 ou RAID-5 que le lecteur est en panne.

En principe non. Si quelque chose a si mal tourné qu'un disque dur écrit des sottises, et pourtant fonctionne assez bien pour écrire le code ECC interne correct pour ces sottises, RAID-1 ne peut pas dire quel lecteur est correct. Le système RAID-1 va probablement écraser les bonnes données avec les données corrompues lors d'une resynchronisation. RAID-5 n'est pas meilleur. La panne d’alimentation «Trou d’écriture RAID-5» lors de l’écriture active est un cas rare mais non impossible.

Autant que je sache, le seul moyen d'éviter une telle corruption est d'utiliser des sommes de contrôle de bout en bout en plus de la mise en miroir de fichiers, soit automatiquement en tant que partie du système de fichiers (ZFS ou Btrfs), soit périodiquement ou manuellement (recalculant les sommes de contrôle rsync, vérification de fichier simple, ensembles de fichiers Parchive, etc.); idéalement avec un hachage cryptographique tel que SHA-256.


Toute chance que vous puissiez donner une réponse à cette question .... superuser.com/questions/736612/…
Mick
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.