Un coin perdu... : Articles - 1 - How to : Le RAID facile sous linux...
Votre connection

Browser : Autre

IP : 38.107.179.227
OS : Système d'exploitation inconnu

Flux

 
Rss 1 - How to : Le RAID facile sous linux...
Vous disposez d'un petit serveur a la maison, confectionne avec du vieux matos recupere de ci de la, et configure aux petits oignons par vos soins...

L'ennuie, c'est que ce vieux matos a souvent une fâcheuse tendance a reclamer son depart a la retraite, son disque dur fatigue pretend t'il... Mais crise oblige, l'heure n'est pas encore venue, et il va falloir bosser encore un peu ! Fort heureusement, dans le monde magique Linux, il existe des solutions pour remedier a ce probleme, et il y en a de tres simple !


Nous allons aider le serveur en lui adjoignant un deuxieme disque dur afin de seconder le premier, l'aider, le remplacer au besoin...
Beaucoup de technique de Scout sont dispo pour faire cela, plus ou moins onereuse... mais c'est la crise ! Et par chance, il se trouve que je dispose d'un second vieux disque planque derriere des fagots... Et mon ami le manchot me dit a l'oreille :

Et si tu utilisai ce deuxieme disque pour basculer le serveur sur un RAID ??!!

Je ne vais pas faire de cours sur le RAID et ces differents modes, il y a suffisamment de doc sur le nain Ternet. Nous choisirons ici le RAID 1, egalement appele Mirroring ou disques en miroir, grâce a ce mode, les donnees sont ecrites de maniere identique sur chaque disque qui compose la grappe, que se soit en RAID materiel, pseudo materiel ou logiciel.
Cela nous apportera que des bonnes choses, en voici un pitch :

  • Securite des donnees accrue.
    si l'un de mes deux disques tombe, le contrôleur le desactive et l'autre prends le relai de facon transparente pour l'utilisateur. Une fois le disque defectueux remplace, le contrôleur reconstruira les donnees sur le nouveau disque a l'aide de celui qui est toujours en fonction.
  • Souplesse de fonctionnement.
    Les acces en lecture du systeme se font sur le disque le plus facilement accessible a ce moment la et les ecritures de facon simultanes, ainsi n'importe quel disque soit interchangeable n'importe quand (dixit Wikipedia).


Nous suivront l'exemple didactique d'un article que j'ai lu sur le Linux Mag qui traite du sujet, et dont je reproduit une grande partie des manips ici.

Passons aux choses serieuses !

Notre vieux serveur est une vielle machine a l'age respectable et dont la config est la suivante :

CPU AMD Athlon 1800 XP (1,33 Ghz)
1,5 Go de memoire RAM
1er disque dur : 6 Go sata
2eme disque dur : 6 Go sata
Systeme Debian Lenny

La solution que nous allons mettre en place notre RAID 1 est la plus simple qui soit, comme je l'ai dis plus haut, c'est la crise, j'ai donc opte pour un contrôleur RAID logiciel, c'est a dire qu'il sera gere par le systeme d'exploitation du serveur (Ubuntu Gnu/Linux en l'occurrence) et non par un contrôleur dedier (sur une carte) bien trop couteux.

Faisons un petit etat des lieux et des manipulations avant toutes choses :

1 => La config des disques avant le RAID


Code TEXT :
disque 1 /dev/sda (disque d'origine)
Partitions : 
/dev/sda1 montee sur /
/dev/sda2 montee sur /boot
/dev/sda3 partition de swap
 
disque 2 /dev/sdb (disque que l'on va ajouter)
Partitions : 
Vierge


2 => Les manipulations

A : Partitionnement du second disque
B : Installation du contrôleur RAID
C : Configuration du second disque et integration dans la grappe nouvellement creee.
D : Configuration et integration du premier disque dans la grappe

etat des lieux de sortie :

Config des disques avec le RAID 1 :

Code TEXT :
"disque" RAID monte sur /dev/md
Partitions : 
/dev/md0 monte sur /
/dev/md1 monte sur /boot
/dev/md2 partition de swap



A : Partitionnement du second disque
pour se faire, nous utiliserons sfdisk, celui ci nous permet de partitionner le second disque a l'identique du premier grâce a une simple commande !
La voici pour notre cas present :
Code BASH :
sfdisk - d /dev/sda | sfdisk /dev/sdb

Il se peut que le terminal ronchonne un peu mais cela n'est pas important, nous pouvons verifier la sortie de cette commande en faisant un fdisk -l et ainsi voir que notre deuxieme disque est bien partitionne.


B : Installation du contrôleur RAID
Ce contrôleur sera MDADM, il est interessant car il va nous permettre de construire notre grappe RAID 1 avec seulement un disque dur, grâce a l'option missing...

Code BASH :
apt-get install mdadm


puis nous chargeons le module raid1

Code BASH :
modprobe raid1


Nous pouvons maintenant creer notre grappe en utilisant uniquement un seul disque (/dev/sdb) !! Et ce, grâce a l'option missing de mdadm.
Commencons :
Code BASH :
 
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3

Nous pouvons verifier que notre grappe est bien creee en faisant un simple cat /proc/mdstat

Creons ensuite les systemes de fichiers du RAID, ceux ci doivent etre identique a ceux correspondant sur /dev/sda, ici c'est du ext3, l'autre partition est une partition de swap.

Code BASH :
 
mkfs.ext3 /dev/md0
mkfs.ext3 /dev/md1
mkswap /dev/md2

Pour activer notre grappe, il faut maintenant renseigner le fichier de conf du contrôleur raid (mdadm), en prenant soin de conserver une copie d'origine, non seulement par securite, mais aussi parce qu'il nous sera utile par la suite...

Code BASH :
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf-origine


Pour nous simplifier encore plus la vie, il y a une commande magique (glanee sur la revue Linux Magazine, comme beaucoup de cet article)

Code BASH :
mdadm --examine --scan >> /etc/mdadm/mdadm.conf


Voila ! Notre RAID 1 unijambiste est maintenant monte !


Continuons, il faut desormais copier les donnees de /dev/sda sur notre RAID bancale (celui ci ne comprend que /dev/sdb pour le moment). Pour cela, nous allons monter une partie du RAID dans un dossier afin d'y copier notre futur systeme de fichier racine.

Code BASH :
 
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
mkdir /mnt/md1
mount /dev/md1 /mnt/md1


Puis copions tout le systeme :

Code BASH :
 
cp -dpRx / /mnt/md1
cd /boot
cp -dpRx . /mnt/md0/boot


Detaillons ces options (man cp) :
  • -d : Pour copier les liens symboliques en tant que tels.
  • -p : Pour conserver les attributs des fichiers (proprietaire, groupe etc...).
  • -R : Pour copier recursivement les repertoires.
  • -x : Interdit de changer de systeme de fichier en cours de copie, c'est pour cela qu'il faut relancer l'operation.


Preparons maintenant la futur fstab de notre grappe ! Il faut l'editer dans /mnt/md0 et remplacer les entrees sda par les entrees md correspondantes de sorte d'obtenir quelque chose comme ca (pour notre config a nous bien sur) :

Code BASH :
 
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/md1           /                           ext3       relatime,errors=remount-ro 0       1
/dev/md0		/boot			ext3	defauts
/dev/md2		none			swap	sw
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0



Apres tout cela, il faut prevenir l'ami Grub que quelque chose a changer, il faut lui ajouter une entree supplementaire pour pouvoir booter sur le Raid... En editant son menu avec ca, il devrait nous entendre :
Code BASH :
vi /boot/grub/menu.lst


Premierement, on lui dit qu'avec la commande fallback 1 placee juste en desous du parametre defaut 0, si le boot sur le Raid ne fonctionne pas, il tentera de booter sur l'autre entree par defaut, soit l'entree "d'origine".

Deuxiemement, rajoutons le noyau du Raid qui se trouve sur /dev/md1. Il suffit de recopier le premier bloc de kernel juste en dessous de celui ci, en changeant seulement l'adresse du kernel root, cela doit donner quelque chose comme ca :

on met jour de l'image initiale initramfs
Code BASH :
update-initramfs -u

pour finir en installant grub sur notre second disque, qui sera notre Raid unijambiste apres le prochain reboot, si tout se passe bien...
Code BASH :
grub
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

Voili voilou, a partir de la, on peut redemarrer et booter sur notre raid si tout va bien ! ....Et en choisissant la bonne entree aussi...
Code BASH :
shutdown now -r



Le boot sur le Raid c'est bien passe, vous avez pu voir la grappe prendre la main en se peuplant avec seulement un disque !

Apres s'etre logue, on peut voir que nous somme bien sur le Raid en verifiant :
Code BASH :
mount
/dev/md1   on   /    type    ext3    (rw,realtime,errors=remount -ro)
/dev/md0   on   /boot   type   ext3   (rw)


Il ne reste desormais plus qu'a integrer le premier disque dur (celui qui commence a ce faire un peu vieux) dans la grappe, ainsi elle sera complete et pleinement operationnelle.
Pour bien faire les choses, il faut declarer toutes les partitions du disque en Linux raid Autodetect (fd) avec la commande fdisk, option t pour changer le type, puis fd pour linux raid autodetect, et il faut le faire pour chaque partitions.
Cela prend tres peu de temps et apres avoir fait ca, on peut basculer le disque dur ( pour memoire, on partait de lui au debut ! ) dans la grappe.
Code BASH :
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3

A partir de ce moment la, mdadm commence a synchroniser /dev/sda a l'identique de /dev/sdb puisque tout deux forment /dev/md et l'on peut voir cette synchronisation tout simplement en tapant ceci :
Code BASH :
tail -f /proc/mdstat

Enfin nous allons remettre le fichier de conf de mdadm a zero, puis nous le reinitialisera avec nos nous parametres.
Code BASH :
cp /etc/mdadm/mdadm.conf-origine /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Voila, nous venons de basculer notre serveur sur un RAID 1 en toute securite !
Si l'on veut gagner encore un poil plus de secu sur le boot, on peut modifier grub pour qu'il nous affiche chacun des principaux noyaux sur chacun des disques et systemes de fichier.
Code BASH :
 
title       Debian GNU/linux, RAID kernel 2.6.26-2-686 1er_disque
root      (hd0,0)
kernel   /vmlinuz-2.6.26-2-686 root=/dev/md1   ro   quiet
initrd    /initrd.img-2.6.26-2.686
 
title       Debian GNU/linux, RAID kernel 2.6.26-2-686
root      (hd1,0)
kernel   /vmlinuz-2.6.26-2-686 root=/dev/md1   ro   quiet
initrd    /initrd.img-2.6.26-2.686
 
title       Debian GNU/linux, kernel 2.6.26-2-686 1er_disque
root      (hd0,0)
kernel   /vmlinuz-2.6.26-2-686 root=/dev/sda2   ro   quiet
initrd    /initrd.img-2.6.26-2.686
 
title       Debian GNU/linux, kernel 2.6.26-2-686
root      (hd1,0)
kernel   /vmlinuz-2.6.26-2-686 root=/dev/sdb2   ro   quiet
initrd    /initrd.img-2.6.26-2.686
 


Remise a jour d'initramfs :
Code BASH :
update-initramfs -u


The end.

Sources :

linux Magazine (un tres bon article de Cedric Pellerin)
Linux France
Manuel de cp
manuel de mdadm
 
 
Note: Aucune note
(0 note)
Ecrit par: , Le: 13/06/10


Boosté par PHPBoost 3.0 | Thème Transpablue par Kits Graphiques