HOWTO Installer un RAID logiciel et LVM2 sur du RAID1

Un article de Gentoo Linux Wiki.

Cet article fait partie des HOWTOs.
Méthodes d'installation CD Live Noyau et matériel Portables et Notebooks Portage Système Réseaux et Services Serveur X Logiciels fréquemment utilisés Autres

Cet article est une ébauche. Vous pouvez l'aider à s'enrichir en le complétant.

Sommaire

[modifier] Introduction

Ce Howto se positionne en supplément de la documentation normale d'installation Gentoo x86 handbook pour permettre de créer un système Gentoo pour serveur avec un RAID 0 logiciel et LVM2.

Ce howto parle de deux disques durs IDE qui forment le RAID, ils se situent dans /dev/hda et /dev/hdg. Votre configuration hardware peut bien sur être différente.

Le serveur utilisé pour cet howto est de type 1U avec une carte mère Intel S845WD-E et un controleur Promise Fasttrack RAID integré. Depuis les noyaux 2.6 il n'y a plus ataraid, pdcraid dans la version vanilla, il vaut mieux utiliser softraid. Ce serveur a aussi un lecteur de cd-rom depuis lequel je veux qu'il soit possible de démarrer. Comme il n'est pas possible de démarrer des disques durs connectés au contrôleur IDE Promise. J'ai dû choisir la disposition suivante - HDD1 /dev/hda, CDROM /dev/hdb, HDD2 /dev/hdg (secondary Promise IDE interface).

[modifier] Configuration initiale

  • Demarrez avec le LiveCD comme d'habitude, et chargez le module softraid pour le raid 1:
modprobe raid1
  • Partitionnez vos disques durs et sélectionnez pour chaque partition le type Linux raid autodetect:
fdisk /dev/hda
fdisk /dev/hdg

J'ai choisi de créer les partitions suivantes:

primary part1 -> boot 100MB
primary part2 -> swap 512MB
primary part3 -> root 1GB
primary part4 -> LVM2 for /usr /var /opt /tmp /home XGB

Configuration alternative:

primary part1 -> boot 100MB
primary part2 -> LVM2 for swap, / pour les autres systèmes de fichiers comme /var /home faites vous le souhaitez.

Pour selectionner une partition de type Linux raid autodetect, dans fdisk pressez la touche t puis rentrez le code hexadécimal fd.

Code : fdisk
# La description des partitions doit recembler à ceci:
Device Boot         Start         End      Blocks   Id  System
/dev/hda1               1          13      104391   fd  Linux raid autodetect
/dev/hda2              14          76      506047+  fd  Linux raid autodetect
/dev/hda3              77         259     1469947+  fd  Linux raid autodetect
/dev/hda4             260       19457   154207935   fd  Linux raid autodetect
Device Boot         Start         End      Blocks   Id  System
/dev/hdg1               1          13      104391   fd  Linux raid autodetect
/dev/hdg2              14          76      506047+  fd  Linux raid autodetect
/dev/hdg3              77         259     1469947+  fd  Linux raid autodetect
/dev/hdg4             260       19457   154207935   fd  Linux raid autodetect
  • N'oubliez pas de rendre les deux partition 1 bootable. A partir de l'option a dans fdisk (toogle a bootable flag), içi partition 1. Sans quoi vous ne pourrez booter sur votre système.
  • Nous pouvons configurer les partitions du premier disque dur et copier la table de partition sur le deuxième disque avec la commande suivante:
Code : sfdisk
sfdisk -d /dev/hda | sfdisk /dev/hdb
  • Nous devons créer les devices correspondants au raid avant de le lancer :
mknod /dev/md0 b 9 0
mknod /dev/md1 b 9 1
mknod /dev/md2 b 9 2
mknod /dev/md3 b 9 3
  • Creation du raid arrays pour le mirroring de partition:

Linux doit avoir au moins une partition qui n'est pas du type RAID pour booter, ca peut être une partition en RAID 1 puisqu'il fait une copy exacte du disque. Avec le RAID 1, le disque 1 et le disque 2 seront exactement les mêmes et ainsi les disques sont montable séparement comme un disque normal.
Linux ne peut pas booter depuis un RAID 0 logiciel car seul noyau a les drivers qui sont nécessaire pour lire les partitions RAID au démarrage donc le bootloader ne sera pas capable d'accéder à ces derniers. Une partition de type RAID qui utilise l'entrelacement de disques ne peut pas être monté sans le logiciel qui gère le raid, sans lui toutes les partitions sont illisibles. Ce n'est pas un problème avec le RAID1 (Mirroir) car les disques contiennent toutes les informations pour chaques partitions et indindividuellement elless sont accessibles comme sur un disque partitionné. A cause de ce fonctionnement et pour se préserver en cas problème, et afin de pouvoir remettre le système rapidement, nous allons créer un RAID 1 pour la partition /boot. Ceci nous permettant d'avoir une copie de sauvegarde des noyaux et des fichiers importants.

Note: Si vous avez un contrôleur RAID comme un VIA intégré à la carte mère ou une simple carte PCI RAID n'essayez pas de créer votre RAID sur ce contrôleur. Si vous le faites,vous pouvez recevoir un message d'erreur "Device or Resource busy" au moment ou vous ferez la commande mdadm --create.
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdg1
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/hda2 /dev/hdg2
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/hda3 /dev/hdg3
mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/hda4 /dev/hdg4
Note: Les commandes précédante créent un espace de swap en RAID 1(/dev/md1). Ceci est recommendé pour un maximum de fiabilité. Si vous préférez la performance, il n'y a aucune raison de mirrorer l'espace de swap. Le kernel additionnera l'espace de swap si vous spécifiez plusieurs partitions de swap avec la même priorité. Voir la page TLDP swapping on RAID pour des explications sur toutes ces options.
  • NB! Attendez que l'initialisation de l'ensemble soit effectué:
# Exécutez "watch -n1 'cat /proc/mdstat'" Pour voir l'avancement
livecd root # watch -n1 'cat /proc/mdstat'
Personalities : [raid1]
md3 : active raid1 hdg4[1] hda4[0]
     154207808 blocks [2/2] [UU]
     [>....................]  resync =  4.0% (6240576/154207808) finish=45.5min speed=54148K/sec
md2 : active raid1 hdg3[1] hda3[0]
     1469824 blocks [2/2] [UU]
md1 : active raid1 hdg2[1] hda2[0]
     505920 blocks [2/2] [UU]
md0 : active raid1 hdg1[1] hda1[0]
     104320 blocks [2/2] [UU]
unused devices: <none>
Note: Si vous obtenez de faibles performancs de resynch. Ajustez les valeurs dans /proc/sys/dev/raid/speed_limit_max et/ou /proc/sys/dev/raid/speed_limit_min.
  • Créez le fichier mdadm.conf pour référence sur la configuration du RAID:
File: /etc/mdadm.conf
# Copiez ceci dedans
DEVICE          /dev/hda*
DEVICE          /dev/hdg*
ARRAY           /dev/md0 devices=/dev/hda1,/dev/hdg1
ARRAY           /dev/md1 devices=/dev/hda2,/dev/hdg2
ARRAY           /dev/md2 devices=/dev/hda3,/dev/hdg3
ARRAY           /dev/md3 devices=/dev/hda4,/dev/hdg4
MAILADDR        root@localhost

Ou

mdadm --detail --scan > /etc/mdadm.conf

Si vous renseigner la variable MAILADDR dans les scripts d'initialisation, mdmadm sera en mode monitor et un courriel sera envoyé chaque fois qu'une erreur au niveau du RAID sera detectée.

[modifier] Configuration des systèmes de fichiers

  • Création de la partition de boot
mke2fs -j /dev/md0
  • Création du swap
mkswap /dev/md1
swapon /dev/md1
  • Création de système de fichiers racine
    • J'ai choisi ReiserFS pour 2 raisons:
      1. semble s'exécuter plus rapidement que ext3
      2. fonction de redimensionnement à chaud des partitions qui va très bien avec lvm
mkreiserfs /dev/md2
  • Nous avons besoin de charger les modules LVM2:
modprobe dm-mod
  • Nous devons mettre un filtre de phériphériques dans le fichier /etc/lvm/lvm.conf pour éviter d'avoir des erreurs en s'occupant des phériphériques RAID.

En outre, nous ne voulons pas scanner les lecteurs CD, DVD, etc..

mkdir -p /etc/lvm
echo 'filter=["a|dev/md3|", "r/.*/"]' >/etc/lvm/lvm.conf
  • Scan pour les partitions LVM:
vgscan
# il ne trouve rien...c'est ok
  • Créez le volume physique sur md3:
pvcreate /dev/md3
  • Verifiez qu'il a été créer proprement:
pvdisplay

S'il n'est pas affiché /dev/md3 mais /dev/hda4 ou /dev/hdg4, vous avez probablement mal rentré le filtre de phériphériques au dessus.

NOTE: Ceci ne marche pas pour moi, "pvdisplay /dev/md3" marche. --DR 06-09-21

  • Créez vg (volume group):
vgcreate vg /dev/md3
  • Vérifiez que vg a bien été créé:
vgdisplay vg

Si le filtre de phériphérique n'est pas correct, vous aurez l'erreur "Found Duplicate PV", et vg ne sera pas créé.

  • Créez les partitions nécessaires sur le LVM:
# Ignorez l'erreur "/etc/lvm/backup: fsync failed: Invalid argument" à partir de maintenant
# Vous pourrez redimmensionner un partition plus tard, comme vous le voulez
lvcreate -L10G -nusr  vg
lvcreate -L5G  -nhome vg
lvcreate -L5G  -nopt  vg
lvcreate -L10G -nvar  vg
lvcreate -L2G  -ntmp  vg
  • Créez le système de fichier:
mkreiserfs /dev/vg/usr
mkreiserfs /dev/vg/home
mkreiserfs /dev/vg/opt
mkreiserfs /dev/vg/var
mkreiserfs /dev/vg/tmp
  • Vous pouvez aussi utiliser la méthode Bash ;)
for i in usr home opt var tmp; do mkreiserfs /dev/vg/$i; done;


[modifier] Montage

Créons les points de montage nécessaire puis montons les système de fichiers:

mount /dev/md2 /mnt/gentoo/
cd /mnt/gentoo
mkdir boot usr home opt var tmp
mount /dev/md0 boot
for i in `ls /dev/vg`; do mount /dev/vg/$i $i; done;


[modifier] Stage 3

  • Allez dans la nouvelle racine :
cd /mnt/gentoo
  • Recupérez le stage3 sous forme de tarball et mettez le dans /mnt/gentoo puis décompressez le :
tar -xvjpf stage?-*.tar.bz2


[modifier] Chrooting

  • Copiez les infos nécessaire à la résolution de nom :
cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
  • Copiez la configuration du RAID :
cp -L /etc/mdadm.conf /mnt/gentoo/etc/mdadm.conf
  • Montez proc :
mount -t proc none /mnt/gentoo/proc
  • Chrootez-vous dans la nouvelle racine :
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile


[modifier] Configuration du système

Suivez les instructions du Gentoo Handbook instructions et essayez de vous rappeller les choses suivantes :

  • compilez le support du raid1 dans le kernel, il se trouve dans device-drivers->Multi-device support (RAID and LVM)
  • compilez le support du Device Mapper dans le kernel (Pour lvm2-2.00.08, compiler LVM2 comme un module ne fonctionne pas), il se trouve dans device-drivers->Multi-device support (RAID and LVM).
  • Installez quelques outils pour les utilisateurs :
emerge lvm2
emerge raidtools
emerge mdadm
emerge reiserfsprogs

Voici quelques fichiers de configuration du système :

File: /etc/fstab
/dev/md0                /boot           ext3            noauto,noatime          1 2
/dev/md2                /               reiserfs        noatime                 0 0
/dev/md1                none            swap            sw                      0 0
/dev/vg/usr             /usr            reiserfs        noatime                 0 0
/dev/vg/var             /var            reiserfs        noatime                 0 0
/dev/vg/opt             /opt            reiserfs        noatime                 0 0
/dev/vg/tmp             /tmp            reiserfs        noatime                 0 0
/dev/vg/home            /home           reiserfs        noatime                 0 0
/dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro               0 0
none                    /proc           proc            defaults                0 0
none                    /dev/shm        tmpfs           defaults                0 0

Comme il est mentionné avant, il n'est pas nécessaire d'utiliser le raid0 pour les partitions de swap. Créez deux partitions de swap et configurez votre fstab comme ceci: "/dev/hda2 none swap sw,pri=0" Copiez cette ligne et utilisez /dev/hdg2 pour l'autre partition de swap. Regardez cette page pour plus d'informations this page. --DA

NB! Configurez /etc/lvm/lvm.conf pour des demarrages rapides (autrement la vérification des phériphériques au démarrage le ralentira):

File: /etc/lvm/lvm.conf
#Remplissez le comme ceci
 devices {
    scan=[ "/dev/" ]
    filter=[ "a|/dev/md/|" "r|/dev/.*/|" ]
 }


[modifier] Bootloader installation et configuration

  • Installation de Grub:
emerge grub
  • Lancement du shell de grub:
grub --no-floppy
  • Puis exécutez:
#installation du MBR sur /dev/hda
root (hd0,0)
setup (hd0)
#installation du MBR sur /dev/hdg
device (hd0) /dev/hdg
root (hd0,0)
setup (hd0)

NB! Si un de vos disques durs échoue votre bios doit être configuré pour démarrer depuis l'autre disque dur.

  • Créez le fichier /boot/grub/grub.conf
 default 0
 timeout 8
 title=Gentoo 2.6.16
 root (hd0,0)
 kernel /boot/kernel-2.6.16-gentoo-r7 root=/dev/md2


NB! Si vous utilisez genkernel vous devez aussi ajouter quelques options à passer au kernel (dolvm2 and lvmraid=/dev/xxx,...) et vous assurez que vous compilez le kernel en utilisant genkernel avec l'option -lvm2. Si vous utilisez les LABEL au lieu des noms de phériphérique, vous devez aussi utiliser l'option --disklabel de genkernel.

  • Compilez le kernel avec le support de lvm, du raid logiciel, dmraid et disklabel en utilisant genkernel
 emerge genkernel
 genkernel --install --disklabel --lvm2 --dmraid all
  • fichier pour genkernel /boot/grub/grub.conf
 default 0
 timeout 8
 title Gentoo Linux 2006.0 [Default] genkernel-x86_64-2.6.16-gentoo-r7
 root (hd0,0)
 kernel /kernel-genkernel-x86_64-2.6.16-gentoo-r7 root=/dev/rd/0 init=/linuxrc real_root=LABEL=gt_root dolvm2 lvmraid=/dev/md1,/dev/md2,/dev/md3,/dev/md4
 initrd /initramfs-genkernel-x86_64-2.6.16-gentoo-r7

[modifier] Redemarrer le système après l'installation

umount /mnt/gentoo/var
umount /mnt/gentoo/usr
umount /mnt/gentoo/home
umount /mnt/gentoo/tmp
umount /mnt/gentoo/opt
umount /mnt/gentoo/proc
umount /mnt/gentoo/boot
umount /mnt/gentoo
vgchange -an
reboot

[modifier] Version courte

umount /mnt/gentoo/*

Ignorez les erreurs

umount /mnt/gentoo
vgchange -an
reboot

[modifier] Problèmes

Voir (en) Recovering_RAID_and_LVM

Autres langues