Créer, redimensionner et gérer des volumes logiques avec LVM pour un stockage flexible et évolutif sous Linux.
# 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
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é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
vgextend.
# 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
# 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
# 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