Lab 16 – Snapshot: con e senza RAM, rollback, alberi e volume chain
Dipendenze
Sezione intitolata “Dipendenze”- Lab precedenti: Lab 10 (snapshot ZFS), Lab 09 (LVM-thin su
desopve04), Lab 13 (storagenas-nfs), Lab 15 (storagenas-lvmsu iSCSI). - Cluster: VM 100
debian01accesa sudesopve01con il disco sulocal-zfs;desopve04standalone con lo storagelocal-lvm(LVM-thin). - Spazio: il gruppo
vg_nasha 40 GiB liberi; il disco della VM 100 è di 16 GiB. - Credenziali:
root/<password-lab>sui nodi,labuser/<password-lab>nella VM 100 → Appendice B.
Obiettivi
Sezione intitolata “Obiettivi”- Fare snapshot di una VM con e senza la RAM, e capire cosa succede al rollback.
- Riconoscere come ogni tipo di storage realizza gli snapshot e quali limiti ha.
- Costruire un albero di snapshot con rami.
- Attivare gli snapshot come volume chain su LVM condiviso, guardare la catena di volumi e misurarne il costo in spazio.
Come funziona
Sezione intitolata “Come funziona”Che cos’è uno snapshot in Proxmox VE
Sezione intitolata “Che cos’è uno snapshot in Proxmox VE”Uno snapshot congela lo stato della VM in un istante:
- lo stato dei dischi, realizzato dallo storage (ZFS, qcow2, LVM-thin, Ceph…);
- la configurazione della VM, salvata nel file
/etc/pve/qemu-server/<VMID>.confin una sezione[nome-snapshot]; - facoltativamente la RAM (vmstate), cioè lo stato della VM accesa: processi, connessioni, contenuto della memoria. Viene salvata in un volume a parte sullo stesso storage.
Il rollback riporta la VM esattamente a quel punto. Con la RAM la VM riparte accesa, come se nulla fosse successo; senza RAM riparte spenta, come dopo un’interruzione di corrente.
Uno snapshot non è un backup: sta sullo stesso storage della VM, e se lo storage si guasta si perdono VM e snapshot insieme. I backup sono l’argomento dei lab 46 e 47.
Snapshot per tipo di storage
Sezione intitolata “Snapshot per tipo di storage”| Storage | Come funziona | Rollback a uno snapshot non recente |
|---|---|---|
| ZFS | snapshot nativo del volume ZFS, istantaneo | no: vanno prima cancellati i più recenti |
| qcow2 su NFS, SMB o directory | snapshot interni al file qcow2 | sì, con rami (albero) |
| LVM-thin | volume thin che condivide i blocchi con l’originale | sì, con rami |
| LVM (thick, anche condiviso) | nessuno | – |
| LVM con volume chain (PVE 9) | catena di volumi qcow2, ognuno su un LV | no: solo il più recente |
| Ceph RBD | snapshot nativo RBD (lab 17) | sì, anche a uno snapshot non recente: i successivi restano |
Snapshot come volume chain
Sezione intitolata “Snapshot come volume chain”LVM thick non ha snapshot utilizzabili: gli snapshot classici di LVM (copy-on-write) rallentano le scritture del volume d’origine e, su un gruppo di volumi condiviso tra nodi, non si possono usare. Proxmox VE 9 introduce un’alternativa, ancora in anteprima tecnologica (technology preview), valida per qualsiasi storage a blocchi (iSCSI, Fibre Channel):
prima dello snapshot dopo lo snapshot "v1" ┌──────────────────────┐ ┌──────────────────────────────┐ ┌──────────────────────┐ │ vm-100-disk-0.qcow2 │ ──▶ │ snap_vm-100-disk-0_v1.qcow2 │ ◀─│ vm-100-disk-0.qcow2 │ │ (LV da 16 GiB) │ │ stato congelato (16 GiB) │ │ nuovo, solo le │ └──────────────────────┘ └──────────────────────────────┘ │ differenze (16 GiB) │ backing file └──────────────────────┘- Il disco della VM è in formato qcow2, scritto direttamente dentro un LV.
- Lo snapshot rinomina il volume corrente (che diventa lo stato congelato) e crea un nuovo volume che contiene solo le differenze, con il precedente come backing file.
- Ogni volume è un LV thick della dimensione dell’intero disco: uno snapshot di un disco da 16 GiB occupa altri 16 GiB nel gruppo di volumi.
Procedura
Sezione intitolata “Procedura”1. Snapshot con la RAM su ZFS
Sezione intitolata “1. Snapshot con la RAM su ZFS”-
Nella VM 100 crea un file che servirà da riferimento:
labuser@debian01 echo "creato prima dello snapshot" > $HOME/prima.txt; sync; uptime -sOutput 2026-11-09 14:30:12uptime -smostra quando la VM è stata avviata. -
VM 100 → Snapshots → Take Snapshot: Name
con-ram, una descrizione, e Include RAM spuntato (è il predefinito con la VM accesa).
-
Sul nodo guarda che cosa ha creato ZFS:
root@desopve01 qm listsnapshot 100Output `-> con-ram 2026-11-09 16:41:06 File prima.txt presente, RAM inclusa`-> current You are here!root@desopve01 zfs list -t all -o name,used,refer -r rpool/data | grep -E 'NAME|vm-100'Output NAME USED REFERrpool/data/vm-100-disk-0 5.86G 5.86Grpool/data/vm-100-disk-0@con-ram 804K 5.86Grpool/data/vm-100-state-con-ram 154M 154Mvm-100-disk-0@con-ramè lo snapshot del disco: subito dopo la creazione occupa quasi niente (804K), perché condivide tutti i blocchi con il disco.vm-100-state-con-ramè un volume a parte con il contenuto della RAM (154 MiB in uso su 2 GiB).
-
Nella VM cancella il file e creane un altro, poi fai il rollback:
labuser@debian01 rm $HOME/prima.txt; echo "creato dopo lo snapshot" > $HOME/dopo.txt; syncroot@desopve01 time qm rollback 100 con-ramOutput real 0m4.404sroot@desopve01 qm status 100Output status: runninglabuser@debian01 ls $HOME; uptime -sOutput prima.txt2026-11-09 14:30:12In 4 secondi la VM è tornata al momento dello snapshot, accesa:
prima.txtc’è,dopo.txtnon è mai esistito, e l’orario di avvio non è cambiato perché la VM non si è riavviata. Anche la sessione SSH aperta prima dello snapshot riprende, se non è scaduta nel frattempo.
2. Snapshot senza RAM e il limite di ZFS
Sezione intitolata “2. Snapshot senza RAM e il limite di ZFS”-
Fai uno snapshot senza la RAM:
root@desopve01 qm snapshot 100 senza-ram --vmstate 0qm listsnapshot 100Output `-> con-ram 2026-11-09 16:41:06 File prima.txt presente, RAM inclusa`-> senza-ram 2026-11-09 16:45:34 no-description`-> current You are here! -
Prova a tornare al primo snapshot, che non è il più recente:
root@desopve01 qm rollback 100 con-ramOutput can't rollback, 'con-ram' is not most recent snapshot on 'local-zfs:vm-100-disk-0'ZFS può tornare solo all’ultimo snapshot: per tornare a uno precedente bisogna prima cancellare quelli più recenti.
-
Fai il rollback a
senza-ram: senza la RAM la VM si ritrova spenta e va riavviata.root@desopve01 qm rollback 100 senza-ram; qm status 100Output status: stoppedroot@desopve01 qm start 100 -
Cancella
senza-ram: oracon-ramè il più recente e il rollback è permesso. Poi cancella anchecon-ram.root@desopve01 qm delsnapshot 100 senza-ramqm rollback 100 con-ram; qm status 100Output status: runningroot@desopve01 qm delsnapshot 100 con-ramSe
qm delsnapshotrispondecan't lock file '/var/lock/qemu-server/lock-100.conf' - got timeout, il rollback precedente sta ancora terminando: riprova dopo qualche secondo.
3. Un albero di snapshot con qcow2 su NFS
Sezione intitolata “3. Un albero di snapshot con qcow2 su NFS”Su uno storage di file con dischi qcow2 gli snapshot sono interni al file e si può tornare a uno qualsiasi. Usa una VM di prova senza sistema operativo:
qm create 110 --name snap-qcow2 --memory 512 --scsihw virtio-scsi-single --scsi0 nas-nfs:4,format=qcow2qm snapshot 110 s1 --description "stato s1"qm snapshot 110 s2 --description "stato s2"qm rollback 110 s1qm snapshot 110 s3 --description "dopo il rollback a s1"qm listsnapshot 110`-> s1 2026-11-09 16:46:35 stato s1 `-> s2 2026-11-09 16:46:36 stato s2 `-> s3 2026-11-09 16:46:39 dopo il rollback a s1 `-> current You are here!qemu-img snapshot -l /mnt/pve/nas-nfs/images/110/vm-110-disk-0.qcow2Snapshot list:ID TAG VM_SIZE DATE VM_CLOCK ICOUNT1 s1 0 B 2026-11-09 16:46:35 0000:00:00.000 02 s2 0 B 2026-11-09 16:46:36 0000:00:00.000 03 s3 0 B 2026-11-09 16:46:39 0000:00:00.000 0Il rollback a s1 è riuscito anche se esisteva s2. Lo snapshot s3, creato dopo, nasce da s1: l’albero ha due rami, s2 e s3. Nell’interfaccia web si vede così:

Creare o cancellare uno snapshot interno qcow2 blocca la VM per la durata dell’operazione, e su storage di rete con dischi grandi può richiedere minuti. Con dischi grandi su NFS conviene fare queste operazioni a VM spenta, oppure usare la volume chain.
4. LVM-thin
Sezione intitolata “4. LVM-thin”Su desopve04 lo storage local-lvm è LVM-thin (lab 09):
qm create 940 --name snap-thin --memory 512 --scsihw virtio-scsi-single --scsi0 local-lvm:4qm snapshot 940 primalvs -o lv_name,lv_attr,lv_size,pool_lv,origin,data_percent pve | grep -E 'LV|940' LV Attr LSize Pool Origin Data% snap_vm-940-disk-0_prima Vri---tz-k 4.00g data vm-940-disk-0 vm-940-disk-0 Vwi-a-tz-- 4.00g data 0.00Lo snapshot è un volume thin (snap_vm-940-disk-0_prima) che ha come origine il disco: condivide i blocchi e occupa spazio solo per i blocchi che poi cambiano. Come con qcow2 si può tornare a uno snapshot qualsiasi: con due snapshot uno e due, qm rollback a uno riesce.
5. LVM thick: niente snapshot
Sezione intitolata “5. LVM thick: niente snapshot”Sullo storage nas-lvm del lab 15, così come è stato creato, i dischi sono LV raw:
qm create 112 --name snap-lvm --memory 512 --scsihw virtio-scsi-single --scsi0 nas-lvm:4qm snapshot 112 provasnapshot feature is not available6. Attivare gli snapshot come volume chain
Sezione intitolata “6. Attivare gli snapshot come volume chain”-
Datacenter → Storage →
nas-lvm→ Edit, spunta Advanced e poi Allow Snapshots as Volume-Chain. L’interfaccia ricorda che è un’anteprima tecnologica.
-
L’opzione vale solo per i dischi creati da quel momento:
root@desopve01 grep -A6 "lvm: nas-lvm" /etc/pve/storage.cfgOutput lvm: nas-lvmvgname vg_nascontent rootdir,imagessaferemove 0shared 1snapshot-as-volume-chain 1root@desopve01 qm snapshot 112 provaOutput snapshot feature is not availableIl disco
rawdella VM 112 resta senza snapshot. -
Sposta a caldo il disco della VM 100 su
nas-lvmin formato qcow2:root@desopve01 qm disk move 100 scsi0 nas-lvm --format qcow2 --delete 1Output mirror-scsi0: transferred 16.0 GiB of 16.0 GiB (100.00%) in 1m 57s, readyremoving source volume 'local-zfs:vm-100-disk-0' after successful copyroot@desopve01 qm config 100 | grep scsi0Output scsi0: nas-lvm:vm-100-disk-0.qcow2,iothread=1,size=16G -
Nella VM crea
a.txt, fai lo snapshotv1, poi scrivi 300 MiB di dati e prova un secondo snapshotv2:labuser@debian01 echo uno > $HOME/a.txt; syncroot@desopve01 qm snapshot 100 v1 --vmstate 0 --description 'solo a.txt'Output blockdev replace current by v1blockdev-snapshot: reopen current with v1 backing imagelabuser@debian01 head -c 300M /dev/urandom > $HOME/b.bin; syncroot@desopve01 qm snapshot 100 v2 --vmstate 0 --description 'a.txt e b.bin (300 MiB)'Output snapshot create failed: starting cleanuplvcreate 'vg_nas/vm-100-disk-0.qcow2' error: Volume group "vg_nas" has insufficient free space (1020 extents): 4097 required.labuser@debian01 echo tre > $HOME/c.txt; syncIl secondo snapshot non entra: nel gruppo da 40 GiB ci sono già il disco (16 GiB), lo snapshot
v1(altri 16 GiB) e il disco della VM 112 (4 GiB). Ogni snapshot chiede un nuovo LV della dimensione intera del disco, anche se le differenze sono solo 300 MiB. -
Guarda la catena:
root@desopve01 lvs -o lv_name,lv_size,lv_attr vg_nasOutput LV LSize Attrsnap_vm-100-disk-0_v1.qcow2 16.00g -wi-ao----vm-100-disk-0.qcow2 16.00g -wi-ao----vm-112-disk-0 4.00g -wi-a-----root@desopve01 qemu-img info --backing-chain /dev/vg_nas/vm-100-disk-0.qcow2 | grep -E '^image|backing file:'Output image: /dev/vg_nas/vm-100-disk-0.qcow2backing file: snap_vm-100-disk-0_v1.qcow2 (actual path: /dev/vg_nas/snap_vm-100-disk-0_v1.qcow2)image: /dev/vg_nas/snap_vm-100-disk-0_v1.qcow2Nell’interfaccia web lo storage mostra solo il disco della VM: i volumi degli snapshot si vedono con
lvs. Nei task in basso ci sono i due errori dei passi 2 e 4.

-
Rollback a
v1(senza RAM, quindi la VM si ferma):root@desopve01 time qm rollback 100 v1Output Logical volume "vm-100-disk-0.qcow2" successfully removed.Rounding up size to full physical extent 16.00 GiBLogical volume "vm-100-disk-0.qcow2" created.Formatting '/dev/vg_nas/vm-100-disk-0.qcow2', fmt=qcow2 cluster_size=131072 extended_l2=on preallocation=metadata compression_type=zlib size=17179869184 backing_file=snap_vm-100-disk-0_v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16real 0m3.610sroot@desopve01 qm start 100labuser@debian01 ls -s $HOMEOutput total 44 a.txtIl rollback cancella il volume corrente e ne crea uno nuovo e vuoto sopra
v1:b.binec.txt, scritti dopo lo snapshot, sono spariti. -
Cancellare uno snapshot vuol dire fondere le differenze nel volume sottostante:
root@desopve01 time qm delsnapshot 100 v1Output commit-drive-scsi0: Completed successfully.commit-drive-scsi0: commit-job finisheddelete old /dev/vg_nas/vm-100-disk-0.qcow2Logical volume "vm-100-disk-0.qcow2" successfully removed.Renamed "snap_vm-100-disk-0_v1.qcow2" to "vm-100-disk-0.qcow2" in volume group "vg_nas"blockdev replace v1 by currentreal 0m3.570sQEMU copia (commit) le differenze dentro
v1, poi il vecchio volume viene cancellato ev1prende il nome del disco.
7. Più snapshot in catena
Sezione intitolata “7. Più snapshot in catena”Con un disco piccolo lo spazio basta per più snapshot. Cancella la VM 112 e crea una VM di prova da 4 GiB:
qm destroy 112 --purgeqm create 113 --name snap-chain --memory 512 --scsihw virtio-scsi-single --scsi0 nas-lvm:4qm config 113 | grep scsi0scsi0: nas-lvm:vm-113-disk-0.qcow2,size=4Gqm snapshot 113 s1; qm snapshot 113 s2lvs -o lv_name,lv_size vg_nas | grep 113 snap_vm-113-disk-0_s1.qcow2 4.00g snap_vm-113-disk-0_s2.qcow2 4.00g vm-113-disk-0.qcow2 4.00gqm rollback 113 s1can't rollback, 's1' is not most recent snapshot on 'vm-113-disk-0.qcow2'qm delsnapshot 113 s1vm-113-disk-0.qcow2: deleting snapshot 's1' by commiting snapshot 's2'running 'qemu-img commit /dev/vg_nas/snap_vm-113-disk-0_s2.qcow2'Image committed.delete snap_vm-113-disk-0_s2.qcow2 Logical volume "snap_vm-113-disk-0_s2.qcow2" successfully removed.rename snap_vm-113-disk-0_s1.qcow2 to snap_vm-113-disk-0_s2.qcow2 Renamed "snap_vm-113-disk-0_s1.qcow2" to "snap_vm-113-disk-0_s2.qcow2" in volume group "vg_nas"- Due snapshot di un disco da 4 GiB occupano, insieme al volume corrente, 12 GiB nel gruppo di volumi.
- Come con ZFS, il rollback è possibile solo verso lo snapshot più recente.
- Cancellare uno snapshot intermedio fonde il successivo dentro di esso.
Verifica e test
Sezione intitolata “Verifica e test”- Hai fatto il rollback a uno snapshot con la RAM e la VM è ripartita accesa, senza riavvio.
- Sai perché su ZFS e con la volume chain non si torna a uno snapshot vecchio senza cancellare i più recenti.
- Hai creato un albero con due rami su qcow2.
- Hai visto che uno snapshot LVM-thin è un volume thin con il disco come origine.
- Hai visto che LVM thick non ha snapshot, e che la volume chain vale solo per i dischi nuovi.
- Hai misurato il costo in spazio della volume chain: un LV della dimensione intera del disco per ogni snapshot.
Pulizia
Sezione intitolata “Pulizia”Cancella le VM di prova, riporta il disco della VM 100 su local-zfs (con la volume chain non si sposta un disco che ha snapshot: vanno cancellati prima) e disattiva la volume chain, in anteprima tecnologica, sullo storage condiviso usato dai lab successivi:
qm destroy 113 --purge; qm destroy 110 --purgeqm destroy 940 --purgeqm disk move 100 scsi0 local-zfs --delete 1mirror-scsi0: transferred 16.0 GiB of 16.0 GiB (100.00%) in 2m 2s, readyremoving source volume 'nas-lvm:vm-100-disk-0.qcow2' after successful copypvesm set nas-lvm --delete snapshot-as-volume-chainrm -f $HOME/a.txtStato finale del lab
Sezione intitolata “Stato finale del lab”- Cluster: VM 100
debian01accesa sudesopve01, discolocal-zfs:vm-100-disk-0(raw), senza snapshot; CT 101 acceso sudesopve02. - Storage:
nas-lvmdi nuovo senza volume chain e vuoto;nas-nfsvuoto;nas-smbcon la ISO e il backup del lab 14;nas-iscsiinvariato. desopve04: nessuna VM;local-lvmvuoto.- Nessuna VM di prova residua (110, 112, 113, 940 cancellate).
Cosa hai imparato
Sezione intitolata “Cosa hai imparato”- Uno snapshot salva dischi, configurazione e, se richiesto, la RAM; con la RAM il rollback riporta la VM accesa allo stesso istante.
- Ogni storage realizza gli snapshot a modo suo: ZFS e volume chain permettono il rollback solo all’ultimo snapshot; qcow2 e LVM-thin permettono alberi con rami.
- LVM thick non ha snapshot; Proxmox VE 9 li aggiunge con la volume chain, attivabile per storage e valida per i dischi nuovi in formato qcow2.
- Con la volume chain ogni snapshot occupa un LV della dimensione intera del disco: va pianificato lo spazio nel gruppo di volumi.
- Gli snapshot interni qcow2 su storage di rete bloccano la VM durante creazione e cancellazione.
- Uno snapshot non sostituisce un backup.