[TUTORIAL] FabU: What’s in a snapshot?

UdoB

Distinguished Member
Nov 1, 2016
3,774
2,498
273
Germany
My only point here is that the term “snapshot” has different meanings, heavily depending on the contextual point-of-view:

  • PVE VM snapshot
This is the native Proxmox function. It freezes the current status of a VM. This state can be “unfrozen” later to restore this very status via “rollback”. They can be “taken”, “rolled back” and “removed” in the Web GUI under <vm> --> Snapshots and/or on the command line by “qm” command and/or by third party tools like “cv4pve”.
There are multiple software areas involved: the KVM/QEMU part needs to freeze the RAM and the CPU state and the underlying storage device needs to do the same with the virtual disks. This is where the confusion starts: not all storage types (filesystems or block devices, local or remote) can do this. Look at the column “Snapshots” in this table --> https://pve.proxmox.com/pve-docs/chapter-pvesm.html#_storage_types
  • PVE Container snapshot
I am not a Container user..., what should be mentioned here? Some hints --> https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pct_container_storage
  • PVE backup in “Snapshot Mode”
The snapshot mode works with the core capabilities of QEMU. The filesystem is “snapshotted” virtually, inside QEMU. This is completely ignoring the features of the underlying storage - it works filesystem agnostic! --> https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_backup_modes
  • PBS itself
“A Snapshot is the collection of manifest, blobs and indexes that represent a backup.” --> https://pbs.proxmox.com/docs/technical-overview.html#snapshots
  • ZFS Snapshot of a ZVOL/Dataset
Each ZVOL (usually used for virtual disks) / Dataset (usually used for “files” and “Directory Storages”) in a ZFS Pool can have one or multiple snapshots. This feature is also used to implement replication (https://pve.proxmox.com/pve-docs/pve-admin-guide.html#chapter_pvesr) which is the reason for ZFS being required for this.
  • LVM Snapshot
I am not an LVM user. What I see in https://pve.proxmox.com/pve-docs/pve-admin-guide.html#storage_lvmthin is that LVM-thin can do snapshots natively while LVM (thick, https://pve.proxmox.com/pve-docs/pve-admin-guide.html#storage_lvm) needs some help to implement this.
  • QCOW2
When an actual filesystem is used to provide a "Directory Storage" and the "qcow2" format is used for the virtual disk then snapshots can be created. --> https://pve.proxmox.com/pve-docs/chapter-pvesm.html#_storage_features


Corrections and additions welcome :-)

Edit 20.06.2026, added from some replies:
  • #2: Ceph has its own full set of snapshot capabilities - and these are fully integrated in the PVE frontend (and API)
  • #3: "external raid system (sas, fc, ib, iscsi etc) or even external nas system may be able to do snapshots too without the running pve knows about this." - One would need to find a dedicated way to get intact snapshots and guarantee integrity.




I put this under my “FabU”-label although it was not really “frequently answered” - just because... I like it this way ;-)
Please reply if I made something wrong or missed some important details; please “Like” it if you find this post interesting and want to give positive feedback.
 
Last edited:
may be able to do snapshots too without the running pve knows about this.
This is the most dangerous idea, right? It is worth to mention though.

I am simply not sure if there is a common way to guarantee integrity. From my limited knowledge (and zero experience with such a setup) just disabling "Write Caches" would not be sufficient. There are too many levels of caching / buffering in the kernel to allow asynchron snapshots.
 
  • Like
Reactions: leesteken
Why that's sarkastic ? But ok, so eg. a netapp is taken for business critical operation and ongoing production lines in the back and using a host with zfs which gets a power outage or a kernel crash and maybe coming back up with "cannot import pool ..." is a most dangerous idea to take that real risk to happen, right ? All the applications which mostly run in vm's get and push data to the netapp all without knowing it's doing snapshots and recovering from any works, otherwise netapp would not that successful. A zfs instead likes to write different new pool id's (which never exists on that host before) into there "superblocks" and then it's vdev members weren't found anymore - what a code written to do this, real sadly and untrustful.
 
Why that's sarkastic ?
In #5? Sorry, it was not meant to be sarcastic.

I just said that I do not understand how that could possibly work and I also mentioned that I have no experience with such a setup. I mean an independent remote storage, creating snapshots without talking to the consuming client about this.
 
  • Like
Reactions: Johannes S
I think we have to throw then also different snapshot "types" into the discussion ... crash consistent, hypervisor aware (incl. RAM), application aware snapshots .... imho Proxmox VE supports Hypervisor aware ones out of the box ..... the big commercial storage/backup providers mostly all types (maybe not for all Hypervisors)
 
Well..., my intention was to show that the term "snapshot" in the PVE context has multiple meanings. Other systems are not really relevant - for a newbie with a first PVE setup.