Linux

LVM — Gestion des volumes logiques

Créer, redimensionner et gérer des volumes logiques avec LVM pour un stockage flexible et évolutif sous Linux.

← Retour aux tutoriels Linux
📚 C'est quoi LVM ? LVM (Logical Volume Manager) est une couche d'abstraction entre vos disques physiques et vos systèmes de fichiers. Au lieu de partitionner un disque de manière rigide, LVM vous permet de redimensionner vos volumes à chaud, de combiner plusieurs disques en un seul espace, et de créer des snapshots instantanés. C'est l'outil standard pour le stockage serveur sous Linux.
ⓘ Vocabulaire LVM PV (Physical Volume) = disque ou partition physique préparé pour LVM.
VG (Volume Group) = groupe de PV combinés en un seul pool de stockage.
LV (Logical Volume) = volume « virtuel » créé dans un VG, sur lequel on monte un système de fichiers.

Créer les volumes physiques (PV)

# Identifie les disques disponibles
lsblk
# Exemple : /dev/sdb et /dev/sdc sont deux disques vierges de 20 Go chacun

# Prépare les disques pour LVM (crée un PV sur chaque disque)
sudo pvcreate /dev/sdb /dev/sdc
# Physical volume "/dev/sdb" successfully created.
# Physical volume "/dev/sdc" successfully created.

# Vérifie les PV créés
sudo pvs
# PV         VG   Fmt  Attr PSize  PFree
# /dev/sdb        lvm2 ---  20.00g 20.00g
# /dev/sdc        lvm2 ---  20.00g 20.00g

# Détails complets d'un PV
sudo pvdisplay /dev/sdb
⚠ Données existantes pvcreate écrase la table de partition du disque. Vérifiez que le disque est bien vierge ou que les données ont été sauvegardées.

Créer un groupe de volumes (VG)

# Crée un VG nommé "vg-data" qui combine les deux disques
sudo vgcreate vg-data /dev/sdb /dev/sdc
# Volume group "vg-data" successfully created

# Vérifie le VG — affiche la taille totale (40 Go = 20 + 20)
sudo vgs
# VG      #PV #LV #SN Attr   VSize  VFree
# vg-data   2   0   0 wz--n- 39.99g 39.99g

# Ajoute un disque supplémentaire plus tard (si besoin)
# sudo pvcreate /dev/sdd
# sudo vgextend vg-data /dev/sdd
💡 Avantage Grâce au VG, vos deux disques de 20 Go sont vus comme un seul pool de 40 Go. Vous pouvez ajouter des disques quand bon vous semble avec vgextend.

Créer des volumes logiques (LV)

# Crée un LV de 25 Go pour les données
sudo lvcreate -L 25G -n lv-data vg-data
# Logical volume "lv-data" created.

# Crée un LV de 10 Go pour les logs
sudo lvcreate -L 10G -n lv-logs vg-data
# Logical volume "lv-logs" created.

# Crée un LV qui utilise tout l'espace restant
# sudo lvcreate -l 100%FREE -n lv-backup vg-data

# Vérifie les LV créés
sudo lvs
# LV      VG      Attr       LSize
# lv-data vg-data -wi-a----- 25.00g
# lv-logs vg-data -wi-a----- 10.00g

# Formate les LV avec ext4
sudo mkfs.ext4 /dev/vg-data/lv-data
sudo mkfs.ext4 /dev/vg-data/lv-logs

# Monte les volumes
sudo mkdir -p /mnt/data /mnt/logs
sudo mount /dev/vg-data/lv-data /mnt/data
sudo mount /dev/vg-data/lv-logs /mnt/logs

# Ajoute au fstab pour montage automatique au boot
echo '/dev/vg-data/lv-data /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
echo '/dev/vg-data/lv-logs /mnt/logs ext4 defaults 0 2' | sudo tee -a /etc/fstab

Redimensionner un volume logique

# Agrandit le LV de 5 Go supplémentaires
sudo lvextend -L +5G /dev/vg-data/lv-data
# Logical volume vg-data/lv-data successfully resized.

# IMPORTANT : redimensionne aussi le système de fichiers !
sudo resize2fs /dev/vg-data/lv-data
# (pour XFS : sudo xfs_growfs /mnt/data)

# Raccourci : agrandit le LV et le filesystem en une seule commande
sudo lvextend -L +5G --resizefs /dev/vg-data/lv-data

# Vérifie la nouvelle taille
df -h /mnt/data

# Réduit un LV (ext4 uniquement — IMPOSSIBLE avec XFS)
# ⚠️ Démontez d'abord, puis vérifiez le filesystem
sudo umount /mnt/logs
sudo e2fsck -f /dev/vg-data/lv-logs         # Vérifie l'intégrité
sudo resize2fs /dev/vg-data/lv-logs 5G       # Réduit le FS à 5 Go
sudo lvreduce -L 5G /dev/vg-data/lv-logs     # Réduit le LV à 5 Go
sudo mount /dev/vg-data/lv-logs /mnt/logs
⚠ Réduire un volume L'agrandissement est sans risque et se fait à chaud. La réduction est risquée (perte de données possible) et nécessite de démonter le volume. Faites toujours un backup avant.

Snapshots LVM

# Crée un snapshot du volume lv-data (réserve 2 Go pour les changements)
sudo lvcreate -s -L 2G -n snap-data /dev/vg-data/lv-data
# Logical volume "snap-data" created.

# Le snapshot est une copie instantanée à un instant T
# Tant que peu de données changent, il ne consomme presque pas d'espace

# Monte le snapshot en lecture seule pour accéder aux données « figées »
sudo mkdir -p /mnt/snapshot
sudo mount -o ro /dev/vg-data/snap-data /mnt/snapshot

# Restaure le snapshot (remet le volume dans l'état du snapshot)
sudo umount /mnt/data
sudo lvconvert --merge /dev/vg-data/snap-data
# Le LV lv-data revient à l'état de la capture

# Vérifie l'utilisation du snapshot (avant merge)
sudo lvs -o +snap_percent
💡 Usage typique Créez un snapshot avant une mise à jour ou une migration. Si tout se passe bien, supprimez le snapshot. Si ça tourne mal, restaurez le snapshot pour revenir en arrière instantanément.
✔ Résultat Vous maîtrisez LVM : création de volumes physiques, groupes de volumes, volumes logiques, redimensionnement à chaud et snapshots. Votre stockage Linux est flexible et évolutif.