Guide des technologies

Comment redimensionner des partitions RAID1 logicielles LVM — réduire et agrandir

8 min read Linux Stockage Mis à jour 13 Oct 2025
Redimensionner RAID1 LVM — réduire et agrandir
Redimensionner RAID1 LVM — réduire et agrandir

Version 1.0
Auteur : Falko Timme

  • Ce guide explique, pas à pas, comment réduire puis agrandir un ensemble RAID1 logiciel (/dev/mdX) qui contient un volume physique LVM, en traitant à la fois d’un ensemble intact et d’un ensemble dégradé.
  • Sauvegardez toujours avant ; démontez les volumes logiques et travaillez depuis un système de secours si le LV racine est concerné.

Important : ce guide illustre la procédure testée avec des volumes logiques ext3. Adaptez les commandes si vous utilisez un autre système de fichiers. Aucune garantie n’est fournie.

Intentions de l’article

  • Objectif principal : redimensionner des partitions RAID1 logicielles contenant LVM (réduire et ensuite agrandir).
  • Variantes liées : redimensionner LVM, réduire un PV, agrandir mdadm RAID1, réparer RAID dégradé, utilisation de resize2fs et pvresize.

Définitions rapides

  • LVM : gestion de volumes logiques sur Linux (PV = physical volume, VG = volume group, LV = logical volume).
  • RAID1 : miroir logiciel via mdadm (deux disques ou plus contenant les mêmes données).
  • PVresize : outil LVM pour redimensionner un PV.

1 Préambule

Un jour, j’ai constaté sur un de mes serveurs un ensemble RAID1 en état dégradé (/dev/md1 composé de /dev/sda5 et /dev/sdb5 ; /dev/sda5 était HS). Voici l’extrait de /proc/mdstat constaté :

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[1]
4988032 blocks [2/1] [_U]

md0 : active raid1 sda1[0] sdb1[1]
248896 blocks [2/2] [UU]

unused devices: 
server1:~#

Après avoir tenté une remise en état, la resynchronisation s’arrêtait vers 99,9% puis redémarrait. Le journal noyau indiquait des erreurs I/O en fin de partition sur /dev/sdb5 :

Nov 22 18:51:06 server1 kernel: sdb: Current: sense key: Aborted Command
Nov 22 18:51:06 server1 kernel: end_request: I/O error, dev sdb, sector 1465142856

C’était le pire scénario : un disque mort et l’autre proche de la défaillance. La stratégie appliquée ici a été : réduire /dev/md1 pour exclure les secteurs défectueux en fin de /dev/sdb5, remettre le nouveau disque, laisser la resynchronisation se terminer, retirer l’ancien disque, remplacer et réintégrer, puis agrandir /dev/md1 à sa taille initiale.

Remarque : j’ai utilisé des petits disques de 5 Gio pour accélérer les tests. Sur des systèmes réels, les opérations prennent plus de temps.

Ce guide suppose que /dev/md1 contient un VG nommé /dev/server1 avec les LV /dev/server1/root (partition système, montée sur /) et /dev/server1/swap_1 (swap). Si le LV racine doit être redimensionné, travaillez depuis un système de secours (par exemple Knoppix Live-CD). Si les LV concernés ne sont pas montés sur la machine en cours, un redémarrage en rescue n’est pas nécessaire, mais les LV doivent être démontés.

2 Ensemble intact

Nous montrons comment redimensionner /dev/md1 (composé de /dev/sda5 et /dev/sdb5). Situation initiale :

cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[1]
4988032 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
248896 blocks [2/2] [UU]

unused devices: 
server1:~#
df -h
server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G  741M  3.5G  18% /
tmpfs                 126M     0  126M   0% /lib/init/rw
udev                    10M   68K   10M   1% /dev
tmpfs                 126M     0  126M   0% /dev/shm
/dev/md0              236M   18M  206M   8% /boot
server1:~#
pvdisplay
server1:~# pvdisplay
--- Physical volume ---
PV Name               /dev/md1
VG Name               server1
PV Size               4.75 GB / not usable 0
Allocatable           yes (but full)
PE Size (KByte)       4096
Total PE              1217
Free PE               0
Allocated PE          1217
PV UUID               Ntrsmz-m0o1-WAPD-xhsb-YpH7-0okm-qfdBQG

server1:~#
vgdisplay
server1:~# vgdisplay
--- Volume group ---
VG Name               server1
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  9
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               4.75 GB
PE Size               4.00 MB
Total PE              1217
Alloc PE / Size       1217 / 4.75 GB
Free  PE / Size       0 / 0
VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0

server1:~#
lvdisplay
server1:~# lvdisplay
--- Logical volume ---
LV Name                /dev/server1/root
VG Name                server1
LV UUID                3ZgGnd-Sq1s-Rchu-92b9-DpAX-mk24-0aOMm2
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                4.50 GB
Current LE             1151
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:0

--- Logical volume ---
LV Name                /dev/server1/swap_1
VG Name                server1
LV UUID                KM6Yq8-jQaQ-rkP8-6f4t-zrXA-Jk13-yFrWi2
LV Write Access        read/write
LV Status              available
# open                 2
LV Size                264.00 MB
Current LE             66
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:1

server1:~#

2.1 Réduire un ensemble intact

  1. Depuis un système de secours, chargez les modules nécessaires :
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
  1. Activez les ensembles RAID et mettez à jour /etc/mdadm/mdadm.conf :
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
  1. Démarrez les services LVM :
/etc/init.d/lvm start
  1. Vérifiez le système de fichiers :
e2fsck -f /dev/server1/root

L’objectif ici : /dev/md1 fait 5Gio et nous voulons le réduire à 4Gio. Processus logique à suivre :

  • Reduire le système de fichiers du LV /dev/server1/root (resize2fs) à une taille suffisante (ici 2G).
  • Reduire ensuite le LV (/dev/server1/root) à 2.5G.
  • Supprimer /dev/server1/swap_1 si celui-ci est placé en fin d’espace (ou s’assurer que le dernier LV sur le PV est celui que l’on réduit).
  • Redimensionner le PV (/dev/md1) à 3G.
  • Puis réduire physiquement l’ensemble RAID mdadm à 4G (opération sur mdadm).
  • Étendre ensuite le PV au maximum disponible, recréer swap, et ré-étendre le LV root.

Important : adaptez les tailles à vos données ; ne réduisez jamais en dessous de l’espace réellement utilisé.

Exemples de commandes exécutées :

resize2fs /dev/server1/root 2G
lvreduce -L2.5G /dev/server1/root
lvremove /dev/server1/swap_1
pvresize --setphysicalvolumesize 3G /dev/md1

Ensuite, réduire /dev/md1 (la valeur –size doit être en KiB ; 4 x 1024 x 1024 = 4194304 ; vérifiez qu’elle soit divisible par 64) :

mdadm --grow /dev/md1 --size=4194304

Puis laisser pvresize ajuster le PV au maximum disponible :

pvresize /dev/md1

Après ces étapes, vérifiez avec vgdisplay. Vous devriez constater des PE libres, ce qui permet de recréer swap et d’étendre le LV root :

lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
e2fsck -f /dev/server1/root

Redémarrez ensuite le système en mode normal. Après le reboot, /proc/mdstat doit refléter la nouvelle taille de /dev/md1 :

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[1]
4194304 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
248896 blocks [2/2] [UU]

unused devices: 
server1:~#

Et les outils LVM (pvdisplay, vgdisplay, lvdisplay) doivent montrer les nouvelles tailles.

3 Cas : ensemble dégradé — stratégie générale

Le message d’erreur en début d’article illustre un cas pratique : un disque hors service, l’autre avec secteurs défectueux en fin de partition. La méthode générale pour réparer sans perdre de données consiste à :

  1. Réduire l’ensemble RAID pour exclure les secteurs défectueux (si possible).
  2. Remplacer le disque physiquement défaillant.
  3. Ajouter la partition du disque neuf à l’ensemble mdadm et laisser la resynchronisation finir.
  4. Retirer l’ancien disque défaillant et, si nécessaire, remplacer l’autre disque défaillant.
  5. Ré-agrandir l’ensemble mdadm et le PV LVM.

Important : si vous ne pouvez pas exclure les secteurs défectueux sans perdre de données, restaurez depuis une sauvegarde. Si la défaillance affecte des blocs utilisés, envisager une récupération de données avant toute manipulation risquée.

4 Vérifications et bonnes pratiques

  • Sauvegarde : toujours disposer d’une sauvegarde complète avant toute opération sur LVM/RAID.
  • Démontage : démontez les LV concernés ou travaillez depuis un environnement de secours si le LV est la racine.
  • Contrôles FS : lancez e2fsck avant et après resize2fs.
  • Tests : vérifier la cohérence de mdadm avec mdadm –detail /dev/md1 et examiner /var/log/kern.log pour erreurs I/O.
  • Patience : les resynchronisations peuvent durer longtemps sur de grands disques.

5 Contre-exemples et limites (quand la méthode échoue)

  • Disques physiquement corrompus sur des zones utilisées : réduire pour contourner ne marche pas si des blocs encore utilisés sont corrompus.
  • LVM non linéaire ou PV réparti : si plusieurs PV/VG sont imbriqués ou si l’espace est fragmenté, la suppression d’un LV à la fin n’est pas triviale.
  • Systèmes de fichiers autres qu’ext3/4 : resize2fs s’applique à ext2/3/4 seulement. Pour XFS, il faut d’autres outils (XFS ne se réduit pas facilement).

6 Approches alternatives

  • Cloner le disque sain vers un disque neuf (dd, pv, partclone) puis reconstruire le RAID avec les partitions clonées.
  • Restaurer depuis sauvegarde sur nouveaux disques après remplacement.
  • Utiliser des outils de migration LVM pour déplacer toutes les PE d’un PV vers un autre (pvmove) puis retirer le PV.

7 Modèle mental et heuristique

  • Toujours travailler du niveau le plus haut (FS) vers le plus bas (RAID).
  • Rappel d’ordre : resize filesystem -> lvreduce -> pvresize -> mdadm –grow/–shrink -> pvresize (agrandissement si nécessaire) -> lvextend -> resize filesystem.
  • Principe de sécurité : ne jamais réduire en dessous de l’espace réellement utilisé.

8 Check-list rôle par rôle

Administrateur système — avant l’opération :

  • Sauvegarde opérationnelle récente et vérifiée.
  • Plan de restauration documenté.
  • Accès physique/console aux machines en cas de panne.
  • Disponibilité d’un live-CD ou rescue system.

Administrateur stockage — pendant l’opération :

  • Vérifier mdadm –detail /dev/mdX avant et après chaque opération.
  • Surveiller dmesg/journal pour erreurs I/O.
  • Noter les tailles en PE, blocs et KiB avant modification.

9 Playbook d’incident rapide (runbook)

  1. Discuter et valider la fenêtre de maintenance.
  2. Prendre une sauvegarde complète (snapshot ou copie).
  3. Démarrer en rescue si nécessaire.
  4. Monter en lecture seule pour analyser (si possible).
  5. Appliquer la procédure de réduction ou pvmove selon le plan.
  6. Remplacer disque(s), réintégrer et laisser resync se terminer.
  7. Vérifier la consistance et rebooter en normal.
  8. Surveiller pendant 24–72 heures pour erreurs récurrentes.

10 Matrice de risques et mitigations

  • Risque : perte de données lors d’un lvreduce trop agressif.
    Mitigation : vérifier l’utilisation disque du LV (du -sh, df -h) et laisser une marge.

  • Risque : resynchronisation interrompue par erreur I/O.
    Mitigation : remplacer le disque présentant des erreurs avant la resync ou réduire l’ensemble pour exclure la zone fautive.

  • Risque : incompatibilités de partitionnement.
    Mitigation : vérifier la table de partition (fdisk -l /dev/sdX) et recopier les partitions correctement sur le disque de remplacement.

11 Fiche pratique des commandes (cheat sheet)

  • Afficher état RAID :
cat /proc/mdstat
mdadm --detail /dev/md1
  • Mettre à jour mdadm.conf :
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
  • Vérifier et forcer le fsck :
e2fsck -f /dev/server1/root
  • Redimensionner filesystem ext3/4 :
resize2fs /dev/server1/root [size]
  • Reduire/agrandir LV :
lvreduce -L2.5G /dev/server1/root
lvextend -l +317 /dev/server1/root
  • Supprimer/créer swap :
lvremove /dev/server1/swap_1
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
  • Redimensionner PV :
pvresize --setphysicalvolumesize 3G /dev/md1
pvresize /dev/md1
  • Changer taille RAID :
mdadm --grow /dev/md1 --size=4194304
  • Récupération de données (exemples) :
dd if=/dev/md1 of=/path/to/backup.img bs=1M conv=noerror,sync

12 Compatibilité et migration

  • Si vous migrez depuis un RAID matériel vers mdadm, préférer une migration en copiant les données plutôt qu’en manipulant directement les métadonnées.
  • Pour XFS : XFS se redimensionne uniquement à la hausse (xfs_growfs). Pour réduire, il faut recréer le système de fichiers.

13 Glossaire (une ligne)

  • PV : Physical Volume (bloc sur lequel LVM crée un VG).
  • VG : Volume Group (regroupement de PV qui contient des LV).
  • LV : Logical Volume (partition logique que vous montez comme filesystem).
  • mdadm : utilitaire de gestion RAID logiciel sous Linux.

14 Résumé final

Ce guide montre comment réduire et ré-agrandir proprement un ensemble RAID1 qui contient LVM. Les étapes clefs sont : vérifier le système de fichiers, réduire le FS puis le LV, ajuster le PV, réduire l’ensemble mdadm, puis inverser les opérations pour retrouver la taille souhaitée. Sur un ensemble dégradé, l’approche reste similaire mais demande une attention particulière aux erreurs I/O et, le cas échéant, un remplacement matériel préalable.

Notes importantes :

  • Ne réduisez jamais un LV au-dessous de l’espace utilisé.
  • Toujours avoir une sauvegarde complète avant ces opérations.
  • Documentez chaque commande et sortie pendant la maintenance.

Bonnes pratiques : procédez par étapes, vérifiez avec mdadm/vgdisplay/pvdisplay/lvdisplay après chaque modification, et attendez la fin des resynchronisations avant de continuer.

Auteur
Édition

Matériaux similaires

Installer Ubuntu 8.04 avec RAID1 logiciel
Systèmes

Installer Ubuntu 8.04 avec RAID1 logiciel

RAID1 : créer arrays, préparer GRUB
Administration

RAID1 : créer arrays, préparer GRUB

Beeftext : snippets de texte rapides sous Windows
Productivité

Beeftext : snippets de texte rapides sous Windows

Déverrouiller un iPhone sans mot de passe
Assistance iPhone

Déverrouiller un iPhone sans mot de passe

Redimensionner RAID1 LVM — réduire et agrandir
Linux Stockage

Redimensionner RAID1 LVM — réduire et agrandir

Voir les fichiers récemment ouverts sous Windows
Outils Windows

Voir les fichiers récemment ouverts sous Windows