Guide des technologies

Basculer vers RAID1 avec mdadm — création et configuration

5 min read Administration système Mis à jour 16 Oct 2025
Basculer vers RAID1 avec mdadm
Basculer vers RAID1 avec mdadm

Ce guide explique comment créer des ensembles RAID1 dégradés, formater et monter les systèmes de fichiers, adapter la configuration système (mdadm, fstab, mtab), installer GRUB sur les deux disques et redémarrer pour booter depuis les tableaux RAID. Suivez les commandes pas à pas, vérifiez l’état avec /proc/mdstat et préparez un plan de restauration si le démarrage échoue.

4 Création de nos ensembles RAID

Nous allons créer les ensembles RAID /dev/md0, /dev/md1 et /dev/md2. /dev/hdb1 sera ajouté à /dev/md0, /dev/hdb5 à /dev/md1 et /dev/hdb6 à /dev/md2. Les partitions /dev/hda1, /dev/hda5 et /dev/hda6 ne peuvent pas être ajoutées pour l’instant (le système tourne dessus), nous utiliserons le placeholder missing dans les trois commandes suivantes :

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/hdb1  
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/hdb5  
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/hdb6

La commande suivante doit maintenant indiquer que vous avez trois ensembles RAID dégradés ([U] ou [U] signifie qu’un membre manque; [UU] signifie que l’ensemble est sain) :

cat /proc/mdstat

Exemple de sortie :

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md2 : active raid1 hdb6[1]  
      4642688 blocks [2/1] [_U]  
  
md1 : active raid1 hdb5[1]  
      417536 blocks [2/1] [_U]  
  
md0 : active raid1 hdb1[1]  
      176576 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Ensuite, créez les systèmes de fichiers sur les ensembles RAID (ext3 sur /dev/md0 et /dev/md2, swap sur /dev/md1) :

mkfs.ext3 /dev/md0  
mkswap /dev/md1  
mkfs.ext3 /dev/md2

Maintenant, mettez à jour /etc/mdadm.conf (le fichier ne contient pas encore d’information sur les nouveaux ensembles) :

cp /etc/mdadm.conf /etc/mdadm.conf_orig  
mdadm --examine --scan >> /etc/mdadm.conf

Affichez le contenu :

cat /etc/mdadm.conf

Vous devriez voir les détails des trois ensembles RAID (même s’ils sont dégradés) :

# mdadm configuration file
#
# mdadm will function properly without the use of a configuration file,
# but this file is useful for keeping track of arrays and member disks.
# In general, a mdadm.conf file is created, and updated, after arrays
# are created. This is the opposite behavior of /etc/raidtab which is
# created prior to array construction.
#
#
# the config file takes two types of lines:
#
#       DEVICE lines specify a list of devices of where to look for
#         potential member disks
#
#       ARRAY lines specify information about how to identify arrays so
#         so that they can be activated
#
# You can have more than one device line and use wild cards. The first
# example includes SCSI the first partition of SCSI disks /dev/sdb,
# /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second
# line looks for array slices on IDE disks.
#
#DEVICE /dev/sd[bcdjkl]1
#DEVICE /dev/hda1 /dev/hdb1
#
# If you mount devfs on /dev, then a suitable way to list all devices is:
#DEVICE /dev/discs/*/*
#
#
#
# ARRAY lines specify an array to assemble and a method of identification.
# Arrays can currently be identified by using a UUID, superblock minor number,
# or a listing of devices.
#
#       super-minor is usually the minor number of the metadevice
#       UUID is the Universally Unique Identifier for the array
# Each can be obtained using
#
#       mdadm -D 
#
#ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371
#ARRAY /dev/md1 super-minor=1
#ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1
#
# ARRAY lines can also specify a "spare-group" for each array.  mdadm --monitor
# will then move a spare between arrays in a spare-group if one array has a failed
# drive but no spare
#ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1
#ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1
#
# When used in --follow (aka --monitor) mode, mdadm needs a
# mail address and/or a program.  This can be given with "mailaddr"
# and "program" lines to that monitoring can be started using
#    mdadm --follow --scan & echo $! > /var/run/mdadm
# If the lines are not found, mdadm will exit quietly
#MAILADDR [email protected]
#PROGRAM /usr/sbin/handle-mdadm-events
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6b4f013f:6fe18719:5904a9bd:70e9cee6
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=63194e2e:c656857a:3237a906:0616f49e
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=edec7105:62700dc0:643e9917:176563a7

5 Adapter le système à RAID1

Montez /dev/md0 et /dev/md2 (nous n’avons pas besoin de monter la partition swap /dev/md1) :

mkdir /mnt/md0  
mkdir /mnt/md2
mount /dev/md0 /mnt/md0  
mount /dev/md2 /mnt/md2

Vérifiez avec :

mount

Exemple :

[root@server1 ~]# mount  
/dev/hda6 on / type ext3 (rw,relatime)  
none on /proc type proc (rw)  
/dev/hda1 on /boot type ext3 (rw,relatime)  
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
/dev/md2 on /mnt/md2 type ext3 (rw)  
[root@server1 ~]#

Modifiez ensuite /etc/fstab : remplacez /dev/hda1 par /dev/md0, /dev/hda5 par /dev/md1 et /dev/hda6 par /dev/md2. Le fichier devrait ressembler à ceci :

vi /etc/fstab
/dev/md2 / ext3 relatime 1 1
/dev/md0 /boot ext3 relatime 1 2
/dev/cdrom /media/cdrom auto umask=0022,users,iocharset=utf8,noauto,ro,exec 0 0
/dev/fd0 /media/floppy auto umask=0022,users,iocharset=utf8,noauto,exec,flush 0 0
none /proc proc defaults 0 0
/dev/md1 swap swap defaults 0 0

Remplacez aussi /dev/hda1 par /dev/md0 et /dev/hda6 par /dev/md2 dans /etc/mtab (vous pouvez ignorer les deux lignes /dev/md à la fin) :

vi /etc/mtab
/dev/md2 / ext3 rw,relatime 0 0
none /proc proc rw 0 0
/dev/md0 /boot ext3 rw,relatime 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/md0 /mnt/md0 ext3 rw 0 0
/dev/md2 /mnt/md2 ext3 rw 0 0

Préparer GRUB pour booter depuis les disques RAID

Ouvrez /boot/grub/menu.lst et ajoutez fallback 1 juste après default 0 :

vi /boot/grub/menu.lst
[...]
default 0
fallback 1
[...]

Cela permet au chargeur d’essayer le second noyau si le premier échoue (compte commencant à 0).

Dupliquez ensuite la première strophe du noyau en haut de la liste et remplacez root=/dev/hda6 par root=/dev/md2 et (hd0,0) par (hd1,0). Si vous avez resume=/dev/hda5, remplacez par resume=/dev/md1 :

[...]
title linux
kernel (hd1,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2  resume=/dev/md1
initrd (hd1,0)/initrd.img

title linux
kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/hda6  resume=/dev/hda5
initrd (hd0,0)/initrd.img

Le fichier complet devrait ressembler à :

timeout 10
color black/cyan yellow/cyan
default 0
fallback 1

title linux
kernel (hd1,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2  resume=/dev/md1
initrd (hd1,0)/initrd.img

title linux
kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/hda6  resume=/dev/hda5
initrd (hd0,0)/initrd.img

title failsafe
kernel (hd0,0)/vmlinuz BOOT_IMAGE=failsafe root=/dev/hda6  failsafe
initrd (hd0,0)/initrd.img

(hd1,0) correspond à /dev/hdb, déjà intégré à nos ensembles RAID. Nous allons redémarrer dans quelques étapes : le système tentera de démarrer depuis les RAID dégradés ; en cas d’échec il basculera sur /dev/hda grâce à fallback 1.

Mettez à jour l’initrd pour qu’il connaisse les nouveaux ensembles :

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig  
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

Copiez ensuite les contenus actuels des partitions de démarrage et racine vers les nouveaux points de montage :

cp -dpRx / /mnt/md2
cd /boot  
cp -dpRx . /mnt/md0

6 Préparer GRUB (partie 1)

Installez le chargeur GRUB sur le second disque /dev/hdb :

grub

Dans le shell grub, saisissez :

root (hd0,0)

Exemple de dialogue :

grub> root (hd0,0)  
 Filesystem type is ext2fs, partition type 0x83  
  
grub>

Ensuite :

setup (hd0)

Exemple de sortie :

grub> setup (hd0)  
 Checking if "/boot/grub/stage1" exists... no  
 Checking if "/grub/stage1" exists... yes  
 Checking if "/grub/stage2" exists... yes  
 Checking if "/grub/e2fs_stage1_5" exists... yes  
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.  
 succeeded  
 Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/menu.lst"... succeeded  
 Done.  
  
grub>

Répétez pour l’autre disque :

root (hd1,0)
gr ub> root (hd1,0)  
 Filesystem type is ext2fs, partition type 0xfd  
  
grub>

Puis :

setup (hd1)
grub> setup (hd1)  
 Checking if "/boot/grub/stage1" exists... no  
 Checking if "/grub/stage1" exists... yes  
 Checking if "/grub/stage2" exists... yes  
 Checking if "/grub/e2fs_stage1_5" exists... yes  
 Running "embed /grub/e2fs_stage1_5 (hd1)"...  15 sectors are embedded.  
 succeeded  
 Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/menu.lst"... succeeded  
 Done.  
  
grub>

Puis quittez :

quit

De retour dans le shell normal, redémarrez et vérifiez que le système boot depuis les ensembles RAID :

reboot

Checklists et contrôles rapides

Checklist avant reboot

  • Confirmer que /proc/mdstat montre les 3 ensembles dégradés mais actifs.
  • Vérifier la présence des lignes ARRAY dans /etc/mdadm.conf.
  • Vérifier /etc/fstab et /etc/mtab pour pointer sur /dev/md*.
  • Recréer initrd et copier /boot et / sur les points de montage RAID.
  • Installer GRUB sur les deux disques et tester les commandes grub setup.

Critères d’acceptation

  • Le système redémarre sans intervention et monte /dev/md2 comme /.
  • /boot est monté sur /dev/md0.
  • La swap est activée depuis /dev/md1.
  • mdadm.shows [UU] après reconstruction complète.

Rôles et responsabilités

  • Administrateur Système : exécute les commandes, valide la configuration et effectue le redémarrage.
  • Opérateur en salle : présence physique si un échec matériel nécessite intervention.
  • Responsable sauvegarde : valider la disponibilité des sauvegardes avant les opérations.

Matrice des risques et mitigations

  • Risque : échec du démarrage depuis RAID dégradé. Mitigation : fallback 1 vers disque original et présence d’une console série ou KVM.
  • Risque : corruption pendant la copie. Mitigation : vérifier checksums ou avoir sauvegarde hors site.
  • Risque : erreurs GRUB. Mitigation : conserver une clé USB de secours bootable.

Dépannage rapide

  • mdadm ne reconnaît pas un disque : relancer mdadm –examine –scan et vérifier les partitions.
  • Le système ne boote pas : démarrer en mode Rescue, monter les partitions RAID et vérifier menu.lst/menu.lst et initrd.
  • Après réinsertion d’un disque, reconstruire l’ensemble : mdadm –add /dev/mdX /dev/sdY

Factbox — commandes clés

  • Afficher état RAID : cat /proc/mdstat
  • Créer RAID : mdadm –create
  • Scanner et écrire mdadm.conf : mdadm –examine –scan >> /etc/mdadm.conf
  • Formater : mkfs.ext3, mkswap
  • Installer GRUB : grub -> root (hdX,Y) -> setup (hdX)

Résumé

Ce guide décrit la procédure complète pour migrer un système en production vers RAID1 en conservant la possibilité de retomber sur le disque original (fallback). Testez chaque étape sur une machine non critique avant de l’appliquer en production. Conservez des sauvegardes et un plan de restauration avant toute opération de bas niveau.

Auteur
Édition

Matériaux similaires

Installer et utiliser Podman sur Debian 11
Conteneurs

Installer et utiliser Podman sur Debian 11

Guide pratique : apt-pinning sur Debian
Administration système

Guide pratique : apt-pinning sur Debian

OptiScaler : activer FSR 4 dans n'importe quel jeu
Jeux PC

OptiScaler : activer FSR 4 dans n'importe quel jeu

Dansguardian + Squid NTLM sur Debian Etch
réseau

Dansguardian + Squid NTLM sur Debian Etch

Corriger l'erreur d'installation Android sur SD
Android, Dépannage

Corriger l'erreur d'installation Android sur SD

KNetAttach et remote:/ — Dossiers réseau KDE
Tutoriel

KNetAttach et remote:/ — Dossiers réseau KDE