Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM LINUX FAQ LINUX TUTORIELS LINUX LIVRES LINUX LINUX TV UNIX GTK+ Qt APACHE

Linux : Raid 1

07/07/2004

Par nyal (Home page)
 

Cet article a pour but d'expliquer comment mettre en place le RAID 1 logiciel sous Linux. Bonne lecture.


1. Introduction
2. Installation
3. Configuration
4. Vérification de mise en place du système
5. Conclusion


1. Introduction


Cet article a pour seul but d'expliquer comment mettre en place le RAID 1 logiciel (cela est sensiblement la même chose pour les autres RAID).
L'interêt d'un tel dispositif est de permettre de prévenir la perte de données. Le RAID 1 (mirroring) duplique les données sur les disques spécifiés. Si vous n'avez pas besoin d'avoir des données synchronisées en temps réel, vous pouvez très bien mettre en place un système de sauvegarde qui se lance tous les soirs (par exemple) via cron. Il vous faut juste choisir le bon système, selon les données.

Avantages :

  • haute disponibilité des données et du système (si ce sont les données du système qui sont en RAID)
  • gain de performance en lecture

Inconvénients

  • perte de temps CPU
  • perte de vitesse en écriture
  • perte d'espace disque

Pour mettre en pratique ce tutoriel, il vous faudra donc deux disques durs (SCSI ou IDE), voire davantage si vous voulez rajouter des disques de rechanges (spare disque) qui permettront le remplacement d'un disque en panne.
Vous pouvez aussi très bien faire les manipulations sur un seul disque dur. Mais l'interêt est très limité.
Il peut être utile, par exemple, de faire du mirroring d'une zone du disque possédant des clusteurs défectueux.


2. Installation


Pour utiliser le RAID software avec linux, il faut vérifier que votre kernel dispose du support RAID 1.
Si ce n'est pas le cas, recompilez le noyau en mettant le support RAID 1 directement dans le kernel (pas en module) pour éviter de mettre en place initrd lors du démarrage.

Options à cocher dans le noyau :

Une fois cela fait, il faut installer les raidtools et créer le fichier /etc/raidtab. Ceux-ci vont permettre la configuration du RAID.


3. Configuration


L'exemple de configuration est réalisé avec trois disques durs IDE : respectivement /dev/hda, /dev/hdb et /dev/hdc. Le disque /dev/hda contient l'installation standard de linux. On n'aura spécifié que deux partitions : /dev/hda1 pour la partition racine et /dev/hda2 pour la partition swap. Bien entendu, vous pourrez ensuite complexifier le système avec davantage de partitions (mais vous devrez faire autant de fois la manipulation suivante).

Vous allez rajouter les lignes suivantes dans le fichier /etc/raidtab :

raiddev /dev/md0 # on prend le 0, mais vous pouvez prendre un autre raid-level 1 nr-raid-disks 2 nr-spare-disks 1 persistent-superblock 1 chunck-size 16 device /dev/hda1 raid-disk 0 device /dev/hdb1 raid-disk 1 device /dev/hdc1 spare-disk 0
Explication de la ligne persistent-superblock 1 :
L'ajout de cette ligne permet d'écrire un superblock au début de chaque partition des disques RAID. Cela permet au kernel de lire la configuration du RAID sans lire le fichier /etc/raidtab (il est donc déconseillé d'utiliser fsck sur les partitions, au risque de modifier ce superblock).

Il vous faut créer maintenant les partitions /dev/hdb1 et /dev/hdc1 avec fdisk ou cfdisk. Les partitions doivent avoir la même taille (très important) et être de type fd (pour le RAID) pour qu'elles soient reconnues au démarrage. (Il vous faudra rebooter votre machine si vous venez de les créer. Par contre si vous avez seulement changer le type de la partition, ce n'est pas la peine de rebooter)

La commande suivante initalise le volume RAID :

mkraid /dev/md0
Mais celle-ci va échouer car votre partition racine (/dev/hda1) est montée et occupée. Il vous faut la démonter, mais c'est impossible pour la partition racine. Il est donc nécessaire d'éditer le fichier de configuration et remplacer :

device /dev/hda1 raid-disk 0
par :

device /dev/hda1 failed-disk 0
Comme la partition /dev/hda1 est en failed-disk, /dev/hdc1 deviendra la partition utilisée pour le RAID (c'est précisément la fonction d'un disque spare). Vous pouvez éviter cela en commentant son entrée dans le fichier /etc/raidtab, pour le décommenter à la fin de la manipulation.

Vous pouvez maintenant lancez la commande :

mkraid /dev/md0
Il vous faut à présent formater le volume pour permettre le montage du système RAID (pas de soucis : /dev/hda1 ne sera pas formaté car il est en failed-disk).
Tapez par exemple (un autre système de fichier peut être choisi) :

mkreiserfs /dev/md0
Montez la partition :

mount -t reiserfs /dev/md0 /mnt/tmp
Copiez à présent les fichiers de la partiton racine vers le répertoire /mnt/tmp (utilisez la commande cp -cp pour garder les droits des fichiers).

Vous avez presque fini. Il vous reste trois choses a faire :

  • changez le type de la partition /dev/hda (type fd)
  • remplacez dans /etc/fstab :

/dev/hda3 / reiserfs defaults 1 1
par

/dev/md0 / reiserfs defaults 1 1

  • changez dans le fichier lilo.conf :

root = /dev/hda1
par :

root= /dev/md0
Et rechargez lilo (installation dans le mbr).

Rebootez la machine. Vous avez maintenant un système RAID fonctionnel. Verifiez à l'aide de la commande df et regardez le fichier /proc/mdstat.

Il ne reste plus qu'à rajouter la partition /dev/hda1 dans le système RAID 1.
Editez le fichier /etc/raidtab et remplacez :

failed-disk
par :

raid-disk
Vous pouvez maintenant activer le RAID avec la commande :

raidhotadd /dev/md0 /dev/hda1
Attendez que les disques durs soient synchronisés avant d'éteindre votre système.

Vous devez avoir, une fois la synchronisation finie, une sortie ressemblant à cela (spare-disk rajouté) :

# cat /proc/mdstat Personalities : [raid1] read_ahead 1024 sectors md0 : active raid1 hdc1[2] hdb1[0] hda1[1] 51264 blocks [2/2] [UU]
Si vous voulez démarrer sur le disque /dev/hdb, installez lilo dans son mbr et rajoutez dans le fichier /etc/fstab son swap :

/dev/hdb2 swap swap defaults 0 0

4. Vérification de mise en place du système


Pour vérifier les partitons du système RAID, tapez la commande :

$ lsraid -a /dev/md0 [dev 9, 0] /dev/md0 E6C062B6.88A7E659.9216712C.30FADE07 online [dev 3, 7] /dev/hda1 E6C062B6.88A7E659.9216712C.30FADE07 good [dev 3, 65] /dev/hdb1 E6C062B6.88A7E659.9216712C.30FADE07 good [dev 3, 66] /dev/hdc1 E6C062B6.88A7E659.9216712C.30FADE07 spare
Si l'un des disques durs ne fonctionne plus (fichier /proc/mdstat), rebootez sur le disque dur qui fonctionne (en rajoutant un nouveau disque dur) puis ajoutez les partitions via la commande raidhotadd (sans oublier de refaire les manipulations sur la partition).
Si les deux disques durs ne fonctionnent plus, pas de chance ;)


5. Conclusion


La manipulation est un peu complexe à mettre en oeuvre. C'est pour cela que je vous conseille de tester sur une partition avec des données non sensibles dans un premier temps. Ensuite, vous pourrez faire la manipulation sur une autre partition.
Pour des nouvelles partitions sans données, n'utilisez pas le failed-disk (cela ne sert a rien).
J'espère que ce petit article vous a aidé. N'hesitez pas à me contacter en cas d'erreur.
Merci à armatatuxa et stessy pour leur relecture et correction orthographique.



Copyright (c) 2003-2004 Developpez.com Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Copy of the GNU Free Documentation Licence

Responsables bénévoles de la rubrique Linux Professionnel : Olivier Van Hoof et Pierre Chauvin - Contacter par EMail :
Vos questions techniques : forum d'entraide Linux Professionnel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.