Groupe d'Utilisateurs de Logiciels Libres
de Nancy et ses environs

MirabellugWiki

Raid1Soft

PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 38.107.191.94

RAID1 utilisable de facon soft

Il existe bien sur des cartes spécialisées pour ce genre de traitement, mais linux permet de le faire de facon soft avec en plus des performances correctes.

Installation de Linux !

Si votre Système Linux n'est pas installé, nous allons devoir d'abord faire une installation de Debian Sarge. Pour le reste de ce document, nous partirons du postulat qu'une Debian Sarge (ou superieure) est déja installé sur votre machine.
Dans cette exemple, au départ j'ai 3 partitions, une de 100 Mo de swap (hda1), 170 Mo pour /home (hda2) et 800 Mo pour / (hda3).

Ajout d'un Disque dur

Notre premier disque est généralement en hda (cas d'un bus IDE). Pour des questions de performance et en cas de perte non pas d'un disque mais d'un controlleur IDE, le disque mirroir sera connecté en hdc.

Configuration du RAID1 au niveau du noyau

Pour vérifier le RAID1 :
cat /proc/mdstat

si la réponse est :
~# cat /proc/mdstat
cat: /proc/mdstat: Aucun fichier ou répertoire de ce type

il va falloir charger les modules du noyau.
~# modprobe md
~# modprobe raid1
~# cat /proc/mdstat
Personalities : [raid1]
read_ahead not set
unused devices: <none>


Cette fois c'est bon les modules sont bien chargés. Pour qu'il le soient également au redémarrage, nous allons les ajouter dans le fichier /etc/modules (md et raid1)

ensuite afin d'administrer correctement le raid1, nous avon besoin d'installer mdadm (rien de plus simple avec apt)
apt-get install mdadm


C'est terminé pour cette partie, nous avons tout en place pour configurer notre RAID1

Configuration du RAID1

Les 2 disques doivent avoir des partitions exactement identiques donc soit les 2 disques ont la même taille, ou un peu être plus grand mais l'esapce maximum qui sera dans le mirroir sera l'espace du plus petit disque.

Il nous faux donc récupérer le partitionnement du premier disque (hda) et refaire les partitions à l'identique sur le second. Dans le cas de disque différents, on utilisera cfdisk. Si les disques sont les même, on pourra faire :
sfdisk -d /dev/hda | sfdisk /dev/hdc


il faut ensuite changer la signature du type des partitions sur ce disque avec cfdisk pour la passer en Linux RAID autodetected le type est fd. Seule la partition de swap restera en type swap. Nous verrons par la suite comment cela est géré.

cfdisk

Nous allon maintenant ajouter le device correspondant au RAID1. Si le disque contient déja une signature RAID, il conviendra d'effacer cell-ci avec la commande suivante (dans mon cas je n'ai que 2 partitions hdc2 et hdc3):
mdadm --zero-superblock /dev/hdc2
mdadm --zero-superblock /dev/hdc3


L'ajout du device peut alors s'effecture :
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/hdc2
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/hdc3

En effet nous n'ajoutons pour le moment qu'un seul disque (hdc2) dans notre RAID, puisque nous voulons récupérer les données de l'ancien disque.

Maintenant nous allons formater nos différentes partitions raid :
mkfs.ext3 /dev/md0
mkfs.etx3 /dev/md0

Bien sur, nous aurions pu formater ces partitions autrement qu'en ext3 (reiserfs ...)

Récupération de l'ancien système Debian

Avant d'activer complètement notre RAID, il va falloir y recopier les données de notre système Debian déja installé. IL faut donc monter les partitions du RAID et ensuite y recopier nos données.
mount /dev/md1 /mnt
cp -dpRx / /mnt
mount /dev/md0 /mnt/home
cp -dpRx /home /mnt/home

Attention, car maintenant nous n'avons pas un système fini et dans les modifs a venir dans les fichiers, il faudra aussi copier vers notre système dans /mnt

Modification de la fstab pour rebooter avec le RAID

il faut maintenant modifier le fichier /mnt/etc/fstab pour utilser les partitions RAID (il n'est pas nécessaire de modifier /etc/fstab puisque nous n'allons pas booter en utlisant cette partition). Nous allons également utiliser la deuxième partition de swap :
fstab

Modification du chargeur de démarrage

Le noyau fourni en standard par debian utilise initrd. il va donc falloir créer un nouvel initrd qui contiendra les modules pour le RAID. Nous allons donc modifier le fichier /etc/mkinitrd/modules et ajouter comme dans le fichier /etc/modules les modules md et raid1
Il faut ensuite éditer le fichier /etc/mkinitrd/mkinitrd.conf et modifier cette ligne :
ROOT=/dev/md0 # (ancienement : ROOT=probe)

on peut ensuite regénrer un nouvel initrd :
mkinitrd -o /boot/initrd.img-2.4.27-raid
cp -dp /boot/initrd.img-2.4.27-raid /mnt/boot

Il faut pour finir modifier le fichier de configuration de GRUB (sur les 2 disques !!!) donc déja /boot/grub/menu.lst
title           Debian GNU/Linux, kernel 2.4.27-2-686 RAID
root            (hd0,2)
kernel          /boot/vmlinuz-2.4.27-2-686 root=/dev/md0 ro
initrd          /boot/initrd.img-2.4.27-raid
savedefault
boot

on recopie ensuite le fichier de configuration vers l'autre disque :
cp -dp /boot/grub/menu.lst /mnt/boot/grub/menu.lst

Il faut également installer grub sur l'autre disque et faire croire à grub que hdc et hda sont équivalent à hd0 pour que le système puisse booter même si le disque hda n'est pas présent. (attention il y a un ofset de 1 entre grub et linux au niveau de la numéroatation, donc la partition / : hda3 et en hd0,2 selon grub).
~# grub-install /dev/hdc
~# grub
grub>  device (hd0) /dev/hdc
grub>  root (hd0,2)
grub>  setup (hd0)
grub>  quit


Maintenant nous pouvons rebooter notre système pour utiliser le RAID
Si tout se passe bien :
reboot

On voit qu'il n'y a qu'un seul disque d'actif (le [_U]) il faut maintenant ajouter le permier disque

Formatage de hda et utilisation comme disque dans notre RAID

Comme pour hdc, il faut maintenant modifier le type des partitions pour hda avec cfdisk pour les mettre en Linux RAID autodetected soit le type fd.
On peut maintenant ajouter nos partitions dans l'ensemble RAID il faut attendre la fin de la synchronisation des disques avant de passer à la suite:
mdadm --add /dev/md0 /dev/hda2
mdadm --add /dev/md1 /dev/hda3

Les disques vont alors se synchroniser. Pour connaitre l'état de la synchronisation (pourcentage d'avancement), il suffit de faire :
%Êt /proc/mdstat
====Reconstruction d'un initrd====
C'est assez important, il va falloi reconstuire un initrd. En effet, la commande ##mkinitrd## crée un initrd un utilisant ##mdadm -D## pour trouver les différents ensembles RAID. Or ##hda2## et ##hda3## ne faisait pas partie du RAID et donc si l'on rebootait maintenant le disque ##hda## serait en "failure".
mkinitrd -o /boot/initrd.img-2.4.27-raid
C'est fini ! et ca doit fonctionner :
reboot
====Tests====
pour tester si cela fonctionne, il suffit de déconnecter un des disques ou sinon de faire la manip suivante :
mdadm --fail /dev/md0 /dev/hda2
mdadm --fail /dev/md0 /dev/hda3
En principe l'utilisateur root est prévenu par mail (attention à l'installation de debian les mails de root sont renvoyés sur un autre compte).

Vérifiez ensuite que tout fonctionne même avec un disque !
On peut remettre les disques dans le raid avec :
mdadm -a /dev/md0 /dev/hda2
mdadm -a /dev/md1 /dev/hda3
====Optimisation====
Il reste possible d'optimiser un RAID comme d'habitude avec hdparm

hdparm -c3 -d1 /dev/hda /dev/hdc
%%

That's All Folks


Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]