Faire des sauvegardes : Snapshot

Un des intérêts de LVM, est de pouvoir créer des snapshots de volume sans perturber le fonctionnement de la machine, sans interruption de services.
Parce que celui-ci est intelligent, donc il ne va pas copier l'intégralité du LV (volume logique) original.
Au contraire, il ne va stocker que les différences.
C'est pourquoi il est instantané et commence avec une occupation taille nulle.

A l’aide de simples scripts, l’automatisation des backups en est grandement facilité.

Je vais donc vous montrer comment faire des snapshots.

Création d'un snapshot LVM

lvcreate -n nomdusnapshot -l 10%ORIGIN -s LVVolume

où :

LVVolume : est le device du volume, comme /dev/LVM/SRV

nomdusnapshot : est le nom du snapshot

-l 10%ORIGIN : est la taille du snapshot, dans cet exemple elle sera de 10% par rapport au volume d’origine. On peut lui indiquer une grandeur réelle avec -l 100M par exemple.

autres exemple :

lvcreate -L 10g -s -n VL1_20150825 /dev/VG0/VL1

Va créer un snapshot du volume logique “VL1” à la taille de 10Go qui va avoir comme nom “VL1_20150825”.

Attention, la taille d'utilisation du snapshot évolue avec l'utilisation. Si ce snapshot se retrouve rempli à 100%, il devient alors inutilisable (état “INACTIVE”) mais pas d’inquiétude car il n'y a pas d’impact pour le LV d'origine. La commande lvdisplay permet de voir l'évolution de la taille.

La taille du snapshot est la taille allouée pour enregistrer les différences entre le snapshot et le LV d’origine.
Si la quantité de modification dépasse la quantité allouée, le snapshot ne sera plus utilisable.
Mais nous pouvons agrandir celui-ci par la commande lvextend avant qu’elle atteigne sa limite.

Le volume créé, peut-être monté comme n’importe quelle autre volume.

Redimensionnement du snapshot

La taille du snapshot est trop petite et elle arrive bientôt à 100%, pourtant vous avez encore besoin d'utiliser ce snapshots.
Vérifier avec vgdisplay que le VG dispose encore d'assez d'espace libre (Free PE / Size) puis effectuer :

lvresize -L +3GB /dev/VG0/VL1_20150825

Va ajouter 3Go au snapshot VL1_20150825 qui est présent dans le VG VG0.

Fusionner un snapshot

Le but ici est de fusionner un snapshot modifié vers le LV d'origine.
Pour ainsi dire, “faire que les modifications apportées sur le snapshot se retrouvent sur le LV d'origine”.
Vous pouvez utiliser l'option –merge de la commande lvconvert pour fusionner un instantané dans son volume d'origine.
Si le volume d'origine et le volume de l'instantané ne sont pas ouverts, la fusion démarrera immédiatement.
Sinon, la fusion démarrera lorsque l'instantané ou l'origine sont activés et lorsque les deux sont fermés.

Fusionner un instantané dans un volume d'origine qui ne peut pas être fermé, le système de fichier root par exemple, est reporté jusqu'à la prochaine activation du volume d'origine.
Lorsque la fusion démarre, le volume logique en résultant comportera le nom, le numéro mineur et l'UUID du volume d'origine.
Pendant la fusion, les opérations de lecture et d'écriture sur le volume d'origine apparaissent telles qu'elles le devraient à l'instantané en cours de fusion.
Lorsque la fusion se termine, l'instantané fusionné est supprimé.

lvconvert --merge /dev/VG0/VL1_20150825

La commande suivante fusionne le volume instantané VG0/VL1_20150825 dans son volume d'origine.

Attention : vous avez besoin d'un kernel (>=2.6.33)

Sources : ubuntu.org, RedHat.com, partage-it.com