Le partitionnement traditionnel de Linux vous oblige a decider des tailles de disque au moment de l’installation. Besoin de plus d’espace sur /var six mois plus tard ? Il faudra sauvegarder, repartitionner et restaurer. LVM (Logical Volume Manager) elimine cette rigidite en ajoutant une couche d’abstraction entre les disques physiques et les systemes de fichiers, vous permettant de redimensionner les volumes, d’ajouter du stockage et de prendre des snapshots sur un systeme en fonctionnement sans temps d’arret.

Ce guide couvre le flux de travail complet de LVM : creation de volumes physiques, regroupement en groupes de volumes, allocation de volumes logiques et operations de redimensionnement et de snapshots qui rendent LVM indispensable pour l’administration de serveurs.

Prerequis

Avant de commencer, assurez-vous d’avoir :

  • Un systeme Linux avec systemd (Ubuntu 20.04+, Debian 11+, RHEL/CentOS 8+, ou similaire)
  • Acces au terminal avec des privileges sudo
  • Un ou plusieurs disques ou partitions disponibles (peripheriques bloc non utilises)
  • Connaissance basique des concepts de disque Linux (partitions, systemes de fichiers, points de montage)

Avertissement : Les commandes de ce guide modifieront les tables de partitions et creeront des systemes de fichiers. Verifiez toujours soigneusement les noms de peripheriques avant d’executer les commandes. Utiliser le mauvais peripherique peut detruire des donnees.

Architecture de LVM

LVM fonctionne en trois couches :

┌─────────────────────────────────────────┐
│     Systemes de fichiers (ext4, XFS)    │
├─────────────────────────────────────────┤
│      Volumes Logiques (LV)              │
│      /dev/nom_vg/nom_lv                 │
├─────────────────────────────────────────┤
│      Groupes de Volumes (VG)            │
│      Pool de stockage d'un ou plusieurs │
│      volumes physiques                  │
├─────────────────────────────────────────┤
│      Volumes Physiques (PV)             │
│      /dev/sdb, /dev/sdc, etc.           │
├─────────────────────────────────────────┤
│      Disques Physiques / Partitions     │
└─────────────────────────────────────────┘
  • Volume Physique (PV) : Un disque ou partition initialise pour utilisation avec LVM
  • Groupe de Volumes (VG) : Un pool de stockage cree a partir d’un ou plusieurs PVs
  • Volume Logique (LV) : Une partition virtuelle creee depuis un VG, ou vous creez des systemes de fichiers

L’avantage cle est que les VGs peuvent s’etendre sur plusieurs disques physiques, et les LVs peuvent etre redimensionnes a chaud.

Installation de LVM

LVM est pre-installe sur la plupart des distributions serveur. Verifiez ou installez :

# Debian/Ubuntu
sudo apt update && sudo apt install lvm2

# RHEL/Fedora/CentOS
sudo dnf install lvm2

# Verifier l'installation
lvm version

Identifier les Disques Disponibles

Avant de creer des volumes physiques, identifiez vos peripheriques bloc disponibles :

# Lister tous les peripheriques bloc
lsblk

# Afficher les informations detaillees des disques
sudo fdisk -l

# Verifier quels disques sont deja utilises par LVM
sudo pvs

Exemple de sortie lsblk montrant deux disques non utilises :

NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0    50G  0 disk
├─sda1    8:1    0   512M  0 part /boot
└─sda2    8:2    0  49.5G  0 part /
sdb       8:16   0   100G  0 disk
sdc       8:32   0   100G  0 disk

Dans cet exemple, sdb et sdc sont disponibles pour LVM.

Creer des Volumes Physiques

Initialisez les disques pour utilisation avec LVM :

sudo pvcreate /dev/sdb /dev/sdc

Sortie :

  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

Verifiez les volumes physiques :

# Vue resumee
sudo pvs

# Vue detaillee
sudo pvdisplay /dev/sdb

La sortie de pvs affiche :

  PV         VG     Fmt  Attr PSize   PFree
  /dev/sdb          lvm2 ---  100.00g 100.00g
  /dev/sdc          lvm2 ---  100.00g 100.00g

Note : Vous pouvez egalement utiliser des partitions au lieu de disques entiers. Par exemple, sudo pvcreate /dev/sdb1 fonctionne si vous preferez partitionner le disque d’abord avec fdisk ou parted. Utiliser des disques entiers est plus simple et recommande lorsque le disque entier est dedie a LVM.

Creer un Groupe de Volumes

Combinez les volumes physiques en un groupe de volumes :

sudo vgcreate vg_data /dev/sdb /dev/sdc

Sortie :

  Volume group "vg_data" successfully created

Verifiez le groupe de volumes :

# Vue resumee
sudo vgs

# Vue detaillee
sudo vgdisplay vg_data

La sortie de vgs montre le stockage combine :

  VG      #PV #LV #SN Attr   VSize   VFree
  vg_data   2   0   0 wz--n- 199.99g 199.99g

Vous disposez maintenant d’un pool de 200 Go de stockage (a partir de deux disques de 100 Go) que vous pouvez allouer de maniere flexible.

Creer des Volumes Logiques

Allouez de l’espace du groupe de volumes pour creer des volumes logiques :

# Creer un volume logique de 50 Go pour les applications
sudo lvcreate -L 50G -n lv_apps vg_data

# Creer un volume logique de 30 Go pour les bases de donnees
sudo lvcreate -L 30G -n lv_databases vg_data

# Creer un volume en utilisant un pourcentage de l'espace libre restant
sudo lvcreate -l 50%FREE -n lv_logs vg_data

Options courantes de dimensionnement :

OptionSignificationExemple
-L 50GTaille exacte50 gigaoctets
-L 500MTaille exacte500 megaoctets
-l 100%FREETout l’espace restantUtilise tout ce qui reste
-l 50%VGPourcentage du VGMoitie du groupe de volumes
-l 50%FREEPourcentage du libreMoitie de l’espace restant

Verifiez vos volumes logiques :

# Vue resumee
sudo lvs

# Vue detaillee
sudo lvdisplay /dev/vg_data/lv_apps

Formatage et Montage

Creez des systemes de fichiers sur les volumes logiques :

# Formater en ext4
sudo mkfs.ext4 /dev/vg_data/lv_apps
sudo mkfs.ext4 /dev/vg_data/lv_databases

# Ou formater en XFS (prefere pour les grands volumes)
sudo mkfs.xfs /dev/vg_data/lv_logs

Creez des points de montage et montez :

sudo mkdir -p /srv/apps /srv/databases /var/log/central

sudo mount /dev/vg_data/lv_apps /srv/apps
sudo mount /dev/vg_data/lv_databases /srv/databases
sudo mount /dev/vg_data/lv_logs /var/log/central

Montage Persistant avec fstab

Ajoutez des entrees a /etc/fstab pour que les volumes soient montes automatiquement au demarrage :

# Obtenir les UUIDs (plus fiable que les chemins de peripheriques)
sudo blkid /dev/vg_data/lv_apps
sudo blkid /dev/vg_data/lv_databases
sudo blkid /dev/vg_data/lv_logs

Ajoutez a /etc/fstab :

/dev/vg_data/lv_apps       /srv/apps         ext4 defaults 0 2
/dev/vg_data/lv_databases  /srv/databases    ext4 defaults 0 2
/dev/vg_data/lv_logs       /var/log/central  xfs  defaults 0 2

Astuce : Pour les volumes LVM, utiliser le chemin /dev/nom_vg/nom_lv dans fstab est courant et fiable car LVM cree des liens symboliques coherents du device mapper. Les UUIDs fonctionnent aussi si vous preferez.

Testez les entrees fstab sans redemarrer :

sudo umount /srv/apps
sudo mount -a
df -h /srv/apps

Etendre (Agrandir) un Volume Logique

C’est l’operation la plus precieuse de LVM. Quand un volume manque d’espace, etendez-le sans temps d’arret.

Etendre avec l’Espace Libre dans le Groupe de Volumes

# Ajouter 20 Go au volume d'applications
sudo lvextend -L +20G /dev/vg_data/lv_apps

# Puis redimensionner le systeme de fichiers
# Pour ext4 :
sudo resize2fs /dev/vg_data/lv_apps

# Pour XFS :
sudo xfs_growfs /srv/apps

Ou faites les deux en une seule commande :

# L'option -r redimensionne le systeme de fichiers automatiquement
sudo lvextend -r -L +20G /dev/vg_data/lv_apps

Ajouter un Nouveau Disque au Groupe de Volumes

Quand le groupe de volumes manque d’espace, ajoutez un autre disque physique :

# Initialiser le nouveau disque
sudo pvcreate /dev/sdd

# L'ajouter au groupe de volumes existant
sudo vgextend vg_data /dev/sdd

# Verifier la nouvelle capacite
sudo vgs

Vous pouvez maintenant etendre les volumes logiques en utilisant l’espace nouvellement ajoute.

Reduire (Retrecir) un Volume Logique

Avertissement : Reduire des volumes comporte un risque de perte de donnees. Sauvegardez toujours avant de reduire. Les systemes de fichiers XFS ne peuvent pas etre retrecis — seul ext4 supporte cette operation.

Pour les volumes ext4 :

# Demonter le volume d'abord
sudo umount /srv/apps

# Verifier le systeme de fichiers
sudo e2fsck -f /dev/vg_data/lv_apps

# Retrecir le systeme de fichiers d'abord, puis le LV (-r fait les deux)
sudo lvreduce -r -L 30G /dev/vg_data/lv_apps

# Remonter
sudo mount /dev/vg_data/lv_apps /srv/apps

L’option -r assure que le systeme de fichiers est redimensionne avant le volume logique, evitant la corruption de donnees.

Snapshots LVM

Les snapshots creent une copie a un instant donne d’un volume logique en utilisant le copy-on-write. Ils sont ideaux pour les sauvegardes sur des systemes en fonctionnement.

Creer un Snapshot

# Creer un snapshot de 5 Go de lv_databases
sudo lvcreate -L 5G -s -n snap_databases /dev/vg_data/lv_databases

La taille du snapshot (5 Go) represente la quantite maximale de donnees modifiees pouvant etre suivies. Si le volume original change de plus de 5 Go pendant l’existence du snapshot, celui-ci devient invalide.

Utiliser un Snapshot pour la Sauvegarde

# Monter le snapshot (lecture seule)
sudo mkdir -p /mnt/snap
sudo mount -o ro /dev/vg_data/snap_databases /mnt/snap

# Sauvegarder depuis le snapshot
sudo tar czf /backup/databases-$(date +%Y%m%d).tar.gz -C /mnt/snap .

# Demonter et supprimer le snapshot
sudo umount /mnt/snap
sudo lvremove /dev/vg_data/snap_databases

Restaurer depuis un Snapshot

# Fusionner un snapshot dans l'original (rollback)
sudo lvconvert --merge /dev/vg_data/snap_databases

Note : L’operation de fusion necessite que le volume original soit demonte (ou un redemarrage du systeme si le volume est le systeme de fichiers racine). Le snapshot est automatiquement supprime apres la fusion.

Surveillance et Maintenance

Verifier l’Utilisation de l’Espace

# Utilisation des volumes physiques
sudo pvs -o +pv_used,pv_free

# Resume du groupe de volumes
sudo vgs -o +vg_free

# Details des volumes logiques
sudo lvs -o +lv_size,seg_count

Deplacer les Donnees Entre Volumes Physiques

Si vous devez decomissionner un disque :

# Deplacer tous les extents de /dev/sdb vers d'autres PVs du groupe
sudo pvmove /dev/sdb

# Retirer le PV du groupe de volumes
sudo vgreduce vg_data /dev/sdb

# Effacer l'etiquette du PV
sudo pvremove /dev/sdb

Afficher la Configuration Complete

# Vue d'ensemble complete du systeme
sudo lvm fullreport

Resolution de Problemes

Groupe de Volumes Non Trouve Apres Redemarrage

# Scanner tous les volumes physiques
sudo pvscan

# Activer tous les groupes de volumes
sudo vgchange -ay

# Si trouves, mettre a jour l'initramfs
sudo update-initramfs -u

Snapshot a Court d’Espace

# Verifier l'utilisation du snapshot
sudo lvs -o +snap_percent

# Si proche de 100%, etendre le snapshot
sudo lvextend -L +5G /dev/vg_data/snap_databases

Si un snapshot atteint 100% de capacite, il devient invalide et doit etre supprime.

Impossible de Reduire un Volume

  • XFS : Ne peut pas etre retreci. Vous devez sauvegarder, recreer le LV a la taille inferieure, recreer le systeme de fichiers et restaurer.
  • ext4 : Doit etre demonte d’abord. Executez e2fsck -f avant toute operation de redimensionnement.
  • Volume encore actif : Utilisez sudo umount ou verifiez les processus utilisant le montage avec lsof +D /point/de/montage.

Reference des Commandes LVM

CommandeDescription
pvcreateInitialiser un disque pour LVM
pvs / pvdisplayAfficher les volumes physiques
vgcreateCreer un groupe de volumes
vgs / vgdisplayAfficher les groupes de volumes
vgextendAjouter un PV a un VG
vgreduceRetirer un PV d’un VG
lvcreateCreer un volume logique
lvs / lvdisplayAfficher les volumes logiques
lvextend -rEtendre un LV et redimensionner le filesystem
lvreduce -rReduire un LV et redimensionner le filesystem
lvcreate -sCreer un snapshot
lvremoveSupprimer un volume logique
pvmoveDeplacer les donnees d’un volume physique

Resume

LVM est un outil essentiel pour la gestion flexible des disques sur les serveurs Linux :

  • Architecture a trois couches : Volumes Physiques → Groupes de Volumes → Volumes Logiques
  • Etendez les volumes a chaud avec lvextend -r — sans temps d’arret
  • Ajoutez de nouveaux disques aux groupes de volumes existants avec vgextend pour augmenter votre pool de stockage
  • Utilisez les snapshots pour des sauvegardes coherentes sur des systemes en fonctionnement sans arreter les services
  • Retrecissez toujours les systemes de fichiers avant de retrecir les volumes logiques pour eviter la perte de donnees
  • LVM n’est pas un remplacement du RAID — utilisez-le par-dessus le RAID pour obtenir a la fois flexibilite et redundance
  • Surveillez l’utilisation des snapshots pour eviter leur invalidation a 100% de capacite

Pour des sujets connexes, consultez nos guides sur ZFS Storage et Snapshots et Rsync Sauvegarde et Synchronisation.