• fr

Installation d'une DEBIAN Sarge en RAID logiciel

Status de ce document

Il s'agit de la deuxième version. La première n'avait pas passé les tests:

  • mauvais choix pour le swap mis en RAID 0, ce qui aurait géré un démarrage sans swap en cas de problème sur ce périphérique RAID,
  • grub installé seulement sur le premier disque, d'où une impossibilité de démarrage si celui-ci est HS,
  • un seul périphérique RAID pour /, /tmp, /usr, /var, /home, ce qui empêche tout démarrage ou récupération de données s'il y a un soucis sur ce périphérique.

Avec les tests que j'ai réalisé pour le moment (voir plus loin), cela semble fonctionner correctement.

Pourquoi ce document?

M'apprêtant à remplacer mon serveur et ayant lu des articles sur le RAID logiciel (GNU Linux Magazine N°68), j'ai décidé d'installer son remplaçant en RAID logiciel. J'ai fait quelques essais directement depuis l'installateur DEBIAN sans succès. J'avais systématiquement un problème lors de la configuration LVM: The kernel was unable to re-read the partition table on /dev/md/2 (Invalid argument) This means Linux won't know anything nothing about the modifications you made until you reboot.You should reboot your computer before doing anything with /dev/md/2

Une recherche sur le net m'a donné ce message passé sur debian-user:
http://lists.debian.org/debian-user/2004/07/msg02018.html. J'ai tenté de cette façon mais sans succés (module lvm absent lors de la création du groupe de volume.

Après d'autres recherches, j'en suis arrivé à la conclusion que l'installation RAID ne se passe pas correctement dés que l'on a plus d'une partition primaire sur le disque. J'ai donc essayé avec une partition primaire et plusieures partitions logiques. Ce document indique comment j'ai procédé.

Mise en garde

ATTENTION, je ne suis en aucun cas un expert ou un gourou linux. Ce document ne fait que relater ce que j'ai fait. Il est probablement bourré d'hérésie et d'erreurs.

Préliminaires

Typographie

Dans ce qui suit, les textes comme celui-ci correspondent à des commandes à taper en ligne de commande.

Matériel

La configuration sur laquelle on va installé du RAID logiciel est la suivante:

  • carte mère mini ITX EPIA CL10000
  • 3 disques IDE 2 pouces 1/2 de 20Go, IBM Travelstar
  • lecteur de CD
  • CD netinst de Debian Sarge du 14/03/2005 (le partionnement en raid semble poser moins de problème qu'avec la version du 20/02/2005 utilisée lors de mon précédent essai)
  • connexion internet permanente via firewall / serveur DHCP

Les différents RAID

Définition succinte de différentes version de RAID:

  • RAID 0: stripping, on rassemble plusieurs partitions se trouvant sur plusieurs disques pour en obtenir une plus grosse. La taille finale est la somme de chacun des éléments,
  • RAID 1: mirroring, on synchronise en permanence deux partitions de même taille, se trouvant sur des disques différents. La taille finale est celle d'une partition,
  • RAID 0+1: on effectue un RAID 1 entre deux périphériques RAID 0 de même taille. La taille finale est la taille d'un périphérique RAID 0,
  • RAID 4: parity, on utilise trois partitions de taille identiques. Deux partitions stockeront les données, la troisième stockera un bit de parité. La taille finale est la somme de deux partitions,
  • RAID 5: distributed parity, on utilise trois partitions de taille identiques. Chaque partition stocke a la fois des données et un bit de parité. La taille finale est la somme de deux partitions. Cela évite le ralentissement du RAID 4 en répartissant constamment le travail sur les trois partitions.

Objectif

On veut obtenir au final:

Nom Taille RAID Commentaire
/boot 256Mo 1 Pour garantir le démarrage
swap 3Go   3 x 1Go, comme cela en cas de pépin sur un disque on aura toujours le swap des deux autres
/ 512Mo 5  
/tmp 1Go 5  
/usr 6Go 5  
/var 5Go 5  
/var/log 1Go 5  
/home le reste (environ 24Go) 5  

Cela doit permettre continuité de service, même si un disque crash, un redémarrage possible même avec un disque manquant, un remplacement de disque HS par un neuf sans manipulation particulière, enfin c'est ce que j'espère ...

Partitions des disques

Les trois disques seront partitionnés de la même façon:

Nom Type Taille Destination
/dev/hd*1 primaire 256Mo /boot
/dev/hd*5 logique 1Go swap
/dev/hd*6 logique 256Mo /
/dev/hd*7 logique 512Mo /tmp
/dev/hd*8 logique 3Go /usr
/dev/hd*9 logique 2.5Go /var
/dev/hd*10 logique 512Mo /var/log
/dev/hd*11 logique 12Go /home

* est à remplacer par a, b ou c en fonction du disque considéré.

Périphériques RAID

Les périphériques multi-disques RAID suivant seront créés:

Périphérique RAID Contenu Commentaire
/dev/md/0 1 /dev/hda1, /dev/hdb1, /dev/hdc1 /boot
/dev/md/1 5 /dev/hda6, /dev/hdb6, /dev/hdc6 /
/dev/md/2 5 /dev/hda7, /dev/hdb7, /dev/hdc7 /tmp
/dev/md/3 5 /dev/hda8, /dev/hdb8, /dev/hdc8 /usr
/dev/md/4 5 /dev/hda9, /dev/hdb9, /dev/hdc9 /var
/dev/md/5 5 /dev/hda10, /dev/hdb10, /dev/hdc10 /var/log
/dev/md/6 5 /dev/hda11, /dev/hdb11, /dev/hdc11 /home

Installation

Installation Sarge en RAID

L'installation se fait en bootant en linux26 afin d'avoir un noyau 2.6.

  • boot en linux26
  • language: french
  • région: France
  • clavier: français (fr-latin9)
  • réseau: eth1
  • nom de machine : ma_machine
  • nom de domaine: mon_domaine
  • modifier manuellement la table des partitions
  • sur chaque disque on crée:
    • une partition primaire de 256Mo, utiliser comme volume physique pour RAID
    • une partition logique de 1Go, utiliser comme swap
    • une partition logique de 512Mo, utiliser comme volume physique pour RAID
    • une partition logique de 256Mo, utiliser comme volume physique pour RAID
    • une partition logique de 3Go, utiliser comme volume physique pour RAID
    • une partition logique de 2.5Go, utiliser comme volume physique pour RAID
    • une partition logique de 512Mo, utiliser comme volume physique pour RAID
    • une partition logique du reste (12Go), utiliser comme volume physique pour RAID
  • configurer le RAID logiciel
  • appliquer les changements ? oui
  • Créer un périphérique multi-disques
  • RAID 1
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part1 de chaque disque
  • Créer un périphérique multi-disques
  • RAID 5
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part6 de chaque disque
  • Créer un périphérique multi-disques
  • RAID 5
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part7 de chaque disque
  • Créer un périphérique multi-disques
  • RAID 5
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part8 de chaque disque
  • Créer un périphérique multi-disques
  • RAID 5
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part9 de chaque disque
  • Créer un périphérique multi-disques
  • RAID 5
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part10 de chaque disque
  • Créer un périphérique multi-disques
  • RAID 5
  • 3 périphériques
  • périphériques de réserve 0
  • on sélectionne le part11 de chaque disque
  • terminé
  • configurer périphérique RAID1 n°0 en ext3, /boot
  • configurer périphérique RAID5 n°1 en ext3, /
  • configurer périphérique RAID5 n°2 en ext3, /tmp
  • configurer périphérique RAID5 n°3 en ext3, /usr
  • configurer périphérique RAID5 n°4 en ext3, /var
  • configurer périphérique RAID5 n°5 en ext3, /var/log
  • configurer périphérique RAID5 n°6 en ext3, /home
  • terminer le partitionnement et appliquer les changements
  • appliquer les changements sur les disques ? oui
  • l'installation du système de base Debian s'effectue
  • grub sur le secteur d'amorçage: oui
  • installation terminée
  • enlever le CD et refermer le lecteur de CDROM
  • continuer
  • reboot du système
  • bienvenue OK
  • horloge heure GMT: non
  • fuseau horaire Europe/Paris: oui
  • mot de passe super utilisateur
  • confirmation du mot de passe
  • nom
  • identifiant
  • mot de passe
  • confirmation du mot de passe
  • méthode apt: ftp
  • pays du miroir: France
  • miroir: ftp2.fr.debian.org
  • sélection des logiciels: aucuns OK
  • configuration de exim V4: distribution locale seulement
  • destinataire des courriels root et postmaster
  • merci OK

Installation GRUB

  • on se logue en root
  • grub
  • root (hd0,0)
  • setup (hd0)
  • setup (hd1)
  • setup (hd2)
  • quit

On a:

  • root (hd0,0) => Où (disque, partition) trouve-t-on /boot/grub?
  • setup (hd0) => Où (disque) doit-on écrire le MBR?

Franck qui a installé 2 disques SATA en RAID 1, signale qu'il a dû effectuer la configuration suivante de GRUB pour permettre le démarrage en l'absence du premier disque:

  • on se logue en root
  • grub
  • configuration du premier disque (/dev/sda)
  • root (hd0,0)
  • setup (hd0)
  • configuration du deuxième disque (/dev/sdb)
  • device (hd0) /dev/sdb
  • root (hd0,0)
  • setup (hd0)
  • quit

Test

Téléchargement des utilitaires

  • on se logue en tant que root
  • apt-get install mc libglib2.0-data
  • o

mc nous permettra de naviger dans les répertoires et visualiser les fichiers de logs, de mail, ...

Vérification des partitions

Le contrôle sera le même pour chacuns des disques. * est à remplacer par a, b ou c en fonction du disque que l'on veut vérifier (hda, hdb, hdc).

  • fdisk /dev/hd*
  • p pour afficher la liste des partitions
  • on doit retrouver les partitions telles que créées précédement. Toutes sont en Linux raid autodetect sauf /dev/hd*2 qui est en Extended et /dev/hd*5 qui est en Linux swap
  • q

Vérification de la configuration raid

Périphériques raid existant

Avec cat /proc/mdstat on obtient la liste ainsi que quelques informations (taille, type de RAID, partitions utilisées) des périphériques RAID existants.

Disques

st à remplacer par a, b ou c en fonction du disque que l'on veut vérifier (hda, hdb, hdc). ? est à remplacer par le numéro de la partition (1, 6,7,8,9,10,11)

  • mdadm --examine /dev/hd*? |less
  • on peut vérifier le type de raid ainsi que l'état du disque
  • q pour quitter

Périphérique raid

* est à remplacer par 1, 2, 3, 4, 5 ou 6 en fonction du périphérique que l'on veut vérifier (md0, md1, md2, md3, md4, md5, md6).

  • mdadm --query /dev/md* permet de connaître la taille, le type de RAID et le nombre de partition qui composent le périphérique
  • mdadm --detail /dev/md* |less
  • on peut vérifier le type de raid ainsi que l'état du périphérique
  • q pour quitter

Démarrage avec un disque manquant

On arrête le système par halt. On débranche l'alimentation d'un disque dur puis on démarre le système. On se logue en root.

  • dans /var/mail, on doit trouver des emails d'information de DegradedArray event sur chaqu'un des /dev/md*
  • dans /var/log/dmesg, on doit voir des informations relatives au raid telle que raid level 5 set md* active with 2 out of 3 devices
  • mdadm --detail /dev/md* |less doit indiquer un des éléments comme removed

Navigez dans /, /tmp, /usr et /home, visualisez des fichiers, de façon à vérifier que le système fonctionne.

On arrête le système par halt. On rebranche l'alimentation du disque dur puis on démarre le système. On se logue en root. mdadm --detail /dev/md* montre toujours le disque qui a été débranché précédement comme removed. C'est tout à fait normal. Le disque était défectueux , il a été enlevé du périphérique multi-disque. On vient de remplacer ce disque et d'y re-créer les partitions nécessaires, il faut maintenant les réinsérer dans les périphérique multi-disque. C'est exactement se que nous ferions en cas de remplacement d'un disque défectueux. On doit donc effectuer les commandes suivantes:

  • mdadm --add /dev/md0 /dev/hd*1
  • mdadm --add /dev/md1 /dev/hd*6
  • mdadm --add /dev/md2 /dev/hd*7
  • mdadm --add /dev/md3 /dev/hd*8
  • mdadm --add /dev/md4 /dev/hd*9
  • mdadm --add /dev/md5 /dev/hd*10
  • mdadm --add /dev/md6 /dev/hd*11

* est à remplacer par a, b ou c en fonction du disque que l'on vient de remplacer .

Vous avez le temps d'aller prendre l'air car il y en a pour un moment ...

Attention, il faut impérativement attendre que toutes les synchronisations soient terminées avant de rebooter

L'ensemble des lignes ci-dessous doit avoir été affiché à l'écran:

md: md0: sync done
md: md1: sync done
md: md2: sync done
md: md3: sync done
md: md4: sync done
md: md5: sync done
md: md6: sync done
	  

Améliorations

Passage de la swap en RAID 5

Si, comme moi, vous changez d'avis et désirez mettre la swap en RAID 5 pour encore améliorer la sécurité (au détriment de la rapidité), voici les étapes à suivre. Nota, pour connaître la quantité de swap présente et utilisée, utilisez la commande free. Les opérations suivantes sont à effectuer en étant root. Bien entendu, on aurait pu choisir dès l'installation de créer le swap sur un périphérique RAID 5.

  • À l'heure actuelle, /etc/fstab ressemble à:
    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    proc            /proc           proc    defaults        0       0
    /dev/md1        /               ext3    defaults,errors=remount-ro 0       1
    /dev/md0        /boot           ext3    defaults        0       2
    /dev/md6        /home           ext3    defaults        0       2
    /dev/md2        /tmp            ext3    defaults        0       2
    /dev/md3        /usr            ext3    defaults        0       2
    /dev/md4        /var            ext3    defaults        0       2
    /dev/md5        /var/log        ext3    defaults        0       2
    /dev/hda5       none            swap    sw              0       0
    /dev/hdb5       none            swap    sw              0       0
    /dev/hdc5       none            swap    sw              0       0
    /dev/hdd        /media/cdrom0   iso9660 ro,user,noauto  0       0
    /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
    		  
  • on commente les lignes:
    #/dev/hda5       none            swap    sw              0       0
    #/dev/hdc5       none            swap    sw              0       0
    		  
  • on reboot (reboot) le système pour qu'il ne démarre qu'avec /dev/hdb5 comme swap,
  • on crée (-C) un périphérique en raid 5 (-l5) avec 3 partitions (-n3) dont une manquante (missing):
    mdadm --create /dev/md7 --level=5 --raid-devices=3 /dev/hda5 missing /dev/hdc5
  • on crée la swap sur /dev/md7:mkswap /dev/md7
  • on edite /etc/mdadm/mdadm.conf et on supprime toutes les lignes sauf la première:
    DEVICE partitions
  • mdadm --detail --scan >> /etc/mdadm/mdadm.conf
  • on édite /etc/fstab pour rajouter le nouveau périphérique RAID en swap:
    #/dev/hda5       none            swap    sw              0       0
    /dev/hdb5       none            swap    sw              0       0
    #/dev/hdc5       none            swap    sw              0       0
    /dev/md7        none            swap    sw              0       0
    		  
  • on reboot (reboot)
  • on édite /etc/fstab pour commenter la ligne de /dev/hdb5
    #/dev/hda5       none            swap    sw              0       0
    #/dev/hdb5       none            swap    sw              0       0
    #/dev/hdc5       none            swap    sw              0       0
    /dev/md7        none            swap    sw              0       0
    		  
  • on reboot (reboot)
  • on ajoute la dernière partition au périphérique RAID mdadm --add /dev/md7 /dev/hdb5
  • on attend que la synchronisation soit terminée
    md: md7: sync done
  • on edite /etc/mdadm/mdadm.conf et on supprime toutes les lignes sauf la première:
    DEVICE partitions
  • mdadm --detail --scan >> /etc/mdadm/mdadm.conf
  • on édite /etc/fstab pour supprimer les lignes précédement commentées. Il devient:
    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    proc            /proc           proc    defaults        0       0
    /dev/md1        /               ext3    defaults,errors=remount-ro 0       1
    /dev/md0        /boot           ext3    defaults        0       2
    /dev/md6        /home           ext3    defaults        0       2
    /dev/md2        /tmp            ext3    defaults        0       2
    /dev/md3        /usr            ext3    defaults        0       2
    /dev/md4        /var            ext3    defaults        0       2
    /dev/md5        /var/log        ext3    defaults        0       2
    /dev/md7        none            swap    sw              0       0
    /dev/hdd        /media/cdrom0   iso9660 ro,user,noauto  0       0
    /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
    		  

Suivi S.M.A.R.T

S.M.A.R.T signifie Self-Monitoring, Analysis and Reporting Technology.

Cette utilisation des smartmontools fait suite à la lecture de l'article Devenez S.M.A.R.T: surveillez vos disques paru dans GNU Linux Magazine N°68.

Afin de suivre la vie de nos disques dans le but de prévenir les défaillances, nous allons utiliser smartmontools http://smartmontools.sourceforge.net/ qui ira lire les informations S.M.A.R.T des disques. Pour des explications détaillées, voir le site des smartmontools.

Installation et activation

On installe les smartmontools et on active S.M.A.R.T avec sauvegarde et test offline pour ne pas trop affecter les temps de réponse.

  • apt-get installsmartmontools
  • smartctl --smart=on --offlineauto=on --saveauto=on /dev/hd*

* est à remplacer par a, b ou c en fonction du disque considéré.

État et test

  • smartctl -A /dev/hd* permet de connaître l'état des attributs S.M.A.R.T du disque considéré,
  • smartctl -t short /dev/hd* effectue un test court sur le disque considéré,
  • smartctl -t long /dev/hd* effectue un test long sur le disque considéré,
  • smartctl -l selftest /dev/hd* affiche le résultat du test sur le disque considéré,
  • smartctl -l error /dev/hd* affiche les dernières erreurs sur le disque considéré,

* est à remplacer par a, b ou c en fonction du disque considéré.

Email d'alerte

Afin d'être informé des changements d'état des disques par email, il faut éditer le fichier /etc/smartd.conf et modifier la partie DEVICESCAN pour définir les disques à surveiller.

# The word DEVICESCAN will cause any remaining lines in this
# configuration file to be ignored: it tells smartd to scan for all
# ATA and SCSI devices.  DEVICESCAN may be followed by any of the
# Directives listed below, which will be applied to all devices that
# are found.  Most users should comment out DEVICESCAN and explicitly
# list the devices that they wish to monitor.
# DEVICESCAN
/dev/hda -H -l error -l selftest -t -m a@b.com -s (S/../.././02|L/../../6/03)
/dev/hdb -H -l error -l selftest -t -m a@b.com -s (S/../.././01|L/../../6/04)
/dev/hdc -H -l error -l selftest -t -m a@b.com -s (S/../.././02|L/../../6/03)
	  

On sera ainsi informé si:

  • H, l'état SMART à évolué,
  • -l error, le journal d'erreur évolu,
  • -l selftest, le journal du test automatisé évolu,
  • -t, les attrributs ont évolués
  • -m a@b.com, envoi un email à l'adresse spécifiée,
  • -s (S/../.././02|L/../../6/03), effectue un test court chaque jours à 2 heures du matin et un test long le samedi à 3 heures du matin. On décale /dev/hdb par rapport à /dev/hda pour éviter d'avoir les deux disques sur la même interface IDE testés en même temps.

En lisant les commentaires de /etc/smartd.conf, vous découvrirez d'autres options.

Ne pas oublier de relancer par /etc/init.d/smartmontoolsrestart

Licence

Cette documentation est libre au sens de la 'GNU Free Documentation License' de la Free Software Foundation. Elle est fournie en l'état et sans aucune garantie.

Téléchargement

La documentation au format PDF: sarge_raid.pdf

Historique du document

Date Auteur Description des modifications
12 mars 2005 Alain JAFFRE Première version. L'ensemble des données se trouve dans un seul périphérique RAID 5. La configuration n'est pas bonne: redémarrage impossible en cas de crash du premier disque.
15 mars 2005 Alain JAFFRE Deuxième version. Découpage en plusieurs périphériques RAID 5, abandon de LVM (Logical Volume Manager). Cela fonctionne.
25 mars 2005 Alain JAFFRE Mise en forme et compléments sur les différents RAID pour publication. Ajout de la swap en RAID 5, après coup.
28 mars 2005 Alain JAFFRE Ajout de la section concernant l'utilisation des smartmontools pour suivre l'état des disques.
29 mars 2005 Alain JAFFRE Suite à un courriel de Franck (franck CHEZ linuxpourtous POINT com), ajout de la configuration de GRUB en cas de RAID 1 sur des disques SATA.