Comment récupérer les données et reconstruire les raids logiciels ratés - partie 8

Comment récupérer les données et reconstruire les raids logiciels ratés - partie 8

Dans les articles précédents de cette série RAID, vous êtes passé de zéro à Raid Hero. Nous avons examiné plusieurs configurations de raids logiciels et expliqué l'essentiel de chacun, ainsi que les raisons pour lesquelles vous vous pencheriez vers l'un ou l'autre selon votre scénario spécifique.

Récupérer la reconstruction de Raid Software Raid - Partie 8

Dans ce guide, nous discuterons de la façon de reconstruire un tableau de raid logiciel sans perte de données en cas d'échec de disque. Par conciliation, nous ne considérerons qu'un Raid 1 Configuration - mais les concepts et les commandes s'appliquent à tous les cas.

Scénario de test des raids

Avant de continuer plus loin, assurez-vous que vous avez mis en place un Raid 1 Array Suivant les instructions fournies dans la partie 3 de cette série: Comment configurer Raid 1 (Mirror) dans Linux.

Les seules variations dans notre cas présent seront:

1) Une version différente de Centos (V7) 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 où vous monterez le périphérique RAID. Sinon, vous rencontrerez ce message d'avertissement tout en tentant de le monter:

Erreur de montage SELINUX RAID

Vous pouvez résoudre ce problème en fonctionnant:

# restorecon -r / mnt / raid1 

Configuration de la surveillance des raids

Il existe une variété de raisons pour lesquelles un dispositif de stockage peut échouer (les SSD ont considérablement réduit les chances que cela se produise, cependant), mais quelle que soit la cause, vous pouvez être sûr que les problèmes peuvent se produire à tout moment et vous devez être prêt à remplacer l'échec partie et pour assurer la disponibilité et l'intégrité de vos données.

Un conseil d'abord. Même lorsque vous pouvez inspecter / proc / mdstat Afin de vérifier l'état de vos raids, il existe une méthode meilleure et de gain de temps qui consiste à courir mdadm en mode moniteur + scan, qui enverra des alertes par e-mail à un destinataire prédéfini.

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

MailAdDR [Protégé par e-mail] 

Dans mon cas:

MailAdDR [Protégé par e-mail] 
Alertes des e-mails de surveillance des raids

Courir mdadm En mode Monitor + Scan, ajoutez l'entrée Crontab suivante en tant que racine:

@reboot / sbin / mdadm --monitor --ncan --Onsehot 

Par défaut, mdadm Vérifiera les tableaux RAID toutes les 60 secondes et envoie une alerte si elle trouve un problème. Vous pouvez modifier ce comportement en ajoutant le --retard Option à l'entrée crontab ci-dessus avec la quantité de secondes (par exemple, --retard 1800 signifie 30 minutes).

Enfin, assurez-vous d'avoir un Envoyez-vous un agent utilisateur (MUA) installé, comme Mutt ou MailX. Sinon, vous ne recevrez aucune alerte.

Dans une minute, nous verrons ce qu'une alerte a envoyé par mdadm ressemble à.

Simulant 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 du tableau RAID, nous utiliserons le --gérer et --se dérouler Options comme suit:

# MDADM --MANAGE --set-Faulté / Dev / MD0 / Dev / SDC1 

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

Stimuler le problème avec le stockage des raids

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

Alerte par e-mail sur le périphérique RAID défaillard

Dans ce cas, vous devrez supprimer l'appareil du tableau des raids logiciels:

# MDADM / DEV / MD0 - Remove / Dev / SDC1 

Ensuite, vous pouvez le retirer physiquement de la machine et le remplacer par une pièce de rechange (/ dev / sdd, où une partition de type FD a déjà été créé):

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

Heureusement pour nous, le système commencera automatiquement à reconstruire le tableau avec la pièce que nous venons d'ajouter. Nous pouvons tester cela en marquant / dev / sdb1 comme défectueux, le retirer du tableau et s'assurer que le fichier Tecmint.SMS est toujours accessible à / mnt / raid1:

# MDADM --Detail / Dev / MD0 # Mont | grep raid1 # ls -l / mnt / raid1 | grep tecmint # cat / mnt / raid1 / tecmint.SMS 
Confirmer le tableau des raids de reconstruction

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

Bien qu'il ne soit pas strictement requis, c'est une excellente idée d'avoir un appareil de rechange à portée. Pour ce faire, remettons-nous / dev / sdb1 et / dev / sdc1:

# mdadm --manage / dev / md0 --add / dev / sdb1 # mdadm --manage / dev / md0 --add / dev / sdc1 
Remplacer le périphérique RAID défaillant

Se remettre d'une perte de redondance

Comme expliqué précédemment, mdadm Reconstruirea automatiquement les données lorsqu'un disque échoue. Mais que se passe-t-il si 2 disques dans le tableau échouent? Simulons ce scénario en marquant / dev / sdb1 et / dev / sdd1 Aussi défectueux:

# umount / mnt / raid1 # mdadm --manage --set-faulté / dev / md0 / dev / sdb1 # mdadm --stop / dev / md0 # mdadm --manage --set-faulté / dev / md0 / dev / sdd1 

Tente de recréer le tableau de la même manière qu'il a été créé pour le moment (ou d'utiliser le --supposer option) peut entraîner une perte de données, il 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 type FD dans / dev / sde avant de procéder) en utilisant ddrescue:

# DDRESCUE -R 2 / DEV / SDB1 / DEV / SDE1 
Récupération du tableau des raids

Veuillez noter que jusqu'à présent, nous n'avons pas touché / dev / sdb ou / dev / sdd, les partitions qui faisaient partie du tableau des raids.

Maintenant, reconstruisons le tableau en utilisant / dev / sde1 et / dev / sdf1:

# mdadm --create / dev / md0 --level = miroir --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 d'appareils que pour le tableau d'origine, c'est-à-dire, / dev / sdb1 et / dev / sdc1 Une fois les disques défaillants ont été remplacés par de nouveaux.

Dans cet article, j'ai choisi d'utiliser des appareils supplémentaires pour recréer le tableau avec de nouveaux disques et éviter la confusion avec les disques d'échec d'origine.

Lorsqu'on lui a demandé de continuer à écrire un tableau, tapez Y et presser Entrer. Le tableau doit être démarré et vous devriez pouvoir regarder ses progrès avec:

# watch -n 1 chat / proc / mdstat 

Une fois le processus se terminer, vous devriez pouvoir accéder au contenu de votre raid:

Confirmer le contenu RAID

Résumé

Dans cet article, nous avons examiné comment récupérer RAID Échecs et pertes de licenciement. Cependant, vous devez vous rappeler que cette technologie est une solution de stockage et NE FAIT PAS remplacer les sauvegardes.

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

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