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/sdb1fonctionne si vous preferez partitionner le disque d’abord avecfdiskouparted. 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 :
| Option | Signification | Exemple |
|---|---|---|
-L 50G | Taille exacte | 50 gigaoctets |
-L 500M | Taille exacte | 500 megaoctets |
-l 100%FREE | Tout l’espace restant | Utilise tout ce qui reste |
-l 50%VG | Pourcentage du VG | Moitie du groupe de volumes |
-l 50%FREE | Pourcentage du libre | Moitie 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_lvdans 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 -favant toute operation de redimensionnement. - Volume encore actif : Utilisez
sudo umountou verifiez les processus utilisant le montage aveclsof +D /point/de/montage.
Reference des Commandes LVM
| Commande | Description |
|---|---|
pvcreate | Initialiser un disque pour LVM |
pvs / pvdisplay | Afficher les volumes physiques |
vgcreate | Creer un groupe de volumes |
vgs / vgdisplay | Afficher les groupes de volumes |
vgextend | Ajouter un PV a un VG |
vgreduce | Retirer un PV d’un VG |
lvcreate | Creer un volume logique |
lvs / lvdisplay | Afficher les volumes logiques |
lvextend -r | Etendre un LV et redimensionner le filesystem |
lvreduce -r | Reduire un LV et redimensionner le filesystem |
lvcreate -s | Creer un snapshot |
lvremove | Supprimer un volume logique |
pvmove | Deplacer 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
vgextendpour 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.