Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Ubuntu - Gérer un RAID 1 sur Ubuntu

Date de publication 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.

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>
blog comments powered by Disqus