Dépanner un RAID5 logiciel sous Ubuntu

Disque dur abimé

Mon RAID est raid !

Le RAID5 représente un système tolérant au panne. Son rôle le plus courant est de prévenir les pannes disques, pas de les empêcher.

Que faire en cas de panne d'un disque ?

Avant la panne

Voici un RAID 5 en état de marche, md5 étant le nom du périphérique multiple.

$ sudo mdadm --detail /dev/md5
/dev/md5:
        Version : 00.90
  Creation Time : Tue Apr 28 11:20:00 2009
     Raid Level : raid5
     Array Size : 244252032 (232.94 GiB 250.11 GB)
  Used Dev Size : 122126016 (116.47 GiB 125.06 GB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 5
    Persistence : Superblock is persistent

    Update Time : Tue Apr 28 13:08:22 2009
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 21f10f85:496cf870:be4eb3ef:89d0a3c3
         Events : 0.34

    Number   Major   Minor   RaidDevice State
       0       8       18        0      active sync   /dev/sdb2
       1       8       34        1      active sync   /dev/sdc2
       2       8       50        2      active sync   /dev/sdd2

La panne !

Nous pouvons déclencher une panne d'un disque en le déclarant hors-service. Le résultat est équivalent à un incident électrique ou mécanique.

$ sudo mdadm --manage /dev/md5 --set-faulty /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md5

Etat du RAID5 durant la panne

$ sudo mdadm --detail /dev/md5
/dev/md5:
        Version : 00.90
  Creation Time : Tue Apr 28 11:20:00 2009
     Raid Level : raid5
     Array Size : 244252032 (232.94 GiB 250.11 GB)
  Used Dev Size : 122126016 (116.47 GiB 125.06 GB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 5
    Persistence : Superblock is persistent

    Update Time : Tue Apr 28 13:53:30 2009
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 21f10f85:496cf870:be4eb3ef:89d0a3c3
         Events : 0.36

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       34        1      active sync   /dev/sdc2
       2       8       50        2      active sync   /dev/sdd2

       3       8       18        -      faulty spare   /dev/sdb2

Retirez le disque défectueux du RAID. En RAID5, vous n'êtes dès lors plus protégé. C'est l'avantage du RAID6 et de ses 2 disques de parités.

$ sudo mdadm --manage /dev/md5 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2

Le résultat de la commande mdadm --detail /dev/md5 indique que le disque n'est plus dans le RAID.

Number   Major   Minor   RaidDevice State
   0       0        0        0      removed
   1       8       34        1      active sync   /dev/sdc2
   2       8       50        2      active sync   /dev/sdd2

Vous pouvez débrancher le disque fautif à chaud.

Dépanner

Remplacez physiquement le disque. Attention à ne pas vous tromper de disque.
Ajoutez le au RAID pour revenir à un état normal.

$ sudo mdadm --manage /dev/md5 --add /dev/sdb2
mdadm: re-added /dev/sdb2

mdadm --detail /dev/md5 nous informe que le nouveau disque est présent et que le RAID est en cours de reconstruction.

    Update Time : Tue Apr 28 14:02:34 2009
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 4% complete

           UUID : 21f10f85:496cf870:be4eb3ef:89d0a3c3
         Events : 0.48

    Number   Major   Minor   RaidDevice State
       3       8       18        0      spare rebuilding   /dev/sdb2
       1       8       34        1      active sync   /dev/sdc2
       2       8       50        2      active sync   /dev/sdd2

Vous pouvez suivre la reconstruction avec cette commande

$ watch cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md5 : active raid5 sdb2[3] sdd2[2] sdc2[1]
      244252032 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
      [===========>.........]  recovery = 56.1% (68580552/122126016) finish=21.3min speed=41750K/sec

md0 : active raid0 sdd1[2] sdc1[1] sdb1[0]
      366209280 blocks 64k chunks

Cas d'un RAID0

Le RAID0 n'offre aucune sécurité. En répartissant les données sur les différents disques pour optimiser les I/O sans gérer de bit de parité, les risques de panne sont augmentées et les informations localisées sur le disque défectueux sont irrémédiablement perdues.

Le remplacement du disque défectueux s'effectue à froid.
Arrêtez le serveur, remplacez le disque défectueux, redémarrez, contrôlez les partitions avec fsck et croisez les doigts.

Les disques SDRAM mémoires sont une sérieuse alternative au RAID0 pour les petits volumes.