You signed a new client. They have 30 VMs, a vague idea of how much data they produce, and they want a quote by Friday. You need to tell them how much storage their backups will consume on your Proxmox Backup Server infrastructure. Guess too low and you're buying emergency drives mid-contract. Guess too high and you're eating margin on unused capacity.
PBS deduplication makes this harder than you'd expect. Raw data size tells you almost nothing about actual storage consumption. The real number depends on workload type, retention policy, change rate, and how much overlap exists across VMs. This post gives you the math to estimate it.
Key Takeaways
- Raw data size is a poor predictor of PBS storage needs — dedup ratios vary 1.3x to 10x by workload
- Same-VM deduplication (backup-to-backup) typically saves 85-95% across snapshots
- Cross-VM dedup depends on OS and application similarity across the client's fleet
- Longer retention policies don't scale linearly — dedup flattens the curve
- Track datastore growth monthly and trigger expansion planning at 70% capacity
- Budget 20-30% headroom above your steady-state estimate for client growth
Why Capacity Planning Matters
Storage is the single largest cost in a PBS-based MSP operation. Get sizing wrong and the consequences hit fast.
Underestimate and you're scrambling. Datastores fill up, garbage collection fails because it needs working space, backup jobs start failing, and you're calling your storage vendor for expedited drives on a Saturday.
Overestimate and the waste is quieter but real. Unused capacity sits idle. Capital you could have deployed elsewhere is locked in spinning rust or flash that won't see data for months.
The challenge is that Proxmox Backup Server's chunk-level deduplication makes naive estimation useless. A client with 10 TB of raw VM data might consume 2 TB of actual storage. Or 6 TB. The difference depends on factors you can measure and predict, but only if you know what to look at.
Understanding PBS Deduplication Impact
PBS breaks every backup into fixed-size 4 MB chunks and stores each unique chunk exactly once. This deduplication happens at two levels, and understanding both is critical for sizing.
Same-VM Deduplication
When you back up the same VM on consecutive days, most chunks are identical. The OS didn't change. Most application files didn't change. Only the chunks containing modified data are new. This same-VM dedup ratio is typically 85-95% across snapshots, meaning each incremental snapshot adds only 5-15% of the VM's total size in new chunks.
Cross-VM Deduplication
When multiple VMs share common content, PBS deduplicates across them too. Ten VMs running Debian 12 share most of their OS chunks. The dedup benefit here depends entirely on how similar the workloads are.
Typical Deduplication Ratios by Workload
| Metric | Identical VM Templates | Mixed OS Environments | Database Servers | File Servers |
|---|---|---|---|---|
Same-VM Dedup | 90-95% | 85-92% | 70-85% | 60-80% |
Cross-VM Dedup | 60-80% | 10-30% | 5-15% | <10% |
Effective Storage Multiplier | 5-10x | 2-3x | 1.5-2x | 1.3-1.5x |
Database servers dedup poorly because transaction logs and data files change constantly. File servers are worse, especially when users are actively creating and modifying documents. Template-based VM fleets are the sweet spot.
Measure, Don't Guess
Once a client has a week of backups, check the actual dedup ratio in the Proxmox Backup Server datastore status. The "Deduplication Factor" field shows you reality versus your estimates. Use it to refine projections for similar clients.
How to Check Dedup Ratios
proxmox-backup-manager datastore list --output-format json-prettyThe output includes used, avail, and the dedup factor per datastore. Compare used against the sum of all snapshot sizes to see how much dedup is saving you.
Retention Policy Storage Math
Retention is where most sizing estimates go wrong. People multiply daily change rate by retention days and call it done. That ignores dedup entirely.
Here's the actual formula:
storage_needed = (total_raw_data / dedup_factor)
+ (daily_change_rate × unique_retention_days)The first term is your baseline: all current data after deduplication. The second term is the incremental cost of keeping history. But even the incremental snapshots dedup against each other, so the real cost of adding retention days flattens over time.
Let's run real numbers. A client has 10 TB of raw VM data, a dedup factor of 4x, and a 2% daily change rate.
Retention vs Storage (10 TB Raw, 4x Dedup, 2% Daily Change)
| Detail | 7 daily | 7d + 4 weekly | 7d + 4w + 6 monthly | 30d + 12 monthly |
|---|---|---|---|---|
Estimated Storage | ~3.9 TB | ~4.3 TB | ~5.0 TB | ~6.5 TB |
Use Case | Minimal retention | Common SMB policy | Compliance baseline | Regulated industries |
Notice the jump from 7-day to 30-day + 12-monthly is not 4x more storage. Deduplication across snapshots means older monthly snapshots share most of their chunks with newer ones. The incremental cost of keeping a 6-month-old snapshot is tiny compared to the first week.
Retention Is Cheap After the First Week
The most expensive snapshots are the first few. Once dedup has indexed the common chunks, each additional retention point costs only the daily unique change. Don't cut retention short to save storage; the savings are smaller than you think.
Client Onboarding: Sizing New Accounts
When a new client signs up, you need two numbers: how much storage the initial seed will consume, and what the steady-state looks like after dedup kicks in.
Initial Seed
The first full backup is always the most expensive. Dedup has nothing to compare against, so every chunk is new. For a client with 5 TB of raw data and a 3x expected dedup factor across their VMs, budget roughly 1.7 TB for the initial seed. Use the initial seed calculator to estimate transfer time.
Steady-State
After 7-10 days of backups, the dedup index is populated and storage growth drops sharply. The delta between day-1 and day-10 storage is dramatic for clients with homogeneous VM fleets.
Quick Sizing Reference
| Metric | 5-10 VMs | 10-25 VMs | 25-50 VMs | 50+ VMs |
|---|---|---|---|---|
Raw Data | 500 GB - 2 TB | 2 - 8 TB | 8 - 20 TB | 20 TB+ |
Initial Seed Storage | 400 GB - 1.5 TB | 1.5 - 6 TB | 6 - 15 TB | 15 TB+ |
Steady-State (90 days, 7d+4w retention) | 200 GB - 800 GB | 600 GB - 3 TB | 3 - 8 TB | 8 TB+ |
These ranges are wide because workload mix matters enormously. A 20-VM fleet of identical web servers will land at the low end. A 20-VM fleet of database servers, file servers, and custom applications will hit the high end.
Safe Padding
Always add 20-30% on top of your steady-state estimate. Clients add VMs. Applications grow. That padding absorbs normal growth without triggering emergency expansions.
Forecasting Growth
Sizing the initial deployment is half the job. The other half is predicting when you'll need more.
Monthly Growth Tracking
Pull datastore usage monthly for every client. A simple script against the Proxmox Backup Server API gives you what you need.
for ds in $(proxmox-backup-manager datastore list \
--output-format json | jq -r '.[].name'); do
echo "=== $ds ==="
proxmox-backup-manager datastore show "$ds" \
--output-format json-pretty | jq '{
name: .name,
used_bytes: .used,
total_bytes: .total,
usage_pct: ((.used / .total) * 100 | floor)
}'
doneLog this output to a file or push it into your monitoring stack. Month-over-month trends tell you more than any point-in-time snapshot.
Identifying High-Growth Clients
Not all clients grow at the same rate. A marketing agency uploading video files will outgrow a static web hosting client 10:1. Flag any client whose monthly growth exceeds 5% of their current allocation and review whether their sizing assumptions still hold.
When to Add Capacity
Thresholds matter. Running a Proxmox Backup Server datastore above 80% is asking for trouble because garbage collection needs free space to work, and a failed GC means orphaned chunks never get cleaned up.
Capacity Threshold Actions
Below 60% — Healthy
Monitor monthly. No action needed. This is where you want to be.
60-70% — Watch
Review retention policies. Check if any clients have unexpected growth. Consider whether pruning rules need adjustment.
70-80% — Warning
Start planning expansion. Get quotes for additional storage. This is your lead-time window.
80-90% — Critical
Execute expansion immediately. Reduce retention temporarily if needed to buy time. GC starts struggling here.
Above 90% — Emergency
Backup jobs will fail. GC cannot complete. You're in incident response mode. Add storage or offload clients to another datastore now.
GC Fails at High Capacity
Garbage collection on Proxmox Backup Server needs working memory and temporary disk space. Above 85-90% usage, GC often cannot complete, which means dead chunks accumulate and accelerate the fill rate. Don't let it get there.
Practical Example: 20-Client MSP
Let's walk through a real scenario. You're an MSP onboarding 20 clients onto a single PBS server with 50 TB of usable storage.
Client breakdown:
- 8 clients with 5-10 VMs each (mostly web servers, standard Debian): ~400 GB raw each
- 6 clients with 10-20 VMs (mixed workloads): ~3 TB raw each
- 4 clients with database-heavy stacks: ~5 TB raw each
- 2 large clients with 40+ VMs: ~15 TB raw each
Raw total: ~71 TB across all clients.
Dedup-adjusted estimate:
- Web server clients (high dedup, 5x factor): 8 × 400 GB / 5 = 640 GB
- Mixed workload clients (3x factor): 6 × 3 TB / 3 = 6 TB
- Database clients (1.8x factor): 4 × 5 TB / 1.8 = 11.1 TB
- Large clients (2.5x factor): 2 × 15 TB / 2.5 = 12 TB
Baseline storage: ~29.7 TB
With 7d + 4w retention and 2% daily change: add roughly 15-20%, so ~34-36 TB.
With 25% growth padding: ~43-45 TB.
That fits your 50 TB server with room to breathe. But it's tight enough that you should be monitoring monthly from day one and planning your next storage expansion before you hit 70%.
Don't Forget GC Overhead
These numbers represent data at rest. During garbage collection cycles, temporary space usage spikes. Keep at least 10-15% free at all times to ensure GC can run successfully across all datastores.
Common Mistakes
Sizing from raw data alone. A prospect says "we have 20 TB of VMs" and you provision 20 TB. After dedup, they use 6 TB. You overpaid.
Ignoring change rate. Two clients with 5 TB of VMs but wildly different change rates will have completely different storage profiles at 90 days.
Treating all VMs equally. A Windows AD controller barely changes. A busy PostgreSQL server churns constantly. Estimate per workload type, not per VM count.
Skipping the monitoring loop. You sized correctly at onboarding, then never checked again. Eighteen months later, three clients doubled their VM count and nobody noticed.
Wrapping Up
Capacity planning for Proxmox Backup Server in multi-client environments comes down to three things: understand the dedup math for each workload type, factor in retention policy costs, and monitor growth relentlessly. Get the initial sizing close enough with the tables and formulas in this post, then let real data refine your projections after the first month.
The biggest risk isn't getting the initial estimate wrong. It's failing to track growth and adjust. Build the monitoring loop from day one and you'll never be caught off guard.
Don't want to manage capacity yourself?
remote-backups.com provides managed PBS storage targets in EU datacenters. We handle the capacity planning, expansion, and monitoring so you can focus on your clients.
View Plans


