Vous êtes sur la page 1sur 21

RAID Logiciel sous GNU Linux Debian

Document sous licence FDL  © 20­12­2007 copyleft Michel Luc 
    Permission vous est accordée de distribuer des copies exactes ou modifiées de ces articles tant que ces lignes de permission et le
     copyright apparaissent dans vos copies et tant que ces copies restent sous licence FDL ou GPL .

   Ce document n'est en aucun cas une doc technique ou un manuel sur le Raid logiciel, c'est juste un exemple d'installation d'un raid­5 
pour ceux qui ont besoin d'une méthode (exemple pratique) pour se lancer dans ce genre de configuration.

 Sommaire :

INTRODUCTION 

Avant propos

Convention d'écriture

Les Différents Niveaux de Raid 

Le RAID 5
I  Description

II Installation
1_Pré­requis
2_Préparation du matériel
3_Installation du système
4_Configuration du Raid 5
5_Création et Activation du Raid 
6_Autres commandes mdadm 

III Exemples
1. Raid­5 de 4 HD + 1 IDE Non­Raid (système)
un bon exemple d'utilisation de plusieurs disques/partitions de taille différentes
2. Raid partiel 2 HD en Raid­1
pour ceux qui ont besoin d'augmenter la capacité de stockage
3. Installation d'une Debian 3.1 en Raid­1 + boot avec Grub
une bonne explication pour installer debian sur un volume Raid 
4. Installation d'une Debian 3.0 en Raid­1
installation sur un volume raid 'façon Geek'

CopyLeft 20­12_2007  Michel Luc cern91@tuxfamily.org
 INTRODUCTION

Avant propos :

   Le type de RAID décrit ici est le Raid­5 (Logiciel) utilisant des disques SATA (ou SCSI).
  D'autres types d'installations et configuration pour le Raid­1 sont décrites dans les exemples à la fin de ce document.

     L'ancien installeur Debian ne permettait pas encore (contrairement à RedHat) de faire facilement une installation du système 
sur un volume Raid, ce qui compliquait un peu la mise en place de ce type d'installation (voir exemple 4)...
    Actuellement l'installation directe d'une Debian 4.0 (etch) en RAID est possible avec le nouvel installeur, vous trouverez 
(exemple 3) une description, pour une Debian 3.1, à la fin de ce document.
 L'installation du RAID­5, décrite ici, aura le système installé sur un disque IDE non inclus dans le volume Raid qui utilisera au 
moins 3 disques  identiques de préférence.
 
  Le système RAID  n'est en AUCUN CAS un système de BACKUP pour les données et encore moins pour le système (si votre 'Linux' 
n'est pas en Raid).

  Si vous utilisez, en production, des disques IDE pour les volumes Raid la disponibilité va en prendre un coup, étant donné qu'il 
sera nécessaire d'arrêter le raid (et même la machine) pour changer un disque en défaut. Ce type de disque IDE n'est absolument 
pas conçu pour ça et c'est prendre des risques que de faire un remplacement 'à chaud'.
          Mais si vous désirez juste vous ''amuser'' avec le Raid ou faire un 'NAS­Home', alors pourquoi pas :­)

Note: Pour réaliser ce type d'installation vous devez connaître les bases d'un système GNU/Linux, sans pour autant être un expert, 
et savoir utiliser les commandes dans une console (terminal)... Vous devez être root pour effectuer cette installation! :­(

Convention d'écriture :

 Dans ce qui suit je parle de disques/partitions, en fait ce sont bien les partitions qui seront montées dans le volume raid, je n'ai 
jamais essayé de monter un disque dans un volume... Je doute que cela soit possible?!

 Ce qui est écrit en 'bleu gras' sont les commandes à taper.
 Ce qui est écrit en 'gris' est le contenu d'un fichier.

Les termes plus ou moins techniques, mais sans aucun doute 'barbare' si vous découvrez le Raid, utilisés dans ce document sont:

 Un volume raid (/dev/md0, /dev/md1...) est l'ensemble des partitions des disques que vous lui affectez pour un point de montage 
sur votre système, un volume raid peut aussi être appelé lecteur logique.
 On parle également de grappe pour désigner l'ensemble de disques/partitions qui forment le volume raid.
 Vous lirez aussi 'niveau du raid' cela désigne simplement le type de Raid, le raid­5 est un Raid de Niveau 5.
 La 'matrice raid' désigne l'ensemble des partitions inclus dans le volume raid actif, lorsque l'on active un volume raid on (mdadm) 
construit la matrice raid, et par exemple un disque/partition de secours n'en fait pas partie tant qu'il n'est pas ajouté au volume 
raid pour remplacer un disque en 'défaut'.
 Un disque/partitions est mis en 'défaut' lorsqu'il est défectueux (erreur de lecture/écriture ou crash disk).

  'raiddevice' est le volume raid, 'component­device' sont les partitions qui le compose.

 J'utilise souvent HD pour disque dur et Ctrl pour contrôleur.

 
Les différents Niveaux de RAID :

Niveau 0 :  appelé striping
Le niveau RAID­0, consiste à stocker les données en les répartissant sur l'ensemble des disques de la grappe. De cette façon, il n'y a 
pas de redondance, on ne peut donc pas parler de tolérance aux pannes. En effet en cas de défaillance de l'un des disques, 
l'intégralité des données réparties sur les disques sera perdue. 
Toutefois, étant donné que chaque disque de la grappe a son propre contrôleur, cela constitue une solution offrant une vitesse de 
transfert élevée. 
Le RAID 0 consiste ainsi en la juxtaposition logique (agrégation) de plusieurs disques durs physiques. En mode RAID­0 les données 
sont écrites par "bandes" (en anglais stripes) :
Deux disques de 20 Go donneront un disque logique de 40 Go.
Un disque de 10 Go utilisé conjointement avec un disque de 27 Go permettra d'obtenir un disque logique de 20 Go (17 
Go du second disque seront alors inutilisés). 
Il est recommandé d'utiliser des disques de même taille pour faire du RAID­0 car dans le cas contraire le disque de plus 
grande capacité ne sera pas pleinement exploité.

Niveau 1 :  appelé mirroring, shadowing ou duplexing
Le niveau 1 a pour but de dupliquer l'information à stocker sur plusieurs disques, on parle donc de mirroring, ou shadowing pour 
désigner ce procédé.
On obtient ainsi une plus grande sécurité des données, car si l'un des disques tombe en panne, les données sont sauvegardées sur 
l'autre. D'autre part, la lecture peut être beaucoup plus rapide lorsque les deux disques sont en fonctionnement. Enfin, étant donné 
que chaque disque possède son propre contrôleur, le serveur peut continuer à fonctionner même lorsque l'un des disques tombe en 
panne, au même titre qu'un camion pourra continuer à rouler si un de ses pneus crève, car il en a plusieurs sur chaque essieu... 
En contrepartie la technologie RAID1 est très onéreuse étant donné que seule la moitié de la capacité de stockage n'est 
effectivement utilisée. 

Niveau 2 : appelé striping with parity (obsolète)
Le niveau RAID­2 est désormais obsolète, car il propose un contrôle d'erreur par code de Hamming (codes ECC ­ Error Correction 
Code), or ce dernier est désormais directement intégré dans les contrôleurs de disques durs. 
Cette technologie consiste à stocker les données selon le même principe qu'avec le RAID­0 mais en écrivant sur une unité distincte 
les bits de contrôle ECC (généralement 3 disques ECC sont utilisés pour 4 disques de données). 
La technologie RAID 2 offre de piètres performances mais un niveau de sécurité élevé. 

Niveau 3 : appelé disk array with bit­interleaved data 
Le niveau 3 propose de stocker les données sous forme d'octets sur chaque disque et de dédier un des disques au stockage d'un bit 
de parité.
De cette manière, si l'un des disques venait à défaillir, il serait possible de reconstituer l'information à partir des autres disques. 
Après "reconstitution" le contenu du disque défaillant est de nouveau intègre. Par contre, si deux disques venaient à tomber en 
panne simultanément, il serait alors impossible de remédier à la perte de données. 

Niveau 4 : appelé disk array with block­interleaved data
Le niveau 4 est très proche du niveau 3. La différence se trouve au niveau de la parité, qui est faite sur un secteur (appelé bloc) et 
non au niveau du bit, et qui est stockée sur un disque dédié. C'est­à­dire plus précisément que la valeur du facteur d'entrelacement 
est différente par rapport au RAID 3.
Ainsi, pour lire un nombre de blocs réduits, le système n'a pas à accéder à de multiples lecteurs physiques, mais uniquement à ceux 
sur lesquels les données sont effectivement stockées. En contrepartie le disque hébergeant les données de contrôle doit avoir un 
temps d'accès égal à la somme des temps d'accès des autres disques pour ne pas limiter les performances de l'ensemble.

Niveau 5 : appelé disk array with block­interleaved distributed parity 
Le niveau 5 est similaire au niveau 4, c'est­à­dire que la parité est calculée au niveau d'un secteur, mais répartie sur l'ensemble des 
disques de la grappe.
De cette façon, RAID 5 améliore grandement l'accès aux données (aussi bien en lecture qu'en écriture) car l'accès aux bits de parité 
est réparti sur les différents disques de la grappe. 
Le mode RAID­5 permet d'obtenir des performances très proches de celles obtenues en RAID­0, tout en assurant une tolérance aux 
pannes élevée, c'est la raison pour laquelle c'est un des modes RAID les plus intéressants en terme de performance et de fiabilité.
L'espace disque utile sur une grappe de n disques étant égal à n­1 disques, il est intéressant d'avoir un grand nombre de disques 
pour "rentabiliser" le RAID­5.

Niveau 6 :  appelé disk array with block­interleaved distributed parity
Le niveau 6 a été ajouté aux niveaux définis par Berkeley. Il définit l'utilisation de 2 fonctions de parité, et donc leur stockage sur 
deux disques dédiés. Ce niveau permet ainsi d'assurer la redondance en cas d'avarie simultanée de deux disques. Cela signifie qu'il 
faut au moins 4 disques pour mettre en oeuvre un système RAID­6.
Le RAID Niveau 5 (logiciel)

I Description
ATTENTION!
Le contrôle de mémoire de masse (capacité disque) du raid­5 a une limite, mais aucun problème avec des SATA 250 Go.
Les disques durs sur un contrôleur IDE NE PEUVENT en aucun cas ÊTRE REMPLACÉS à CHAUD !

Note: Le Raid 5 a de très bonne performances I/O (lecture/écriture disques) pour une utilisation assez faible des ressources 
CPU,  il permet une meilleur disponibilité des données en diminuant le temps d'accès et aussi de conserver les données, aucune 
perte en cas de crash  d'un HD donnant ainsi le temps d'effectuer le remplacement du disque sans interrompre les services.
 Mais il utilise l'équivalent d'un disque/partition pour le stockage des informations. Sans ce lancer dans de savants calculs on peut 
dire que pour 3 HD seulement les deux tiers (moins de 70%) sera utilisable pour le stockage des données, cela augmente avec le 
nombre disques en raid et peut atteindre 80 à 90%. Comparé au Raid­1 qui ne dépassera jamais 50% le Raid­5 reste le niveau de 
raid le plus intéressant pour de gros volumes de stockage. 
Le RAID­5 et RAID­1 offrent tous les deux un niveau de sécurité élevé, toutefois la méthode de reconstruction des disques varie 
entre ces deux niveaux. En cas de panne du système, le RAID­5 reconstruit le disque manquant à partir des informations stockées 
sur les autres disques, tandis que RAID­1 opère une copie disque à disque.
Le RAID­1 offre de meilleures performances que RAID­5 en lecture, mais le RAID­5 offre de bien meilleures performances lors 
d'importantes opérations d'écriture.
La solution RAID­5 offre un volume utile représentant 80 à 90% du volume alloué (le reste servant au contrôle d'erreur). 
La solution RAID­1 n'offre par contre qu'un volume disponible représentant 50 % du volume total (étant donné que les 
informations sont dupliquées).

Ce qui va caractériser notre Raid­5
Dans l'exemple utilisé pour décrire l'installation du Raid :
Il faut au minimum 3 disques durs (SATA ou SCSI), identiques si possible, pour le Raid­5.
Il faut au moins 1 disque (IDE) pour installer le système (Debian) et faire 'booter' la machine.
Dans l'exemple utilisé le partitionnement ressemble à :
hda1 =>  6 Gb    /
hda2 =>  1 Gb    swap
hda3 => 10 Gb   /var
hda5 => 42 Gb   /home
sda1, sdb1, sdc1 =>  75 Gb   /data       volume raid md0
sda2, sdb2, sdc2 =>  75 Gb   /backup   volume raid md1
et éventuellement ­> sda3, sdb3, sdc3 =>  1 Gb   swap
*Bien évidemment vous adaptez à vos besoin :­)

 Avec l'outil de partitionnement (fdisk, cfdisk, partman...), il faut partitionner les 3 disques de  façon identique, à savoir : 
 Soit 3 HD SATA (ou SCSI), sda, sdb, sdc, partitionnez le premier sda en mettant le drapeau (ID) à fd pour les partitions inclus 
dans le volume Raid, puis (après enregistrement de la table) faire une copie de ce partitionnement sur les autres disques :
sfdisk ­d /dev/sda | sfdisk /dev/sdb
sfdisk ­d /dev/sda | sfdisk /dev/sdc
et vérifiez avec fdisk ­l 
 Tout ceci est expliqué en détail dans le chapitre suivant, Installation.

 Les disques/partitions ne serviront pas de miroir (mirroring), mais les données seront réparties sur la totalité du volume Raid et 
l'équivalent d'un disque/partition sera réservé aux informations du Raid.
Pour le RAID­5 le coût est directement lié à la capacité de stockage (nombre de disques/partitions) devant être mise en oeuvre 
pour avoir une certaine capacité effective.
Capacité utile  = n(disques/partitions) ­1(disque/partition)
Dans notre cas (3 HD) n= 3­1 reste 2 HD  ou 6 partitions sur 2 volumes Raid (md0 et md1) soit 3 partitions de 75Gb sur chaque 
volume =>  n=3*75  soit (n­1)  225 – 75 = 150Gb pour chaque volume raid (md0 et md1)
exp:_Si on configure 3HD, sda5, sdb5, sdc5, avec une partition raid de 20 Gb sur chacun d'eux (par exemple pour en faire un 
volume raid /dev/md0 destiné à accueillir le répertoire "/home"), la taille de ce répertoire sera alors de 2*20Gb= 40Gb, pour 
4HD dans le volume Raid elle serait donc de 60GB... etc.
 Il est possible d'utiliser des disques de taille différente et aussi de monter dans un même volume raid  plusieurs partitions d'un 
même disque: A la fin du document vous avez un exemple avec 4 HD et 10 partitions pour un seul volume raid md0.
   Après installation du raid, de cet exemple, si vous tapez la commande df ­h vous trouverez deux lignes comme :
 /dev/md/0           150G   183M    135G   1%   /data
/dev/md/1            150G   183M    135G   1%   /backup
 150Gb correspond bien à n­1  (75*3)­75

nb: Au cas ou votre système est inclus dans le Volume Raid il ne faut pas oublier la recommandation qui vous dit de ne pas 
''flaguer'' les partitions boot (et swap :­) sur les deux autres disques; C'est à dire de ne pas activer 'amorçable' sur la partition de 
boot du second et troisième disque.
nb: Au cas où :­) Il se peut que vous ayez un système déjà fonctionnel sur un disque et que vous désirez simplement ajouter un 
volume raid parce que votre partition (/data par exemple) contient beaucoup de données importantes et partagées et qui de plus 
est presque pleine: Dans ce cas voici comment procéder (une façon de faire :­) après l'installation du raid décrite plus bas.

Un exemple :
 On désire ajouter un volume raid pour le monter sur une partition (/data dans cet exemple) qui contient déjà beaucoup de 
données (fichiers).
 A ce moment le raid doit être activé (synchronisation terminée), le volume formaté mais pas monté :­)

_Créer un point de montage du volume raid (/dev/md0):
mkdir /mnt/raid

_Monter le volume raid:
mount ­t ext3 /dev/md0 /mnt/raid

_Copier les données sur le volume raid:
rsync ­a /data/ /mnt/raid/
umount /mnt/raid    #  on démonte le volume raid

Si /data est déjà un point de montage on le démonte ( umount /data ), sinon...
_La prudence étant de mise, on conserve les données en renommant le répertoire /data:
cd /
telinit 1   # on change le runlevel en single­user mode (pas indispensable)
 . . .         # on patiente...
mv data data_old     # on renomme /data en /data_old
mkdir  ­m775 data   # et on créé le  nouveau point de montage
telinit 2   # on restaure le runlevel (* idem *)

_Modifier le fichier /etc/fstab pour cette partition:
/dev/hdxn    /data_old   ext3     defaults   0   2  # au cas ou /data était déjà un point de montage
/dev/md0    /data          ext3    defaults   0   2

Au reboot cela devrait fonctionner :­))
II INSTALLATION
  Ici nous traiterons de l'installation du Raid­5 avec le système (debian) sur un disque (partitions) exclus du niveau du raid.
Mais rien ne vous empêche par la suite d'ajouter un volume Raid­1 pour votre système (hda et hdb par exemple) avec vos données 
en Raid­5 (sda, sdb, sdc...).

1_Pré-requis :

 _ 3 HD identiques (si possible) pour le RAID 
 _ 1 HD pour le système si celui­ci n'est pas inclus dans le raid.
 _ 1 CD d'installation (Net Install) avec un noyau supportant le RAID.
 _ Une bonne connaissance de l'installation d'une Debian (c'est mieux :­)

2_Préparation du matériel :

Le premier Ctrl IDE (hda/hdb) réservé au système (non­Raid)
Le second Ctrl IDE (hdc/hdd) pour les périphériques CD/DVD
Les Ctrl SATA (ou SCSI) pour les données en RAID 5 (sda, sdb et sdc)

 Une explication avant de ce lancer :­)

  Supposons, le système (debian) étant installé sur /dev/hda, que l'on veut monter 2 volumes raid sous /data et /backup; 

Le partitionnement serait :

 sur le premier disque IDE (60Gb)
/dev/hda1 (6Gb /) 83 Linux
/dev/hda2 (1Gb) 82 Linux swap / Solaris
/dev/hda3 (10Gb /var) 83 Linux
/dev/hda5 (42Gb /home) 83 Linux

 sur les 2 disques (euh pardon, 3 HD pour le raid 5 :­) en RAID
il s'agit de 3 disques SATA de 160Gb
/dev/sda1 (75Gb /data) fd Linux raid autodetect
/dev/sda2 (75Gb /backup) fd Linux raid autodetect
faire le même partitionnement pour sdb et sdc, ou utiliser les commandes
sfdisk -d /dev/sda | sfdisk /dev/sdb
sfdisk -d /dev/sda | sfdisk /dev/sdc
sans oublier de mettre le type de système (ID) à fd
et garder une trace du partitionnement peut être utile :
sfdisk -d /dev/sda > part_raid5.txt
ou fdisk -l > part_raid5.txt

Le fichier /etc/fstab ressemblera à ceci :

/dev/hda1 / ext3 errors=remount-ro 0 1


proc /proc proc defaults 0 0
/dev/hda2 none swap sw 0 0
/dev/hda3 /var ext3 defaults 0 2
/dev/hda5 /home ext3 defaults 0 2
/dev/md0 /data ext3 defaults 0 2
/dev/md1 /backup ext3 defaults 0 2
/dev/fd0 /media/floppy0 auto user,noauto 0 0
/dev/hdc /media/cdrom0 iso9660 user,noauto 0 0

A propos du swap en raid


« Pour éviter le redémarrage du système en cas de crash disk, le swap sera mis en raid »
  Vous avez peut être déjà lu ça ? Mais ce n'est vraiment pas indispensable, voir c'est même une aberration d'utiliser le raid sur une 
partition de swap. 
 Le noyau linux, depuis longtemps, sait très bien utiliser les partitions de swap (comme pour le raid 0).  Il suffit de donner à 
chaque partition le même niveau de priorité, dans /etc/fstab :
/dev/hda2 none swap sw 0 0
/dev/sda3 swap swap defaults,pri=1 0 0
/dev/sdb3 swap swap defaults,pri=1 0 0
/dev/sdc3 swap swap defaults,pri=1 0 0
Si vous êtes parano ou simplement prévoyant, vous pouvez créer des partitions de swap sur vos disques en raid, mais inutile de les 
inclure dans le niveau de raid. De plus si vous avez déjà 1 ou 2 disques système (hda et hdb), il n'est certainement pas 
indispensable d'utiliser une partition de swap sur les disques du Raid!

3_Installation du Système :

 Allez on y va !

 Installer le système de base (minimum) sans serveur X  ni aucun serveur* (http, ftp, mail, samba...), donc un ancien disque IDE de 
40 Gb sera très largement suffisant.
 * Si les volumes raid (partitions) doivent contenir les données du serveur, web, ftp ou samba, vous installerez ces services après le  
montage du volume raid.

 Après installation du système et redémarrage, vérifier que le noyau supporte le RAID (modules):
grep CONFIG_MD /boot/config-2.6.16-12-k7 (adaptez en fonction de votre noyau :-)
devrait indiquer quelque chose comme :
CONFIG_MD=y
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_MD_RAID5_RESHAPE=y
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_MDA_CONSOLE=m

Sinon il vous faut, le patcher, le recompiler ou installer une version plus récente.
ftp://ftp.kernel.org/pub/linux/kernel

 Installer les outils RAID:
apt-get install raidtools2 mdadm

Note: Le paquet raidtools2 (mkraid) n'est plus dans Debian Stable (etch),  dans beaucoup de distributions raidtools2 a été 
remplacé par mdadm. Si vous configurez votre Raid (fichiers raidtab et mdadm.conf, voir chapitre suivant) avant d'installer le 
paquet mdadm la création et assemblage du raid ce fera presque automatiquement (je n'ai pas testé !) à l'installation de ce 
paquet. 

et pour utiliser le raid il faut charger les modules dans le noyau:
modprobe linear
modprobe raid0
modprobe raid1
modprobe raid5
Vous pouvez ajouter ces modules dans /etc/modules
linear
raid0
raid1
raid5

4_Configuration du Raid 5 :

 Créer/Modifier le fichier /etc/raidtab

# /data RAID-5
raiddev /dev/md0 # Nom du device du volume RAID
raid-level 5 # Le niveau de RAID désiré
nr-raid-disks 3 # Le nombre de disques/partitions composant le volume
nr-spare-disks 0 # Le nombre de disques de secours
persistent-superblock 1 # Informations de contrôle RAID stockées sur le disque, 0=Non
parity-algorithm left-symmetric
chunk-size 32 #  taille élémentaire pour la plupart des utilisations
device /dev/sda1 # Nom du premier disque insérer dans le volume
raid-disk 0 # Position du disque dans le volume
device /dev/sdb1 raid-disk 1
device /dev/sdc1 raid-disk 2
# /backup RAID-5
raiddev /dev/md1
raid-level 5
nr-raid-disks 3
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda2 raid-disk 0
device /dev/sdb2 raid-disk 1
device /dev/sdc2 raid-disk 2
 
Pendant la création des volumes du Raid les disques durs vont marquer une forte activité et cela peut prendre plusieurs dizaines de 
minutes. Si vous avez 3 partitions de 10Gb dans un volume cela va aller très vite mais si vous avez plusieurs volumes de 3 
partitions de plus 80Gb ça va être beaucoup plus long, donc... 
 Note: Il est recommandé de ne pas inclure le 3ème disque dans le Raid pour éviter que mkraid (création du Raid)  ne construise 
un volume de trois disques et ne commence a synchroniser le troisième disque avec les données des deux premiers. 
 Pour la simple raison que pour l'instant ces disques ne sont pas formatés, cette façon de procéder ce nomme le mode dégradé. 
 Après la création du Raid, une fois le volume raid correctement partitionné et formaté, vous insérerez le 3ème disque, et la 
synchronisation se fera. Donc il suffit de remplacer "raid­disk 2" par "failed­disk 2" et inversement ensuite :
...
device /dev/sda1 raid-disk 0
device /dev/sdb1 raid-disk 1
device /dev/sdc1 failed-disk 2
... etc

A propos des disques de secours du raid-(1, 4 et 5)


Vous avez la possibilité d'utiliser un (ou plusieurs) disque/partition de secours qui remplacera un des disques/partitions en défaut 
(défectueux) et peut être remplacé à chaud (sans arrêter le raid).
Les disques de secours ne prennent pas part à la matrice RAID jusqu'à ce qu'un des disques de celle­ci tombe en panne. Quand un 
disque 'lâche', il est marqué défectueux et la reconstruction est entamée sur le premier disque de secours disponible. Les disques de 
secours renforcent donc davantage la sécurité des systèmes RAID­5.  Le système pourra fonctionner pendant un certain temps avec 
un disque défectueux avant que le disque de secours assure la redondance.
Ce type de disque/partition sera disponible pour le volume raid par la ligne 'device /dev/sdd[0­9]  spare­disk [0­9]'
Par exemple si vous avez un 4ème disque identique aux 3 autres et que vous le partitionnez à l'identique des autres disques du 
raid, votre fichier raidtab ressemblera à ceci :
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 1
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda1 raid-disk 0
device /dev/sdb1 aid-disk 1
device /dev/sdc1 raid-disk 2
device /dev/sdd1 spare-disk 0
raiddev /dev/md1
raid-level 5
nr-raid-disks 3
nr-spare-disks 1
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda2 raid-disk 0
device /dev/sdb2 aid-disk 1
device /dev/sdc2 raid-disk 2
device /dev/sdd2 spare-disk 0

 Par défaut la taille de bloc RAID est de 32 ko, 32 ko de données consécutives résideront sur un même disque.
 Si on souhaite construire un système de fichiers ext2 avec une taille de blocs de 4 ko, il y aura 8 blocs de données consécutifs dans 
un bloc du tableau. On fournit l'information à mke2fs de la manière suivante : 
mke2fs -b 4096 -R stride=8 /dev/md0
5_Création et Activation du Raid

Il faut maintenant créer le Raid, formater le volume raid et le monter,
soit _En utilisant "mkraid" (raidtools) :
   mkraid /dev/md0
   mkfs.ext3 /dev/md0
   mount /dev/md0 /data

soit _En utilisant "mdadm", la création et activation peut se faire avec les commandes :
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2
              La syntaxe de mdadm peut aussi avoir cette forme :
 mdadm ­C /dev/md0 ­l5 ­n3 /dev/sda1 ... voir les pages de manuel ou mdadm ­­create –help
  mdadm --stop /dev/md0 && mdadm --stop /dev/md1
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1
mdadm --assemble /dev/md1 /dev/sda2 /dev/sdb2 /dev/sdc2
puis comme pour mkraid, on formate et on monte le volume raid :
cat /proc/mdstat pour  vérifier si la synchronisation est terminé avant de formater le volume
mkfs.ext3 /dev/md0   ou     mkfs.ext3 -v -m1 /dev/md0
mount /dev/md0 /data   ou  mount -t ext3 /dev/md0 /data
Faire la même chose pour md1 monté sous /backup.

Vérifiez l'état des volumes Raid avec les commandes :
cat /proc/mdstat si cat ne convient pas, utilisez less ou more     more /proc/mdstat
mdadm --detail /dev/md[0-1] permet de voir l'état (en détail :­) du volume raid

Lors de la construction du raid, la commande cat /proc/mdstat va afficher quelque chose comme :
  md1 : active raid5 sdc2[3] sdb2[1] sda2[0]
17574912 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[========>....................] recovery = 40.2% (51091332/126953536) finish=23.0min speed=54745k/sec
cela indique que le volume est en train de se construire. Le plus important ce sont les 'U' entre crochets à la fin de la seconde ligne, 
ici il n'y en a que 2.
Lorsque la construction est terminée vous obtenez un message du genre :
md: md1: sync done.
RAID5 conf printout:
­­­ rd:3 wd:3 fd:0
disk 0, o:1, dev:sda2
disk 1, o:1, dev:sdb2
disk 2, o:1, dev:sdc2
Si vous tapez à nouveau la commande cat /proc/mdstat :
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid5 sdc2[3] sdb2[1] sda2[0]
17574912 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
et là on a 3 'U' entre crochets, 3 sur 3.
[UUU] si vous avez 3 partitions dans le volume, [UUUU] si vous en avez 4... etc.  Si vous n'obtenez pas le nombre de 'U' 
correspondant à votre configuration raid, c'est que quelque chose manque : Refaites plusieurs fois la vérification et au pire 
recommencez la construction de votre raid en vérifiant les fichiers de configuration.

 Sauvegarder votre configuration Raid :
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf-OLD
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Ce fichier mdadm.conf peut ressembler à ceci :
DEVICE < partitions >
CREATE owner=root group=disk mode=0660 auto=yes
ARRAY /dev/md0 level=raid5 devices=/dev/sda1,/dev/sdb1,/dev/sdc1
ARRAY /dev/md1 level=raid5 devices=/dev/sda2,/dev/sdb2,/dev/sdc2
si vous utilisez une version récente de mdadm c'est l'uid du volume qui sera utilisé à la place du nom des device 
avec une syntaxe comme celle­ci :
DEVICE /dev/sda1 /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=xxxxxxxx:xxxxxxxx:xxxxxxxx:...
...Dans le cas ou l'on a 'persistent­superblock 1' dans raidtab et que la commande mdadm ­­detail /dev/mdx indique 
'Persistence : Superblock is persistent' je ne suis vraiment pas sûr de la nécessité de ces lignes dans le fichier mdadm.conf ?

nb: Après la création du Raid ne pas oublier de modifier, /etc/fstab en fonction des points de montage de md0 et md1 et des 
éventuelles partitions de swap sur les disques raid, et de remplacer failed­disk par raid­disk dans votre /etc/raidtab.

A ce stade, après vérification des volumes raid, si vous êtes satisfait il ne vous reste plus qu'à 'rebooter' le système pour être certain 
que les volumes raid seront activés en cas de redémarrage.
6_Les Autres Commandes

Arrêter le volume raid
  raidstop /dev/md[0­1] 
mdadm ­­stop /dev/md[0­1]

Pour activer le volume raid  
mdadm /dev/md0 ­­assemble /dev/sda1 /dev/sdb1  ou    mdadm ­­assemble /dev/md0

Ajouter ou enlever une partition du volume raid
raidhotadd /dev/md0 /dev/sdc1
raidhotremove /dev/md0 /dev/sdc1
mdadm /dev/md0 ­­manage ­­add /dev/sdc1
mdadm /dev/md0 –manage ­­remove /dev/sdc1

Mettre en faute un disque du raid
raidsetfaulty /dev/md0 /dev/sdc1
mdadm /dev/md0 –manage ­­set­faulty /dev/sdc1

Réparer (ci c'est possible :­) un disque en défaut
mdadm ­­manage /dev/md0 ­­fail  /dev/sdc1

mdadm sait faire beaucoup de choses, entre autre surveiller un volume et envoyer un mail si un disque est en défaut, avec :
mdadm ­­monitor ­­mail=admin­raid@tuxfamily.org ­­delay=120 ­­daemonise /dev/md0

je vous conseille de lire la doc et les pages de manuel, voir aussi (Ubuntu): http://doc.ubuntu­fr.org/securite/raid_logiciel

III Exemples
Les exemples qui suivent sont des documents disponibles sur internet, voici quelques liens :
      
Mise en place d'un volume Raid­5, sur debian­fr:
http://www.debian­fr.org/article.php?page=viewarticle&article=103
HowTo, sur ibiblio:
http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/fr/html­1page/Software­RAID­HOWTO.html
Installation/Configuration, sur Lea:
 http://lea­linux.org/cached/index/Admin­admin_fs­raid.html
HowTo, sur Ze­Linux:
 http://www.ze­linux.org/howto.html?id_docs=26
Mini­HowTo, sur traduc.org:
http://www.traduc.org/docs/HOWTO/vf/Boot+Root+Raid+LILO.html
Le RAID sous GNU Linux:
 http://lehmann.free.fr/raidDoc.html
Installation Raid­1 sous Debian:
http://www.midimedia.org/pages/linux/raid1_debian.html
Installer Ubuntu sur un Raid­0:
http://doc.ubuntu­fr.org/tutoriel/comment_installer_ubuntu_sur_raid0_logiciel
Installer Ubuntu sur un Raid­1:
http://doc.ubuntu­fr.org/installation/raid1_software
1) Raid 5 de 4 HD + 1 IDE System Non-Raid

Auteur:  inconnu, pas retrouvé l'article sur le net :­(
nb: Si l'auteur reconnaît son travail, merci de me contacter (voir email)

Ici est traité l'installation d'un Raid 5 avec 4 HD et 10 partitions.

Le system (Debian GNU/Linux) bootant sur un disque non­Raid.
L'idéal étant d'avoir une machine supportant les disques Serial ATA (SATA),
mais ici sera considéré l'installation sur un ordinateur avec uniquement
des controleur IDE (ATA), le SCSI étant à capacité égale trop couteux.

ATTENTION! Le Raid5 a une limite de mémoire de masse (capacité disque)
mais avec des SATA 250 Go ça passe :­)

[ ... ]

Configuration matériel:

Le premier ctrl IDE (hda/hdb) réservé au système (non­Raid)
Le second ctrl (hdc/hdd) pour les DVD/CD
Ajout, pour la plupart des machines, une carte controleur avec:
hde/hdf et hdg/hdh pour le RAID.

Préparation du matériel:
Ne disposant pas de 4 disques identiques mais seulement 2 fois 2...
    Disk /dev/hde: 160 GB
    Disk /dev/hdf: 80 GB
    Disk /dev/hdg: 160 GB
    Disk /dev/hdh: 80 GB

Le partitionnement est le suivant:
4 partitions de swap de 1 Go sur la première partition
6 partitions de données de 74 Go
/dev/hde1 : SWAP   :  fd  Linux raid autodetect
/dev/hde2 : DATA   :  fd  Linux raid autodetect
/dev/hde3 : DATA   :  fd  Linux raid autodetect
/dev/hdf1 : SWAP   :  fd  Linux raid autodetect
/dev/hdf2 : DATA   :  fd  Linux raid autodetect
/dev/hdg1 : SWAP   :  fd  Linux raid autodetect
/dev/hdg2 : DATA   :  fd  Linux raid autodetect
/dev/hdg3 : DATA   :  fd  Linux raid autodetect
/dev/hdh1 : SPARE  :  fd  Linux raid autodetect
/dev/hdh2 : SPARE  :  fd  Linux raid autodetect

Préparation System:
Installation de raidtools:
# pat­get install raidtools2 mdadm 

Ajouter les modules dans /etc/modules
linear
raid0
raid1
raid5

pour le raid utilisé, et charger les modules dans le noyau:
# modprobe linear
# modprobe raid0
# modprobe raid1
# modprobe raid5

Vérifier avec
# cat /proc/mdstat
Configuration :
Modifier/créer le fichier /etc/raidtab
raiddev /dev/md0
 raid­level 5
 nr­raid­disks 5
 nr­spare­disks 1
 persistent­superblock 1
 parity­algorithm left­symmetric
 chunk­size 32
 device /dev/hde1        raid­disk 0
 device /dev/hde2        raid­disk 1
 device /dev/hdf1  raid­disk 2
 device /dev/hdg1  raid­disk 3
 device /dev/hdg2  raid­disk 4
 device /dev/hdh1  spare­disk 0

[ note: Ici je suppose que l'auteur a commis une erreur dans la description de son fichier raidtab, car il dit explicitement 
   ne pas inclure les swap  dans le raid mais il met hde1 et hde2 hdf1... etc.
   Je pense qu'il faut lire hde2 hde3 hdf2 hdg2 hdg3 hdh2  et idem pour la suite.]

## 5 partitions + 1 spare pour le raid 5
Pour des disque SCSI, remplacer /dev/hdx par /dev/sdx
Je ne vous conseille pas d'utiliser l'émulation ide­scsi 
ou scsi (2.4.x) pour les HD cela posera en plus des pb
lors du passage en 2.6.x

PAS de SWAP en RAID ;)
Le système (minimum: serveur de fichiers) étant installé
sur des disques de faible capicité (2Go), le swap occupant
 la moitié du disque, les swap he1,hf1 et hg1 ne sont là
que pour palier à une défection en cas de crash d'un disque!
 Ce system (Debian) étant lui en mirroring (raid 1) :­))
 Voir les liens en fin de page pour l'installation de ce type
de multi raid avec boot sur hd en raid (installation un peu 
plus délicate).

Création Formattage et Activation du raid 
# mkraid /dev/md0
# mke2fs ­b 4096 ­R stride=8 /dev/md0
# mount /dev/md0 /data

Les commandes:
Stoper le raid
# raidstop /dev/md[0­15] 
Inserrer ou enlever un disque/partition du raid
# raidhotadd /dev/md0 /dev/sdf1
# raidhotremove /dev/md0 /dev/sdf1
mettre en faute un disque du raid
# raidsetfaulty /dev/md0 /dev/sdf1 

En utilisant "mdadm", la création peut se faire avec la commande:
# mdadm ­­create /dev/md0 ­­level=5 ­­raid­devices=5 /dev/hde1 /dev/hde2 \
/dev/hdf1 /dev/hdg1 /dev/hdg2 ­­spare­devices=1 /dev/hdh1 

Vérification:
# mdadm ­­detail /dev/md0 

Activation du Raid:
# mdadm ­­stop /dev/md0
# mdadm ­­assemble /dev/md0 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 /dev/hdh1
# mdadm ­­detail ­­scan >> /etc/mdadm/mdadm.conf
TYPE DE RAID :

Mode Linéaire
Cette solution est pertinente lorsque l'on souhaite étendre la capacité de stockage disponible en ligne sans introduire une notion de 
tolérance aux pannes. Cette solution combine les capacités de stockage d'un ensemble de disques existants (les données sont 
d'abord écrites sur le premier disque, puis lorsqu'il est plein sur le second, etc...) et permet d'utiliser 100% de l'espace disque utile.

    * Avantages :
      ­ Permet de disposer de 100% de l'espace disque dans une partition ;
      ­ Moins de temps CPU mobilisé par le RAID dans le noyau.
    * Inconvénients :
      ­ Pas de haute disponibilité : la perte d'un disque entraine la perte des données ;
      ­ Quasiment pas d'amélioration des performances (on peut cependant obtenir une amélioration si des I/O se produisent de 
manières concurrentes sur des disques différents). 

RAID 0 [ STRIPPING ]
Trés proche du mode linéaire.
Ce mode est souvent utilisé lorsque la haute disponibilité des données n'est pas nécessaire
et permet d'améliorer l'algorithme en dispatchant les données sur l'ensemble des disques;
 Les données sont découpées puis dispersées sur les disques sans redondance.
 Il faut disposer d'au moins 2 disques.

    * Avantages :
      ­ Permet de disposer de 100% de l'espace disque dans une partition ;
      ­ Amélioration des performances I/O en lecture et écriture.
    * Inconvénients :
      ­ Pas de haute disponibilité : la perte d'un disque entraine la perte des données. 

RAID 1 [ MIRRORING ]
Ce mode est une exacte duplication des données sur tous les disques présents dans le miroir (on doit disposer d'au moins 2 
disques). L'information étant enregistrée N fois sur les disques (permet de gagner du temps en lecture même si on en perds lors de 
l'écriture), si on perds N­1 disques on ne perds pas les données. Il est à noter que l'on perds tout de même 50% de l'espace disque 
utile.
 Il faut disposer d'au moins 2 disques.

    * Avantages :
      ­ Haute disponibilité des données : survit à la perte de N­1 disques
      ­ Amélioration des performances en lecture.
    * Inconvénients :
      ­ Mauvaises performances en écriture
      ­ Mobilise un peu plus de temps CPU dans le noyau
      ­ Perte de 50% de l'espace disque. 

RAID 0+1 
Cette solution combine le RAID 0 et le RAID 1. 

    * Avantages :
      ­ Haute disponibilité des données : survit à la perte d'un coté du miroir ;
      ­ Amélioration des performances I/O en lecture et écriture.
    * Inconvénients :
      ­ Mobilise un peu plus de temps CPU dans le noyau ;
      ­ Perte de 50% de l'espace disque. 

RAID 4 [ STRIPING ]
L'algorithme utilisé ici permet de dispatcher les I/O sur l'ensemble des disques.
 Il va réserver un disque pour sauvegarder une donnée supplémentaire de parité.
 De ce fait, si il perd un disque, il peut reconstituer l'information manquante.
 Toute fois cette utilisation d'un disque de parité ajoute un goulot d'étranglement au système, obligatoirement l' écriture va 
déclancher un accés au disque de parité. 
Le Raid 5 est préférable pour éviter cela.
 Il faut disposer d'au moins 3 disques.

    * Avantages :
      ­ Haute disponibilité des données : survit à la perte d'un disque ;
      ­ Amélioration des performances en lecture.
    * Inconvénients :
      ­ On perds l'équivalent d'un disque pour le stockage des données ;
      ­ On risque de plafonner le débit en écriture rapidement. 

RAID 5  [ STRIPING ]
Très proche du RAID 4 il améliore le procédé en stripant l'information de parité sur l'ensemble des disques.
 Il faut disposer d'au moins 3 disques.

    * Avantages :
      ­ Haute disponibilité des données : survit à la perte d'un disque ;
      ­ Amélioration des performances en lecture et écriture.
    * Inconvénients :
      ­ On perds l'équivalent d'un disque pour le stockage des données. 

Disques de spare :

Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de spare.
 Un disque qui va venir remplacer automatiquement un disque en faute.
 Linux autorise l'ajout à chaud (sans arrêt) de disques de spare.

LIENS :

Mise en place plusieurs type de RAID logiciel sur une plateforme Linux:
 http://lehmann.free.fr/raidDoc.html

HowTo, sur Ze­Linux:
 http://www.ze­linux.org/howto.html?id_docs=26

Installation/Configuration, sur Lea:
 http://lea­linux.org/cached/index/Admin­admin_fs­raid.html

Installation du Raid sur une Genoo:
 http://www.gentoo.org/doc/fr/gentoo­x86­tipsntricks.xml

Configuration pour RedHat:
 http://www.linux­kheops.com/doc/redhat73/rhl­cg­fr­7.3/ch­software­raid.html
Raide Matériel et Raid Logiciel:
http://www.tu­chemnitz.de/docs/lindocs/RH9/RH­DOCS/rhl­cg­fr­9/s1­raid­approaches.html

2) Raid partiel ( 2 disques/partitions en Raid)

Auteur: http://webpmenier.dynalias.net/yacs/articles/view.php/21/install­raid­logiciel­partiel
Contact:
Date:
Revision: #

Le system (Debian GNU/Linux) bootant sur un disque non­Raid.
L'idéal étant d'avoir une machine supportant les disques Serial ATA (SATA).
 
J'ai donc monté en raid logiciel les partitions /web /et /opt qui contiennent respectivement les fichiers du serveur web et ceux de 
mysql.

Pour les autres partitions un bon vieux rsync dans un cron lancé la nuit fera l'affaire. 
# sauvegarde de /
  mount /dev/sdb1 /mnt/backups
  rsync ­avzx ­­delete / /mnt/backups
  sync;sync
  umount /dev/sdb1
[*]Installation d'un deuxième disque sur le port SATA2
[*]Formattage à l'identique du premier par : 
sfdisk ­d /dev/sda | sfdisk /dev/sdb
[*]Modification des types de partition de sdb en passant à FD sdb6 (/web) et sdb8 (/opt)
[*]Reboot
[*]Création du raid :
mdadm ­Cv /dev/md0 ­l1 ­n2 missing /dev/sdb6
mdadm ­Cv /dev/md1 ­l1 ­n2 missing /dev/sdb8
[*]Formatage des partitions raid :
mkfs ­t ext3 /dev/md0 && mkfs ­t ext3 /dev/md1
[*]Sauvegarde de la configuration raid : 
mdadm ­­detail ­­scan > /etc/mdadm/mdadm.conf
[*]Montage des partitions raid et recopie des données du premier disque : 
mount /dev/md0 /mnt && cd /web && cp ­a * /mnt
mount /dev/md1 /mnt2 && cd /opt && cp ­a * /mnt2
[*]Modif de /etc/fstab en remplacant sda6 et sda8 par md0 et md1
[*]Modification des types de partition de sda en passant à FD sda6 (/web) et sda8 (/opt)
[*]Reboot
[*]Ajout des partitions du premier disque dans la grappe raid :
mdadm ­­add /dev/sda6 /dev/md0
mdadm ­­add /dev/sda8 /dev/md1
[*]Important !!!
Sauvegarde de la nouvelle config raid :
mdadm ­­detail ­­scan > /etc/mdadm/mdadm.conf

  3) Installer Debian en Raid 1 + boot GRUB

 Auteur: Administrator http://guitou.serveftp.org/geek//index.php?option=com_content&task=view&id=14
 Contact: Guitou
 Date: 27­08­2006
 Revision: #

J'écris ce tutorial car malgré tous les tutoriaux que j'ai pu trouver sur la création de partitions Raid1 ou raid5 logicielles sur un 
système Debian, aucun n'a pu répondre correctement à mes questions. En effet, tous ces tutoriaux expliquaient comment créer une 
partition Raid depuis une installation debian (qui elle, n'était pas installée sur du raid).
Dans cette configuration, si le disque sur lequel est installé Debian lâche, on est bon pour une réinstallation du système et bien 
évidemment une reconstruction du raid. Cette étape peut prendre plus ou moins de temps en fonction du nombre de services 
qu'offre le serveur.

Mon objectif était d'avoir un système qui puisse booter même en cas de défaillance de l'un des deux disques.

Sommaire
1. Pré requis
2. Lancement de l'installation
3. Partitionnement des disques
4. Création des volumes Raid
5. Grub et le secteur d'amorçage
6. Diagnostic de la défaillance d'un disque et remplacement
7. Reconstruction des partitions Raid
 _1. Pré requis
• 2 Disques durs (si possible identique)
• Un CD d'installation de Debian 3.1 (Sarge). Pour ce tutorial j'ai utilisé le mini CD d'installation par Internet.
• Bien sur un PC (un P2 fait largement l'affaire).
• Savoir installer une Debian

 _2. Lancement de l'installation
Au boot du CD précisez que vous souhaitez installer le noyau 2.6.
Tapez: linux26
... Suivez la procédure jusqu'a arriver à l'étape de création des partitions....
Nous allons choisir un découpage relativement standard des partitions. Les disques utilisés font ici 40Go chacun.

 _3. Partitionnement des disques
• 1ère partition / (racine du système) => 15Go
• 2ème Partition /home => 24Go
• 3ème partition swap => 1Go
Pour assurer un fonctionnement correct du serveur lors d'une déffaillance disque, toutes les partitions seront en RAID1
Créez sur chacun des disques les 3 partitions:
• hda1 et hdc1 => 15Go
• hda2 et hdc2 => 24Go
• hda3 et hdc3 => 1024Mo
A chaque fois précisez que le système de fichier de cette partition doit être de type Raid.

 _4. Création des volumes Raid
Revenez sur l'écran principal de l'outil de partitionnement Puis aller dans le menu créer les volumes raid en haut de la liste.
• Sélectionner Raid1 puis les 2 partitions de 15Go
• Sélectionner Raid1 puis les 2 partitions de 24Go
• Sélectionner Raid1 puis les 2 partitions de 1024Mo
Revenez sur l'écran principal de l'outil de partitionnement, les 3 nouvelles partitions Raid sont apparues en dessous des existantes.
• Sélectionnez la 1ere (15 Go)
Syst. de fichier : ext3
point de montage: /
• Sélectionnez la 2eme (24 Go)
Syst. de fichier: ext3
point de montage: /home
• Sélectionnez la 3eme (1Go)
Syst. de fichier: swap
Puis passez à l'étape suivante.
­ Installation du système Debian de base ­­­
Laissez le système poursuivre son installation.

 _5. Grub et le secteur d'amorçage.
C'est de très loin cette partie qui m'a posé le plus de problèmes. En effet, il est impossible de rendre une partition Raid amorçable 
(en tout cas à partir de l'installateur Debian).
Plusieurs choix s'offraient à moi: ­ créer une partition amorçable (non RAID) sur l'un des deux disques mais s'il lache le système ne 
pourra plus booter. ­ Booter sur autre média (Disquette, CDROM, Clé USB etc..)
Je choisi ici le floppy disk pour démarrer (à graver par la suite sur CDROM car le floppy ....): Vous arrivez donc à présent 
sur l'écran d'installation de Grub, il vous demande si vous souhaitez l'installer sur le secteur d'amorçage , répondez non.
Ensuite il vous demande où vous souhaitez l'installer.
répondez (après avoir inséré une disquette dans le lecteur): 
/dev/fd0
fd0 pour Floppy Disk 0 
...Finissez l'installation de votre système debian puis redémarrez...
Maintenant vous pouvez contrôler que tout fonctionne correctement
En tant que root:
# more /proc/mdstat
Personalities: [raid0] [raid1]

md1 : active raid1 hda2[0] hdc2[1]


14651200 blocks [2/2] [UU]

md2: active raid1 hda4[0] hdc4[1]


19093184 blocks [2/2] [UU]

md0: active raid1 hda1[0] hdc1[1]


4883648 blocks [2/2] [UU] 

Le [UU] vous indique d'un coup d'oeil que tous les disques sont Up.
Votre système sera maintenant bootable même après défaillance d'un disque.
PS: Vous pouvez créer une autre disquette de boot en tapant dans un shell: grub­install /dev/fd0 
PS2: Si vous n'avez pas confiance en la disquette (et vous avez bien raison), gravez vous tout ça sur un CDROM de boot, on est 
jamais trop prudent.

 _6. Diagnostic de la défaillance d'un disque et remplacement.
Maintenant passons à la partie la plus intéressante: la défaillance d'un disque.
Un jour vous découvrez donc avec horreur le message suivant:
# more /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 hda0[2]
14651200 blocks [2/1] [U_]

md2 : active raid1 hda4[0]


19093184 blocks [2/1] [U_]

md0 : active raid1 hda1[0]


4883648 blocks [2/1] [U_] 

Là on voit clairement que quelque chose cloche le [UU] devient [U_] et le [2/2] devient [2/1]
Le diagnostic est sans appel: un disque est mort (le hdc).
Pas de panique !!
Il faut:
• éteindre la machine
• retirer le disque défectueux
• insérer le nouveau disque dont la capacité doit être au moins égale au précédent
• recréer les mêmes partitions sur le nouveau disque.
Ce sera la seule periode durant laquelle votre serveur sera innaccessible.
Puis vous pouvez enfin redémarrer la machine. Tout devrais démarrer sans difficultés sur le seul disque restant.
 _7. Reconstruction des partitions Raid
Pour reconstruire les partitions nous allons utiliser l'outil mdadm
Tapez:
mdadm /dev/md1 ­­manage ­­add /dev/hdc2
pour ajouter votre nouvelle partition hdc2 à la partition Raid md1 (qui contient déjà hda2)
On contrôle que tout se déroule correctement:
# more /proc/mdstat
Personalities: [raid0] [raid1]
md1: active raid1 hdc2[2] hda2[0]
14651200 blocks [2/1] [U_]
[=================>...] recovery = 89.9% (13174016/14651200)
finish=0.7min speed=32980K/sec

md2: active raid1 hda4[0]


19093184 blocks [2/1] [U_]

md0: active raid1 hda1[0]


4883648 blocks [2/1] [U_]

Répétez l'opération pour chacune des partitions Raid1
Au final vous obtenez:
# more /proc/mdstat
Personalities: [raid0] [raid1]
md1: active raid1 hdc2[1] hda2[0]
14651200 blocks [2/2] [UU]

md2: active raid1 hdc4[1] hda4[0]


19093184 blocks [2/2] [UU]

md0: active raid1 hdc1[1] hda1[0]


4883648 blocks [2/2] [UU] 

OUF !! il y a des [UU] partout :)

4) Installation d'une Debian 3.0 en Root RAID miroir

Auteur: Benoit Picaud
Contact: benoit@maleloria.org
 Date: 2003/11/16 19:23:17
 Revision: 1.2 
Introduction: objet de cet article
Nous voulons faire héberger dans un datacenter une machine de type 1U, garantissant une bonne fiabilité,
disposant d'une simplicité d'administration et capable d'offrir une réaction rapide aux problèmes de sécurité et
surtout pas chère.
Pour cela, une machine de type PC x86 en rack 1U a été achetée, avec deux disques durs IDE identiques.
Le système d'exploitation Linux est stable, puissant et doté de beaucoup de fonctionnalités facilitant
l'administration et la gestion correcte d'une machine. Parmi celles-ci, figure le RAID logiciel permettant d'allier
fiabilité des données et petit prix de revient.
La distribution Linux Debian a été choisie pour la puissance d'administration et sa grande stabilité.
Cependant, Linux Debian ne permet pas une installation directe sur du RAID logiciel (à la différence, par
exemple, de Linux RedHat qui dispose de cette fonctionnalité depuis au moins la version 7.3).
Cet article explique comment installer une Debian en root RAID directement, à l'aide d'une astuce. Je ne sais
pas s'il existe une méthode plus propre pour faire une telle installation (peut-être l'internet dispose-t'il d'une
image ISO faisant automagiquement le boulot, en ce cas, me contacter).
Début de l'installation du système
Déterminer une logique d'installation
Il faut commencer par établir la liste du matériel présent: carte réseau, éventuellement carte SCSI si une telle
carte est présente dans la machine, carte vidéo et autres spécificités réjouissantes.
Si, comme moi, vous souhaitez faire du RAID soft IDE logiciel, il est important que les deux disques IDE choisis
soient chacun sur un controleur IDE distinct: deux disques sur un même contrôleur grèvent lamentablement
les performances. Par exemple, mettez le premier disque en /dev/hda et le second en /dev/hdc.
Ceci fait, il faut à présent définir le partitionnement souhaité pour la machine, par exemple sur la machine en
question:
/boot 100Mo / 4Go /var 4Go /tmp 1Go swap 512Mo
/home [reste soit env. 65 Go]
On lance donc l'installation Debian classique et on partitionne les deux disques IDE.
/dev/hda1 1 13 104391 fd
Linux raid autodetect /dev/hda2 14 536 4200997+ fd Linux raid
autodetect /dev/hda3 537 1059 4200997+ fd Linux raid autodetect
/dev/hda4 1060 9964 71529412+ 5 Extended /dev/hda5 1060 1125
530113+ fd Linux raid autodetect /dev/hda6 1126 1158 265041 82
swap /dev/hda7 1159 9964 70734163+ fd Linux raid autodetect

L'attribut «Système» Linux raid autodetect s'obtient, sous fdisk, à l'aide du code fd.
Comme on le voit, j'ai décidé de faire deux partitions de swap de 256 Mo plutôt qu'une partition unique de 512
Mo, l'une sur /dev/hda, l'autre sur /dev/hdc. On verra par la suite que cela va être utile.
Faire une mini-installation
A partir de ce moment là, les choses commencent à très mal se passer; en effet, le programme d'installation
de la Debian ne considère par les partitions fd comme valides pour une installation et il m'est apparu
impossible de construire le RAID à ce moment précis.
J'ai donc choisi de modifier la seconde partition de swap (/dev/hdc6) et de la transformer en partition ext2
traditionnel et de faire une installation minimale de la Debian.
L'installation sur un système de fichier ext2 se déroule sans accroc.
Configurer la mini-installation pour construire le RAID
Une fois l'installation standard terminée, on se retrouve avec deux énormes disques et un minuscule système
de fichiers actif. Cela ne sera que temporaire.
Il faut alors installer le paquet raidtools2 et installer un noyau avec support du RAID logiciel.
On commence par compiler un nouveau noyau. Je vous recommande d'en prendre un bien frais sur
ftp.kernel.org (ou un miroir officiel, comme le lip6). Choisissez avec grand soin les modules nécessaires pour
votre machine (en particulier le type de processeur, de contrôleurs IDE et de type de carte afin d'obtenir un
support DMA correct sur cette machine). Examinez, avec la commande hdparm /dev/hda que le DMA et l'irq
masquing sont bien activés pour votre disque; sinon, tapez /sbin/hdparm -u 1 -d 1 /dev/hda, puis pour
/dev/hdc. Voyez la page de manuel de hdparm pour de plus amples renseignements.
Pour les besoins du RAID logiciel, choisissez:
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y (...) CONFIG_MD_RAID1=y CONFIG_MD_RAID5=y

Une fois votre choix fait, je vous suggère d'utiliser les outils Debian pour compiler, pakager et installer le
nouveau noyau à l'aide du paquet kernel-package.
Une fois le nouveau noyau compilé et installé, redémarrez la machine. Vérifiez à l'aide de la commande uname
-r que vous êtes bien sur le bon noyau.
On commence ensuite à construire le RAID, pour ce faire, après avoir lu la documentation idoine (je parle du
Software-RAID HOWTO, Cf. la fin de ce document) on va constituer le fichier /etc/raidtab.
Mon fichier pour ma part à cette tête-là:
# /boot RAID 1 raiddev /dev/md0 raid-level 1 nr-raid-disks 2
nr-spare-disks 0 chunk-size 32 persistent-superblock 1 device
/dev/hda1 raid-disk 0 device /dev/hdc1 raid-disk 1

# / RAID 1
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
device /dev/hda2
raid-disk 0
device /dev/hdc2
raid-disk 1

# /var RAID 1
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
device /dev/hda3
raid-disk 0
device /dev/hdc3
raid-disk 1

# /tmp RAID 1
raiddev /dev/md3
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
device /dev/hda5
raid-disk 0
device /dev/hdc5
raid-disk 1

# /home RAID 1
raiddev /dev/md4
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
device /dev/hda7
raid-disk 0
device /dev/hdc7
raid-disk 1

Bien évidemment, il faut adapter ce fichier d'exemple à votre configuration.


Une fois cela fait, on peut alors créer le RAID à l'aide de la commande: mkraid /dev/md0.
La commande rend la main étrangement vite, on en profite pour créer les autres partitions RAID avec mkraid
/dev/md1, etc.
Le RAID va être construit progressivement par le système. On s'aperçoit de la bonne marche des opérations à
l'aide de quelques cat /proc/mdstat : on aperçoit le RAID en pleine construction.
Sur ma machine, le RAID s'est construit à une vitesse d'environ 30Mo/sec. Si la vitesse de création est
nettement inférieure à cela, (par exemple, moins d'1Mo/sec) c'est sans doute l'indice que votre système est
mal configuré, par exemple du fait de l'absence de gestion du DMA, ou autre.
Une fois la création terminée, un cat /proc/mdstat devrait avoir une apparence telle que:
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdc1[1] hda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 hdc2[1] hda2[0]


4200896 blocks [2/2] [UU]

md2 : active raid1 hdc3[1] hda3[0]


4200896 blocks [2/2] [UU]

md3 : active raid1 hdc5[1] hda5[0]


530048 blocks [2/2] [UU]

md4 : active raid1 hdc7[1] hda7[0]


70734080 blocks [2/2] [UU]

unused devices: <none>

Ces partitions se gèrent ensuite comme tout autre partition: on peut donc facilement les ... formater ! C'est ce
que nous faisons à l'aide de la commande /sbin/mkfs.ext3 /dev/md0 et ainsi de suite.
Le basculement du système vers les partitions RAID
Vérification du bon fonctionnement des partition RAID
A cette étape, nous avons toujours une partition système très étroite (256Mo dans mon cas); on va avant toute
chose vérifier que les nouvelles partitions sont correctes.
Dans /mnt/ on crée les répertoires slash, var, home, boot, tmp (adaptez en fonction du partitionnement choisi).
Montez les partitions /dev/md? sur le point de montage idoine, par exemple:
mount /dev/md0 /mnt/boot
mount /dev/md1 /mnt/slash
mount /dev/md2 /mnt/var
mount /dev/md3 /mnt/tmp
mount /dev/md4 /mnt/home

Si vous êtes aussi suspicieux que moi, n'hésitez pas à créer de gros fichiers sur ces espaces disques,
/dev/urandom est fait pour cela :-).
Basculement du système
Une fois toutes ces partitions bien vérifiées et bien nettoyées, on va doucement commencer la migration du
système.
La commande tar va être la commande magique pour ce faire.
On va commencer par exemple par migrer /home/ vers la parition en RAID.
tar -C /home -clf - .|tar -C /mnt/home -xvf - t, on vérifie que le résultat est correct, que les permissions
sont bien préservées, etc.
On poursuit ensuite avec les autres points de montage, comme /boot/ puis /var/...
Lorsqu'on voudra migrer la partition racine (/) on prendra bien soin d'exclure les points de montage déjà
migrés (par exemple /tmp/ ou /var/) à l'aide des options -X ou --exclude de tar; au besoin, en cas d'erreur, les
détruire.
Sur /mnt/slash, il faut par contre créer les répertoires qui seront par la suite montés par le système, donc
/home/ /tmp/ /var/ etc.
Vérifiez soigneusement l'aspect correct de votre migration, assurez-vous de n'avoir pas fait d'erreur lors du
passage.
Reconfiguration du système pour le prochain boot
Il faut à présent indiquer au système de lancer le noyau avec les nouvelles partitions et rendre le système
amorçable.
Pour cela, on modifie /etc/fstab par exemple en ceci:
/dev/md1 / ext3 errors=remount-ro 0 1
/dev/md0 /boot ext3 defaults 0 2
/dev/md2 /var ext3 defaults 0 2
/dev/md3 /tmp ext3 defaults 0 2
/dev/md4 /home ext3 defaults 0 2
/dev/hda6 none swap sw 0 0
/dev/hdc6 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0

Grâce à cela, le système qui redémarrera saura trouver les nouvelles partitions (d'où l'intérêt de bien mettre
dans le noyau le support du RAID !).
Il s'agit ensuite de rendre le système amorçable: en effet, l'amorçe présente sur le disque dur est faite pour
lancer le système avec le root filesystem sur /dev/hda.
On édite donc le fichier /etc/lilo.conf et on y ajoute les éléments suivants (au besoin en remplaçant les clefs-
valeurs actuelles)
boot=/dev/md0
(...)
root=/dev/md1

Exécutez ensuite le programme install-mbr.


Attention ... n'oubliez pas que vous avez actuellement DEUX lilo.conf, /etc/lilo.conf et /mnt/etc/lilo.conf; aussi,
toutes les modifications apportées après la migration avec tar doivent-elles être reportées dans le répertoire
/mnt/ ...
Et on se lance !
Une fois prêt, on se lance ! Cependant, attention en cas de problème, on conserve encore l'ancienne root
partition sur /dev/hdc6 en attendant de valider l'installation correcte de la machine en full root raid (par
exemple à l'aide d'une disquette de boot faite avec mkboot avant la migration ... pensez-y).
Ceci fait, testez. Pour moi, cela a marché (presque) du premier coup, j'avais simplement mal positionné les
droits du répertoire /tmp/ en raid: on s'aperçoit en effet que ce répertoire à un sticky bit de positionné...
$ ls -ld /tmp/
drwxrwxrwt 3 root root 4096 Sep 30 23:23 /tmp/

On rétablit les choses avec l'option t de chmod (Cf. la page de manuel).


On profite de ce petit incident pour faire le tour du propriétaire et vérifier les droits des répertoires.
Conclusion
Cette petite installation est assez pénible au début mais elle procure un délicieux sentiment d'euphorie lorsque
tout fonctionne à merveille à la fin. L'installation à duré, lecture de manuel, tests et vérification, un peu moins
d'une journée au total alors que je ne connaissais rien au RAID logiciel auparavant.
Je vérifie régulièrement l'état des disques à l'aide de la commande cat /proc/mdstat, les deux «U» signifient
que les deux disques sont opérationnels.
En cas de catastrophe, je crois que les outils compris dans les raidtools2 sont assez incomplets. Je vous indique
donc un autre logiciel, appelé mdadm qui permet de synchroniser élégamment un disque vierge avec un
périphérique RAID soft en mode dégradé (donc avec plus qu'un seul disque). La commande pour s'en sortir est
mdadm /dev/md0 -a /dev/hdc par exemple, mais lisez soigneusement la documentation de mdadm avant toute
intervention.
Pour finir, n'oubliez pas: le RAID ne sert qu'à se protéger d'un disque qui grille, il n'offre aucune garantie contre
un rm -rf mal placé, aussi, du RAID ne dispense pas de faire des sauvegardes régulières. On le répète encore
une fois: le RAID ne remplace pas les sauvergardes.
Références
• http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
• http://karaolides.com/computing/HOWTO/lvmraid/
• http://www.bxlug.be/articles/111
• http://www.cse.unsw.edu.au/~neilb/source/mdadm/
• http://linux.oreillynet.com/pub/a/linux/2002/12/05/RAID.html

Vous aimerez peut-être aussi