← Sommaire SkyLinux

Leçon 39 : LVM - Gestion des Volumes Logiques

Dans cette leçon, tu vas découvrir **LVM** (Logical Volume Manager), un système puissant de gestion des disques sous Linux. LVM te permet de créer, redimensionner et gérer des volumes logiques de manière flexible — sans avoir à repartitionner ton disque. C'est indispensable pour tout administrateur qui gère des serveurs ou des espaces de stockage évolutifs.


1. Pourquoi LVM ?

Avec les partitions classiques, tu rencontres vite des limitations :

**LVM résout tout ça** en introduisant une couche d'abstraction entre les disques physiques et les systèmes de fichiers.

Les concepts clés de LVM

┌─────────────────────────────────────────┐

│ Volume Logique (LV) │

│ /home, /var, /data, etc. │

├─────────────────────────────────────────┤

│ Groupe de Volumes (VG) │

│ Regroupe plusieurs PV = un pool │

├──────────────────┬──────────────────────┤

│ Disque Physique │ Disque Physique │

│ (PV) │ (PV) │

│ /dev/sdb1 │ /dev/sdc1 │

└──────────────────┴──────────────────────┘


2. Créer et organiser avec LVM

Préparer un disque physique (PV)

# Voir les disques disponibles

lsblk

# Créer une partition Linux (type 8e pour LVM)

sudo fdisk /dev/sdb

# Taper : n (nouvelle partition), p (primaire), 1, Entrée, Entrée, t, 8e, w

# Créer le Physical Volume

sudo pvcreate /dev/sdb1

# Vérifier

sudo pvs

sudo pvdisplay

Créer un Volume Group (VG)

# Créer un VG avec un ou plusieurs PV

sudo vgcreate mon_vg /dev/sdb1

# Ajouter un autre disque au VG

sudo vgextend mon_vg /dev/sdc1

# Voir les VG

sudo vgs

sudo vgdisplay mon_vg

Créer un Volume Logique (LV)

# Créer un LV de 10 Go dans le VG

sudo lvcreate -L 10G -n donnees mon_vg

# Ou créer un LV qui utilise tout l'espace disponible

sudo lvcreate -l 100%FREE -n donnees mon_vg

# Voir les LV

sudo lvs

sudo lvdisplay

Formater et monter

# Formater en ext4

sudo mkfs.ext4 /dev/mon_vg/donnees

# Monter temporairement

sudo mkdir /mnt/donnees

sudo mount /dev/mon_vg/donnees /mnt/donnees

# Vérifier

df -h /mnt/donnees

Montage automatique (fstab)

# Ajouter au fichier /etc/fstab

echo '/dev/mon_vg/donnees /mnt/donnees ext4 defaults 0 2' | sudo tee -a /etc/fstab

# OU utiliser l'UUID (plus fiable)

sudo blkid /dev/mon_vg/donnees

# Ajouter : UUID=<uuid> /mnt/donnees ext4 defaults 0 2


3. Redimensionner un volume logique

C'est **la force de LVM** : agrandir ou réduire un volume à chaud !

Agrandir un LV (à chaud, sans démonter)

# 1. Vérifier l'espace disponible dans le VG

sudo vgs

# 2. Agrandir le LV de 5 Go supplémentaires

sudo lvextend -L +5G /dev/mon_vg/donnees

# 3. Agrandir le système de fichiers (très important !)

# Pour ext4 :

sudo resize2fs /dev/mon_vg/donnees

# Pour xfs (on ne peut qu'agrandir, pas réduire) :

sudo xfs_growfs /mnt/donnees

# 4. Vérifier

df -h /mnt/donnees

Réduire un LV (nécessite de démonter)

# 1. Démonter

sudo umount /mnt/donnees

# 2. Vérifier le système de fichiers (important !)

sudo e2fsck -f /dev/mon_vg/donnees

# 3. Réduire le système de fichiers à 8 Go

sudo resize2fs /dev/mon_vg/donnees 8G

# 4. Réduire le LV

sudo lvreduce -L 8G /dev/mon_vg/donnees

# 5. Remonter

sudo mount /dev/mon_vg/donnees /mnt/donnees

⚠️ **Attention** : Réduire un volume peut causer une perte de données. Sauvegarde toujours avant !


4. Ajouter un nouveau disque à LVM

# 1. Préparer le nouveau disque

sudo pvcreate /dev/sdd1

# 2. L'ajouter au VG existant

sudo vgextend mon_vg /dev/sdd1

# 3. Utiliser l'espace pour agrandir un LV

sudo lvextend -L +20G /dev/mon_vg/donnees

sudo resize2fs /dev/mon_vg/donnees

# Vérifier

sudo pvs

sudo vgs


5. Supprimer un volume logique

# 1. Démonter

sudo umount /mnt/donnees

# 2. Supprimer le LV

sudo lvremove /dev/mon_vg/donnees

# Confirmer avec 'y'

# Supprimer le VG

sudo vgremove mon_vg

# Supprimer le PV

sudo pvremove /dev/sdb1


6. Snapshots LVM

LVM permet de créer des **snapshots** — des copies instantanées d'un volume à un instant T. Très utile pour les sauvegardes ou les tests.

# Créer un snapshot de 5 Go (doit être assez grand pour les modifications)

sudo lvcreate -L 5G -s -n snapshot_donnees /dev/mon_vg/donnees

# Monter le snapshot pour y accéder

sudo mkdir /mnt/snapshot

sudo mount /dev/mon_vg/snapshot_donnees /mnt/snapshot

# Une fois terminé, supprimer le snapshot

sudo umount /mnt/snapshot

sudo lvremove /dev/mon_vg/snapshot_donnees


7. Exemple concret : Migrer /home vers LVM

# 1. Créer un nouveau LV pour /home

sudo lvcreate -L 50G -n home mon_vg

# 2. Formater

sudo mkfs.ext4 /dev/mon_vg/home

# 3. Copier les données

sudo mkdir /mnt/newhome

sudo mount /dev/mon_vg/home /mnt/newhome

sudo rsync -av /home/ /mnt/newhome/

# 4. Modifier /etc/fstab pour pointer vers le nouveau volume

# Remplacer la ligne /home par :

# /dev/mon_vg/home /home ext4 defaults 0 2

# 5. Redémarrer ou remonter

sudo umount /home

sudo mount /home

# 6. Vérifier

df -h /home


8. Commandes essentielles à retenir

CommandeRôle
pvcreate /dev/sdX1Préparer une partition pour LVM
pvsLister les Physical Volumes
vgcreate nom /dev/sdX1Créer un Volume Group
vgsLister les Volume Groups
vgextend nom /dev/sdY1Ajouter un PV à un VG
lvcreate -L 10G -n nom vgCréer un Logical Volume
lvsLister les Logical Volumes
lvextend -L +5G /dev/vg/lvAgrandir un LV
lvreduce -L 8G /dev/vg/lvRéduire un LV
resize2fs /dev/vg/lvAjuster le filesystem après resize
lvremove /dev/vg/lvSupprimer un LV
lvdisplayDétails complets d'un LV

9. Exercice pratique

**But** : Créer un environnement LVM complet et manipuler les volumes.

# 1. Crée deux fichiers de 500 Mo pour simuler des disques

dd if=/dev/zero of=/tmp/disque1 bs=1M count=500 oflag=direct

dd if=/dev/zero of=/tmp/disque2 bs=1M count=500 oflag=direct

# 2. Configure les en loop devices

sudo losetup -fP /tmp/disque1

sudo losetup -fP /tmp/disque2

# Note les noms (ex: /dev/loop0, /dev/loop1)

# 3. Crée les PV (remplace sda1 par ton loop)

sudo pvcreate /dev/loop0

sudo pvcreate /dev/loop1

# 4. Crée un VG

sudo vgcreate mon_test_vg /dev/loop0

# 5. Ajoute le second disque au VG

sudo vgextend mon_test_vg /dev/loop1

# 6. Crée un LV de 300 Mo

sudo lvcreate -L 300M -n test_lv mon_test_vg

# 7. Formate et monte

sudo mkfs.ext4 /dev/mon_test_vg/test_lv

sudo mkdir /mnt/test_lvm

sudo mount /dev/mon_test_vg/test_lv /mnt/test_lvm

# 8. Vérifie l'espace

df -h /mnt/test_lvm

# 9. Agrandis de 100 Mo

sudo lvextend -L +100M /dev/mon_test_vg/test_lv

sudo resize2fs /dev/mon_test_vg/test_lv

df -h /mnt/test_lvm

# 10. Nettoie

sudo umount /mnt/test_lvm

sudo lvremove /dev/mon_test_vg/test_lv

sudo vgremove mon_test_vg

sudo pvremove /dev/loop0 /dev/loop1

sudo losetup -D

rm /tmp/disque1 /tmp/disque2


Résumé

LVM te donne une flexibilité incomparable pour gérer ton stockage. Une fois habitué, tu ne reviendras plus aux partitions fixes !