How To

Proxmox VE VM Snapshots: Create, Restore, Delete

Snapshots in Proxmox VE save the entire state of a VM (disk, configuration, optionally RAM) at a single point in time. One click to take, one click to roll back. They’re the fastest undo button you have when a kernel update bricks a VM or a config change takes a service offline.

Original content from computingforgeeks.com - post 66636

This covers creating, managing, and restoring VM snapshots through both the Proxmox web interface and the qm command line. Snapshots are not backups (they live on the same storage as the VM), but they complement a Proxmox Backup Server setup nicely for quick rollbacks between full backups.

Current as of March 2026. Verified on Proxmox VE 8.4.9, QEMU 9.2.0, kernel 6.8.12-13-pve

Before You Start

  • Proxmox VE 8.x or 9.x with at least one running VM
  • Enough free space on the VM’s storage for snapshot data (thin-provisioned LVM or ZFS work best)
  • Root access to the PVE host (for CLI operations)
  • QEMU Guest Agent installed in the VM for filesystem-consistent snapshots (recommended but not required)

Create a Snapshot from the Web UI

Select a VM in the left tree, then click Snapshots in the submenu. The panel shows all existing snapshots in a tree view, with “current” marking the live state.

Proxmox VE snapshot list showing VM snapshots with dates and descriptions

Click Take Snapshot. The dialog has three fields:

  • Name: A short label (no spaces). Use something meaningful like before-kernel-update or working-state-march
  • Include RAM: Captures the VM’s memory state. Enables exact restore to the running state (process memory, open connections, everything). Uses more storage and takes longer
  • Description: Free text explaining why you took the snapshot
Proxmox VE take snapshot dialog with name description and include RAM options

After clicking Take Snapshot, PVE creates LVM or ZFS snapshot layers underneath. The operation completes in seconds for disk-only snapshots. Including RAM adds time proportional to the VM’s memory size.

Create a Snapshot from the Command Line

The qm snapshot command does the same thing without the web UI. SSH into your PVE host and run:

qm snapshot 140 before-changes --description "Clean baseline state" --vmstate

The --vmstate flag includes RAM (equivalent to the “Include RAM” checkbox in the UI). Without it, only disk state is captured. PVE confirms the operation:

saving VM state and RAM using storage 'local-lvm'
completed saving the VM state in 0s, saved 633.59 MiB
snapshotting 'drive-virtio0' (local-lvm:vm-140-disk-0)

For a disk-only snapshot (faster, no RAM overhead):

qm snapshot 140 after-update --description "After package update"

List Snapshots

View the snapshot tree for any VM:

qm listsnapshot 140

The tree shows the parent-child relationship between snapshots. “You are here!” marks the current running state:

`-> before-changes              2026-03-25 02:28:30     Clean baseline state
 `-> after-update               2026-03-25 02:28:35     After package update
  `-> current                                           You are here!

Each snapshot branches from its parent. Rolling back to before-changes discards everything after that point.

Roll Back to a Snapshot

This is where snapshots prove their worth. A bad update, a broken config, a failed migration step: roll back in seconds.

From the Web UI

In the Snapshots panel, select the snapshot you want to restore and click Rollback. PVE asks for confirmation because rollback discards all changes made after that snapshot. The VM stops, reverts, and restarts in the snapshot’s state.

From the CLI

The qm rollback command does the same thing:

qm rollback 140 before-changes

PVE stops the VM, replaces the current disk with the snapshot state, and starts it again. If the snapshot included RAM (--vmstate), the VM resumes exactly where it was, with all processes and network connections intact. Without RAM state, the VM boots fresh from the snapshot’s disk state.

After rolling back, the snapshot tree updates to show your new position:

`-> before-changes              2026-03-25 02:28:30     Clean baseline state
 `-> after-update               2026-03-25 02:28:35     After package update
 `-> current                                            You are here!

Notice “current” now branches directly from before-changes, not from after-update.

Delete a Snapshot

Old snapshots consume storage. Proxmox merges the snapshot data back into the base image when you delete it, so the changes aren’t lost; they just become part of the permanent state.

From the web UI, select the snapshot and click Remove. From the CLI:

qm delsnapshot 140 after-update

The merge process can take a moment for large snapshots. Avoid deleting snapshots while the VM is under heavy I/O because the merge competes for disk bandwidth.

Snapshot Configuration Details

Each snapshot captures the VM configuration (hardware settings, boot order, network interfaces) alongside the disk state. View a snapshot’s config with:

qm config 140 --snapshot before-changes

This shows the exact hardware configuration at the time the snapshot was taken, including memory size, CPU count, disk layout, and network settings. Useful when you need to verify what configuration a snapshot will restore.

Snapshots vs Backups

This catches people off guard: snapshots are not a substitute for backups. They serve different purposes.

FeatureSnapshotsBackups (PBS/vzdump)
Storage locationSame disk as the VMSeparate storage target
Survives disk failureNoYes
Speed to createSecondsMinutes (depends on VM size)
Speed to restoreSecondsMinutes
DeduplicationNoYes (PBS)
Best forQuick rollback before risky changesDisaster recovery, off-site protection
Keep long-term?No (degrades I/O performance)Yes

The ideal workflow: take a snapshot before a risky change, verify the change works, then delete the snapshot. Use Proxmox Backup Server for nightly automated backups with retention and deduplication.

CLI Quick Reference

CommandWhat it does
qm snapshot VMID nameCreate a disk-only snapshot
qm snapshot VMID name --vmstateCreate snapshot including RAM state
qm snapshot VMID name --description "text"Add a description to the snapshot
qm listsnapshot VMIDList all snapshots as a tree
qm config VMID --snapshot nameView snapshot’s VM configuration
qm rollback VMID nameRoll back to a snapshot (stops VM first)
qm delsnapshot VMID nameDelete a snapshot and merge data

Production Tips

  • Install the QEMU Guest Agent in every VM (apt install qemu-guest-agent on Debian/Ubuntu, dnf install qemu-guest-agent on Rocky/RHEL). Without it, Proxmox can’t freeze the filesystem before snapshotting, which risks inconsistent disk state on write-heavy VMs
  • Don’t keep snapshots for days. Every write to the VM goes through the snapshot overlay, adding latency. Take the snapshot, do your work, then either rollback or delete the snapshot within hours
  • Name snapshots descriptively. A week from now, before-kernel-6.12-update tells you exactly what happened. snap1 tells you nothing
  • Include RAM only when you need it. RAM snapshots on a 32 GB VM add 32 GB to storage and take noticeably longer to create and restore. Skip it for routine disk-only rollbacks
  • Automate pre-change snapshots with a simple script that snapshots before apt upgrade or config changes. Something like qm snapshot $VMID pre-$(date +%Y%m%d) --description "Before maintenance window" in your runbook saves the one time you forget

Related Articles

Debian Proxmox Backup Server on Debian 13 Monitoring Monitor VMware ESXi with Grafana and Telegraf FreeBSD How To Import FreeBSD 14 Qcow2 Image on Proxmox Containers Run Minikube Kubernetes Cluster on Rocky Linux 9

Leave a Comment

Press ESC to close