Snapper est un utilitaire de ligne de commande sous Linux utilisé pour créer et gérer des instantanés de volumes légers LVM. Il peut créer, supprimer et comparer des instantanés et annuler les modifications apportées entre les instantanés. Snapper permet également de créer et de gérer facilement des instantanés pour Btrfs.
Installation du vivaneau
Utilisez la commande yum pour installer le package logiciel snapper.
# yum install snapper ... Transaction Summary ============================================================= Install 1 Package (+3 Dependent packages) Total download size: 499 k Installed size: 1.5 M Is this ok [y/d/N]: y ... Complete!
Utilisez la commande rpm –ql pour afficher les fichiers fournis par le package snapper.
# rpm –ql snapper /etc/cron.daily/snapper /etc/cron.hourly/snapper /etc/dbus-1/system.d/org.opensus.Snapper.conf /etc/logrotate.d/snapper /usr/bin/snapper /usr/sbin/snapperd /usr/share/dbus-1/system-services/org.opensus.Snapper.service ...Notez les deux fichiers cron snapper.
– Par défaut, snapper configure un cron.hourly travail pour créer des instantanés dans le .snapshots sous-répertoire du volume et un cron.daily tâche pour nettoyer les anciens instantanés.
– Vous pouvez modifier le fichier de configuration pour désactiver ou modifier ce comportement.
1. Création d'un volume logique finement provisionné
Utilisez la commande lvcreate pour créer un volume à allocation dynamique nommé – thinvol1. Notez que ce volume doit être monté avant de créer l'instantané à l'aide de la commande snapper.
# vgs VG #PV #LV #SN Attr VSize VFree myvolg 1 0 0 wz--n- 1020.00m 1020.00m
Créez un pool léger :
# lvcreate –v –L 100m –T myvolg/mythinpool ... Logical volume “mythinpool” created
Créer un volume finement provisionné :
# lvcreate –v –V 200m –T myvolg/mythinpool –n thinvol1 ... Logical volume “thinvol1” created
Créez un système de fichiers sur le volume léger.
# mkfs.ext4 /dev/myvolg/thinvol1 ... Writing superblocks and filesystem accounting information: done
Montez le système de fichiers :
# mkdir /myvol1 # mount /dev/myvolg/thinvol1 /myvol1
2. Création du fichier de configuration du vivaneau
Pour créer un instantané à l'aide de snapper, un fichier de configuration est requis pour le volume léger LVM ou le sous-volume Btrfs. Les volumes LVM et Btrfs doivent également avoir un système de fichiers monté. Utilisez la commande create-config pour créer le fichier de configuration. L'exemple suivant crée un fichier de configuration nommé myvol_snap pour un système de fichiers LVM ext4 monté sur /myvol1 :
# snapper –c myvol1_snap create-config –f "lvm(ext4)" /myvol1
– Cette commande ajoute une entrée à /etc/sysconfig/snapper.
– Cette commande crée le fichier de configuration /etc/snapper/configs/myvol1_snap.
– Cette commande crée un répertoire .snapshots dans /myvol1 répertoire.
# cat /etc/sysconfig/snapper ... SNAPPER_CONFIGS=”myvol1_snap”
# cat /etc/snapper/configs/myvol1_snap ... # subvolume to snapshot SUBVOLUME=”/myvol1” # filesystem type FSTYPE=”lvm(ext4)” ... # start comparing pre- and post-snapshot in background after... BACKGROUND_COMPARISON=”yes” # run daily number cleanup NUMBER_CLEANUP=”yes” ... # create hourly snapshots TIMELINE_CREATE=”yes” # cleanup hourly snapshots after some time TIMELINE_CLEANUP=”yes” ... # cleanup empty pre-post-pairs EMPTY_PRE_POST_CLEANUP=”yes” ...
Les instantanés du système de fichiers /myvol1 sont stockés dans le sous-répertoire .snapshots.
# ls –la /myvol1 ... drwxr-x--- ... .snapshots ...
Types d'instantanés
Il existe trois types d'instantanés que vous pouvez créer à l'aide de snapper :
pre : Permet d'enregistrer l'état d'un volume avant une modification. Les pré-instantanés doivent toujours avoir un post-instantané correspondant.
post : Permet d'enregistrer l'état d'un volume après une modification.
unique : Ces instantanés n'ont aucune relation particulière avec d'autres instantanés.
3. Création d'un instantané
Créez un fichier de test dans le répertoire /myvol1.
# echo "This is a test file" > /myvol1/test_file
Utilisez le snapper create -t pre pour créer un pré instantané du volume défini par myvol1_snap fichier de configuration. Incluez l'option –p pour afficher le numéro de l'instantané en cours de création. (Dans cet exemple, le numéro de pré-instantané est 1)
# snapper –c myvol1_snap create –t pre –p 1
Les instantanés sont stockés par numéro d'instantané dans le sous-répertoire .snapshots du volume. Affichez le contenu du répertoire /myvol1/.snapshots.
# ls –l /myvol1/.snapshots ... drwxr-xr-x ... 1
Affichez le contenu du répertoire /myvol1/.snapshots/1.
# ls –l /myvol1/.snapshots/1 ... -rw------- ... info.xml drwxr-x--- ... snapshot
Modifiez maintenant le contenu du répertoire /myvol1 en supprimant le test_file.
# rm /myvol1/test_file
Utilisez le snapper create -t post pour créer un post-instantané du volume défini par le fichier de configuration myvol1_snap. Incluez l'option –pre-num 1 pour associer ce post instantané au pré instantané 1. Incluez l'option –p pour afficher le numéro de l'instantané en cours de création.
# snapper –c myvol1_snap create –t post --pre-num 1 –p 2
Vous verriez un nouveau répertoire names 2 créé dans le répertoire .snapshots.
# ls –l /myvol1/.snapshots/2 ... -rw------- ... filelist-1.txt -rw------- ... info.xml drwxr-x--- ... snapshot
Le filelist-1.txt contient le fichier qui a été supprimé après le pré-instantané et avant le post-instantané.
# cat /myvol1/.snapshots/2/filelist-1.txt -..... /test_file
Comparer les instantanés avant et après
Utilisez la commande snapper status pour afficher les fichiers et répertoires qui ont été ajoutés, supprimés ou modifiés entre le pré-instantané 1 et le post-instantané 2.
# snapper –c myvol1_snap status 1..2 -..... /test_file
Utilisez la commande snapper diff pour afficher les différences entre le contenu des fichiers dans le pré-instantané 1 et le post-instantané 2.
# snapper –c myvol1_snap diff 1..2 Binary files /myvol1/.snapshots/1/snapshot/test_file and /myvol1/.snapshots/2/snapshot/test_file differ
Utilisez la commande snapper list pour répertorier les instantanés qui existent pour le volume défini par le fichier de configuration myvol1_snap.
# snapper –c myvol1_snap list Type | # | Pre # | Date | User | Cleanup |Description| Userdata ------+---+-------+------+------+---------+------------+-------- single| 0 | | ... | root | | Current | pre | 1 | | ... | root | | | post | 2 | 1 | ... | root | | |
inverser les changements de post snapshot à pré shanshot
Pour annuler les modifications du post-instantané au pré-instantané, c'est-à-dire pour restaurer le test_file, utilisez le snapper undochange commande.
# snapper –c myvol1_snap undochange 1..2 create:1 modify:0 delete:0
Vérifier
# ls /myvol1 lost+found test_file