Skip to content
Bytearium

No ads or affiliate links active

Homelab & storage

Data deduplication (backups)

Deduplication stores identical data blocks only once. It saves a lot of space in backups, but costs compute and memory and relies on intact chunks.

This entry is still below our minimum bar for the search index (length and number of sources) and is being reworked. It is therefore not listed in search engines.

Backing up ten nearly identical virtual machines does not have to cost ten times the space. Deduplication keeps one copy and a lot of pointers.

The short answer

Data deduplication replaces multiple copies of data with references to one shared copy, which saves storage space, transferred data or both [1]. Proxmox Backup Server (PBS) does this by cutting backups into chunks, identifying each chunk by the SHA-256 checksum of its content and storing a given chunk once, however many snapshots use it [3]. Our assessment: deduplication is a great fit for backup targets, because backups of the same systems are full of repeats, but it is not a backup by itself and it is no free lunch on other file systems.

How it works

  1. Chunks and checksums. PBS splits backup data into fixed-size or dynamically sized chunks. The same content gets the same checksum, and the checksum names the chunk file in the datastore [3].
  2. Fixed or dynamic. VM disk images use fixed-size chunks, typically 4 MiB. For file backups, fixed sizes would break as soon as a file grows, so PBS uses a rolling hash (a Buzhash variant) to place chunk boundaries and keep chunks reusable [3].
  3. Incremental upload, full snapshot. The client downloads the chunk list of the previous snapshot and sends only the checksum for chunks the server already has. Each snapshot still references all its chunks, so each one counts as a full backup [3][4].
  4. Encryption changes the maths. For encrypted chunks, PBS hashes the plain text together with the key. Identical data under two different keys gets two different checksums and is not deduplicated across keys [3][4].
  5. Pruning does not free space. Prune removes only snapshot metadata. Garbage collection (GC) then removes chunks that no snapshot references. It works in two phases, mark and sweep, and spares chunks newer than a cutoff, which is 24 hours and 5 minutes before the start if no older backup is still running. Proxmox suggests starting with a weekly schedule [5].
  6. Shared chunks need checking. Because many snapshots can depend on one chunk, PBS offers verify jobs and recommends re-verifying all backups at least monthly to catch bit rot [5]. Our reading: a damaged chunk can hurt every snapshot that references it.
  7. Other places, other costs. In the file system ZFS, deduplication is synchronous and the OpenZFS documentation warns against enabling it without a specific reason. It plans for at least 1.25 GiB of RAM per TiB of stored data, suggests compression first, and says the savings are not worth it unless the simulated ratio is comfortably above 2x [6]. How much you save always depends on the data [2].

A practical example

Take a 100 GiB virtual disk in 4 MiB chunks: that is 25,600 chunks. Suppose only 120 chunks change overnight (invented numbers for illustration). The next backup uploads about 480 MiB of new chunks, yet the new snapshot still lists all 25,600 chunks and restores like a full backup [3][4]. We have not documented a PBS setup in our inventory (14 to 16 Oct 2026), so this is a worked example, not a measurement.

Checklist

  • Treat the dedup ratio you read as a result of your data, not as a promise [2].
  • Schedule garbage collection after pruning, or space never comes back [5].
  • Use one encryption key for backups that should deduplicate against each other, because different keys do not [3].
  • Schedule verify jobs and re-verify old backups regularly [5].
  • Simulate before you switch dedup on in ZFS, and try compression first [6].
  • Keep a second copy elsewhere; deduplication stores less data, it does not protect it, so follow the 3-2-1 rule.

Primary sources

These sources are the basis of this page. That does not mean every claim was checked individually; whether a review record exists is shown above under “Status”. The interpretation and checklist are our own work.

There is no documented review record for this version yet. The text relies on the sources listed.

How this page was made: Bytearium creates these pages with the help of AI and is responsible for publishing them. AI can be wrong, so we show our sources and review status openly.

  1. SNIASNIA Dictionary
  2. SNIAAdvanced Data Reduction Concepts
  3. ProxmoxTechnical Overview
  4. ProxmoxFAQ
  5. ProxmoxMaintenance Tasks
  6. OpenZFSDeduplication

This page has no ads and no affiliate links.