Raidtool est un logiciel freeware permettant de gérer les différents niveaux de raid sur Linux. Raidtool est disponible sous différents format (.rmp, .deb, .tgz...).
Le vocabulaire utilisé avec Raidtool est sensiblement similaire à SDS. Les métadevices sont remplacés par les raiddevices et il n'existe pas de réplicas contenant les base de donnée avec la configuration du logiciel.
Nous allons mettre en place un mirroring sur deux
disques de 18 Go. Le système est déjà installé
sur le premier disque. Le partitionnement est comme suit :
|
|
|
/dev/hda1 | / | 4 Go |
/dev/hda2 | swap | 2 Go |
/dev/hda3 | /var | 11 Go |
La configuration détaillée obtenue avec la commande fdisk
/dev/hda nous donne les renseignements suivants :
Device Boot Start
End Blocks
Id System
/dev/hda1 * 1 520 4176836+ 83 Linux native /dev/hda2 521 781 6265254 83 Linux swap /dev/hda3 782 2212 11486298 83 Linux native |
3.4 La configuration du mirroring
Le schéma suivant représente le mirroring
qui va être mis en place. Dans la phase 0, on a les 2 disques physiques
présent indépendants. Contrairement à SDS, il n'est
pas nécessaire de déclarer les partitions physiques en tant
que device. Les partions physiques sont directement rattachées aux
raiddevices qui sert de mirroir, phase 1 sur le schéma.
|
|
/dev/hda1 | /dev/md0 |
/dev/hda2 | /dev/md1 |
/dev/hda3 | /dev/md2 |
/dev/hdb1 | /dev/md0 |
/dev/hdb2 | /dev/md1 |
/dev/hdb3 | /dev/md2 |
Pour le fonctionnement de Raidtools, il faut installer le package 'raidtools'psous Linux. Il suffit d'utiliser l'outil apt-get.
# apt-get install raidtools
Il faut s'assurer que les modules linear, raid0, rais1 et raid5 sont présent lorsque l'on met en place un système de raid. Si ce n'est pas le cas :
# modprobe linear
# modprobe raid0
# modprobe raid1
# modprobe raid5
Attention : Pour certains noyaux 2.2 et 2.0, il
faudra installer des patchs.
3.6 Duplication des partitions
Dans un premier temps, il faut avoir un partitionnement identique entre le premier et le deuxième disque. Pour cela on utilise la commande fdisk pour copier le partitionnement de /dev/hda sur /dev/hdb. Les partions à mirrorer devront avoir la spécification System "Linux raid autodetect" et le type "fd" :
La configuration détaillée obtenue avec la commande fdisk
/dev/hdb nous donne les renseignements suivants :
Device Boot Start
End Blocks
Id System
/dev/hdb1 * 1 520 4176836+ fd Linux raid autodetect /dev/hdb2 521 781 6265254 fd Linux raid autodetect /dev/hdb3 782 2212 11486298 fd Linux raid autodetect |
3.7 Le fichier de configuration
Il faut éditer le fichier
/etc/raidtab
contenant toutes les informations sur les raiddevices :
|
Le spare permet d'avoir une seule partition répartie sur plusieurs disques. |
Dans
le cas d'un raid0, le chunk-size est le nombre de bits qui va être
inscrit sur un disque avant de changer de disque. Ansi, dans le cas où
l'on aurait mis en place un raid0 sur /dev/hdc et /dev/hdd, raidtools va
inscrire 32 Kb sur /dev/hdc puis 32 Kb sur /dev/hdd, jusqu'à ce
que toutes les données soient inscrites.
Dans le cas du mirroring, le chunk-size ne modifie pas la manière d'écrire les données sur les différentes partitions. Cependant, pour la lecture le logiciel va lire 32 Kb sur une partition puis 32 Kb sur l'autre pour améliorer les temps de lecture. |
Le persistent-superblock permet d'écrire un superblock au début de chaque disque participant au raid. Cela permet au kernel de lire directement la configuration du raid à partir des disques impliqués. Cela est utilisé lorsque le système de raid n'a pas acccès au fichier de configuration (partition non montée). |
3.8 Initialisation des raiddevices
Une fois que le fichier de configuration est édité, on va construire les raiddevices :
# mkraid /dev/md0
# mkraid /dev/md1
# mkraid /dev/md2
Pour suivre la création des raiddevices et les éventuelles erreurs, il est possible de regarder le fichier /proc/mdstat.
Une fois que les raiddevices sont créés, il faut créer
le file system sur cette partition, qui est dès lors considérée
comme une partiton physique normale.
Nota : le disque /dev/hda n'est pas encore inclut dans lemirroring
grâce à l'option 'failed-disk'. Si l'option 'raid-disk' avait
été choisie, les deux partitions serait alors considérés
comme /dev/md0, ce qui aurait posé des problèmes pour le
système en cours d'utilisation.
Création du file system :
# mke2fs /dev/md0
Contrairement à SDS, il n'est pas possible de déclarer le système en cours d'utilisation en tatn que raiddevices, c'est pourquoi on a déclaré /dev/md0 à partir de /dev/hdb. Cependant, ce raiddevices ne contient aucunes informations, il donc falloir copier toutes les données de /dev/hda sur /dev/hdb.
#mount /dev/md0 /mnt
# mkdir -p /mnt/usr/local
# mkdir -p /mnt/var
# mkdir -p /mnt/home
# cp -a /bin /mnt
# cp -a /boot /mnt
# cp -a /dev /mnt
# cp -a /etc /mnt
# cp -a /home /mnt
# cp -a /lib /mnt
# cp -a /root /mnt
# cp -a /sbin /mnt
# cp -a /tmp /mnt
# cp -a /usr /mnt
# cp -a /var /mnt
# cp -a /vmlinuz /mnt
# mkdir -p /mnt/cdrom
# mkdir -p /mnt/mnt
# mkdir -p /mnt/proc
Il faut maintenant indiquer
au système de booter sur la partition logique /dev/md0, il suffit
de changer le fichier /mnt/etc/fstab,
le
fichier /etc/fstab pour la nouvelle partiton logique :
/dev/md1 swap swap defaults 0 0 /dev/md0 / ext2 defaults 1 1 /dev/md2 /var ext2 defaults 1 1 none /proc
proc defaults
0 0
|
Ensuite, il faut changer la configuration de lilo,
en changeant le fichier /mnt/etc/lilo.conf,
pour spécifier au système de booter sur la partition logique
/dev/md0 :
#fichier de configuration LILO # # Start LILO global section boot = /dev/md0 #mode VGA console vga = normal # Linux bootable partition config begins
|
Une fois le fichier de configuration il faut lancer lilo en lui spécifiant de prendre le fichier de configuration de la partition /dev/md0. Pour cela on utilise l'option -r suivit du chemin où est monté la partition :
# lilo -r /mnt
Si tous ce passe bien, le système peux alors être rebooté
:
# reboot
Pour vérifier que le sytème a bien
rebooté sur la partition logique, il suffit de taper la commande
:
#df -h
Maintenant, il faut intégrer le disque /dev/hda au mirroring. Comme pour /dev/hdb, il faut changer la spécification System ("Linux raid autodetect") et le type ("fd") en utilisatn fdisk. Une fois que les modifications ont été effectuées, on peux alors monter les partitions de /dev/hda :
# raidhotadd /dev/md0 /dev/hda1
# raidhotadd /dev/md0 /dev/hda2
# raidhotadd /dev/md0 /dev/hda3
Une fois que ces modifications ont été
faites, il faut changer le fichier /etc/raidtab en remplaçant 'failed-disk'
par 'raid-disk'.
Le fichier /proc/mdstat permet de voir l'état du mirroring
pendant lsa construction et son fonctionnement.