Guide des technologies

Créer les volumes RAID et déplacer les données

6 min read Infrastructure Mis à jour 28 Sep 2025
Créer RAID logiciel (mdadm) et migrer les données
Créer RAID logiciel (mdadm) et migrer les données

Ce guide explique comment créer deux volumes RAID logiciels (/dev/md0 et /dev/md1) avec mdadm, préparer LVM, mettre à jour la configuration du système (mdadm.conf, fstab, mtab, GRUB), reconstruire l’initrd, puis migrer les données de /dev/sda vers /dev/sdb. Suivez les étapes, surveillez la synchronisation via /proc/mdstat et vérifiez les points de montage avant de redémarrer.

Important: les commandes et les sorties système sont conservées telles quelles. Exécutez-les en tant que root et sauvegardez vos données avant toute modification de partition.

Contexte et objectif

Nous créons deux arrays RAID logiciels : /dev/md0 (non-LVM, destiné à /boot) et /dev/md1 (préparé pour LVM). /dev/sdb1 et /dev/sdb2 sont immédiatement disponibles ; /dev/sda1 et /dev/sda2 sont actuellement utilisés par le système et seront ajoutés plus tard.

Définitions rapides

  • mdadm : utilitaire de gestion du RAID logiciel sous Linux.
  • LVM : Logical Volume Manager, gestion logique des volumes.

1. Création des arrays RAID (mdadm)

Nous créons deux arrays RAID1 en utilisant un emplacement ‘missing’ pour la partition non disponible (les partitions sur /dev/sda). Les commandes suivantes restent inchangées :

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

Vérifiez l’état des arrays via /proc/mdstat :

cat /proc/mdstat

Exemple de sortie attendue (deux arrays en état dégradé) :

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sdb2[1]  
      5036288 blocks [2/1] [_U]  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Note: [U] ou [U] indique un array dégradé ; [UU] indique que l’array est sain.

2. Créer le système de fichiers pour /dev/md0

Formater /dev/md0 en ext3 :

mkfs.ext3 /dev/md0

3. Préparer /dev/md1 pour LVM

Initialiser /dev/md1 en tant que physical volume LVM :

pvcreate /dev/md1

Ajouter /dev/md1 au groupe de volumes existant (VolGroup00) :

vgextend VolGroup00 /dev/md1

Vérifiez les PV et VG :

pvdisplay

Exemple de sortie attendue :

[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/sda2  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.34 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               op2n3N-rck1-Pywc-9wTY-EUxQ-KUcr-2YeRJ0  
  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.25 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               153  
  Allocated PE          0  
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg  
  
[root@server1 ~]#
vgdisplay

Exemple de sortie :

[root@server1 ~]# vgdisplay  
  --- Volume group ---  
  VG Name               VolGroup00  
  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.56 GB  
  PE Size               32.00 MB  
  Total PE              306  
  Alloc PE / Size       152 / 4.75 GB  
  Free  PE / Size       154 / 4.81 GB  
  VG UUID               jJj1DQ-SvKY-6hdr-3MMS-8NOd-pb3l-lS7TA1  
  
[root@server1 ~]#

4. Mettre à jour mdadm.conf, fstab et mtab

Générez /etc/mdadm.conf avec les arrays détectés :

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

Affichez le fichier :

cat /etc/mdadm.conf

Vous devriez voir les entrées ARRAY pour /dev/md0 et /dev/md1, par exemple :

| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=7d2bf9c3:7cd9df21:f782dab8:9212d7cb ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d93a2387:6355b5c5:25ed3e50:2a0e4f96 |

Modifier /etc/fstab : remplacez LABEL=/boot par /dev/md0 pour que /boot utilise l’array RAID :

vi /etc/fstab

| /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 /dev/md0 /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 |

Modifier /etc/mtab : remplacez /dev/sda1 par /dev/md0 afin que le système reflète le nouveau montage :

vi /etc/mtab

| /dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 devpts /dev/pts devpts rw,gid=5,mode=620 0 0 /dev/md0 /boot ext3 rw 0 0 tmpfs /dev/shm tmpfs rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0 |

5. Mettre à jour GRUB pour basculer sur sdb si nécessaire

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

vi /boot/grub/menu.lst

| [...] default=0 fallback=1 [...] |

Copiez ensuite la première strophe du noyau et collez-la avant la première entrée existante, en changeant root (hd0,0) en root (hd1,0) pour que GRUB puisse démarrer depuis /dev/sdb :

| [...] title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img |

Exemple de fichier final :

| # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img |

Explication : root (hd1,0) référence /dev/sdb. Avec fallback=1, si le premier noyau ne démarre pas, GRUB essaiera l’entrée suivante.

6. Régénérer l’initrd

Sauvegardez l’ancien initrd puis régénérez-en un adapté à la nouvelle configuration RAID :

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

7. Déplacer les données LVM vers /dev/md1

Déplacer physiquement les données de /dev/sda2 vers /dev/md1 :

pvmove /dev/sda2 /dev/md1

Cette opération peut durer longtemps selon la taille et l’activité du disque. Patientez.

Retirer ensuite /dev/sda2 du VG :

vgreduce VolGroup00 /dev/sda2

Indiquer au système de ne plus considérer /dev/sda2 comme PV :

pvremove /dev/sda2

Vérifiez pvdisplay :

pvdisplay

Sortie attendue :

[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.25 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg  
  
[root@server1 ~]#

8. Ajouter /dev/sda2 à l’array et reconstruire

Changez le type de partition de /dev/sda2 en “Linux raid autodetect” et ajoutez-la à /dev/md1 :

fdisk /dev/sda

Exemple d’interaction :

[root@server1 ~]# fdisk /dev/sda  
  
Command (m for help): <- t  
Partition number (1-4): <- 2  
Hex code (type L to list codes): <- fd  
Changed system type of partition 2 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.  
Syncing disks.  
[root@server1 ~]#

Puis :

mdadm --add /dev/md1 /dev/sda2

Consultez l’état de synchronisation :

cat /proc/mdstat

Exemple de synchronisation en cours :

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda2[2] sdb2[1]  
      5036288 blocks [2/1] [_U]  
      [=====>...............]  recovery = 28.8% (1454272/5036288) finish=2.8min speed=21132K/sec  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Vous pouvez suivre en continu :

watch cat /proc/mdstat

Quittez watch avec CTRL+C.

Attendez la fin de la synchronisation. La sortie finale devrait montrer [UU] :

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda2[0] sdb2[1]  
      5036288 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

9. Monter /dev/md0 et copier /boot

Créez le point de montage et montez l’array :

mkdir /mnt/md0

mount /dev/md0 /mnt/md0

Vérifiez le montage :

mount

Exemple :

[root@server1 ~]# mount  
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)  
proc on /proc type proc (rw)  
sysfs on /sys type sysfs (rw)  
devpts on /dev/pts type devpts (rw,gid=5,mode=620)  
/dev/md0 on /boot type ext3 (rw)  
tmpfs on /dev/shm type tmpfs (rw)  
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)  
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
[root@server1 ~]#

Copiez ensuite le contenu de /boot vers /mnt/md0 :

cd /boot  
cp -dpRx . /mnt/md0

Important: conservez les permissions et attributs (-p), copiez récursivement (-R), conservez les liens (-d) et suivez les options pour la robustesse (-x pour rester sur le même système de fichiers si nécessaire).

10. Vérifications finales et redémarrage

  • Vérifiez que /etc/fstab contient bien /dev/md0 pour /boot.
  • Vérifiez que GRUB contient une entrée root (hd1,0) et fallback=1.
  • Assurez-vous que /dev/md1 est intégré au VG et que les PV ne contiennent plus /dev/sda2.

Quand tout est correct, redémarrez le serveur et surveillez le démarrage. Si le boot depuis /dev/sdb échoue, GRUB utilisera la ligne de fallback et démarrera depuis /dev/sda.

Contre-exemples et cas d’échec courants

  • Si vous oubliez d’ajouter /dev/md1 au VG (vgextend), les volumes logiques resteront sur l’ancien PV et pvmove échouera.
  • Si /etc/fstab n’est pas mis à jour, le système risque de monter /boot depuis l’ancien disque au redémarrage, entraînant une incohérence avec le GRUB configuré pour /dev/md0.
  • Si l’initrd n’est pas régénéré, le noyau peut ne pas détecter l’array RAID au démarrage et échouer à monter la racine.
  • Si la partition table n’est pas relue (warning ioctl), un redémarrage peut être nécessaire pour que le kernel prenne en compte la nouvelle table.

Approches alternatives

  • Utiliser rsync pour la synchronisation de /boot au lieu de cp pour gérer les fichiers ouverts et reprendre après interruption.
  • Pour des configurations modernes : utiliser systemd-boot ou grub2 (selon distro) au lieu d’un menu.lst legacy. Ajustez les commandes GRUB en conséquence.
  • Pour des environnements très critiques, tester l’ensemble sur une VM clonée avant d’appliquer en production.

Mini-méthodologie (checklist rapide)

  1. Sauvegarde complète.
  2. Créer md0/md1 avec missing.
  3. mkfs.ext3 /dev/md0.
  4. pvcreate /dev/md1 et vgextend.
  5. Mettre à jour /etc/mdadm.conf, /etc/fstab, /etc/mtab.
  6. Mettre à jour GRUB (root hd1,0 + fallback=1).
  7. Regénérer initrd.
  8. pvmove /dev/sda2 -> /dev/md1.
  9. changer type de partition sda2 et mdadm –add.
  10. Attendre synchronisation, monter md0, copier /boot.
  11. Redémarrer et vérifier.

Rôles et tâches (checklist par rôle)

  • Administrateur système : planification, sauvegarde, validation de la procédure, modifications GRUB.
  • Opérateur/Ingénieur stockage : création des arrays, monitor /proc/mdstat, pv/vg operations.
  • Responsable sauvegarde : vérifier que les sauvegardes peuvent restaurer /boot et volumes LVM.

Critères de réussite

  • /proc/mdstat montre [UU] pour les arrays importants.
  • /boot est monté depuis /dev/md0 après redémarrage.
  • Les volumes logiques fonctionnent et n’utilisent plus /dev/sda2.
  • L’initrd contient les modules nécessaires pour monter RAID au démarrage.

Glossaire en une ligne

  • RAID1 : miroir logiciel des données sur deux disques.
  • mdadm : outil de gestion des arrays RAID sous Linux.
  • pvmove : déplace des extents LVM d’un PV à un autre.

Résumé

  • Créez les arrays RAID avec mdadm en utilisant le placeholder missing pour les disques occupés.
  • Préparez /dev/md1 pour LVM et étendez le VG.
  • Mettez à jour mdadm.conf, fstab, mtab et GRUB, puis régénérez l’initrd.
  • Déplacez les données avec pvmove, ajoutez l’ancienne partition au RAID et attendez la synchronisation.
  • Montez /dev/md0 et copiez /boot ; vérifiez puis redémarrez.

Notes: testez la procédure dans un environnement non critique avant de l’appliquer en production. Toujours garder une sauvegarde complète.

Auteur
Édition

Matériaux similaires

Désactiver la notification macOS High Sierra
macOS

Désactiver la notification macOS High Sierra

Créer un poster percutant en 6 étapes
Marketing visuel

Créer un poster percutant en 6 étapes

Voir les dislikes YouTube — Chrome & Android
Technologie

Voir les dislikes YouTube — Chrome & Android

Convertir Spotify en MP3 avec TuneFab
Musique

Convertir Spotify en MP3 avec TuneFab

Créer RAID logiciel (mdadm) et migrer les données
Infrastructure

Créer RAID logiciel (mdadm) et migrer les données

Créer une application mobile en 2023
Développement d'apps

Créer une application mobile en 2023