Aller au contenu
Administration Linux medium

Gérer le stockage logique avec LVM

10 min de lecture

LVM (Logical Volume Manager) découple les volumes logiques des disques physiques : vous agrandissez un volume à chaud, ajoutez un disque à la volée ou prenez un instantané, sans rien reformater. Ce guide est le point d'entrée du parcours LVM : il montre comment construire la pile PV/VG/LV, l'inspecter et agrandir un volume à chaud avec lvextend -r (le cas d'usage numéro un en production). Les opérations avancées (thin provisioning, snapshots, migration de disque) sont traitées dans des guides dédiés, reliés en fin de page. Pour administrateurs débutants à intermédiaires, sur Debian/Ubuntu et RHEL. Toutes les sorties proviennent d'un test AlmaLinux.

  • Comprendre le modèle PV / VG / LV
  • Construire la pile avec pvcreate, vgcreate, lvcreate
  • Agrandir un volume logique à chaud avec lvextend -r
  • Créer et utiliser un snapshot
Fenêtre de terminal
sudo apt install lvm2

LVM empile trois couches. Comprendre cet empilement, c'est comprendre LVM :

  • PV (Physical Volume) : un disque ou une partition initialisé pour LVM (pvcreate).
  • VG (Volume Group) : un réservoir d'espace qui agrège un ou plusieurs PV (vgcreate).
  • LV (Logical Volume) : une tranche découpée dans le VG, que l'on formate et monte comme une partition (lvcreate).

Modèle de couches LVM : disques (PV) agrégés en réservoirs (VG) découpés en volumes logiques (LV)

L'intérêt : un LV n'est plus lié à un disque précis. Quand le VG manque d'espace, on lui ajoute un disque ; quand un LV se remplit, on l'agrandit en puisant dans le VG. Sans reformater, sans démonter.

Partons d'une partition /dev/sda1 de 10 Go dédiée à LVM. On initialise le PV, on crée le VG, puis un LV de 4 Go.

Fenêtre de terminal
sudo pvcreate /dev/sda1
sudo vgcreate vgdata /dev/sda1
sudo lvcreate -L 4G -n lvdata vgdata
Physical volume "/dev/sda1" successfully created.
Volume group "vgdata" successfully created
Logical volume "lvdata" created.

Le volume logique est accessible sous deux chemins équivalents : /dev/vgdata/lvdata et /dev/mapper/vgdata-lvdata. Formatez-le et montez-le comme n'importe quel volume :

Fenêtre de terminal
sudo mkfs.xfs /dev/vgdata/lvdata
sudo mkdir -p /data
sudo mount /dev/vgdata/lvdata /data

Pour la persistance, ajoutez l'entrée à /etc/fstab (par UUID via blkid, voir le guide montage). Les chemins /dev/mapper/... de LVM sont stables, mais l'UUID reste la convention la plus sûre.

Trois commandes concises donnent une vue synthétique de chaque couche. Ce sont celles à connaître au quotidien (les variantes pvdisplay, vgdisplay, lvdisplay détaillent davantage).

Fenêtre de terminal
sudo pvs
sudo vgs
sudo lvs
PV VG Fmt Attr PSize PFree
/dev/sda1 vgdata lvm2 a-- <10.00g <6.00g
VG #PV #LV #SN Attr VSize VFree
vgdata 1 1 0 wz--n- <10.00g <6.00g
LV VG Attr LSize Pool Origin Data% ...
lvdata vgdata -wi-ao---- 4.00g

On lit l'essentiel : le VG vgdata totalise 10 Go dont 6 Go libres (VFree), et le LV lvdata occupe 4 Go. Ces 6 Go libres sont la marge disponible pour agrandir.

C'est la raison d'être de LVM. Quand /data se remplit, on étend le volume logique et son système de fichiers en une seule commande, sans démonter, grâce à l'option -r (resize filesystem) :

Fenêtre de terminal
sudo lvextend -r -L +2G /dev/vgdata/lvdata
Size of logical volume vgdata/lvdata changed from 4.00 GiB (1024 extents) to 6.00 GiB (1536 extents).
Extending file system xfs to 6.00 GiB on vgdata/lvdata...
data blocks changed from 1048576 to 1572864
Logical volume vgdata/lvdata successfully resized.

LVM détecte le système de fichiers (ici XFS) et lance xfs_growfs automatiquement. lvs confirme la nouvelle taille :

LV VG Attr LSize Pool ...
lvdata vgdata -wi-ao---- 6.00g

Quand le VG entier manque d'espace, ajoutez-lui un nouveau disque. On initialise le PV, puis on l'agrège avec vgextend :

Fenêtre de terminal
sudo pvcreate /dev/sdb
sudo vgextend vgdata /dev/sdb

Le VG dispose maintenant de la somme des deux disques, et lvextend -r peut puiser dedans. C'est ainsi qu'on étend un stockage au-delà de la taille d'un seul disque, sans migration.

Un snapshot est une copie instantanée d'un LV à un instant T. Idéal avant une mise à jour risquée ou pour sauvegarder une base à chaud :

Fenêtre de terminal
sudo lvcreate -s -L 512M -n lvdata-snap /dev/vgdata/lvdata
Logical volume "lvdata-snap" created.

Le snapshot ne stocke que les blocs modifiés depuis sa création (copy-on-write), d'où sa petite taille initiale. On peut aussi s'en servir pour revenir en arrière après une opération ratée (lvconvert --merge), et un snapshot plein devient invalide. La sauvegarde cohérente, le rollback et le dimensionnement sont détaillés dans le guide dédié Snapshots LVM.

Réduire un LV est plus délicat : il faut rétrécir le système de fichiers d'abord, puis le volume. Et XFS ne se réduit pas : seul ext4 le permet.

Fenêtre de terminal
sudo lvreduce -r -L 2G /dev/vgdata/lvdata # ext4 uniquement, sauvegardez avant

Pour supprimer la pile, on démonte puis on retire dans l'ordre inverse de la création : LV, VG, PV.

Fenêtre de terminal
sudo umount /data
sudo lvremove /dev/vgdata/lvdata
sudo vgremove vgdata
sudo pvremove /dev/sda1
SymptômeCause probableSolution
Espace ajouté invisible après lvextendoubli de -rsudo lvextend -r ou resize2fs/xfs_growfs manuel
lvcreate refuse : espace insuffisantVG pleinvgs (VFree), ajouter un disque avec vgextend
Snapshot disparu / volume figésnapshot saturérecréer plus grand, surveiller lvs (Data%)
Réduction impossiblevolume en XFSXFS ne rétrécit pas : sauvegarder, recréer, restaurer

Le scénario du lab est celui que vous vivrez en production : un volume qui se remplit et qu'il faut agrandir sans coupure. Vous y étendez un volume logique avec lvextend, faites grandir le système de fichiers XFS, puis inscrivez le montage dans /etc/fstab par UUID pour prouver qu'il survit au redémarrage.

Une fois ce lab guidé acquis, mesurez-vous en conditions d'examen : partitions, LVM et swap à réaliser sans indices, en temps limité, sur RHEL ou Ubuntu.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • LVM empile PV → VG → LV : le volume logique n'est plus lié à un disque précis.
  • pvcreatevgcreatelvcreate construit la pile ; on formate et monte le LV comme une partition.
  • pvs / vgs / lvs donnent l'état ; VFree indique la marge d'extension.
  • lvextend -r agrandit volume et système de fichiers à chaud, en une commande.
  • vgextend ajoute un disque au réservoir pour dépasser la taille d'un seul disque.
  • Les snapshots (lvcreate -s) sauvegardent à chaud ; surveillez leur remplissage.

Une fois la pile en place et le redimensionnement maîtrisé, trois opérations couvrent l'essentiel de l'exploitation LVM au quotidien. Chacune a son guide dédié, avec sorties réelles et pièges à éviter.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn