Un snapshot LVM est une photo instantanée d'un volume à un instant précis, prise à chaud, sans arrêter le service. Il sert à deux choses : sauvegarder un volume en cours d'utilisation de façon cohérente, et revenir en arrière après une opération risquée. Ce guide montre comment créer un snapshot, l'utiliser pour une sauvegarde, et surtout restaurer un état antérieur avec lvconvert --merge. Pour administrateurs Linux intermédiaires, sur Debian/Ubuntu et RHEL/AlmaLinux. Toutes les sorties proviennent d'un test réel.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Créer un snapshot d'un volume logique avec
lvcreate -s - Comprendre le mécanisme copy-on-write et dimensionner le snapshot
- Sauvegarder un volume à chaud sans incohérence
- Restaurer un état antérieur (rollback) avec
lvconvert --merge - Éviter qu'un snapshot saturé ne soit invalidé
Prérequis
Section intitulée « Prérequis »Une pile LVM en place avec au moins un volume logique formaté et monté (voir le guide LVM). Le Volume Group doit disposer d'espace libre (vgs, colonne VFree) pour accueillir le snapshot.
Qu'est-ce qu'un snapshot LVM
Section intitulée « Qu'est-ce qu'un snapshot LVM »Un snapshot est une image figée d'un volume logique (l'origine) à l'instant de sa création. Le mécanisme s'appelle le copy-on-write (COW) : au lieu de copier tout le volume, LVM ne stocke que les blocs modifiés depuis la prise du snapshot. Tant que rien ne change sur l'origine, le snapshot ne consomme presque rien.
C'est ce qui rend le snapshot rapide et léger à créer, même sur un gros volume. La taille que vous réservez (-L) ne sert qu'à stocker ces différences : elle se dimensionne selon le volume d'écritures attendu pendant la durée de vie du snapshot, pas selon la taille de l'origine.
Créer un snapshot
Section intitulée « Créer un snapshot »On crée un snapshot avec l'option -s (--snapshot), en réservant une taille pour les blocs modifiés :
-
Créer le snapshot d'un volume
lvdata, avec 256 Mio réservés :Fenêtre de terminal sudo lvcreate -s -L 256M -n lvdata-snap vg_data/lvdataLogical volume "lvdata-snap" created. -
Modifier l'origine (le volume continue de servir normalement), puis observer le remplissage du snapshot :
Fenêtre de terminal sudo lvs -o lv_name,origin,data_percent vg_dataLV Origin Data%lvdatalvdata-snap lvdata 0.02
Le snapshot lvdata-snap pointe vers son origine lvdata, et son Data% grimpe à mesure que l'origine est modifiée. Ici, après une petite écriture, il n'est rempli qu'à 0,02 % : seuls les blocs réellement changés sont copiés.
Sauvegarder un volume à chaud de façon cohérente
Section intitulée « Sauvegarder un volume à chaud de façon cohérente »Le premier usage du snapshot est la sauvegarde cohérente. Sauvegarder un volume pendant qu'il est écrit produit des fichiers incohérents (à moitié modifiés). Le snapshot résout ce problème : on fige l'état à un instant T, puis on sauvegarde le snapshot pendant que l'origine continue de tourner.
# 1. Figer l'état actuelsudo lvcreate -s -L 1G -n db-snap vg_data/lv_db
# 2. Sauvegarder le snapshot (l'origine reste en service)sudo mount -o ro /dev/vg_data/db-snap /mnt/snapsudo tar czf /backup/db-$(date +%F).tar.gz -C /mnt/snap .sudo umount /mnt/snap
# 3. Libérer le snapshot une fois la sauvegarde terminéesudo lvremove -y vg_data/db-snapLa base de données ne subit aucune interruption : elle écrit sur l'origine, vous sauvegardez l'image figée.
Restaurer un état antérieur avec lvconvert --merge
Section intitulée « Restaurer un état antérieur avec lvconvert --merge »Le second usage, souvent oublié, est le rollback. Avant une mise à jour risquée, on prend un snapshot ; si l'opération tourne mal, on fusionne le snapshot dans l'origine pour revenir à l'état d'avant, avec lvconvert --merge.
-
Démonter l'origine (le merge immédiat exige qu'elle soit fermée) :
Fenêtre de terminal sudo umount /mnt/data -
Fusionner le snapshot dans l'origine :
Fenêtre de terminal sudo lvconvert --merge vg_data/lvdata-snapMerging of volume vg_data/lvdata-snap started.vg_data/lvdata: Merged: 99.99% -
Remonter : l'origine est revenue à l'état du snapshot, et le snapshot est consommé puis supprimé automatiquement :
Fenêtre de terminal sudo mount /dev/vg_data/lvdata /mnt/datacat /mnt/data/fichier.txt# contenu version 1 (les modifications postérieures ont disparu)
Le danger : un snapshot saturé
Section intitulée « Le danger : un snapshot saturé »La parade : dimensionner large la zone du snapshot quand l'origine est très active, et surveiller son Data% pendant sa durée de vie. Un snapshot n'a pas vocation à vivre longtemps : créez-le, utilisez-le, supprimez-le.
Snapshots classiques ou snapshots fins ?
Section intitulée « Snapshots classiques ou snapshots fins ? »Le snapshot décrit ici est le snapshot classique : il préalloue une taille fixe et devient invalide s'il déborde. Quand on multiplie les snapshots (sauvegardes fréquentes, environnements de test), les snapshots fins (thin snapshots) sont plus efficaces : ils ne préallouent aucun espace fixe et partagent les blocs du pool.
# Snapshot d'un thin volume : pas de taille -L à réserversudo lvcreate -s -n lvdata-snap vg_data/thin_lvdataLe risque se déplace alors vers la saturation du thin pool plutôt que du snapshot lui-même. Voir le guide thin provisioning LVM.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
lvcreate -s refuse : espace insuffisant | VG plein | vgs (VFree), libérer ou ajouter un disque |
| Snapshot invalidé / disparu | snapshot saturé (Data% à 100) | le recréer plus grand, surveiller le remplissage |
lvconvert --merge ne fait rien tout de suite | origine encore montée | démonter l'origine, ou la fusion s'applique au reboot |
| Le merge ne rend pas la main | origine en cours d'utilisation | fermer tous les accès au volume |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »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
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
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Un snapshot (
lvcreate -s) fige un volume à un instant T, en copy-on-write (seuls les blocs modifiés sont copiés). - Il sert à la sauvegarde cohérente (sauvegarder le snapshot pendant que l'origine tourne) et au rollback.
- Le rollback se fait avec
lvconvert --merge; démonter l'origine pour un effet immédiat, sinon il s'applique au redémarrage. - Un snapshot saturé est invalidé : dimensionner sa zone selon les écritures attendues et surveiller son
Data%. - Pour des snapshots nombreux, préférer les snapshots fins sur un thin pool.
- Un snapshot est temporaire : créer, utiliser, supprimer.
FAQ : questions fréquentes sur les snapshots LVM
Section intitulée « FAQ : questions fréquentes sur les snapshots LVM »lvconvert --merge vg/snapshot, qui fusionne le snapshot dans son origine et ramène le volume à l'état figé. Si l'origine est démontée, la fusion démarre immédiatement. Sinon, elle est différée à la prochaine activation du volume (au redémarrage pour un système de fichiers racine). Après la fusion, le snapshot est automatiquement consommé et supprimé. C'est le mécanisme de rollback à connaître avant toute opération risquée.-L) d'un snapshot classique sert uniquement à stocker les blocs modifiés sur l'origine pendant la vie du snapshot, pas à copier le volume entier. On la dimensionne donc selon le volume d'écritures attendu : généreuse si l'origine est très active ou si le snapshot doit vivre longtemps, plus modeste sinon. Un snapshot sous-dimensionné se sature et devient invalide, donc mieux vaut prévoir une marge et surveiller son Data%.Data%, et ne pas laisser vivre un snapshot plus longtemps que nécessaire.-L) et devient invalide s'il déborde : parfait pour un usage ponctuel (une sauvegarde, un test). Le snapshot fin (thin), créé sur un thin pool, ne préalloue aucun espace fixe et partage les blocs du pool : il est bien plus efficace quand on multiplie les snapshots (sauvegardes fréquentes, nombreux environnements). Le risque se déplace alors vers la saturation du thin pool plutôt que du snapshot.