Ceci est une ancienne révision du document !
Logical Volume Mapper (LVM)
Créer et utiliser un snapshot
Exemple de contexte:
root@magrathea:~# vgs VG #PV #LV #SN Attr VSize VFree magrathea 1 17 0 wz--n- 1,00T 500,02G root@magrathea:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert [...] webtest magrathea -wi-ao---- 5,00G
Cas d'un snapshot trop petit
On veut faire un snapshot de la partition webtest (ici en ext4) avec seulement 10 Mo (ce qui est une mauvaise idée):
root@magrathea:~# lvcreate -s -L 10000384B -n webtest_snap /dev/magrathea/webtest Rounding up size to full physical extent 12,00 MiB Logical volume "webtest_snap" created. lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert [...] webtest magrathea owi-aos--- 5,00G webtest_snap magrathea swi-a-s--- 12,58M webtest 0,10
Si il y a plus de 10 Mo de différence entre le LV webtest
et le LV webtest_snap
alors le snapshot sera dans l'état invalide, le filesystem corrompu et les données difficile et probablement impossible à récupérer alors que l'objet d'un snapshot est souvent de faire une sauvegarde. Pour être sûr de n'avoir jamais de snapshot invalid, il faut un snapshot de la même taille que la partition originale.
Par exemple, si webtest
est monté sur /var/lib/lxc/webtest/rootfs
, on peut voir le contenu du snapshot en le montant ailleurs, par exemple sur /mnt/tmp
:
mkdir -p /mnt/tmp mount -o ro /dev/magrathea/webtest_snap /mnt/tmp ls -la /mnt/tmp [...] umount /mnt/tmp
Le contenu de /mnt/tmp
est celui de webtest
figé au moment du snapshot
si on rajoute plus de 10 Mo de différence sur l'original /var/lib/lxc/webtest/rootfs
:
dd if=/dev/zero of=tmp/dummy bs=1024 count=10240 lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert webtest magrathea owi-aos--- 5,00G webtest_snap magrathea swi-a-s--- 12,58M webtest 92,61
on arrive a 92% de saturation du snapshot et si on repete la dernière commande, on arrive à 100%
dd if=/dev/zero of=tmp/dummy bs=1024 count=10240 lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert webtest magrathea owi-aos--- 5,00G webtest_snap magrathea swi-I-s--- 12,58M webtest 100,00
Le snapshot est invalide, on ne peut plus le monter correctement:
# mount -o ro /dev/magrathea/webtest_snap /mnt/tmp mount: /mnt/tmp: impossible de lire le superbloc à l’adresse /dev/mapper/magrathea-webtest_snap. # file -Ls /dev/magrathea/webtest_snap /dev/magrathea/webtest_snap: ERROR: cannot read `/dev/magrathea/webtest_snap' (Input/output error)
Bref attention à la taille donnée à un snapshot