Recherche de site Web

Comment récupérer des données et reconstruire des RAID logiciels défaillants - Partie 8


Dans les articles précédents de cette série RAID, vous êtes passé de zéro à héros du RAID. Nous avons examiné plusieurs configurations RAID logicielles et expliqué les éléments essentiels de chacune, ainsi que les raisons pour lesquelles vous pencheriez vers l'une ou l'autre en fonction de votre scénario spécifique.

Dans ce guide, nous verrons comment reconstruire une matrice RAID logicielle sans perte de données en cas de panne de disque. Par souci de brièveté, nous ne considérerons qu'une configuration RAID 1 – mais les concepts et les commandes s'appliquent à tous les cas.

Scénario de test RAID

Avant de continuer, assurez-vous d'avoir configuré une matrice RAID 1 en suivant les instructions fournies dans la partie 3 de cette série : Comment configurer RAID 1 (Miroir) sous Linux.

Les seules variantes dans notre cas présent seront :

1) une version de CentOS (v7) différente de celle utilisée dans cet article (v6.5), et
2) différentes tailles de disque pour /dev/sdb et /dev/sdc (8 Go chacun).

De plus, si SELinux est activé en mode d'application, vous devrez ajouter les étiquettes correspondantes au répertoire dans lequel vous monterez le périphérique RAID. Sinon, vous rencontrerez ce message d'avertissement en essayant de le monter :

Vous pouvez résoudre ce problème en exécutant :


restorecon -R /mnt/raid1

Configuration de la surveillance RAID

Il existe diverses raisons pour lesquelles un périphérique de stockage peut tomber en panne (les SSD ont cependant considérablement réduit les risques que cela se produise), mais quelle que soit la cause, vous pouvez être sûr que des problèmes peuvent survenir à tout moment et que vous devez être prêt à remplacer le périphérique en panne. partie et d’assurer la disponibilité et l’intégrité de vos données.

Un conseil d'abord. Même si vous pouvez inspecter /proc/mdstat afin de vérifier l'état de vos RAID, il existe une méthode meilleure et plus rapide qui consiste à exécuter mdadm dans Monitor + Scan. mode, qui enverra des alertes par e-mail à un destinataire prédéfini.

Pour configurer cela, ajoutez la ligne suivante dans /etc/mdadm.conf :


MAILADDR user@<domain or localhost>

Dans mon cas:


MAILADDR gacanepa@localhost

Pour exécuter mdadm en mode moniteur + analyse, ajoutez l'entrée crontab suivante en tant qu'utilisateur root :


@reboot /sbin/mdadm --monitor --scan --oneshot

Par défaut, mdadm vérifiera les matrices RAID toutes les 60 secondes et enverra une alerte s'il détecte un problème. Vous pouvez modifier ce comportement en ajoutant l'option --delay à l'entrée crontab ci-dessus avec le nombre de secondes (par exemple, --delay 1800 signifie 30 minutes).

Enfin, assurez-vous d'avoir installé un Mail User Agent (MUA), tel que mutt ou mailx. Sinon, vous ne recevrez aucune alerte.

Dans une minute, nous verrons à quoi ressemble une alerte envoyée par mdadm.

Simulation et remplacement d'un périphérique de stockage RAID défaillant

Pour simuler un problème avec l'un des périphériques de stockage de la matrice RAID, nous utiliserons les options --manage et --set-faulty comme suit :


mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

Cela entraînera que /dev/sdc1 soit marqué comme défectueux, comme nous pouvons le voir dans /proc/mdstat :

Plus important encore, voyons si nous avons reçu une alerte par e-mail avec le même avertissement :

Dans ce cas, vous devrez supprimer le périphérique de la matrice RAID logicielle :


mdadm /dev/md0 --remove /dev/sdc1

Vous pouvez ensuite le retirer physiquement de la machine et le remplacer par une pièce de rechange (/dev/sdd, où une partition de type fd a été préalablement créée) :


mdadm --manage /dev/md0 --add /dev/sdd1

Heureusement pour nous, le système commencera automatiquement à reconstruire la matrice avec la partie que nous venons d'ajouter. Nous pouvons tester cela en marquant /dev/sdb1 comme défectueux, en le supprimant du tableau et en nous assurant que le fichier tecmint.txt est toujours accessible sur / mnt/raid1 :


mdadm --detail /dev/md0
mount | grep raid1
ls -l /mnt/raid1 | grep tecmint
cat /mnt/raid1/tecmint.txt

L'image ci-dessus montre clairement qu'après avoir ajouté /dev/sdd1 à la baie en remplacement de /dev/sdc1, la reconstruction des données a été automatiquement effectuée par le système sans intervention. Sur notre partie.

Bien que cela ne soit pas strictement obligatoire, c'est une excellente idée d'avoir un périphérique de rechange à portée de main afin que le processus de remplacement du périphérique défectueux par un disque en bon état puisse être effectué en un clin d'œil. Pour ce faire, rajoutons /dev/sdb1 et /dev/sdc1 :


mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md0 --add /dev/sdc1

Récupération après une perte de redondance

Comme expliqué précédemment, mdadm reconstruira automatiquement les données en cas de panne d'un disque. Mais que se passe-t-il si 2 disques de la baie tombent en panne ? Simulons un tel scénario en marquant /dev/sdb1 et /dev/sdd1 comme défectueux :


umount /mnt/raid1
mdadm --manage --set-faulty /dev/md0 /dev/sdb1
mdadm --stop /dev/md0
mdadm --manage --set-faulty /dev/md0 /dev/sdd1

Les tentatives de recréation du tableau de la même manière qu'il a été créé à ce moment-là (ou en utilisant l'option --assume-clean) peuvent entraîner une perte de données, cela doit donc être laissé en dernier recours.

Essayons de récupérer les données de /dev/sdb1, par exemple, dans une partition de disque similaire (/dev/sde1 – notez que cela nécessite que vous créiez une partition de tapez fd dans /dev/sde avant de continuer) en utilisant ddrescue :


ddrescue -r 2 /dev/sdb1 /dev/sde1

Veuillez noter que jusqu'à présent, nous n'avons pas touché à /dev/sdb ou /dev/sdd, les partitions qui faisaient partie de la matrice RAID.

Reconstruisons maintenant le tableau en utilisant /dev/sde1 et /dev/sdf1 :


mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

Veuillez noter que dans une situation réelle, vous utiliserez généralement les mêmes noms de périphériques qu'avec la baie d'origine, c'est-à-dire /dev/sdb1 et /dev/sdc1 après le les disques défectueux ont été remplacés par des neufs.

Dans cet article, j'ai choisi d'utiliser des périphériques supplémentaires pour recréer la baie avec des disques neufs et pour éviter toute confusion avec les disques défectueux d'origine.

Lorsqu'on vous demande si vous souhaitez continuer à écrire un tableau, tapez Y et appuyez sur Entrée. Le tableau devrait être démarré et vous devriez pouvoir suivre sa progression avec :


watch -n 1 cat /proc/mdstat

Une fois le processus terminé, vous devriez pouvoir accéder au contenu de votre RAID :

Résumé

Dans cet article, nous avons examiné comment récupérer après des pannes RAID et des pertes de redondance. Cependant, vous devez garder à l’esprit que cette technologie est une solution de stockage et ne remplace PAS les sauvegardes.

Les principes expliqués dans ce guide s'appliquent à toutes les configurations RAID, ainsi que les concepts que nous aborderons dans le prochain et dernier guide de cette série (gestion RAID).

Si vous avez des questions sur cet article, n'hésitez pas à nous envoyer un message en utilisant le formulaire de commentaires ci-dessous. Nous avons hâte d'avoir de tes nouvelles!