Skip navigation

RAID 1 soft : mdadm reconstruction

Reconstruction d’un RAID logiciel avec mdadm

Afin de connaître l’état de santé d’un RAID, il y a au moins 2 solutions. Voir le contenu du fichier /proc/mdstat ou exécuter la commande mdadm avec l’option -D une fois que le RAID est construit.

root@debian~#: cat /proc/mdstat

contenu du fichier

Personalities : [raid1]
md0 : active raid1 sdc[1] sdb[0]
4190208 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Ici tout va bien dans la mesure où les 2 disques de la grappe sont actif grace au UU.

root@debian~#: mdadm -D /dev/md0

sortie

/dev/md0:
           Version : 1.2
     Creation Time : Tue Mar 13 09:22:15 2018
        Raid Level : raid1
        Array Size : 8380416 (7.99 GiB 8.58 GB)
     Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Mar 13 09:22:59 2018
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : raid:0  (local to host raid)
              UUID : 2f8c1b07:0c2d3e38:b7459fe9:41c6bbd2
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

Cette sortie nous montre que le RAID est sain, notement grâce à sont statue « State : clean ».

1er cas de panne : arrêt de fonctionnement brutal d’un disque dur

Après avoir physiquement enlevé un disque, on peut voir que le RAID n’est complet.

root@debian~#: cat /proc/mdstat

sortie

Personalities : [raid1]
md0 : active (auto-read-only) raid1 sdb[0]
8380416 blocks super 1.2 [2/1] [U_]

unused devices: <none>

Dans le cas présent on peut voir qu’il manque un membre à la grappe grâce au U_ mais également grâce au nombre entre crochet [2/1]. Ici la grappe doit être composé de 2 membres mais 1 seul est actif.

Remplacement du disque dur

Après avoir ajouté physiquement un nouveau disque à la machine on peut le voir via la commande lsblk.

root@debian~#: lsblk

sortie

NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0    8G  0 disk
├─sda1            8:1    0    1G  0 part  /boot
└─sda2            8:2    0    7G  0 part
  ├─centos-root 253:0    0  6.2G  0 lvm   /
  └─centos-swap 253:1    0  820M  0 lvm   [SWAP]
sdb               8:16   0    8G  0 disk
└─md0             9:0    0    8G  0 raid1
sdc               8:32   0    8G  0 disk
sr0              11:0    1 1024M  0 rom  

Le retour de cette commande indique que le RAID est toujours présent sous le nom de mdO qu’il est présentement composé d’un membre.
Le disque sdc est le nouvel arrivant. Il faut l’ajouter à la grappe.

root@debian~#: mdadm --manage /dev/md0 -a /dev/sdc

sortie

mdadm --manage /dev/md0 -a /dev/sdc

La reconstruction peut se lancer automatiquement, on peut la suivre via la commade suivante.

root@debian~#: cat /proc/mdstat

sortie

cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc[2] sdb[0]
      8380416 blocks super 1.2 [2/1] [U_]
      [=================>...]  recovery = 86.3% (7239936/8380416) finish=0.0min speed=215122K/sec

unused devices: <none>

Une fois la reconstruction terminé, cette même commande retourne le résultat suivant.

root@debian~#: cat /proc/mdstat

sortie

Personalities : [raid1]
md0 : active raid1 sdc[2] sdb[0]
      8380416 blocks super 1.2 [2/2] [UU]

unused devices: <none>

2ème cas de panne : remplacement d’un disque dur à chaud

Si un disque doit être remplacée, il est possible de le supprimer de la grappe avant de l’enlever de la machine.

Localiser le membre dans la grappe RAID.

root@debian~#: lsblk

sortie

NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0    8G  0 disk
├─sda1            8:1    0    1G  0 part  /boot
└─sda2            8:2    0    7G  0 part
  ├─centos-root 253:0    0  6.2G  0 lvm   /
  └─centos-swap 253:1    0  820M  0 lvm   [SWAP]
sdb               8:16   0    8G  0 disk
└─md0             9:0    0    8G  0 raid1
sdc               8:32   0    8G  0 disk
└─md0             9:0    0    8G  0 raid1
sr0              11:0    1 1024M  0 rom  

Il faut indiquer au système que le disque sdb est en « faute ».

root@debian~#: mdadm --manage --set-faulty /dev/md0 /dev/sdb

sortie

mdadm: set /dev/sdb faulty in /dev/md0

Voici la commande pour enlever le disque sdb.

root@debian~#: mdadm --manage /dev/md0 -r /dev/sdb

sortie

mdadm: hot removed /dev/sdb from /dev/md0

La command mdadm -D /dev/md0 montre que le RAID est en mode dégradé.

/dev/md0:
           Version : 1.2
     Creation Time : Tue Mar 13 08:10:16 2018
        Raid Level : raid1
        Array Size : 8380416 (7.99 GiB 8.58 GB)
     Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
      Raid Devices : 2
     Total Devices : 1
       Persistence : Superblock is persistent

       Update Time : Tue Mar 13 09:03:03 2018
             State : clean, degraded
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : raid:0  (local to host raid)
              UUID : 396adca1:d9311e7e:f8260a18:3fc509ea
            Events : 40

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       2       8       32        1      active sync   /dev/sdc

Une fois le disque remplacé (physiquement) il faut l’ajouté le repérer et l’ajouté comme précédement.

root@debian~#: lsblk
root@debian~#: mdadm --manage /dev/md0 -a /dev/sdc

La commande suivante permet de suivre l’avancement de la reconstrution de RAID.

user@debian~$: watch -n 1 cat /proc/mdstat

sortie

Personalities : [raid1]
md0 : active raid1 sdc[2] sdb[0]
      8380416 blocks super 1.2 [2/1] [U_]
      [===========>.........]  recovery = 54.8% (7239936/8380416) finish=0.0min speed=215122K/sec

unused devices: <none>

Autres commandes utiles

Voici la commande permettant d’arrêter un RAID

root@debian~#: mdadm --stop /dev/md0

Resynchronisation d’un RAID.

root@debian~#: mdadm --assemble --run --force --update=resync /dev/md0/dev/sdc /dev/sdd

: cette commande peut être suivie via watch -n 1 cat /proc/mdstat.

by | March 13, 2018 | No Comments | Système | Tags : disque dur raid