Le raid 1 permet de dupliquer les informations sur au moins 2 disques. En cas de défaillance d’un disque, les informations ne sont pas perdues car il reste au moins une copie. On peut donc utiliser le raid 1 pour éviter la perte de données. Il peut aussi servir à éviter une interruption de service en utilisant une configuration qui autorise le démarrage sur n’importe quel des disques valide. Le besoin d’utiliser du raid survient en général pour le particulier après un sinistre où même les sauvegardes ne protègent pas contre les interruptions de service. Après avoir réinstaller son système l’utilisateur envisage alors de se prémunir de futures pannes. Le contexte de ce billet est donc la mise en place d’un raid 1 sur un système existant.
Notre système de départ est une installation Ubuntu desktop typique avec un disque /dev/sda partitionné en 2
- /dev/sda1 pour le système
- /dev/sda2 pour le swap
Pour monter le raid1 on ajoute un second disque à la machine. Ce disque doit être au moins aussi gros que celui en place qui dans notre cas fait 640 Go. On choisit donc un nouveau disque de 2 To qui nous coûte 3,4 centimes le Go !
Une fois le disque en place on installe les outils pour administrer le RAID et créer l’image de démarrage:
sudo apt-get install initramfs-tools mdadm
On charge le module raid1:
sudo modprobe raid1
On copie ensuite la table de partition du disque original /dev/sda sur le nouveau /dev/sdb. Cela évite de partionner à la main:
sudo sfdisk -d /dev/sda | sfdisk --force /dev/sdb
A ce stade le disque /dev/sdb possède un espace libre après la partition de swap. On pourra formater celle-ci ensuite pour avoir un espace de stockage. Cela est une autre histoire.
Mais continuons plutôt la mise en place de notre raid1. On peut avantageusement utiliser l’outil gparted pour ajouter le drapeau raid aux partition /dev/sdb1 et /dev/sdb2.
Maintenant on va créer les grappes raid. Une grappe est constituée de plusieurs disques ou partitions fusionnés en un disque raid. Dans notre cas on va créer une grappe constituée de 2 partitions pour accueillir le système. Chaque partition étant sur un disque physique différent. Il en va de même pour la partition de swap. Les commandes suivantes créent les grappes en omettant le premier disque car ce dernier est actuellement en cours d’utilisation.
sudo mdadm --create /dev/md0 --level=1 --raid-disk=2 missing /dev/sdb1 sudo mdadm --create /dev/md1 --level=1 --raid-disk=2 missing /dev/sdb2
La commande posera une question disant que la grappe utilisera les métadata 1.2. Il suffit de répondre yes car GRUB2 sait gérer cela.
On peut alors formatter le disque raid /dev/md0. Il n’y a pas de souci à avoir car la grappe ne contient pour l’instant que le nouveau disque /dev/sdb
sudo mkfs.ext4 /dev/md0 sudo mkswap /dev/md1
On va configurer mdadm, cela se fait automatiquement par la commande suivante:
sudo mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Il nous reste à préparer le prochain démarrage qui se fera sur le raid. On va modifier les fichiers /etc/fstab et /boot/grub/grub.cfg.
Dans /etc/fstab il faut remplacer la partition système /dev/sda1 par /dev/md0 et la partition swap /dev/sda2 par /dev/md1. Attention Ubuntu 11.04 se base sur les UUID au lieu des chemin /dev/XXX. Se repérer sur les points de montage. Le système est sous / tandis que le swap n’est pas monté (valeur none).
Dans le fichier /etc/mtab on peut également changer /dev/sda1 par /dev/md0
Le paramétrage de Grub2 est différent que le l’ancien Grub. Le fichier /boot/grug/grub.cfg est en effet en lecture seule et il est recrée à partit d’autres fichiers. Nous allons créer un fichier de menu personnalisé pour redémarrer le système sur notre raid1.
cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup vim /etc/grub.d/09_swraid1_setup
Voici le contenu du fichier 09-swraid1_setup qu’il faut adapter en fonction du nom du noyau que vous obtenez en faisant un uname -r
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Ubuntu, avec Linux 2.6.38-8-generic' --class debian --class gnu-linux --class gnu --class os {
insmod raid
insmod mdraid1x
insmod part_msdos
insmod ext2
set root='(md/0)'
echo 'Loading Linux 2.6.38-8-generic ...'
linux /boot/vmlinuz-2.6.38-8-generic root=/dev/md0 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.38-8-generic
}
Attention le module mdraid1x est nécessaire pour pouvoir lire le disque raid avec metadonnée 1.2
On peut aussi désactiver dans GRUB2 l’usage de UUID puisque l’on définie les disque par /dev/XXX. Aller dans le fichier /etc/default/grub pour décommenter la ligne
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux GRUB_DISABLE_LINUX_UUID=true
Disons à grub2 de regénérer le fichier de grub.cfg
sudo update-grub
Et recréons un fichier ramdisk (utilisé au démarrage)
sudo update-initramfs -u
Copions le disque original sur le disque raid (constitué que d’un seul disque /dev/sdb1 pour l’instant). La commande suivante peut être longue (plusieurs dizaines de minutes) selon la quantité de données.
sudo cp -dpRx /boot /mnt/md0
On s’assure que GRUB2 est installé sur le disque sdb
sudo grub-install /dev/sdb
Maintenant on redémarre la machine
Quand la machine a redémarré, le système est alors sur le RAID (/dev/md0) et le disque /dev/sda n’est pas utilisé. On peut alors ajouter le disque /dev/sda dans le RAID.
A l’aide de gparted, ajouter le drapeau raid aux partitions /dev/sda1 et /dev/sda2. Puis ajouter les dans le RAID avec les commandes suivantes:
sudo mdadm --add /dev/md0 /dev/sda1 sudo mdadm --add /dev/md1 /dev/sda2
Attendre que le raid se synchronise i.e la partitions /dev/sdb1 et /dev/sdb2 respectivement se copie sur /dev/sda1 et /dev/sda2 respectivement. La commande suivante permet de visualiser le processus:
sudo watch cat /proc/mdstat
Quand c’est terminé il reste à reconfigurer mdadm et grub pour les prochains démarrages.
Le fichier /etc/mdadm/mdadm.conf se met à jour avec la même commande vue plus haut:
sudo mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Le démarrage n’a plus besoin de l’entrée Grub utilisé pour lancer le système sur /dev/md0 alors qu’il était chargé depuis /dev/sda. Maintenant grub doit être capable de se configurer automatiquement avec
sudo rm -f /etc/grub.d/09_swraid1_setup sudo update-grub sudo update-initramfs -u
On s’assure que les 2 disques contiennent bien Grub
sudo grub-install /dev/sda sudo grub-install /dev/sdb
Et voilà, on peut redémarrer le système.
Tags: GNU GRUB Raid1 Ubuntu
Bonjour,
Je ne comprends pas trop le « sudo cp -dpRx /boot /mnt/md0 »
Le /mnt/md0 est juste la partition /boot ? Où ce trouvent les autres partitions ( / et /home par exemple) ?
Sinon bon article.
Bonjour, vous avez raison, il y a une erreur. Je crois que je voulais dire / au lieu de /boot…
Bonjour,
1.-Je voudrais installer un RAID1 en suivant votre tuto: installation d’un RAID 1 sur Ubuntu 11.04 existante.
J’ai installé un 2eme disque dur absolument identique au 1er.
Je l’ai monté, il apparaît bien dans « Mon dossier personnel » sous le nom de « système de fichiers 320Go » (montage fait dans /media/apt ), mais a chaque démarrage pour qu’il soit monté il faut que je double clique dessus alors le petit triangle gris apparaît à droite et le dossier last+found.
Comment faire pour qu’il reste monté tout le temps? Je n’ai pas pu modifier etc/fstab : lecture seule.
2.-J’ai quand mème commencé votre tuto:
1ère Cde install…..mdadm ok
2ème Cde modprob raid1 ok
3ème Cde copie de la table de partition (impossible « sfdisk : ne peut ouvrir /dev/sdb en lecture/écriture).
Ma config:
Ubuntu 11.10
Carte mère:ASUS P5Q
Processeur: Intel Cor 2 QUAD 6600
RAM: 2 Go
Disque dur : Seagate Barracuda 320Go (sda)
Merci de votre aide
Bonjour,
Il ne faut pas monter le deuxieme disque sinon on ne peut pas faire de sfdisk. Si le 2e disque est monté par le bureau gnome, démonter le en accédant au menu contextuel sur le disque.
Pour ce qui est de votre impossibilité à modifier le fstab: êtes vous sûr de le modifier en root (sudo vim /etc/fstab) ?
Cdt.
Bonjour,
Merci de votre réponse.
J’ai démonté sdb ,iln’apparait plus dans :dossier personnel > périphériques, il apparait toujours dans GParted avec lesindications suivante:
Non alloué : 298.09 Gio
Partition non alloué
Système de fichiers : non alloué
Utilisé: –
Inutilisé: –
Drapeaux: –
Je suis reparti de zéro , mais à la 3ème commande j’obtiens toujours le même résultat:
update-initramfs: deferring update (trigger activated)
* Starting MD monitoring service mdadm –monitor [ OK ]
Traitement des actions différées (« triggers ») pour « initramfs-tools »…
update-initramfs: Generating /boot/initrd.img-3.0.0-17-generic
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
brunet@brunet-P5Q:~$ sudo modprobe raid1
brunet@brunet-P5Q:~$ sudo sfdisk -d /dev/sda | sfdisk –force /dev/sdb
/dev/sdb: Permission non accordée
sfdisk: ne peut ouvrir /dev/sdb en lecture/écriture
Avertissement : la partition étendue ne débute pas sur une frontière de
cylindres. DOS et Linux interpréteront les contenus différemment.
brunet@brunet-P5Q:~$
Il y a QQ chose que j’ai du mal faire
Merci encore