Configurer un RAID 1 logiciel sur un système Debian existant
Dernière mise à jour : 13/10/2016.
La technologie RAID permet d'offrir une capacité, une fiabilité et/ou des performances accrues au système qui la met en œuvre. RAID est l'acronyme de redundant array of independent disks (i.e. regroupement redondant de disques indépendants). Cette technologie consiste à regrouper plusieurs volumes physiques — disques durs ou partitions — pour ne former qu'un seul volume logique. Les intérêts diffèrent en fonction du niveau de RAID choisi.
Le RAID 0 mutualise l'espace disque offert par les volumes mis en œuvre et réduit le temps d'accès aux données. Le RAID 1 synchronise l'accès aux données sur l'ensemble des volumes mis en œuvre, chacun d'entre-eux étant le miroir des autres. Les autres niveaux de RAID (3, 4, 5, 6, 01, 10, 05, 15, 50, 51...) ne sont que des combinaisons plus ou moins complexes et avantageuses des deux premiers.
Ce système de contrôle peut être matériel ou logiciel. Il est généralement pris en compte à l'initiation d'un projet et déployé avant, ou durant, l'installation du système d'exploitation. Envisagé ultérieurement, il est plus complexe à mettre en œuvre.
Cet article décrit justement la configuration d'un RAID 1 logiciel sur un système Debian GNU/Linux pré-existant.
Distribution utilisée : Debian GNU/Linux 8.6 « Jessie »
RAID (article Wikipédia) : https://fr.wikipedia.org/wiki/RAID_(informatique)
Description du système existant
Pour les besoins de l'article, l'exemple se base sur une machine virtuelle disposant d'un disque dur constitué de deux partitions (/dev/sda1 pour le système et /dev/sda5 pour le swap) auquel est adjoint un second disque dur de même capacité (/dev/sdb). Le système d'exploitation est déjà installé sur la partition système.
L'objectif est de créer deux volumes RAID 1 (/dev/md0 pour le système et /dev/md1 pour le swap) constitués des disques /dev/sda et /dev/sdb sans perdre les données présentes sur le premier.
L'opération peut s'avérer dévastatrice pour les données contenues sur les disques. Il est fortement recommandé d'opérer des sauvegardes avant toute manipulation.
Configuration du RAID 1
Il est tout d'abord nécessaire de préparer le second disque à rejoindre le RAID, puis de créer les volumes RAID sans le premier disque ; lequel sera ajouté plus tard lorsqu'il ne sera plus monté. Il faut ensuite préparer le système existant à rejoindre lui aussi le RAID. Ce qui sera finalement fait après avoir redémarré sur la nouvelle configuration.
Il est probable que des choix ou des confirmations seront demandés par certaines commandes. Il est généralement recommandé de conserver le choix par défaut et/ou de confirmer la commande.
Dans un premier temps, il faut commencer par se connecter au système. Les étapes suivantes sont énoncées ci-dessous.
Se connecter en super-utilisateur :
su -
Installer mdadm, l'outil de gestion de volumes RAID logiciels :
aptitude install mdadm
Préparer le second disque à rejoindre le RAID
Cloner la table de partitions de /dev/sda sur /dev/sdb :
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Changer l'étiquette des partitions de /dev/sdb en « RAID Linux » :
fdisk /dev/sdb
Taper les commandes suivantes :
Commande (m pour l'aide) : t # Pour changer les étiquettes Numéro de partition (1,2,5, 5 par défaut) : 1 # Choix de la partition Code Hexa (taper L pour afficher tous les codes) : fd # Choix de l'étiquette Commande (m pour l'aide) : t Numéro de partition (1,2,5, 5 par défaut) : 5 Code Hexa (taper L pour afficher tous les codes) : fd Commande (m pour l'aide) : w # Appliquer la nouvelle configuration
Créer le RAID
Créer les volumes RAID 1 sans les partitions /dev/sda — lesquelles seront ajoutées ultérieurement, lorsque le système de fichiers correspondant ne sera plus monté :
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1 mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5
Formater /dev/md0 en ext4 et /dev/md1 en swap :
mkfs.ext4 /dev/md0 mkswap /dev/md1
Déclarer les volumes RAID 1 nouvellement créés dans le fichier de configuration /etc/mdadm/mdadm.conf :
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Préparer le système existant à rejoindre le RAID
Éditer le fichier /etc/fstab et changer l'attribution des partitions / et swap pour /dev/md0 et /dev/md1 :
vim /etc/fstab
Par exemple :
/dev/md0 / ext4 errors=remount-ro 0 1 /dev/md1 none swap sw 0 0
Configurer temporairement Grub afin de permettre le démarrage du système sur le RAID :
vim /etc/grub.d/09_raid1
Y coller ceci :
#!/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 'Debian GNU/Linux, avec Linux 3.16.0-4-amd64 en RAID 1' --class debian --class gnu-linux --class gnu --class os { load_video insmod gzio insmod raid insmod mdraid1x insmod part_msdos insmod ext2 set root='(md/0)' echo 'Loading Linux 3.16.0-4-amd64 ...' linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/md0 ro quiet echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.16.0-4-amd64 }
Rendre le fichier exécutable :
chmod +x /etc/grub.d/09_raid1
Désactiver temporairement l'usage de l'UUID par Grub :
vim /etc/default/grub
Décommenter la ligne suivante :
#GRUB_DISABLE_LINUX_UUID=true
Mettre à jour la configuration de Grub :
update-grub update-initramfs -u
Copier le contenu du premier disque sur le RAID
Créer temporairement un point de montage pour /dev/md0 :
mkdir /mnt/md0
Monter le volume correspondant :
mount /dev/md0 /mnt/md0
Copier l'intégralité de / sur /dev/md0 :
cp -apx / /mnt/md0
Redémarrer le système, qui devrait se lancer sur le RAID :
reboot
Ajouter le premier disque au RAID
Une fois le système redémarré, se connecter en super-utilisateur :
su -
Changer l'étiquette des partitions de /dev/sda en « RAID Linux » :
fdisk /dev/sda
Taper les commandes suivantes :
Commande (m pour l'aide) : t # Pour changer les étiquettes Numéro de partition (1,2,5, 5 par défaut) : 1 # Choix de la partition Code Hexa (taper L pour afficher tous les codes) : fd # Choix de l'étiquette Commande (m pour l'aide) : t Numéro de partition (1,2,5, 5 par défaut) : 5 Code Hexa (taper L pour afficher tous les codes) : fd Commande (m pour l'aide) : w # Appliquer la nouvelle configuration
Ajouter les partitions de /dev/sda aux volumes RAID :
mdadm --add /dev/md0 /dev/sda1 mdadm --add /dev/md1 /dev/sda5
Surveiller la progression de la synchronisation des volumes RAID :
watch cat /proc/mdstat
Une fois l'opération effectuée, quitter avec Ctrl+C.
Finaliser la configuration du nouvel environnement
Supprimer la configuration manuelle de Grub :
rm /etc/grub.d/09_raid1
Réactiver l'usage de l'UUID par Grub :
vim /etc/default/grub
Commenter la ligne suivante :
GRUB_DISABLE_LINUX_UUID=true
Mettre à jour la configuration de Grub :
update-grub update-initramfs -u
Installer Grub sur les deux systèmes de fichiers, /dev/sda et /dev/sdb :
grub-install --recheck /dev/sda grub-install --recheck /dev/sdb
Supprimer le point de montage /mnt/md0 :
rmdir /mnt/md0
Redémarrer le système :
reboot
Et voilà ! Si tout s'est bien passé, le RAID 1 est correctement déployé. Ne reste plus qu'à le gérer comme toute autre infrastructure RAID qui aurait été configurée dès l'installation du système d'exploitation.
Source : www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-syst...
Article sous licence Creative Commons BY-SA 3.0 France.
Publié le
Vendredi 10 janvier 2014 à 18h56Ajouter un commentaire
Flux RSS des commentaires de cet article.
Commentaires
Julien L. a répondu le Permalien
Merci pour cette introduction à RAID. Avant la lecture de cet article, ce sujet était resté un peu abstrait pour moi.
Je me suis demandé ce que l'étiquette « fd » pouvait représenter. J'ai trouvé la réponse dans la source indiquée à la fin de l'article. Cela représente « Linux RAID autodetect ». Donc, si je comprends bien, on laisse le RAID s'occuper du type de système de fichiers. Mais concrètement, avec quel type de système de fichiers seront stockées les données sur les partitions. Si je prends un des deux disques durs, et que je le place dans un autre ordinateur, est-ce que je pourrais monter ses partitions ?
Merci de ta réponse.
Cyp a répondu le Permalien
Salut Julien et merci pour ton commentaire !
Il ne s'agit que d'un étiquetage, qui renseigne plus sur la table de partitions que sur le format du système de fichiers utilisé. Les partitions sont ici bel et bien en ext4. Si tu montes l'un des disques durs sur une autre machine, tu devrais normalement pouvoir monter ses partitions. Même démarrer dessus.
Rigius a répondu le Permalien
Merci beaucoup,
Les instructions ont fonctionné correctement sur une Debian Stretch (/dev/sda : SSD 256 Go ; /dev/sdb : HDD 2 To ; / sur /dev/sda1 et /home sur /dev/sda6 ; pour finir, les partitions /dev/sdb ont été configurées en « writemostly » avec « echo writemostly > /sys/block/md0/md/dev-sdb1/state » et « echo writemostly > /sys/block/md1/md/dev-sdb6/state »).
A+