Storage and Snapshots

How VM disk formats, controller choices, snapshots, templates, and backup boundaries work in a Proxmox homelab.

Published November 30, 2024

Storage and Snapshots

Disks are where virtualization stops being abstract. Every clean demo stays easy right up until storage gets slow, full, or inconsistent.

The quiet truth is that most Proxmox opinions are really storage opinions wearing a virtualization hat.

Pick The Backend Before You Pick The Disk Format

The backend decides what features are native, what tradeoffs are acceptable, and what recovery will feel like later.

  • Local storage is the fastest way to get moving on one box. It is also the fastest way to discover that host failure means everything important lived in one place.
  • ZFS is popular in homelabs because it gives you snapshots, checksumming, compression, and a strong local storage story without bolting together extra layers by hand.
  • LVM and LVM-thin are perfectly workable when you want simpler block-backed storage and do not need the full ZFS feature set.
  • Network storage matters once backups, migration, or multi-node growth enter the picture.

The First Decision Is The Storage Layer

On file-based storage, you usually have a choice between raw and qcow2 images.

On block-backed storage such as LVM, ZFS, or Ceph, the story changes. Raw volumes are common there, and snapshot behavior often comes from the storage layer rather than from the VM image format itself.

That is why "qcow2 vs raw" is not a universal religious war. It depends on where the disk actually lives.

QCOW2 Vs Raw In Practice

QCOW2

QCOW2 is flexible. It supports thin provisioning, copy-on-write behavior, and convenient snapshot workflows on file-backed storage.

That makes it a strong fit for labs where rollback speed matters more than squeezing the last few percent out of storage throughput.

Raw

Raw is simpler and can be a little faster. On storage backends that already provide snapshots and thin allocation, raw is often the right answer because the backend is doing the heavy lifting.

Controller Choices Matter More Than People Expect

For modern Linux guests, Proxmox recommends VirtIO-based controllers for good reason.

The default that ages well is usually:

  • VirtIO SCSI single
  • IO Thread enabled for busy disks
  • Discard enabled when the storage and guest support trim

IDE and other legacy controllers still exist mostly for compatibility work, imports, or very old guests.

Snapshots, Templates, And Backups Are Different Tools

Snapshot

A snapshot is a fast "let me come back here" point. It is perfect before risky changes.

It is not a real backup plan.

Template

A template is a reusable starting image. Use it when you want repeatable clones without reinstalling the OS every time.

Backup

A backup is for recovery after something genuinely bad happened: storage trouble, host failure, corruption, or your own impatience.

If the host disappears and your plan dies with it, that was never a snapshot problem. It was a backup problem.

That is why separate backup storage matters so much. If the copy lives on another pool, another box, or a dedicated backup target, the recovery story stops depending on the same failure domain that just let you down.

Copy-On-Write Is Why Snapshots Feel Instant

The reason snapshots are so useful is that they usually avoid copying the whole disk up front.

Instead, the base state is preserved and new writes are stored separately. That is why snapshots are quick and why leaving too many of them around quietly becomes its own storage problem.

Trim And Discard

If your storage supports thin provisioning, enable discard where it makes sense and make sure the guest can issue trim.

Otherwise guests will happily free space internally while the backend keeps believing the old blocks are still in use.

Guest Agent Helps Here Too

The QEMU Guest Agent is not just a convenience feature. It improves the storage story:

  • better shutdown behavior
  • filesystem freeze and thaw for consistent snapshot-style operations
  • optional guest trim after some move or clone operations

That is especially useful once the lab stops being toy-sized.

A Storage Layout That Ages Well

I like fast local storage for active guests and separate storage for backups, archives, or bulk data.

Guest disks usually want low latency. Backup repositories and media libraries usually want capacity and separation. Those are different jobs, and giving them different homes keeps the platform easier to reason about.

If there is even a decent chance you will add another node later, it is worth thinking about shared or network-backed storage early. You do not need to build for a cluster on day one, but it helps to avoid painting yourself into a single-host corner by accident.

Continue Through The Series

Comments

Sign in with GitHub to leave a comment or reaction.