Linux sans magie #44 — Comprendre LVM : PV, VG et LV
Lire l'architecture LVM, du périphérique au filesystem, et distinguer les réserves de capacité.
Dans le #43, nous avons distingué l'extension d'un disque, d'une partition et du filesystem qu'elle contient. Mais sur de nombreux systèmes Linux, une couche supplémentaire s'intercale entre la partition et le filesystem : LVM, pour *Logical Volume Manager*.
L'administrateur consulte lsblk et découvre des noms comme /dev/mapper/vgdata-lvapp. Le système fonctionne, le filesystem est monté, mais la taille observée dans df -h ne correspond pas simplement à celle d'une partition. D'où vient cet espace ? Où se trouve la capacité encore disponible ? Quel objet faudra-t-il étendre plus tard ?
Pour répondre, il faut comprendre trois sigles : PV, VG et LV. L'objectif de cet article est de lire cette architecture, pas de modifier le stockage à l'aveugle.
Pourquoi LVM ajoute une couche au stockage Linux
Sans LVM, une organisation classique peut être représentée ainsi :
disque
↓
partition
↓
filesystem
↓
point de montage
Avec LVM, le schéma devient :
disque ou partition
↓
PV — Physical Volume
↓
VG — Volume Group
↓
LV — Logical Volume
↓
filesystem
↓
point de montage
LVM sépare ainsi les supports de stockage et les volumes utilisés par le système. Un filesystem peut se trouver sur un LV dont la capacité provient d'un ou de plusieurs périphériques physiques.
Cette abstraction rend certaines opérations d'administration plus flexibles : allouer une partie de la capacité disponible, ajouter un nouveau support au groupe ou agrandir un LV lorsque l'architecture le permet.
LVM ne crée pas d'espace disque. Il organise et attribue de l'espace réellement présent sur les périphériques qui le composent.
PV : Physical Volume, le support présenté à LVM
Un Physical Volume, ou PV, est un périphérique bloc initialisé pour être utilisé par LVM. Il peut s'agir d'une partition, mais également d'un disque entier ou d'un autre périphérique bloc compatible.
Exemples de noms possibles :
/dev/sdb1
/dev/nvme1n1p1
/dev/mapper/autre-couche
Lorsqu'un périphérique devient un PV, LVM y inscrit ses informations de gestion. Cela ne signifie pas que la totalité de sa capacité est déjà attribuée à des applications.
La commande d'initialisation s'appelle :
pvcreate <PÉRIPHÉRIQUE>
Elle modifie la cible. Nous ne l'exécuterons pas dans cet article : sur un périphérique contenant des données utiles, une initialisation non maîtrisée peut compromettre leur accès.
Pour examiner les PV reconnus sans les modifier :
sudo pvs
La colonne PV indique le périphérique ; VG indique son groupe éventuel ; PSize et PFree aident à distinguer capacité du PV et espace encore disponible.
VG : Volume Group, le réservoir de capacité
Un Volume Group, ou VG, regroupe la capacité d'un ou plusieurs PV. On peut le représenter comme un réservoir dans lequel sont alloués les volumes logiques.
PV 1 : disque ou partition
\
→ VG : vgdata → espace attribuable
/
PV 2 : disque ou partition
Un VG ne correspond donc pas nécessairement à un seul disque. Il peut répartir ses allocations sur plusieurs supports, ce qui doit être pris en compte dans l'analyse de panne et dans les stratégies de sauvegarde.
Pour voir les groupes existants :
sudo vgs
Les champs VSize et VFree sont particulièrement importants. VFree représente l'espace du VG non encore attribué aux LV. Cet espace n'est pas automatiquement disponible dans les filesystems existants.
Pour détailler un groupe :
sudo vgdisplay
La commande vgcreate créerait un VG à partir de PV, mais cette opération relève du prochain article consacré à la création de volumes.
LV : Logical Volume, le volume utilisé par Linux
Un Logical Volume, ou LV, est un périphérique bloc virtuel créé dans un VG. Il peut contenir un filesystem ext4, XFS ou autre, ou servir à un usage qui ne nécessite pas de filesystem classique.
Les chemins observés ressemblent souvent à :
/dev/vgdata/lvapp
/dev/mapper/vgdata-lvapp
Ces chemins peuvent désigner le même LV, présenté par LVM et le mécanisme device-mapper.
Pour afficher les LV :
sudo lvs
La sortie présente notamment le nom du LV, son VG et sa taille. Elle ne doit pas être confondue avec la taille utilisable affichée par df, qui dépend du filesystem monté.
Une fois le LV créé, il faut encore choisir comment il sera utilisé : filesystem, swap ou accès brut par une application. Comme pour les partitions du #42, créer un volume bloc ne revient pas à le formater.
Comprendre les extents sans entrer dans le calcul inutile
LVM alloue la capacité d'un VG par unités appelées extents. Les *Physical Extents* (PE) correspondent à l'allocation sur les PV ; les *Logical Extents* (LE) sont ceux des LV.
Dans une configuration LVM classique, une taille d'extent de 4 MiB est courante, mais elle peut être configurée. Ce découpage explique pourquoi une taille demandée peut être arrondie aux unités d'allocation disponibles.
VG : ensemble d'extents disponibles
↓
LV application : extents attribués
LV sauvegarde : extents attribués
VFree : extents non attribués
Ne confondez pas VFree et l'espace libre dans un filesystem. Ce sont deux notions différentes :
VFree: espace non alloué aux LV dans le VG ;df -h: espace disponible pour les fichiers à l'intérieur d'un filesystem monté.
Un filesystem peut être presque plein alors que le VG dispose encore de capacité non allouée.
Mise en pratique : lire une configuration LVM existante
Cette mise en pratique est en lecture seule et s'applique à un PC, un serveur physique, une VM ou une instance cloud disposant de LVM. Si le système ne contient aucun PV, les commandes renverront naturellement des listes vides ; cela ne constitue pas une panne.
Prérequis : Linux avec le paquet lvm2 et un accès autorisé aux informations de stockage. Durée indicative : 10 à 15 minutes.
Objectif vérifiable : relier un périphérique bloc, son PV, son VG, son LV, son filesystem et son point de montage sans modifier leur configuration.
Étape 1 — Inventorier les périphériques
lsblk -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS
Repérez les entrées de type lvm lorsqu'elles existent. Les noms et l'arborescence réels dépendent de la distribution et de l'organisation du stockage.
Étape 2 — Identifier les Physical Volumes
sudo pvs -o pv_name,vg_name,pv_size,pv_free
Chaque ligne renseigne sur la capacité d'un PV et son rattachement à un groupe. Ne présumez pas qu'un PV porte forcément le suffixe 1 : LVM peut utiliser un disque entier.
Étape 3 — Comprendre la capacité des groupes
sudo vgs -o vg_name,pv_count,lv_count,vg_size,vg_free
Vérifiez le nombre de PV et de LV ainsi que la capacité totale et libre. Un groupe qui ne dispose plus d'espace libre ne pourra pas attribuer de capacité supplémentaire à un LV sans ajout ou réorganisation de stockage.
Étape 4 — Examiner les Logical Volumes
sudo lvs -o lv_name,vg_name,lv_size,lv_attr
La commande décrit les LV, y compris certains types particuliers. Les attributs doivent être interprétés selon le type de volume ; ils ne prouvent pas à eux seuls qu'un filesystem est monté.
Étape 5 — Associer les LV aux filesystems
lsblk -f
findmnt
df -hT
Comparez le nom du LV, le type de filesystem et le point de montage. C'est à cette étape que l'on quitte la notion d'allocation LVM pour observer l'espace effectivement exploité par les applications.
Lire un cas terrain : pourquoi un filesystem peut être plein
Imaginons l'inventaire suivant, présenté uniquement comme exemple :
PV /dev/sdb1 100 GiB
VG vgdata 100 GiB
LV lvapp 60 GiB
LV lvlogs 20 GiB
espace VG libre ~20 GiB
Si le filesystem de lvapp atteint 95 % d'occupation, cette situation n'implique pas que le disque ou le VG soit plein. Une partie de la capacité peut rester non affectée aux LV.
Inversement, si vgdata a VFree = 0, cela n'implique pas que tous les filesystems de ses LV sont pleins. Cela signifie seulement que la capacité du VG a déjà été attribuée.
C'est pourquoi un diagnostic de capacité doit rapprocher pvs, vgs, lvs et df, au lieu de tirer une conclusion d'une seule valeur.
Bonnes pratiques opérationnelles
Avant de créer ou de modifier un volume LVM, documentez les PV, les VG, les LV, les filesystems, les points de montage et les applications concernés.
Dans un VG qui comprend plusieurs PV, identifiez leur localisation et leurs dépendances. LVM n'est pas un mécanisme de redondance à lui seul : si un LV dépend de données placées sur un périphérique défaillant, son accès peut être affecté.
Conservez des noms significatifs pour les VG et LV. Surveillez à la fois la capacité du VG et celle des filesystems, car une alerte df et une alerte VFree répondent à des problèmes différents.
Sécurité
Les commandes pvs, vgs et lvs servent à l'inventaire. En revanche, pvcreate, vgcreate, lvcreate, lvremove et les commandes de redimensionnement changent réellement la configuration.
N'initialisez jamais un disque comme PV sans connaître son contenu. Les UUID LVM, les métadonnées de groupe et la configuration des éventuelles couches RAID ou de chiffrement doivent être pris en compte.
Coûts
LVM est une technologie logicielle intégrée à l'écosystème Linux. Son utilisation ne déclenche pas, à elle seule, de coût d'abonnement.
Le stockage physique, virtuel ou cloud qu'il gère peut en revanche être facturé selon sa capacité, ses performances et ses options de sauvegarde. LVM n'efface pas ces coûts.
Limites et points de vigilance
Cet article se limite aux concepts de base d'une configuration LVM classique. Il ne couvre pas encore la création de LV, les thin pools, la répartition avancée des extents, les snapshots, le RAID LVM ou la haute disponibilité sur stockage partagé.
LVM ne remplace ni un filesystem, ni une sauvegarde, ni une stratégie de résilience. Les volumes logiques donnent de la souplesse d'allocation, mais augmentent aussi le nombre de couches à comprendre lors d'un incident.
Rollback et nettoyage
La procédure de diagnostic décrite ici n'effectue aucune modification. Il n'y a donc aucun rollback ni nettoyage à réaliser.
Cette absence d'écriture est volontaire : savoir lire la structure avant de la modifier est la compétence essentielle à retenir du #44.
Références officielles
- Red Hat Enterprise Linux 9 — Configuring and managing logical volumes
- Red Hat — Managing LVM volume groups
- pvs(8) — Linux manual
- vgs(8) — Linux manual
- lvs(8) — Linux manual
Conclusion
LVM introduit trois niveaux à distinguer : PV pour les périphériques utilisés par LVM, VG pour la capacité regroupée, LV pour les volumes attribués aux usages du système.
Le chemin à garder en tête est :
disque ou partition → PV → VG → LV → filesystem → montage
Avec pvs, vgs, lvs, lsblk et df, on peut localiser la capacité, distinguer l'espace libre du groupe de celui du filesystem et préparer une intervention sans écrire sur les disques.
Dans le #45, nous passerons à la création contrôlée d'un volume logique LVM, avec les vérifications nécessaires avant son utilisation.
