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 Nicolas SHINEY | March 13, 2018 | No Comments | Système | Tags : disque dur raid