Comment le RAID peut-il gérer les données incohérentes?

8

RAID 1 et RAID 5 (et leurs frères 10 et 50) atteignent respectivement la redondance des données grâce à la mise en miroir et au contrôle de parité. Cela permet à une matrice RAID d'accéder toujours aux données lorsqu'un secteur sur un disque (ou un disque entier) devient illisible. RAID 6 (ou 60) utilise une vérification supplémentaire pour permettre les doubles erreurs.

Mais comment une matrice RAID peut-elle gérer des données qui ne sont pas totalement illisibles, mais tout simplement incohérentes?

Si une erreur se produit, de sorte que les données fe sur une bande sont modifiées sur un disque mais que la modification n'est pas propagée aux autres, la bande entière devient incohérente. Si dans un jeu en miroir un disque dit "ce bit est 0" tandis que l'autre disque dit "ce bit est 1", comment un contrôleur RAID peut-il savoir lequel a raison? Le même raisonnement pourrait être appliqué à une bande RAID-5, avec la complexité supplémentaire que vous ne pouvez pas facilement savoir quel secteur est réellement incorrect dans la bande. En outre, RAID 6 atténue-t-il ce problème avec ses doubles vérifications, ou peut-il encore avoir des problèmes pour récupérer après une corruption de données lorsque les données sont réellement lisibles, mais elles sont erronées quelque part, d'autant plus que les matrices RAID 6 ont généralement beaucoup de disques?

Ceci pourrait théoriquement être résolu par des sommes de contrôle, afin de garantir quelle copie des données (ou parité) est la bonne; mais un contrôleur RAID implémente-t-il réellement ce type de somme de contrôle (qui prendrait bien sûr de l'espace supplémentaire)? Ou doit-il être géré au niveau du système d'exploitation, où la plupart des systèmes de fichiers peuvent et feront la somme de contrôle de leur contenu? Et si tel est le cas, comment peuvent-ils dire au contrôleur RAID que "les données sur le secteur X sur le disque Y sur la bande Z sont erronées", lorsque l'approche générale d'un contrôleur RAID est d' abstraire le système d'exploitation de la couche de stockage sous-jacente autant que possible?

Massimo
la source
C'est à cela que sert la «lecture de surveillance» ou une vérification de cohérence en arrière-plan.
ewwhite
2
C'est utile pour la détection précoce des blocs défectueux et le déplacement des données ailleurs avant qu'une erreur réelle se produise. Mais il doit encore faire face à des données lisibles mais incohérentes . Prenons mon exemple RAID-1: si un bloc sur un disque est lisible et dit "0", alors que le même bloc sur l'autre disque est également lisible et dit "1", comment le contrôleur peut-il savoir lequel a raison?
Massimo
Étant donné que RAID 1 n'offre aucune parité, le système aura beaucoup de mal à détecter et à corriger le problème. Vous devrez probablement extraire les lecteurs et les lire individuellement pour obtenir le fichier corrompu.
Brian D.
Solution facile - utilisez ZFS
Patrick

Réponses:

3
RAID VOLUMES WITH PARITY STRIPE

Sur les contrôleurs Areca que nous utilisons (et tous les contrôleurs RAID matériels modernes) lors d'un contrôle de cohérence, le contrôleur peut détecter si la corruption provient des données de parité, des données physiques sur le disque ou des deux. La plupart des contrôleurs accomplissent cela avec de simples bits de somme de contrôle pour les données de parité et les données sur disque.

Dans le cas où les données de parité sont corrompues, le contrôleur remarquera le problème lorsque vous exécutez un contrôle de cohérence et relisez le disque physique pour les bits corrects et réécrivez la bande de parité. Les utilisateurs ne verront aucun problème car ils lisent les données sur disque lors de l'ouverture des fichiers. Réenregistrer tout ce qui entraîne la réécriture de la bande de parité corrompue résoudra également le problème.

Si vous avez le contraire, et que vous retournez un peu vos données réelles sur le disque, votre contrôleur examinera la bande de parité lors d'un contrôle de cohérence pour voir si elle a changé. Dans ce cas, le contrôleur écrasera les données sur le disque pour correspondre aux données de parité, dont il peut confirmer qu'elles sont inchangées / bonnes. Les utilisateurs obtiendront une erreur CRC ou un fichier corrompu selon les données jusqu'à ce qu'un contrôle de cohérence soit exécuté et corrige l'erreur.

Étant donné que les données de parité pour des données sur disque spécifiques ne sont jamais stockées sur le même lecteur que les données réelles, une panne de lecteur unique ne devrait pas entraîner de problèmes de corruption de données. Ou deux disques pour RAID6, etc.

Les contrôles de cohérence gardent vos données aussi précises que possible et si vous laissez les données corrompues sur votre volume assez longtemps, elles pourraient être écrites dans les données de parité, ce qui signifie que le fichier est corrompu pour de bon et devra être restauré à partir d'une sauvegarde. Si un disque est dans un état de pré-panne où il affiche des erreurs lors des contrôles de cohérence, remplacez immédiatement le disque au lieu d'attendre que le contrôleur le marque comme étant en panne. Nous effectuons des contrôles de cohérence quotidiennement sur les petits volumes et hebdomadairement sur les plus gros.

RAID VOLUMES WITHOUT PARITY STRIPE (EX. RAID1)

Le contrôleur / micrologiciel du disque dur peut peut-être corriger le problème. Si ce n'est pas possible, le contrôleur RAID aura beaucoup de mal à résoudre le problème. Dans ce cas, vous devrez probablement lire les disques individuellement pour récupérer les données.

GENERALLY SPEAKING

Exécutez des vérifications de cohérence à l'intervalle recommandé par le fabricant de votre carte RAID. Si vous êtes vraiment préoccupé par la corruption, vous pouvez également empiler un système de fichiers résilient sur un volume RAID. Les systèmes de fichiers résilients modernes peuvent corriger bon nombre de ces problèmes d'intégrité des données et empiler un FS résilient sur RAID6 vous offrirait une excellente disponibilité des données, sans corruption. Et même avec 2 pannes de disque simultanées, vous auriez toujours des données de parité FS disponibles pour éviter de présenter des données corrompues à l'utilisateur.

Brian D.
la source
2

Vous décrivez efficacement la situation où un disque écrit (ou lit) une erreur. Le contrôleur RAID n'a aucun moyen pratique (par exemple, l'écriture et la lecture tueraient vos performances) pour vous protéger contre cette situation. Il faut que les disques soient capables de détecter ce type d'erreur et soit d'utiliser un bloc différent, soit de sortir du volume, provoquant une dégradation du RAID.

Si vous pensez à la situation d'un seul disque, la seule protection contre les écritures (ou lectures) incohérentes est le disque lui-même. RAID s'appuie sur cela, mais n'introduit pas de sauvegarde supplémentaire.

NB Je sais par expérience que XFS réagit assez bien aux disques erronés dans un tableau. Donc, au moins mes contrôleurs non bas de gamme et le système d'exploitation ont reconnu mais pas protégé contre cette incohérence (un disque connu pour être défectueux a été ajouté avec force à un volume).

Michael
la source