Article ID: kb00360Last Modified: 16-Jun-2026

Application-Consistent Backups in Proxmox

Overview

When backing up virtual machines in Proxmox, there are two possible consistency levels:

  • Application-consistent backup (VSS-consistent on Windows)
  • Crash-consistent backup

Understanding the difference is important for workloads such as Microsoft SQL Server and Microsoft Exchange, where data is frequently cached in memory and transaction logs are actively written.

An application-consistent backup ensures that in-memory data is flushed to disk and applications enter a consistent state before the snapshot is created. This makes recovery safer and reduces the risk of database corruption or lengthy recovery procedures.

Why Application-Consistent Backups Matter

A crash-consistent snapshot is similar to pulling the power cable from a running server.

The filesystem may recover successfully after reboot, but applications such as SQL Server or Exchange may need to replay transaction logs or perform recovery operations.

Application-consistent backups avoid this by coordinating with the guest operating system before snapshot creation.

For Windows virtual machines, this coordination is performed using Volume Shadow Copy Service (VSS).

VSS notifies application writers (such as SQL Server Writer or Exchange Writer) that a backup is starting, allowing them to:

  • Flush pending writes
  • Freeze I/O temporarily
  • Commit transactions
  • Prepare databases for backup

As a result, the backup contains a clean application state.

How It Works in Proxmox

Proxmox can create VM backups using snapshots.

The backup flow depends on whether QEMU Guest Agent is installed inside the virtual machine.

With QEMU Guest Agent

If QEMU Guest Agent is installed and enabled:

  1. Proxmox communicates with the guest OS through the agent.
  2. For Windows VMs, the agent triggers VSS freeze.
  3. VSS writers prepare applications.
  4. Proxmox creates a snapshot.
  5. VSS thaw is triggered after snapshot creation.

This produces an application-consistent backup.

This is strongly recommended for:

  • Microsoft SQL Server
  • Microsoft Exchange
  • Active Directory domain controllers
  • File servers with active workloads

Without QEMU Guest Agent

Without QEMU Guest Agent, Proxmox cannot communicate with the guest OS.

In this case, Proxmox creates a dirty snapshot.

A dirty snapshot means:

  • The VM is still running
  • Disk state is captured immediately
  • Guest OS is not notified
  • Applications do not flush pending writes

This results in a crash-consistent backup, not application-consistent.

This may be acceptable for:

  • Stateless Linux workloads
  • Web servers
  • Development machines
  • Systems with application-level replication

But it is less ideal for transactional applications.

Linux vs Windows Differences

Linux

Most Linux applications do not use VSS-like orchestration.

Backups usually rely on:

  • Journaling filesystems (ext4, xfs)
  • Database-native backup tools
  • Pre/post snapshot scripts

Because of this, dirty snapshots are often acceptable for Linux workloads, especially when applications can recover using journals or WAL logs.

Examples:

  • PostgreSQL uses WAL
  • MySQL uses redo logs
  • ext4 replays filesystem journal after crash

Windows

Windows enterprise applications often rely on VSS.

Without VSS coordination:

  • SQL may require recovery
  • Exchange databases may replay logs
  • Backup consistency is not guaranteed

For production workloads, application-consistent backups are highly recommended.

Step 1: Install QEMU Guest Agent

Install the guest agent inside the virtual machine.

Debian / Ubuntu

sudo apt update
sudo apt install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

RHEL / CentOS

sudo dnf install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

Windows

Download the virtio-win ISO.

Mount the ISO inside the VM and run:

virtio-win-guest-tools.exe

This installs:

  • QEMU Guest Agent
  • VirtIO drivers

Alternatively, install only the guest agent:

guest-agent\qemu-ga-x86_64.msi

Verify the service status:

Service name:

QEMU-GA

Status should be:

Running

Step 2: Enable QEMU Guest Agent in Proxmox

In the Proxmox web interface:

  1. Open the VM
  2. Go to Options
  3. Find QEMU Guest Agent
  4. Enable it

Step 3: Run Backup

Once the guest agent is enabled, Proxmox can request guest freeze/thaw operations during snapshot backup.

For Windows workloads, this allows VSS writers to prepare application data before backup creation.

This results in application-consistent backups suitable for recovery of SQL Server and Exchange workloads.

https://git.cloudberrylab.com/egor.m/doc-help-kb.git
Production