Créer des volumes RAID1 et migrer les données (/boot et LVM)
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
|
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)
- Testez la panne d’un disque si vous avez un environnement de test : débranchez physiquement /dev/sda et redémarrez.
- Vérifiez que le système démarre avec le disque restant (/dev/sdb) et que les systèmes de fichiers sont montés.
- 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)
- Préparer le disque secondaire (/dev/sdb) : partitions identiques à /dev/sda.
- Créer les ensembles RAID en mode degraded (placeholder missing).
- Formater l’ensemble /dev/md0 et préparer /dev/md1 pour LVM.
- Ajouter /dev/md1 au VG et pvmove pour migrer les PV.
- Retirer les PV sources et changer le type de partition à fd.
- Ajouter les partitions sources aux ensembles RAID et attendre la reconstruction.
- 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
Risque | Impact | Mitigation |
---|---|---|
Perte de boot après modification | Système non amorçable | Conserver accès console/console série, installer GRUB sur les deux disques, tester en lab |
Synchronisation longue | Opérations longues en production | Planifier maintenance hors pics, vérifier I/O et priorité du processus |
Erreur de typo dans /etc/fstab | Système en mode maintenance | Valider fstab avant reboot avec mount -a ; garder une session root ouverte |
mdadm.conf incorrect | mdadm ne recrée pas les arrays au boot | Exé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.
Matériaux similaires

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

Activer le ralenti sur Android — guide pratique

Corriger INET_E_RESOURCE_NOT_FOUND — Windows 10

Vider la Corbeille automatiquement — Windows 10
