SAVOIRS · SERVEURS DÉDICÉS ET VPS
Gestion du logiciel Linux RAID (Partie II): Récupération après une défaillance de disque
Dernière mise à jour le 2019-02-03
Gestion du logiciel Linux RAID (Partie II): Récupération après une défaillance de disque
|
Cet article vous montre comment récupérer le logiciel Linux RAID en cas d'une seule défaillance de disque. Pour les exemples suivants, nous utiliserons les hypothèses suivantes :
Une exposition saine cat /proc/mdstat Personnalités : [raid1] md0 : raid actif1 sdb1[1] sda1[0] 511988 blocks super 1.0 [2/2] [UU] md1 : raid actif1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 1/8 pages [4KB], 65536Ko Dispositifs inutilisés: <none> Notez que les deux tableaux (md0, md1) sont :
cat /proc/partitions major minor #blocks name 8 0 976762584 sda 8 1 512000 sda1 8 2 976248832 sda2 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 Notez que les éléments suivants doivent être exacts :
Arrayage dégradé
Personnalités : [raid1] md0 : raid actif1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : raid actif1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 0/8 pages [0KB], 65536KB chunk Dispositifs inutilisés: <none> Note : Un ou plusieurs tableaux RAID afficheront les membres manquants : [2/1] [ U]
Personnalités : [raid1] md0 : raid actif1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : raid actif1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536Ko Dispositifs inutilisés: <none> En cas de défaillance grave ou si un disque ne parvient pas à initialiser le redémarrage du système, le disque lui-même peut être manquant comme le montrent les exemples ci-dessous.
Personnalités : [raid1] md0 : raid actif1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : raid actif1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536Ko Dispositifs inutilisés: <none> Disque manquant : /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 Suppression d'un disque défectueux Les dispositifs de marquage manuel comme ‘ échoué’ Vous devez marquer manuellement un périphérique comme défectueux seulement si l'un de ses tableaux est dans un état dégradé en raison d'une erreur de temps ou de lecture dans l'une des partitions. Le disque physique lui-même devrait encore fonctionner bien.
ATTENTION : Assurez-vous que vous échouez seulement les partitions qui appartiennent au disque en échec correspondant (c.-à-d. SDA1/SDA2Pour pour SDA and Sdb1/sdb2Pour pour Sdb). Set SDA1 and SDA1 as défectueux [root@freshinstall ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdamm: ensemble /dev/sda1 défectueux dans /dev/md0 [root@freshinstall ~]# mdadm --manage /dev/md1 --fail /dev/sda2 mdamm: ensemble /dev/sda2 défectueux dans /dev/md1
In cat /proc/mdstat Personnalités : [raid1] md0 : raid actif1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : raid actif1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536Ko Dispositifs inutilisés: <none> Suppression des périphériques défectueux du tableau Avant qu'un disque ne puisse être remplacé, les membres échoués doivent être supprimés de leurs tableaux correspondants:
[root@freshinstall ~]# mdadm --manage /dev/md0 --remove /dev/sda1 mdamm: chaud enlevé /dev/sda1 de /dev/md0 [root@freshinstall ~]# mdadm --manage /dev/md1 --remove /dev/sda2 mdamm: chaud enlevé /dev/sda2 de /dev/md1 [root@freshinstall ~]# cat /proc/mdstat Personnalités : [raid1] md0 : raid actif1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : raid actif1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536Ko Dispositifs inutilisés: <none>
[root@freshinstall ~]# mdamm --misc --zero-superblock /dev/sda1 [root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda2
dd si =/dev/zéro de =/dev/sda bs=1M ATTENTION: Ce processus efface toutes les données dans le périphérique, étant donné l'argument "of" (/dev/sda dans l'exemple ci-dessus). Remarque: Ce processus peut prendre un certain temps. Ajout d'un disque de remplacement Le disque de remplacement doit être exactement de la même taille ou plus grand que le disque échoué. Une fois le disque de remplacement inséré dans le système, le noyau enregistrera quelque chose comme ceci: Dmesg , queue sd 0:0:0:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 0:0:0:0: [sdc] Blocs physiques de 4096 octets sd 0:0:0:0: [sdc] Write Protect est désactivé Sd 0:0:0:0: [sdc] Sens du mode: 00 3a 00 00 sd 0:0:0:0: [sdc] Ecrire cache: activé, lire cache: activé, ne supporte pas DPO ou FUA
cat /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc Vérifiez l'état SMART du nouveau disque : -H /dev/sdc smartctl 5.39.1 2010-01-28 r3054 [x86_64-unknown-linux-gnu] (local build) Droit d'auteur (C) 2002-10 par Bruce Allen, http://smartmontools.sourceforge.net === DÉBUT DE LA SECTION DE DONNÉES SMART Résultat du test d'auto-évaluation globale de la santé SMART: PASSÉ Partitionnement Pour commencer le fractionnement, confirmez d'abord que le nouveau disque n'a pas été monté automatiquement : mount | grep sdc Il ne devrait pas y avoir de sortie. Si quelque chose s'affiche, les partitions correspondantes doivent être démontées manuellement en appelant : umount <partition> Puisque le système initial utilisait deux disques miroirs de la même taille, nous pouvons utiliser le disque opérationnel comme modèle pour la partition : -d -uS /dev/sdb-Sfdisk -L -uS /dev/sdc Vérifier que personne n'utilise ce disque en ce moment ... OK Disque /dev/sdc: 121601 cylindres, 255 têtes, 63 secteurs/piste Vieille situation: Unités = secteurs de 512 octets, en comptant à partir de 0 Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty Nouvelle situation: Unités = secteurs de 512 octets, en comptant à partir de 0 Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty Avertissement: la cloison 1 ne se termine pas à la limite d'un cylindre Avertissement : la cloison 2 ne démarre pas à la limite d'un cylindre Avertissement: la cloison 2 ne se termine pas à la limite d'un cylindre Écrit avec succès la nouvelle table de partition Relire la table de partitions... Si vous avez créé ou modifié une partition DOS, /dev/foo7, disons, utilisez dd(1) à zéro les 512 premiers octets: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (Voir fdisk(8).) Après cela, vous devriez être en mesure de voir votre disque nouvellement partitionné: cat /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc 8 1 512000 sdc1 8 2 976248832 sdc2 Ajout de nouveaux périphériques au tableau [root@freshinstall ~]# mdadm --manage /dev/md0 --add /dev/sdc1 mdamm: ajouté /dev/sdc1 [root@freshinstall ~]# mdadm --manage /dev/md1 --add /dev/sdc2 mdamm: ajouté /dev/sdc2 [root@freshinstall ~]# cat /proc/mdstat Personnalités : [raid1] md0 : raid actif1 sdc1[2] sdb1[1] 511988 blocks super 1.0 [2/2] [UU] md1 : raid actif1 sdc2[2] sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] [>....................] recovery = 0.1% (1618176/976247676) finish=160.6min speed=101136K/sec bitmap: 1/8 pages [4KB], 65536Ko Dispositifs inutilisés: <none> Note : Les deux tableaux ont deux membres actifs et md1 est activement en reconstruction. Réinstallation du chargeur de démarrage Une fois le lecteur échoué remplacé, réinstallez GRUB dans le MBR du nouveau disque pour vous assurer que vous pouvez démarrer à partir de celui-ci: installateur de grub /dev/sdc Installation terminée. Aucune erreur signalée. C'est le contenu de la carte de périphérique /boot/grub/device.map. Vérifiez si c'est correct ou non. Si l'une des lignes est incorrecte, Corriger et ré-exécuter le script `grub-install'. # cette carte de l'appareil a été générée par anaconda (hd0) /dev/sdc (hd1) /dev/sdb |
Dites-nous ce qui doit rester debout.
A short conversation with an engineer. No quote-bot, no callback queue. We'll tell you honestly if we're not the right fit.