
LVM, c’est un peu comme un couteau suisse quand on administre un serveur Linux. Une fois qu’on y a goûté, difficile de s’en passer : redimensionner un volume à chaud, déplacer des données d’un disque à l’autre, créer un snapshot juste avant une opération risquée… tout devient beaucoup plus souple.
Mais malgré sa puissance, LVM reste parfois sous-exploité. Notamment dans des scénarios où on pourrait automatiser des montages dynamiques, gérer des snapshots réguliers, ou préparer des volumes jetables pour des tests ou des backups.
Alors on va voir comment gérer ça proprement. Création de volumes à la volée, montages dynamiques, snapshots, rollback… tout ce qu’il faut pour vraiment tirer parti de LVM dans un environnement de prod ou de pré-prod.
📦 Préparer le terrain : un VG (Volume Group) prêt à l’emploi
Avant toute chose, tu dois avoir un volume group existant avec un peu d’espace libre. Si ce n’est pas le cas, voilà la base rapide :
# Exemple avec un disque /dev/sdb
sudo pvcreate /dev/sdb
sudo vgcreate data_vg /dev/sdb
Tu peux vérifier l’espace dispo avec :
sudo vgs
🔧 Créer un volume logique à la volée
Besoin d’un espace temporaire ? D’un volume isolé pour une base de données ou un conteneur ? Voici comment faire :
sudo lvcreate -L 5G -n test_volume data_vg
sudo mkfs.ext4 /dev/data_vg/test_volume
sudo mkdir /mnt/test
sudo mount /dev/data_vg/test_volume /mnt/test
Et hop, tu as un nouveau volume prêt à être utilisé.
📸 Créer un snapshot d’un volume LVM
Avant de lancer une mise à jour risquée, un script de migration de données ou une manip un peu floue, pense au snapshot.
sudo lvcreate -L 1G -s -n test_volume_snap /dev/data_vg/test_volume
Attention : le snapshot utilise l’espace LVM libre. S’il grossit trop (en fonction des changements sur le volume d’origine), il peut se remplir — et là, il se casse.
Tu peux monitorer ça avec :
sudo lvs
🔁 Revenir en arrière (rollback avec snapshot)
Ton script a fait n’importe quoi ? Pas grave. Si le snapshot est encore valide, tu peux restaurer l’état d’origine :
sudo umount /mnt/test
sudo lvconvert --merge /dev/data_vg/test_volume_snap
sudo mount /dev/data_vg/test_volume /mnt/test
Note : la fusion ne fonctionne que si le volume d’origine n’est pas monté. D’où le umount
.
🧹 Nettoyer les volumes ou snapshots inutiles
Quand un snapshot ne sert plus, pense à le supprimer. Même chose pour les volumes temporaires :
sudo lvremove /dev/data_vg/test_volume_snap
sudo lvremove /dev/data_vg/test_volume
L’espace est alors réintégré automatiquement au volume group.
⚙️ Automatiser les snapshots réguliers
Tu veux des snapshots quotidiens ou avant chaque déploiement ? Un petit script bash suffit.
#!/bin/bash
VG="data_vg"
LV="test_volume"
DATE=$(date +%Y%m%d-%H%M)
SNAP_NAME="${LV}_snap_${DATE}"
lvcreate -L 1G -s -n "$SNAP_NAME" "/dev/$VG/$LV"
Tu peux le cronner tous les jours, ou à chaque pre-hook de ton pipeline CI/CD. Tu peux même le coupler avec une rotation auto :
# Supprimer les snapshots de plus de 7 jours
sudo lvremove -f $(sudo lvs --noheadings -o lv_name,data_percent --separator '|' | awk -F'|' '/_snap_/ && $2 ~ /^[0-9]+/ {print "/dev/data_vg/" $1}')
💡 Astuces pratiques
- Redimensionner un volume logique à chaud :
sudo lvextend -L +2G /dev/data_vg/test_volume
sudo resize2fs /dev/data_vg/test_volume
- Lister tous les volumes et snapshots :
sudo lvs --all
- Voir rapidement ce qui consomme de l’espace dans le VG :
sudo vgs --units g
Quand utiliser ce genre de setup ?
- En pré-prod pour tester une upgrade destructrice
- Sur une base de données avant un script de migration
- En backup local ultra-rapide (le snapshot est instantané)
- Pour créer des volumes jetables dans un environnement LXC ou Docker, sans tout casser autour
À retenir
LVM, c’est plus que juste “le partitionnement flexible”. C’est un vrai outil de gestion dynamique du stockage. Et avec les snapshots, tu peux bosser sereinement, tester, casser, et revenir en arrière sans douleur.
Et franchement, quand tu commences à jouer avec ça en prod, tu te demandes pourquoi tu ne l’utilisais pas plus tôt.