Configurer un RAID 1 logiciel sur un système Debian existant

RAID 1

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.

Vus : 2730
Publié par Cyprien Pouzenc : 27