Maniatux's Blog

Welcome to the internet

Debian + RAID Software

Rédigé par Xavier - -

Suite à mon article expliquant ma défaite vis à vis de ZFS, j'ai appris à configurer et gérer un RAID1 logiciel sous debian. Voici mon retour d'expérience et un petit tutoriel.

La documentation relative à la construction d'un RAID logiciel avec dmraid sur Linux est assez indigeste, surtout vis à vis des soucis avec GRUB. Heureusement, beaucoup de distributions offrent des assistants pour créer ce RAID, comme debian, ubuntu, RedHat, Fedora, CentOS... En prime, GRUB2 peut booter sans soucis sur du RAID. Pour ma part j'ai retenu debian (pour des raisons probablement trollesques, surtout vis à vis de SELinux, que je détaillerai pas ici).

Mise en place du RAID

Pour ma part j'ai divisé mon système en 3 partitions:

  • / de 4096Mo en ext4
  • swap de 256Mo
  • /srv avec le reste (~930Go) en ext4

Je vais résumer rapidement la procédure de création du RAID avec des captures faites sous Virtualbox (mais les disques font 30 Go et non 1To). La version de debian utilisée est Squeeze.

Après avoir établi votre plan de partitionnement, vous devez les créer sur les deux disques en sélectionnant "Utiliser comme: VOLUME PHYSIQUE RAID". Faites des partitions primaires (sauf si vous en avez plus de 4). Activez l'indicateur d'amorçage sur la partition qui servira à booter (/ ou /boot). Voici ce que vous obtenez pour le moment:

Ensuite allez dans "Configurer le RAID avec gestion logicielle". Et là vous allez pouvoir créer vos RAID à partir des partitions. Associez celles de même taille ensemble pour en faire un RAID1 (vous pouvez faire un RAID0 sur la swap si vous voulez).

Une fois vos périphériques construits, validez. Vous revenez alors à la liste de vos partitions, et vous voyez vos RAID logiciels.

Et maintenant vous allez devoir associer les points de montages et systèmes de fichiers. Voici ce que vous obtenez à la fin:

Dès à présent vous pouvez valider et continuer l'installation de Debian.

Il y a un bug qui fait que GRUB2 est installé uniquement sur le premier disque dur. Du coup, en cas de défaillance de celui-ci, l'ordinateur ne pourra pas booter sur le second. Il faut pour cela, après l'installation, entrer la commande:

grub-install /dev/sda && grub-install /dev/sdb

En remplaçant le sda et sdb par vos disques bien entendu.

Vérifications et essais

Ordinateur éteint, déconnectez un disque dur et démarrez votre machine. Si le système fonctionne, c'est gagné. Vous remarquez qu'au boot un message indique que la grappe RAID a un souci. Faites l'essai avec vos deux disques (pour voir si le boot est correct). Attention, après avoir démarré sans un disque, celui-ci est exclu de la grappe et n'y retourne pas automatiquement. Il faut l'y réinsérer (voir le point "réinsertion d'un disque").

Visualiser l'état de nos grappes

# cat /proc/mdstat
# cat /proc/mdstat
Personalities : [raid0] [raid1] 
md2 : active raid1 sda3[0] sdb3[1]
      27330488 blocks super 1.2 [2/2] [UU]
      
md1 : active raid0 sda2[0] sdb2[1]
      247808 blocks super 1.2 512k chunks
      
md0 : active raid1 sda1[0] sdb1[1]
      3997684 blocks super 1.2 [2/2] [UU]
      
unused devices: 

État individuel d'une grappe

# mdadm --detail /dev/md0
# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Dec 31 15:07:16 2010
     Raid Level : raid1
     Array Size : 3997684 (3.81 GiB 4.09 GB)
  Used Dev Size : 3997684 (3.81 GiB 4.09 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Dec 31 16:00:51 2010
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : debian:0  (local to host debian)
           UUID : 59051142:4b4a39e4:b6adad6e:bf20f8d7
         Events : 32

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

Réinsérer un disque dans la grappe

Je vais prendre un cas simple: vous avez débranché un disque dur, pour tester si l'ordinateur pouvait toujours démarrer. Mais même après l'avoir rebranché, il n'est pas réintégré dans la grappe. Commencez par vérifier vos grappes:

# mdadm --detail /dev/md0

Répétez l'opération pour md1 et md2. Voici un extrait:

 Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       0        0        1      removed
Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync   /dev/sda3
       1       0        0        1      removed

Là on voit clairement le problème. /dev/sdb1 et /dev/sdb3 ont été exclus de leur grappe. Pour les rajouter il faut taper:

# mdadm --manage /dev/md0 --ad /dev/sdb1

Là, sdb1 a été ré-ajouté dans la grappe /dev/md0. Vous pouvez visualiser la reconstruction avec la commande cat /proc/mdstat

Personalities : [raid0] [raid1] 
md2 : active raid1 sda3[0]
      27330488 blocks super 1.2 [2/1] [U_]
      
md1 : active raid0 sda2[0] sdb2[1]
      247808 blocks super 1.2 512k chunks
      
md0 : active raid1 sdb1[1] sda1[0]
      3997684 blocks super 1.2 [2/1] [U_]
      [=>...................]  recovery =  6.7% (268544/3997684) finish=0.9min speed=67136K/sec
      
unused devices: 

Reconstruisez également la seconde grappe défectueuse:

root@debian:~# mdadm --manage /dev/md2 --add /dev/sdb3
mdadm: re-added /dev/sdb3
root@debian:~# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md2 : active raid1 sdb3[1] sda3[0]
      27330488 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  2.2% (603456/27330488) finish=5.1min speed=86208K/sec
      
md1 : active raid0 sda2[0] sdb2[1]
      247808 blocks super 1.2 512k chunks
      
md0 : active raid1 sdb1[1] sda1[0]
      3997684 blocks super 1.2 [2/2] [UU]
      
unused devices: 

Astuce watch

la commande watch permet de maintenir et rafraichir l'affichage du fichier /proc/mdstat. Pour cela, entrez:

# watch -n 1 'cat /proc/mdstat'

Alertes email

Utilisez la commande:

# dpkg-reconfigure mdadm
  • Ensembles requis: all
  • Vérification mensuelle de redondance: A vous de voir
  • Démarrer le daemon: oui
  • Destinataire courriel: votre email

Vérifiez ensuite que votre serveur est capable d'envoyer des emails. Par défaut il est rare que ce soit le cas. Vous devez le configurer. Reportez vous au point "serveur mail" de l'article sur la configuration d'Asterisk Lorsqu'un événement se produira, un mail sera envoyé.

Documentation

Classé dans : Sysadmin - Mots clés : aucun