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 :
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 :
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 :
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 :
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 :
puis nous chargeons le module raid1
Code BASH :
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 :
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 :
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 :
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 :
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 :
Puis copions tout le systeme :
Code BASH :
Detaillons ces options (man cp) :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
Enfin nous allons remettre le fichier de conf de mdadm a zero, puis nous le reinitialisera avec nos nous parametres.
Code BASH :
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 :
Remise a jour d'initramfs :
Code BASH :
The end.
Sources :
linux Magazine (un tres bon article de Cedric Pellerin)
Linux France
Manuel de cp
manuel de mdadm
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 -upour 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 -rLe 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 -uThe end.
Sources :
linux Magazine (un tres bon article de Cedric Pellerin)
Linux France
Manuel de cp
manuel de mdadm




