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.

RAID 1
RAID 1 (© C. Burnett)

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 à 18h56

Commentaires

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.

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.

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+

Ajouter un commentaire

HTML filtré

  • Balises HTML autorisées : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p>
  • Textual smiley will be replaced with graphical ones.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Texte brut

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Flux RSS des commentaires de cet article.