Guide des technologies

Créer des volumes RAID1 et migrer les données (/boot et LVM)

8 min read Système Mis à jour 11 Oct 2025
RAID1 et LVM — créer et migrer /boot et volumes
RAID1 et LVM — créer et migrer /boot et volumes

Ce guide explique, étape par étape, comment créer deux ensembles RAID1 (/dev/md0 et /dev/md1) avec mdadm, préparer /dev/md1 pour LVM, migrer les volumes LVM existants depuis /dev/sda vers /dev/sdb, et mettre à jour le chargeur d’amorçage GRUB afin de booter sur le RAID. Les commandes, exemples de sortie et vérifications sont fournis. Important : testez en environnement non critique avant production.

Objectif principal et variantes de recherche

Objectif principal : créer des ensembles RAID1 et migrer les données LVM et /boot sans interruption prolongée. Variantes : créer RAID1 avec mdadm; configurer LVM sur RAID; migrer pvmove LVM vers RAID; configurer GRUB pour booter depuis RAID; synchronisation mdadm; mise à jour initramfs.

Contexte rapide

Définitions en une ligne

  • RAID1 : miroir de disques pour redondance. 1 ligne.
  • mdadm : utilitaire Linux pour gérer les ensembles RAID logiciels. 1 ligne.
  • LVM : gestion de volumes logiques (Logical Volume Manager). 1 ligne.

Important

  • Sauvegardez : avant toute manipulation, faites une sauvegarde complète. Une erreur sur les partitions ou sur le montage peut rendre votre système non amorçable.
  • Mode lecture : suivez les commandes exactement et vérifiez les sorties avant d’exécuter les actions destructrices.

4 Création de nos ensembles RAID

Maintenant, créons nos ensembles RAID /dev/md0 et /dev/md1. /dev/sdb1 sera ajouté à /dev/md0 et /dev/sdb5 à /dev/md1. /dev/sda1 et /dev/sda5 ne peuvent pas être ajoutés immédiatement (le système tourne dessus). Nous utilisons donc le placeholder missing dans les deux commandes suivantes :

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
  mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5

Vous pouvez voir le message suivant pour chaque commande — tapez y pour continuer :

root@server1:~# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5  
mdadm: Note: this array has metadata at the start and  
may not be suitable as a boot device.  If you plan to  
store '/boot' on this device please ensure that  
your boot-loader understands md/v1.x metadata, or use  
--metadata=0.90  
Continue creating array? <-- y  
mdadm: Defaulting to version 1.2 metadata  
mdadm: array /dev/md1 started.  
root@server1:~#

Explication courte

  • Le placeholder missing permet de démarrer l’array avec un disque présent et un emplacement réservé. Après migration, vous pourrez ajouter le second disque réel.
  • mdadm signale parfois que la métadonnée 1.2 n’est pas optimisée pour /boot ; 0.90 place la superblocs en fin de partition et est compatible boot sur certains systèmes anciens. Si vous utilisez GRUB2 moderne, 1.2 fonctionne, mais vérifiez la compatibilité de votre chargeur.

Vérification de l’état RAID

La commande suivante doit montrer deux ensembles RAID dégradés ([U] ou [U] signifie qu’un disque manque ; [UU] signifie que l’ensemble est sain) :

cat /proc/mdstat

Exemple d’affichage :

root@server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sdb5[1]  
4989940 blocks super 1.2 [2/1] [_U]  
  
md0 : active raid1 sdb1[1]  
248820 blocks super 1.2 [2/1] [_U]  
  
unused devices:   
root@server1:~#

Créer un système de fichiers sur l’ensemble non LVM (/dev/md0)

mkfs.ext2 /dev/md0

Préparer l’ensemble LVM (/dev/md1)

Convertissez /dev/md1 en physical volume LVM :

pvcreate /dev/md1

Puis ajoutez /dev/md1 au groupe de volumes (ici server1) :

vgextend server1 /dev/md1

Vérifiez les PV disponibles :

pvdisplay

Exemple de sortie :

root@server1:~# pvdisplay  
--- Physical volume ---  
PV Name               /dev/sda5  
VG Name               server1  
PV Size               4.76 GiB / not usable 2.00 MiB  
Allocatable           yes (but full)  
PE Size               4.00 MiB  
Total PE              1218  
Free PE               0  
Allocated PE          1218  
PV UUID               8p9j8i-cc9a-bAJq-LFP9-CBMF-JrPl-SDbx4X  
  
--- Physical volume ---  
PV Name               /dev/md1  
VG Name               server1  
PV Size               4.76 GiB / not usable 1012.00 KiB  
Allocatable           yes  
PE Size               4.00 MiB  
Total PE              1218  
Free PE               1218  
Allocated PE          0  
PV UUID               W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS  
  
root@server1:~#

Vérifiez le groupe de volumes :

vgdisplay

Exemple :

root@server1:~# vgdisplay  
--- Volume group ---  
VG Name               server1  
System ID  
Format                lvm2  
Metadata Areas        2  
Metadata Sequence No  4  
VG Access             read/write  
VG Status             resizable  
MAX LV                0  
Cur LV                2  
Open LV               2  
Max PV                0  
Cur PV                2  
Act PV                2  
VG Size               9.52 GiB  
PE Size               4.00 MiB  
Total PE              2436  
Alloc PE / Size       1218 / 4.76 GiB  
Free  PE / Size       1218 / 4.76 GiB  
VG UUID               m99fJX-gMl9-g2XZ-CazH-32s8-sy1Q-8JjCUW  
  
root@server1:~#

Mettre à jour mdadm.conf

Copiez le fichier de configuration existant et ajoutez les arrays détectés :

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

Afficher le fichier :

cat /etc/mdadm/mdadm.conf

Vous devriez voir les détails des deux arrays (ici format conservé) :

| # mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays # This file was auto-generated on Tue, 24 May 2011 21:11:37 +0200 # by mkconf 3.1.4-1+8efb9d1 ARRAY /dev/md/0 metadata=1.2 UUID=6cde4bf4:7ee67d24:b31e2713:18865f31 name=server1.example.com:0 ARRAY /dev/md/1 metadata=1.2 UUID=3ce9f2f2:ac89f75a:530c5ee9:0d4c67da name=server1.example.com:1 |

Modifier /etc/fstab pour utiliser /dev/md0 comme /boot

Éditez /etc/fstab et commentez l’entrée /boot précédente. Ajoutez la ligne qui monte /dev/md0 sur /boot :

vi /etc/fstab

Le fichier doit contenir :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
proc            /proc           proc    defaults        0       0
/dev/mapper/server1-root /               ext3    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
#UUID=9b817b3e-2cea-4505-b1be-5ca9fd67f2ff /boot           ext2    defaults        0       2
/dev/md0 /boot           ext2    defaults        0       2
/dev/mapper/server1-swap_1 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Remplacez /dev/sda1 par /dev/md0 dans /etc/mtab

vi /etc/mtab

Le fichier mis à jour doit contenir :

/dev/mapper/server1-root / ext3 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
/dev/md0 /boot ext2 rw 0 0

Configurer GRUB2 pour booter sur le RAID

Créez le fichier /etc/grub.d/09_swraid1_setup en copiant 40_custom puis en éditant :

cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
vi /etc/grub.d/09_swraid1_setup

Contenu attendu :

#!/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, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
        insmod raid
        insmod mdraid
        insmod part_msdos
        insmod ext2
        set root='(md/0)'
        echo    'Loading Linux 2.6.32-5-amd64 ...'
        linux   /vmlinuz-2.6.32-5-amd64 root=/dev/mapper/server1-root ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-2.6.32-5-amd64
}

Conseils

  • Adaptez la version du noyau (linux et initrd) avec uname -r ou en lisant /boot/grub/grub.cfg.
  • Adaptez root=/dev/mapper/… si votre groupe de volumes n’est pas server1.
  • La ligne set root=’(md/0)’ indique à GRUB d’utiliser l’ensemble RAID md0 pour booter.

Désactiver l’usage des UUID dans GRUB

Comme nous ne manipulons pas UUIDs pour les blocs, éditez /etc/default/grub et décommentez :

vi /etc/default/grub

Assurez-vous d’avoir :

GRUB_DISABLE_LINUX_UUID=true

Mettre à jour device.map si nécessaire

Avant update-grub, ajoutez /dev/sdb dans /boot/grub/device.map sinon update-grub peut échouer :

vi /boot/grub/device.map

Contenu :

(hd0)   /dev/sda
(hd1)   /dev/sdb

Générez le fichier grub.cfg et mettez à jour l’initramfs :

update-grub
update-initramfs -u

Important

  • update-grub va reconstruire /boot/grub/grub.cfg. Vérifiez les messages d’erreur et corrigez device.map si grub-probe indique un problème.

5 Déplacer nos données vers les ensembles RAID

Après avoir ajusté la configuration, copions le contenu de /dev/sda vers /dev/sdb, y compris les modifications.

Migrer la partition LVM /dev/sda5 vers l’ensemble LVM RAID /dev/md1

Utilisez pvmove :

pvmove -i 2 /dev/sda5 /dev/md1
  • L’option -i 2 augmente la verbosité/itérations ; vous pouvez l’ajuster. Cette opération peut être longue.

Après la migration, retirez /dev/sda5 du groupe :

vgreduce server1 /dev/sda5

Puis retirez la signature LVM du disque :

pvremove /dev/sda5

Vérifiez pvdisplay :

root@server1:~# pvdisplay  
--- Physical volume ---  
PV Name               /dev/md1  
VG Name               server1  
PV Size               4.76 GiB / not usable 1012.00 KiB  
Allocatable           yes (but full)  
PE Size               4.00 MiB  
Total PE              1218  
Free PE               0  
Allocated PE          1218  
PV UUID               W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS  
  
root@server1:~#

Changer le type de partition de /dev/sda5 et l’ajouter à /dev/md1

Éditez la table de partitions :

fdisk /dev/sda

Interaction exemple :

root@server1:~# fdisk /dev/sda  
  
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to  
switch off the mode (command 'c') and change display units to  
sectors (command 'u').  
  
Command (m for help): <-- t  
Partition number (1-5): <-- 5  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 5 to fd (Linux raid autodetect)  
  
Command (m for help): <-- w  
The partition table has been altered!  
  
Calling ioctl() to re-read partition table.  
  
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.  
The kernel still uses the old table. The new table will be used at  
the next reboot or after you run partprobe(8) or kpartx(8)  
Syncing disks.  
root@server1:~#

Ajoutez /dev/sda5 à l’ensemble md1 :

mdadm --add /dev/md1 /dev/sda5

Contrôlez la synchronisation :

cat /proc/mdstat

Sortie d’exemple pendant la reconstruction :

root@server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda5[2] sdb5[1]  
4989940 blocks super 1.2 [2/1] [_U]  
[====>................]  recovery = 22.5% (1127872/4989940) finish=0.3min speed=161124K/sec  
  
md0 : active raid1 sdb1[1]  
248820 blocks super 1.2 [2/1] [_U]  
  
unused devices:   
root@server1:~#

Astuce

  • Exécutez watch cat /proc/mdstat pour un suivi continu. Quittez watch avec CTRL+C.
  • Attendez la fin de la synchronisation : l’indicateur passera en [UU] lorsque les deux disques seront actifs.

Exemple quand la synchronisation est terminée :

root@server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda5[2] sdb5[1]  
4989940 blocks super 1.2 [2/2] [UU]  
  
md0 : active raid1 sdb1[1]  
248820 blocks super 1.2 [2/1] [_U]  
  
unused devices:   
root@server1:~#

Monter /dev/md0 et copier /boot

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

Vérifiez le montage :

mount

Exemple :

root@server1:~# mount  
/dev/mapper/server1-root on / type ext3 (rw,errors=remount-ro)  
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)  
proc on /proc type proc (rw,noexec,nosuid,nodev)  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
udev on /dev type tmpfs (rw,mode=0755)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)  
/dev/md0 on /boot type ext2 (rw)  
/dev/md0 on /mnt/md0 type ext2 (rw)  
root@server1:~#

Copiez le contenu de /dev/sda1 vers l’ensemble md0 monté sur /mnt/md0 :

cd /boot
cp -dpRx . /mnt/md0
  • Options cp expliquées : -d préserve les liens symboliques, -p préserve les attributs, -R copie récursivement, -x reste sur le même device.

Vérifications finales et post-migration

Checklist de vérification

  • /proc/mdstat indique [UU] pour les arrays attendus.
  • /etc/mdadm/mdadm.conf contient les lignes ARRAY pour md0 et md1.
  • /etc/fstab monte /dev/md0 sur /boot.
  • /boot/grub/grub.cfg contient l’entrée créée et set root=’(md/0)’.
  • update-initramfs -u s’est exécuté sans erreur.
  • reboot testé (idéalement en console de récupération/accès hors-bande) et système bootable depuis RAID.

Test d’amorçage simulé (recommandation)

  1. Testez la panne d’un disque si vous avez un environnement de test : débranchez physiquement /dev/sda et redémarrez.
  2. Vérifiez que le système démarre avec le disque restant (/dev/sdb) et que les systèmes de fichiers sont montés.
  3. Rebranchez le disque et réintégrez-le si nécessaire avec mdadm –add.

Important

  • Ne retirez pas physiquement de disque sur un système de production sans console de secours. Une opération de récupération peut être nécessaire si GRUB n’est pas correctement installé sur les deux disques.

Ajouts experts et ressources pratiques

Cheat sheet des commandes clés

  • mdadm –create /dev/mdX –level=1 –raid-disks=2 missing /dev/sdXN
  • mdadm –add /dev/mdX /dev/sdXN
  • mdadm –examine –scan >> /etc/mdadm/mdadm.conf
  • cat /proc/mdstat
  • mkfs.ext2 /dev/md0
  • pvcreate /dev/md1
  • vgextend /dev/md1
  • pvmove /dev/sda5 /dev/md1
  • vgreduce /dev/sda5
  • pvremove /dev/sda5
  • update-grub
  • update-initramfs -u

Mini-méthodologie de migration (résumé en 7 étapes)

  1. Préparer le disque secondaire (/dev/sdb) : partitions identiques à /dev/sda.
  2. Créer les ensembles RAID en mode degraded (placeholder missing).
  3. Formater l’ensemble /dev/md0 et préparer /dev/md1 pour LVM.
  4. Ajouter /dev/md1 au VG et pvmove pour migrer les PV.
  5. Retirer les PV sources et changer le type de partition à fd.
  6. Ajouter les partitions sources aux ensembles RAID et attendre la reconstruction.
  7. Copier /boot sur /dev/md0, mettre à jour GRUB et initramfs, tester le reboot.

Arbre de décision pour choisir la métadonnée mdadm

flowchart TD
  A[Vous placez /boot sur le RAID ?] -->|Oui| B{Votre chargeur gère md metadata 1.2 ?}
  A -->|Non| C[Utilisez metadata=1.2 'par défaut']
  B -->|Oui| D[Utiliser metadata=1.2]
  B -->|Non| E[Utiliser --metadata=0.90 pour compatibilité /boot]

Tableau risques / mitigations

RisqueImpactMitigation
Perte de boot après modificationSystème non amorçableConserver accès console/console série, installer GRUB sur les deux disques, tester en lab
Synchronisation longueOpérations longues en productionPlanifier maintenance hors pics, vérifier I/O et priorité du processus
Erreur de typo dans /etc/fstabSystème en mode maintenanceValider fstab avant reboot avec mount -a ; garder une session root ouverte
mdadm.conf incorrectmdadm ne recrée pas les arrays au bootExécuter mdadm –examine –scan et vérifier UUID ; sauvegarder mdadm.conf_orig

Critères d’acceptation (tests simples)

  • Après migration et reboot, la commande cat /proc/mdstat doit montrer md0 et md1 avec [UU] ou le statut attendu.
  • /boot est monté depuis /dev/md0 (ou point de montage approprié).
  • Les volumes LVM fonctionnent et la taille du VG correspond à la somme des PV attendus.

Checklist rôle-based (Administrateur Système)

  • Vérifier sauvegardes hors site.
  • Préparer console hors-bande (iLO, IPMI) pour récupération éventuelle.
  • Préparer partitionnement identique sur disque secondaire.
  • Planifier fenêtre de maintenance et informer les parties prenantes.

Glossaire rapide (une ligne chacun)

  • mdadm : gestionnaire logiciel RAID sous Linux.
  • PV (Physical Volume) : support physique pour LVM.
  • VG (Volume Group) : regroupement de PV pour LVM.
  • LV (Logical Volume) : volume logique utilisable comme partition.

Astuces locales pour l’infrastructure (France)

  • Si vous utilisez des serveurs vendus par des fournisseurs locaux, conservez les procédures de démarrage UEFI/legacy spécifiques à votre modèle. Sur certains firmware, vous devrez installer grub-install sur chaque disque (/dev/sda et /dev/sdb) pour assurer l’amorçage si un disque échoue.

Résumé

  • Créez md0 et md1 en degraded, préparez md1 pour LVM, migrez avec pvmove, ajoutez l’ancienne partition au RAID et attendez la reconstruction.
  • Mettez à jour /etc/mdadm/mdadm.conf, /etc/fstab, /etc/mtab, /boot/grub/device.map et /etc/default/grub.
  • Exécutez update-grub et update-initramfs -u, testez le reboot et simulez une panne disque si possible.

Notes finales

  • Ce guide décrit une procédure non destructive quand elle est exécutée correctement. Cependant, chaque environnement est unique. Testez toujours sur une machine non critique avant de l’appliquer en production.
Auteur
Édition

Matériaux similaires

Créer un VHD sous Windows — guide pas à pas
Tutoriel

Créer un VHD sous Windows — guide pas à pas

Activer le ralenti sur Android — guide pratique
Guides

Activer le ralenti sur Android — guide pratique

Corriger INET_E_RESOURCE_NOT_FOUND — Windows 10
Windows 10

Corriger INET_E_RESOURCE_NOT_FOUND — Windows 10

Vider la Corbeille automatiquement — Windows 10
Windows

Vider la Corbeille automatiquement — Windows 10

Taille des vignettes Vivaldi — guide
Navigateur

Taille des vignettes Vivaldi — guide

Google Pay sur Android rooté — méthode Magisk
Android

Google Pay sur Android rooté — méthode Magisk