Il s'agit de la deuxième version. La première n'avait pas passé les tests:
Avec les tests que j'ai réalisé pour le moment (voir plus loin), cela semble fonctionner correctement.
⇑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é.
⇑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.
⇑
Dans ce qui suit, les textes comme celui-ci
correspondent à
des commandes à taper en ligne de commande.
La configuration sur laquelle on va installé du RAID logiciel est la suivante:
Définition succinte de différentes version de RAID:
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 ...
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é.
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 |
L'installation se fait en bootant en linux26 afin d'avoir un noyau 2.6.
grub
root (hd0,0)
setup (hd0)
setup (hd1)
setup (hd2)
quit
On a:
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:
grub
root (hd0,0)
setup (hd0)
device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)
quit
apt-get install mc libglib2.0-data
mc nous permettra de naviger dans les répertoires et visualiser les fichiers de logs, de mail, ...
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*
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.
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
* 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 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.
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⇑
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.
# /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
#/dev/hda5 none swap sw 0 0 #/dev/hdc5 none swap sw 0 0
reboot
) le système pour qu'il ne
démarre qu'avec /dev/hdb5 comme swap,
mdadm --create /dev/md7 --level=5 --raid-devices=3 /dev/hda5 missing /dev/hdc5
mkswap /dev/md7
DEVICE partitions
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
#/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
reboot
)#/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
reboot
)mdadm --add /dev/md7 /dev/hdb5
md: md7: sync done
DEVICE partitions
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# /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
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.
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é.
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é.
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:
En lisant les commentaires de /etc/smartd.conf, vous découvrirez d'autres options.
Ne pas oublier de relancer par
/etc/init.d/smartmontoolsrestart
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.
⇑La documentation au format PDF: sarge_raid.pdf
⇑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. |