Ubuntu -Gérer un RAID 1 sur Ubuntu
20 mai 2016
Aie si vous lisez cette article vous avez surement un problème sur votre RAID. Je me suis un peu cassé les dents comme vous, alors je vais vous expliquer comment remettre en état votre grappe RAID.
On peut commencer par aller voir dans les logs du système à la recherche d'infos.
Et ensuite lancer l'outil d'analyse de notre RAID.
/proc est un système de fichier utilisé par le noyau en envoyant des infos vers les processus systèmes. Toutes ces informations sous /proc sont stockées en mémoire.
Il permet aussi d'avoir des informations sur le matériel et la configuration du noyau.
mdstat est un outil du noyau pour gérer les status des disques MD (Mulitple Device) donc des RAID logiciels. Il permet de connaitre les types de RAID logiciel supportés par l'OS.
Dans la console si vous voyez [\U_] ou [_U] cela signifie que votre RAID est bien défaillant. Il faut avoir [UU] pour avoir une grappe RAID opérationnelle.
Du coup vous connaissez maintenant le nom de votre RAID : md0
On va regarder l'état de la grappe RAID sur md0.
Maintenant que l'on sait que notre RAID à un problème on va chercher le disque coupable.
On visualise ainsi les disques de votre serveur. Retirer à tour de rôle chaque connectique SATA de vos disques, relancer la commande ainsi vous pourrez identifier le disque défaillant.
Sinon on peut utiliser smartctl qui est un outil pour analyser les disques et donc diagnostiquer une panne sur l'un d'eux.
Une fois identifié le disque défectueux (dans notre exemple : sdc) il faut éteindre votre serveur, enlever le disque HS et mettre le nouveau disque.
Ensuite on réassemble la grappe.
Attendre la fin de la synchronisation (cela peut être très long).
Pour suite l'avancement
On peut maintenant vérifier que le nouveau RAID fonctionne correctement en simulant une panne.
Pour cela on peut utiliser les commandes mdadm.
On met un disque en défaut. J'ai choisi sdc
On regarde l'état du RAID suite à cette commande, (F) indique que le disque est en défaut.
On enlève le disque de la grappe
On regarde l'état du RAID suite à cette commande, [_U] indique que le disque n'est pas rattaché à la grappe.
On ajoute le disque dans la grappe
On regarde l'état du RAID suite à cette commande, recovery indique l'avancement dans la reconstruction de la grappe
Après avoir reconstruit la grappe on peut (étape facultative) vérifier le statut de la grappe.
Et on vérifie que le statut passe de idle à check en lançant la commande
Pour vérifier l'avancement, il faut être patient : pour 1To environ 12h de patience
Pour la dernier étape on va paramétrer notre système pour être averti quand une erreur sur la grappe se présente.
Il est possible d'être informé par mail en cas d'erreur.
Il faut lancer la commande en démon et la placer dans /etc/rc.local pour qu'elle se lance après le chargement des services systèmes.
rc signifie run control et local indique que c'est du spécifique (donc local au serveur)
Il faut ensuite modifier le fichier de conf
Redémarrez mdadm
Ou alors simplement lancer la reconfiguration entière du package mdadm
Cela permet de modifier le fichier de conf
Pour terminer on lance un test via cette commande...
...pour recevoir un mail de vérification, ici sdc présente un problème
blog comments powered by Disqus
1) Analyse du problème
On peut commencer par aller voir dans les logs du système à la recherche d'infos.
vi /var/log/dmesg
Et ensuite lancer l'outil d'analyse de notre RAID.
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sdc[2](F)
976760768 blocks [2/1] [_U]
unused devices: <none>
/proc est un système de fichier utilisé par le noyau en envoyant des infos vers les processus systèmes. Toutes ces informations sous /proc sont stockées en mémoire.
Il permet aussi d'avoir des informations sur le matériel et la configuration du noyau.
mdstat est un outil du noyau pour gérer les status des disques MD (Mulitple Device) donc des RAID logiciels. Il permet de connaitre les types de RAID logiciel supportés par l'OS.
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
Dans la console si vous voyez [\U_] ou [_U] cela signifie que votre RAID est bien défaillant. Il faut avoir [UU] pour avoir une grappe RAID opérationnelle.
Du coup vous connaissez maintenant le nom de votre RAID : md0
md0 : active raid1 sdb[1] sdc[2](F)
2) Identifier le disque défaillant
On va regarder l'état de la grappe RAID sur md0.
sudo mdadm --detail /dev/md0
Number Major Minor RaidDevice State
0 3 1 0 active sync /dev/sdb
1 0 0 - removed
Si on a un status à removed c'est qu'un disque est HS.Maintenant que l'on sait que notre RAID à un problème on va chercher le disque coupable.
sudo fdisk -l
On visualise ainsi les disques de votre serveur. Retirer à tour de rôle chaque connectique SATA de vos disques, relancer la commande ainsi vous pourrez identifier le disque défaillant.
Sinon on peut utiliser smartctl qui est un outil pour analyser les disques et donc diagnostiquer une panne sur l'un d'eux.
Une fois identifié le disque défectueux (dans notre exemple : sdc) il faut éteindre votre serveur, enlever le disque HS et mettre le nouveau disque.
Ensuite on réassemble la grappe.
sudo mdadm /dev/md0 --add /dev/sdc
Attendre la fin de la synchronisation (cela peut être très long).
Pour suite l'avancement
cat /proc/mdstat
# ou
sudo mdadm --detail /dev/md0
3) Vérifier que le RAID fonctionne
On peut maintenant vérifier que le nouveau RAID fonctionne correctement en simulant une panne.
Pour cela on peut utiliser les commandes mdadm.
On met un disque en défaut. J'ai choisi sdc
sudo mdadm --manage /dev/md0 --set-faulty /dev/sdc
On regarde l'état du RAID suite à cette commande, (F) indique que le disque est en défaut.
vi /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sdc[2](F)
976760768 blocks [2/1] [_U]
unused devices: <none>
On enlève le disque de la grappe
sudo mdadm --manage /dev/md0 --remove /dev/sdc
On regarde l'état du RAID suite à cette commande, [_U] indique que le disque n'est pas rattaché à la grappe.
vi /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1]
976760768 blocks [2/1] [_U]
unused devices: <none>
On ajoute le disque dans la grappe
sudo mdadm --manage /dev/md0 --add /dev/sdc
On regarde l'état du RAID suite à cette commande, recovery indique l'avancement dans la reconstruction de la grappe
vi /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc[2] sdb[1]
976760768 blocks [2/1] [_U]
[>....................] recovery = 0.0% (101504/976760768) finish=481.0min speed=33834K/sec
unused devices: <none>
Après avoir reconstruit la grappe on peut (étape facultative) vérifier le statut de la grappe.
sudo /usr/share/mdadm/checkarray /dev/md0
Et on vérifie que le statut passe de idle à check en lançant la commande
cat /sys/block/md0/md/sync_action
Pour vérifier l'avancement, il faut être patient : pour 1To environ 12h de patience
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sdc[0]
976760768 blocks [2/2] [UU]
[===================>.] check = 97.7% (955083008/976760768) finish=11.5min speed=31310K/sec
4) Paramétrer l'alerte par mail
Pour la dernier étape on va paramétrer notre système pour être averti quand une erreur sur la grappe se présente.
Il est possible d'être informé par mail en cas d'erreur.
Il faut lancer la commande en démon et la placer dans /etc/rc.local pour qu'elle se lance après le chargement des services systèmes.
rc signifie run control et local indique que c'est du spécifique (donc local au serveur)
mdadm --monitor --scan --daemonise --delay=86400 /dev/md0
exit 0
Il faut ensuite modifier le fichier de conf
vi /etc/mdadm/mdadm.conf
MAILFROM server@domain.fr
MAILADDR david@domain.fr
Redémarrez mdadm
/etc/init.d/mdadm restart
Ou alors simplement lancer la reconfiguration entière du package mdadm
sudo dpkg-reconfigure mdadm
Répondre oui aux questions (pour faire une vérification du RAID et envoi d'un email si erreur).Cela permet de modifier le fichier de conf
Pour terminer on lance un test via cette commande...
sudo mdadm --monitor --scan --test --oneshot
...pour recevoir un mail de vérification, ici sdc présente un problème
This is an automatically generated mail message from mdadm
running on partage
A Fail event had been detected on md device /dev/md0.
It could be related to component device /dev/sdc.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc[2](F) sdb[0]
976760768 blocks [2/1] [_U]
unused devices: <none>