Aller au contenu principal
file-recoveryINFO

Récupération RAID 10 : combien de disques il faut vraiment, et combien de pannes il encaisse

Le RAID 10 passe pour le cas facile : des paires en miroir, on récupère chaque paire comme un RAID 1. Le pilote md de Linux ne fonctionne pas ainsi. Il accepte un nombre de disques qui n'est pas un multiple du nombre de copies, il propose trois dispositions sous le même numéro de niveau, et le manuel md indique que la survie au niveau 10 dépend de la configuration.

Par Eric Gerard · Éditeur · Save My Disk9 min de lecturePhoto via Pexels

Le RAID 10 a la réputation d'être le niveau facile. Pas de parité à reconstruire, pas d'arithmétique de bandes, juste des paires en miroir : on retrouve la moitié survivante de chaque paire, on copie les fichiers, c'est fini. Cette réputation vient de la définition scolaire du RAID 1+0.

Le pilote md de Linux, sur lequel tournent la plupart des grappes RAID 10 en dehors des contrôleurs matériels, n'implémente pas cette définition scolaire. Il implémente quelque chose de plus large, qui la contient. Si votre plan de récupération suppose des paires, c'est peut-être le plan d'une grappe que vous n'avez pas.

Le nom promet des paires, le pilote n'en exige pas

Le manuel md ouvre la section exactement comme on s'y attend. Il décrit le RAID10 comme offrant « a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 », et indique que « every datablock is duplicated some number of times, and the resulting collection of datablocks are distributed over multiple drives ».

Relisez cette seconde phrase, c'est elle qui fait le vrai travail. Elle ne dit pas que les disques sont regroupés en miroirs. Elle dit que les copies sont réparties. Le manuel énonce ensuite la conséquence noir sur blanc : « It should be noted that the number of devices in a RAID10 array need not be a multiple of the number of replica of each data block; however, there must be at least as many devices as replicas. »

Un RAID 10 de trois disques avec deux copies de tout est donc une grappe légale et ordinaire. Un de cinq disques aussi. Aucun des deux ne se décompose en paires, pour la bonne raison qu'il n'y a pas de paires. La redondance est bien réelle, mais elle est étalée sur l'ensemble plutôt qu'enfermée dans des couples, et tout réflexe de récupération bâti sur « retrouver l'autre moitié de ce miroir » n'a plus rien à quoi se raccrocher.

Trois dispositions se cachent derrière un seul numéro de niveau

À la création de la grappe, deux choses sont décidées qui n'apparaissent jamais ensuite dans le numéro de niveau : combien de copies de chaque bloc existent, et où elles vont. Le manuel est explicite : « When configuring a RAID10 array, it is necessary to specify the number of replicas of each data block that are required (this will usually be 2) and whether their layout should be 'near', 'far' or 'offset'. »

Les trois ne diffèrent que par le placement.

Near rassemble les copies. Le manuel les décrit comme placées « consecutively ('as close to each other as possible') across the stripes of the array », et note qu'avec un nombre pair de disques elles se retrouvent probablement au même décalage sur des disques différents. C'est l'agencement qui se comporte comme le manuel scolaire, et le manuel md lui-même l'appelle « the 'classic' RAID1+0 ».

Far les éloigne délibérément, « quite distant ('as far as reasonably possible') from each other ». La raison tient à la vitesse, pas à la sécurité : « The advantage of this layout is that MD can easily spread sequential reads over the devices, making them similar to RAID0 in terms of speed. » Une grappe montée pour le débit en lecture est très souvent une grappe far, et sa seconde copie ne se trouve nulle part près de la première.

Offset est le compromis, où « all the copies of a given chunk are striped consecutively ('offset by the stripe length after each other') over the devices ». Le manuel en attend des caractéristiques de lecture proches du far avec une taille de bloc suffisante, sans autant de déplacements de tête en écriture.

Rien ne diffère entre les trois du côté des données. Tout diffère du côté de l'endroit où les chercher.

Des rangées de tiroirs de disques montés en rack photographiées d'en haut selon un angle rasant, des dizaines de plateaux identiques munis de petites diodes vertes d'activité, s'éloignant en flou vers le fond de la baie.
Des rangées de tiroirs de disques montés en rack photographiées d'en haut selon un angle rasant, des dizaines de plateaux identiques munis de petites diodes vertes d'activité, s'éloignant en flou vers le fond de la baie.

Pourquoi cela décide si la reconstruction rend des fichiers ou du bruit

Reconstruire une grappe par bandes revient à répondre à trois questions : quels disques, dans quel ordre, avec quelle taille de bloc. Le RAID 10 en ajoute une quatrième que les niveaux à parité n'ont pas : où se trouve la seconde copie de chaque bloc. Trompez-vous, et la reconstruction aboutit quand même. Elle entrelace simplement des blocs pris aux mauvais décalages, et le résultat est un volume qui ne monte sur rien, ou pire, qui monte sur une arborescence pleine de fichiers qui s'ouvrent sur du charabia.

C'est la raison pratique pour laquelle la disposition doit être retrouvée avant les données. Elle est inscrite dans les métadonnées de la grappe, et c'est pourquoi lire les métadonnées de chaque disque avant de toucher à quoi que ce soit compte ici plus qu'à n'importe quel autre niveau. Si les métadonnées ont disparu et que la disposition est inconnue, cela devient un petit problème de recherche : trois dispositions, quelques nombres de copies et tailles de bloc plausibles, testés sur une copie jusqu'à ce qu'un système de fichiers apparaisse. Cette recherche n'est sûre que sur des images, parce que chaque tentative est une écriture dans la mauvaise direction si vous la menez sur les disques.

Ce qu'un RAID 10 survit, et pourquoi personne ne vous le dira à l'avance

L'affirmation la plus répandue sur le RAID 10 est qu'il survit à une panne par paire, si bien qu'une grappe de quatre disques peut en perdre deux tant qu'ils n'appartiennent pas à la même paire. C'est vrai d'un RAID 1+0 classique, et le manuel md se garde soigneusement de le généraliser.

Là où il énumère le nombre de disques que chaque niveau tolère de perdre, il donne des chiffres concrets pour les autres : « this number is one for RAID levels 4 and 5, two for RAID level 6, and all but one (N-1) for RAID level 1. » Pour le niveau 10, il indique seulement que la survie « is dependent on configuration ».

C'est la réponse honnête, et elle découle de tout ce qui précède. Avec deux copies réparties sur cinq disques en disposition far, la question de savoir si deux disques morts sont récupérables dépend de l'existence d'un bloc dont les deux copies se trouvaient précisément sur ces deux-là. Deux grappes qui affichent le même niveau, le même nombre de disques et la même capacité peuvent différer là-dessus. Cela se joue à la création et ne se lit pas dans le numéro de niveau.

La conséquence opérationnelle est simple : après une seconde panne au niveau 10, ne supposez ni que tout va bien, ni que tout est perdu. Les deux conclusions sont des paris.

L'ordre qui préserve vos options

Arrêtez d'écrire. Une grappe dégradée laissée en service est une reconstruction qui attend d'être autorisée, et à ce niveau vous ignorez peut-être quelle copie elle prendra pour source.

Relevez les métadonnées de chaque disque avant toute chose. Disposition, nombre de copies, taille de bloc, ordre des disques et compteurs d'événements. C'est l'information qui transforme la récupération en procédure au lieu d'une recherche, et c'est aussi celle qu'un recreate précipité détruit.

Imagez tous les disques, pas seulement les survivants. L'imagerie est une lecture. Elle ne peut rien aggraver, et elle rend réversible chacune de vos erreurs suivantes. Sur une grappe où la bonne disposition demandera peut-être plusieurs essais, travailler sur images n'est pas de la prudence : c'est le seul moyen d'avoir droit à plus d'un essai.

Assemblez en lecture seule, et vérifiez que vous voyez un système de fichiers avant de croire aux paramètres. Une reconstruction avec la mauvaise disposition ne s'annonce pas. Un système de fichiers montable, parcourable, dont les fichiers s'ouvrent, voilà le test.

Reconstruisez en dernier, sur du matériel déjà éprouvé, une fois que les données existent ailleurs que dans cette grappe.

Choix éditorial
4.5 / 5

Relire les fichiers une fois les images faites et la disposition trouvée

Fonctionne sur une image ou un volume que vous pouvez déjà monter. Il ne détermine pas à votre place la disposition near, far ou offset, et il ne remplace pas l'imagerie préalable des disques.

Fondé en 2004Garantie 30 joursVersion gratuite 2 Go
Voir l'offre

En résumé

Le RAID 10 sous Linux n'est pas la grappe de paires en miroir que son nom suggère. Le manuel md autorise un nombre de disques qui n'est pas un multiple du nombre de copies, ce qui donne des grappes sans aucune paire à récupérer une par une. Il propose les dispositions near, far et offset sous le même numéro de niveau, et seul near avec un nombre pair de disques ressemble au RAID 1+0 classique.

Parce que les copies peuvent être placées loin les unes des autres par conception, la disposition doit être connue avant toute tentative de reconstruction, sinon la reconstruction ira à son terme et produira n'importe quoi. Et parce que le placement se décide à la création, le manuel refuse de dire combien de disques un RAID 10 peut perdre : à ce niveau, la survie dépend de la configuration.

Relevez les métadonnées de chaque disque, imagez-les tous, essayez les dispositions sur les copies, et ne reconstruisez qu'une fois vos fichiers ailleurs.

La description du RAID10 comme combinaison de RAID1 et RAID0, l'énoncé selon lequel le nombre de disques n'a pas besoin d'être un multiple du nombre de copies, les définitions des dispositions near, far et offset, la remarque selon laquelle near avec un nombre pair de disques est le RAID1+0 classique, et l'énoncé selon lequel la survie dépend de la configuration au niveau 10, proviennent tous de la page de manuel Linux md(4), consultée au moment de la rédaction. Les citations sont laissées dans leur langue d'origine. Vérifiez sur la version du noyau et de mdadm que vous utilisez. Les liens commerciaux portent l'attribut rel="sponsored nofollow" ; une commission d'affiliation peut s'appliquer, sans surcoût pour vous.

Guides liés

Choix éditorial
4.5 / 5

Récupère tes fichiers supprimés → EaseUS

Scan gratuit · fichiers supprimés, formatés, perdus · Windows & Mac

Fondé en 2004Garantie 30 joursVersion gratuite 2 Go
Voir l'offre

Questions fréquentes

Le RAID 10 est-il la même chose que le RAID 1+0 ?

Pas sous Linux, et la différence compte au moment de récupérer. Le manuel md présente le niveau ainsi : « RAID10 provides a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 », puis s'écarte aussitôt de ce modèle. Il précise que le nombre de disques d'une grappe RAID10 n'a pas besoin d'être un multiple du nombre de copies de chaque bloc, il faut seulement au moins autant de disques que de copies. Un RAID 1+0 classique est un agrégat par bandes construit sur des paires en miroir distinctes : il lui faut un nombre pair de disques. Un RAID10 md à trois disques et deux copies est parfaitement légal, et il n'a aucune paire à récupérer une par une.

Combien de disques un RAID 10 peut-il perdre ?

Il n'y a pas de réponse unique, et le manuel md refuse d'en donner une. Là où il énumère le nombre de disques que chaque niveau tolère de perdre, il donne un chiffre pour les niveaux à parité et « all but one » pour le RAID 1, mais pour le niveau 10 il indique que la survie « is dependent on configuration ». Ce n'est pas de l'imprécision. Avec deux copies, la question de savoir si deux pannes simultanées sont survivables dépend de l'endroit où ces deux copies ont atterri, donc de la disposition et du nombre de disques. Deux pannes peuvent être anodines ou fatales dans des grappes qui affichent le même niveau.

Que sont les dispositions near, far et offset ?

Ce sont trois façons de placer les copies, choisies à la création de la grappe. En near, le manuel indique que les copies d'un même bloc sont placées consécutivement, aussi près que possible les unes des autres, à travers les bandes. En far, elles sont placées aussi loin que raisonnablement possible, ce qui permet à md de répartir les lectures séquentielles sur les disques et d'approcher la vitesse d'un RAID0. En offset, toutes les copies d'un bloc sont écrites consécutivement, décalées d'une longueur de bande, sur les disques. Les données sont identiques dans les trois cas. Leur position sur les plateaux, non.

Puis-je sortir un disque d'un RAID 10 et lire les fichiers dessus ?

Seulement en disposition near avec un nombre pair de disques, et encore, partiellement. Dans cet agencement un disque contient des blocs entiers qu'un outil de système de fichiers peut reconnaître, mais il ne contient au mieux que la moitié de la grappe : vous obtenez des fragments de fichiers, pas des fichiers. En far et en offset les copies sont volontairement déplacées, un disque lu seul n'est donc pas un morceau cohérent du système de fichiers. Un disque qui paraît vide dans cette situation est en général intact et mal lu.

Faut-il laisser le contrôleur reconstruire avant de tenter la récupération ?

Non. Une reconstruction écrit, et au niveau 10 vous ne savez pas forcément quelle copie le pilote traitera comme référence. Imagez d'abord chaque disque, puisque l'imagerie est une lecture et ne coûte que du temps, puis travaillez sur les copies. Vous reconstruirez quand vos données existeront déjà ailleurs que dans la grappe.