installation d’un serveur Linux en Raid1

Parfois, trouver une information fiable, c’est plutôt difficile sur internet. Google est mon ami, mais il m’inonde parfois de réponses sans intérêt. J’ai récemment perdu pas mal de temps pour configurer des serveurs Linux en Raid1, alors, si cela peut vous être utiles, voici, sans prétention, le résultat des recherches qui m’ont été utiles :

Le Raid n’a rien de nouveau, et une nombreuse littérature existe sur la question. Pour les types de Raid: 0, 5, 5, 0+1 ou 1+0, relisez vos cours, ou faites un tour sur wikipedia.
Néanmoins, lorsqu’on passe à la pratique, les choses sont différentes.

Quel Raid: Raid matériel ou Raid logiciel ?

Je viens de monter 2 serveurs en raid, et à chaque fois, la « carte raid » destinée à faire du raid matériel est en réalité un « fake raid », c’est à dire que la carte passe juste des infos au pilote. Sous Linux, les pilotes gèrent bien les disques mais pas le raid pseudo matériel qui n’en est pas un, d’où le nom : fake-raid. Résultat, on configure aux petits oignons le contrôleur pour créer une grappe raid, et en installant Linux ont voit que le système voit toujours les disques physiques, sans raid😦
Donc, inutile de perdre du temps, il faut passer le contrôleur en mode non-raid et laisser le système d’exploitation gérer le Raid. De toutes manière, la charge de calcul ou le travail de redondance sera effectué par le CPU et pas par la carte. Je crois que le vrai Raid matériel n’existe plus.

Partitionnement

Il faut donc 2 disques pour le « système ». Pour les données, c’est selon l’usage, le besoin, et la quantité de disques disponibles…

Sur les disques système, il faut :

  • une partition pour /boot qui peut être en raid1, mais il faut une partition dédiée, 250 Mo est suffisant.
  • une partition pour la racine /
  • Inutile de se compliquer la vie avec le swap : une partition avec du swap sur chaque disque, et si un disque disparait, le swap sera simplement réduit d’autant. Mettre le swap dans une grappe RAID est une perte de temps – sauf cas particuliers.

Le principe : on crée sur chaque disque des partitions de type linux raid de tailles identiques, et ensuite on affecte aux partitions Linux-raid une « partition » pour laquelle on indique un point de montage.

ça donne, pour 2 disques de 73 GB, partitionnés à l’identique:

/dev/sda1 = 250 MB Linux Raid -> associé à /dev/md0 monté sur /boot
/dev/sdb1 = 250 MB Linux Raid -> associé à /dev/md0

/dev/sda5= 68000 MB Linux Raid -> associé à /dev/md1 monté en tant que racine ( / )
/dev/sdb5 = 68000 MB Linux Raid -> associé à /dev/md1

/dev/sda6= x MB Linux swap
/dev/sdb6 = x MB Linux swap

Voici ce que cela donne en image sur un serveur doté de 3 disques : sda et sdb sont en mirroir (Raid1), sdc (/home) n’est pas en raid.

Pour savoir quel disque est concerné, regardez bien quel onglet est sélectionné.

sda1

sda5

md0

md1

Notez bien que le 3ème disque doit avoir un label, sans quoi, si un des disques du miroir disparait, les identifications de disques (sdX) vont se décaler (votre sdc deviendra sdb).

sdc

Amorçage du système.

Le programme d’installation a dû installer grub ou lilo sur /dev/sda, le 1er disque, si bien que si jamais ce disque flanche, vous ne pourrez pas bouter sur le second, ce qui est problématique… Alors, il faut maintenant plonger dans les arcanes de l’amorçage système, aïe !

En premier, assurez-vous que /etc/mdadm.conf est correctement renseigné.

Exemple 1 (sur la config présentée auparavant)

DEVICE /dev/sda1 /dev/sdb1 /dev/sda5 /dev/sdb5
ARRAY /dev/md0 UUID=95e48ba6:578fc9c6:8ebf5c2a:6d4396ce auto=yes
ARRAY /dev/md1 UUID=c210f764:efaafec1:f892b73d:23a9ff8a auto=yes

Exemple 2 (sur un autre serveur, sous redhat)

# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
ARRAY /dev/md1 level=raid1 num-devices=2 uuid=fd1bbb24:cd564770:7e3b91a2:47b99984
ARRAY /dev/md0 level=raid1 num-devices=2 uuid=89868d1c:fdf04188:6561b71a:fae2ab38
ARRAY /dev/md2 level=raid1 num-devices=2 uuid=862d73a2:b3f5f9b2:35973f3a:8cd6f498

ensuite, selon votre config :

  • GRUB
    /etc/grub.conf doit contenir les infos nécessaires :

    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE: You have a /boot partition. This means that
    # all kernel and initrd paths are relative to /boot/, eg.
    # root (hd0,0)
    # kernel /vmlinuz-version ro root=/dev/md1
    # initrd /initrd-version.img
    #boot=/dev/md0
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title Red Hat Enterprise Linux Server
    root (hd0,0)
    kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/md1 rhgb quiet
    initrd /initrd-2.6.18-8.el5.img
    title red Hat Enterprise Linux Server sur disque 2
    root (hd1,0)
    kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/md1 rhgb quiet
    initrd /initrd-2.6.18-8.el5.img

    lancer grub et entrer les commandes suivantes pour installer le MBR sur les 2 premiers disques :

    root (hd0,0)
    setup (hd0)
    root (hd1,0)
    setup (hd1)
    quit

  • LILO
    /etc/lilo.conf doit contenir les informations correctes :

    # File generated by DrakX/drakboot
    # WARNING: do not forget to run lilo after modifying this file
    default= »linux »
    boot=/dev/md0
    map=/boot/map
    keytable=/boot/fr-latin1.klt
    raid-extra-boot=mbr
    menu-scheme=wb:bw:wb:bw
    prompt
    nowarn
    timeout=100
    message=/boot/message
    image=/boot/vmlinuz
    label= »linux »
    root=/dev/md1
    initrd=/boot/initrd.img
    append= » resume=/dev/sda6 splash=silent »
    vga=788

    Ensuite, lancer lilo, qui va écrire le boot sur /dev/md0 au lieu de /dev/sda, de sorte que le boot est écrit sur les 2 disques

    # lilo
    Added linux *
    Added linux-nonfb
    Added linux-nonfb_sdb
    Added failsafe
    The boot record of /dev/md0 has been updated.
    The Master boot record of /dev/sda has been updated.
    The Master boot record of /dev/sdb has been updated.

Après, il n’y a plus qu’a tester le démarrage normal, le démarrage avec 1 disque en moins, puis remettre le raid en état (c’est à dire remettre dans les md0 et md1 les partitions que l’on à remis en service avec mdadm -add), puis tester le démarrage avec l’autre disque en moins, puis re-belotte : remettre le raid en état . Attention avec le hot-swap, il parraît que ce n’est pas forcément supporté, donc évitez de faire le cake !

à savoir : en raid1 les disques sont identiques, donc si un disque est hs, on peut travailler avec le survivant, la partition est « normale ». Il peut être pratique dans les menus de grub ou de lilo de prévoir des lancements sur les disques en direct, au cas où, ça peut servir pour l’amorçage du système. Ensuite, une fois le noyau chargé et lancé, il reconnait ses petits /dev/mdX.
En cas de casse d’un disque, il ne faut attendre avant de remplacer le fautif, parce que si le survivant lâche à son tour, on est mal😉 .

Dernière remarque: le raid ne remplace pas une sauvegarde !

Commandes utiles

  • cat /proc/mdstat affiche l’état actuel des disques RAID
  • mdadm –detail /dev/md1 affiche l’état de /dev/md1
  • mdadm –-add /dev/md1 /dev/sdb5 pour ré-incorporer dans la grappe RAID /dev/md1 la partition /dev/sdb5

Si cela vous sert, tant mieux.

Je précise qu’il peut y avoir quelques inexactitudes. Sentez vous libres de les indiquer en commentaire, je corrigerais.

______
François, raide

5 Réponses to “installation d’un serveur Linux en Raid1”

  1. SHOOT94 Says:

    Bonjours, c’est juste pour dire que ce tutoriel fonctionne très bien.
    J’étais bloqué au niveau de la prise en compte du raid1 logiciel pour la partition /boot.
    Donc merci beaucoup à toi François, et bravo pour ton esprits d’entre aide.

    Vive LINUX

  2. links for 2007-11-16 » Bleu-Rouge blog Says:

    […] installation d’un serveur Linux en Raid1 « Discutons au comptoir du x86 bar (tags: installation serveur linux raid) […]

  3. stopher Says:

    Bonjour ,
    j’ai testé actuellement ta facon de faire pour mettre la partition /boot en raid .

    Jusque là , pas de probleme …

    Mais je teste ensuite en débranchant un disque afin de voir si cela boot correctement ..

    Et là apres un long moment il me marque ces messages :
    stdin: error 0
    bla bla bla …
    mount: Cannot read /etc/fstab: No such file or directory
    bla bla bla

    /bin/sh: can’t access tty; job control turned off
    (initramfs)

    Et voilà à partir de ce moment plus rien ..

    Une idée ?

    Merci d’avance ,
    cordialement,
    Christophe.

  4. x86bar Says:

    Tu dis « je teste en débranchant », ce n’est pas en marche, hein ? (rassure moi).
    Bon, visiblement, il ne trouve pas /etc/fstab, il n’y a pas de racine /

    c’est quoi le boot loader ? grub ou lilo ?
    qu’est-ce que tu as comme disques et partitions ?

  5. Zerg Says:

    Bonjour,
    Pendant la synchronisation la commande watch est très intéressante pour suivre l’évolution. Par exemple pour faire un « cat /proc/mdstat » toutes les 10 seconds vous pouvez faire un :
    watch -n 10 cat /proc/mdstat
    🙂


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :