|
||||||||||||||||||||||||||||||||||||||||||||||||||
Publié par x86bar sur 24 octobre 2007
Le Raid n’a rien de nouveau, et de nombreuses littératures existent 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 ?
Lors du montage de 2 serveurs en raid, à 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 on s'apperçoit que le système voit toujours les disques physiques, sans raid.
De ce fait, 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 pense que le vrai Raid matériel n’existe plus.
Partitionnement
Il est nécessaire d'avoir 2 disques pour le “système”.
En ce qui concerne 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 /
Pour 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é.
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).
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 !
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
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.
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), ensuite tester le démarrage avec l’autre disque en moins, puis de nouveau : 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
Cet article a été publié
sur Mercredi 24 octobre 2007 à 20:03 et est classé dans Informatique,
Linux,
Mandriva.
Tagged: boot,
Linux,
linux
raid, Mandriva,
mbr, mdadm, redhat.
Vous pouvez suivre toutes les réponses à cette entrée à travers le RSS
2.0 flux. Vous pouvez laisser
une réponse, ou TrackBack
en provenance de votre propre site.