GNU/Linux >> Tutoriels Linux >  >> Linux

Comment remplacer un disque dur défaillant dans un RAID logiciel Linux

Ce guide explique comment retirer un disque dur défaillant d'une matrice Linux RAID1 (RAID logiciel) et comment ajouter un nouveau disque dur à la matrice RAID1 sans perdre de données. J'utiliserai gdisk pour copier le schéma de partition, de sorte qu'il fonctionnera également avec les grands disques durs avec GPT (table de partition GUID).

1 Remarque préliminaire

Dans cet exemple, j'ai deux disques durs, /dev/sda et /dev/sdb, avec les partitions /dev/sda1 et /dev/sda2 ainsi que /dev/sdb1 et /dev/sdb2.

/dev/sda1 et /dev/sdb1 constituent la matrice RAID1 /dev/md0.

/dev/sda2 et /dev/sdb2 constituent la matrice RAID1 /dev/md1.

/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1

/dev/sdb a échoué et nous voulons le remplacer.

2 Comment savoir si un disque dur est en panne ?

Si un disque est en panne, vous trouverez probablement de nombreux messages d'erreur dans les fichiers journaux, par ex. /var/log/messages ou /var/log/syslog.

Vous pouvez également exécuter

cat /proc/mdstat

et au lieu de la chaîne [UU], vous verrez [U_] si vous avez une matrice RAID1 dégradée.

3 Retrait du disque défaillant

Pour supprimer /dev/sdb, nous marquerons /dev/sdb1 et /dev/sdb2 comme ayant échoué et les supprimerons de leurs matrices RAID respectives (/dev/md0 et /dev/md1).

Nous marquons d'abord /dev/sdb1 comme ayant échoué :

mdadm --manage /dev/md0 --fail /dev/sdb1

La sortie de

cat /proc/mdstat

devrait ressembler à ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Ensuite, nous supprimons /dev/sdb1 de /dev/md0 :

mdadm --manage /dev/md0 --remove /dev/sdb1

Le résultat devrait ressembler à ceci :

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1

Et

cat /proc/mdstat

devrait afficher ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Maintenant, nous recommençons les mêmes étapes pour /dev/sdb2 (qui fait partie de /dev/md1) :

mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[2](F)
      24418688 blocks [2/1] [U_]

unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
      24418688 blocks [2/1] [U_]

unused devices: <none>

Puis éteignez le système :

shutdown -h now

et remplacez l'ancien disque dur /dev/sdb par un nouveau (il doit avoir au moins la même taille que l'ancien - s'il ne fait que quelques Mo de moins que l'ancien, la reconstruction des baies échouera).

4 Ajout du nouveau disque dur

Après avoir changé le disque dur /dev/sdb, démarrez le système.

La première chose que nous devons faire maintenant est de créer exactement le même partitionnement que sur /dev/sda. Nous pouvons le faire avec la commande sgdisk du paquet gdisk. Si vous n'avez pas encore installé gdisk, exécutez cette commande pour l'installer sur Debian et Ubuntu :

apt-get install gdisk

Pour les distributions Linux basées sur RedHat comme CentOS, utilisez :

yum install gdisk

et pour l'utilisation d'OpenSuSE :

yast install gdisk

La prochaine étape est facultative mais recommandée. Pour vous assurer que vous disposez d'une sauvegarde du schéma de partition, vous pouvez utiliser sgdisk pour écrire les schémas de partition des deux disques dans un fichier. Je vais stocker la sauvegarde dans le dossier /root.

sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb

En cas d'échec, vous pouvez restaurer les tables de partition avec l'option --load-backup de la commande sgdisk.

Copiez maintenant le schéma de partition de /dev/sda vers /dev/sdb run :

sgdisk -R /dev/sdb /dev/sda

ensuite, vous devez randomiser le GUID sur le nouveau disque dur pour vous assurer qu'ils sont uniques

sgdisk -G /dev/sdb

Vous pouvez courir

sgdisk -p /dev/sda
sgdisk -p /dev/sdb

pour vérifier si les deux disques durs ont maintenant le même partitionnement.

Ensuite, nous ajoutons /dev/sdb1 à /dev/md0 et /dev/sdb2 à /dev/md1 :

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2

Maintenant, les deux tableaux (/dev/md0 et /dev/md1) seront synchronisés. Exécuter

cat /proc/mdstat

pour voir quand c'est fini.

Pendant la synchronisation, la sortie ressemblera à ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unused devices: <none>

Une fois la synchronisation terminée, la sortie ressemblera à ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Ça y est, vous avez remplacé /dev/sdb avec succès !


Linux
  1. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0 ?

  2. Linux – Que signifie la lettre « u » dans /dev/urandom ?

  3. Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

  4. Que sont les fichiers /dev/zero et /dev/null sous Linux

  5. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

tty (/dev/tty ) vs pts (/dev/pts) sous Linux

Comment échanger /dev/sda avec /dev/sdb ?

Comment Linux utilise /dev/tty et /dev/tty0

Est-ce une erreur de lier /dev/random à /dev/urandom sous Linux ?

echo ou print /dev/stdin /dev/stdout /dev/stderr

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp