Troubleshoot Proxmox Backup Server: Failed Backups, Locks, GC, and S3 Fixes

Updated on Oct 27, 2026
Kimberly N
23 MINS READ
Table of Contents
Proxmox Backup Server Troubleshooting

When a backup fails, you need clear steps, not guesses. This guide shows you how to troubleshoot Proxmox Backup Server (PBS) from the first check to the final fix. It covers:

  • Permission errors
  • Datastore locks
  • Prune and garbage collection confusion
  • Verify errors
  • Sync problems
  • Slow backups
  • S3 backend errors
  • Local cache pressure
  • High memory use

Before You Start

You need root or sudo access to the PBS host, and shell access to one Proxmox VE (PVE) node that sends backups. If you are still building your server, you can read the Proxmox Backup Server setup tutorial.

Check your PBS version. S3 fixes in this guide depend on it:

Bash
dpkg-query -W proxmox-backup-server

Follow these steps in order, and you can troubleshoot Proxmox Backup Server without risky changes. Two rules you must consider before you change anything:

  • Take notes. Write down the task ID (UPID), the time, and the exact error text.
  • Do not delete files inside the datastore manually. Most problems below have a safe fix that uses PBS tools.

How to Troubleshoot Proxmox Backup Server Step by Step

Always start with the following checks. They tell you where to look next.

Number 1: Check the services with the following command. Both services must be active (running). The proxy handles the web UI and the API on port 8007:

Bash
systemctl status proxmox-backup proxmox-backup-proxy --no-pager

Number 2: Read the recent logs with the following commands:

Bash
journalctl -u proxmox-backup -u proxmox-backup-proxy --since "2 hours ago" --no-pagerjournalctl -u proxmox-backup-proxy -p err --since today --no-pager

Number 3: Find the failed task and read its log with the commands below:

Bash
proxmox-backup-manager task list --all --limit 30proxmox-backup-manager task log 'UPID:pbs1:...'

Also, task logs are saved in /var/log/proxmox-backup/tasks. In the web UI, open Administration > Tasks. On the PVE side, the backup log is in the node's task history.

Number 4: Run the datastore health checks by running the commands below:

Bash
proxmox-backup-manager datastore listproxmox-backup-manager datastore show store1df -h /mnt/datastore/store1df -i /mnt/datastore/store1proxmox-backup-manager disk listproxmox-backup-manager disk smart-attributes sdbdmesg -T | grep -iE "i/o error|ext4|xfs|zfs|nvme"

If your datastore is on ZFS, also run the following command:

Bash
zpool status -x

You must look for disk usage above 90%, no free inodes, SMART warnings, and disk or file system errors in dmesg.

Number 5: Check your scheduled jobs with the following commands:

Bash
proxmox-backup-manager garbage-collection listproxmox-backup-manager prune-job listproxmox-backup-manager sync-job listcat /etc/proxmox-backup/verification.cfg

Many problems come from jobs that run at the same time. Write the schedules down and look for overlap.

Where to Start: Match Your Symptom to the Fix

You can easily find the symptom you see in the table below. Then go to the section that fixes it. This saves time during an incident.

What you see Go to
Backup job fails or hangs Fix Failed Backups and Snapshots
"Permission denied" or "access denied" Fix Permission Errors
"Unable to acquire lock" Fix Datastore Locks
Disk is still full after prune Prune and Garbage Collection
Snapshot shows a failed verify Fix Verification Failures
Sync job fails Fix Sync Problems
Backups are slow Fix Slow Backup Speed
S3 errors, cache full PBS 4.2 S3 Problems
RAM use is high Unexpected Memory Usage

Fix Proxmox Failed Backups and Snapshots

When you troubleshoot Proxmox Backup Server backup failures, split the problem into two questions:

  • Can the client reach the server?
  • Can the server accept the data?

First, test the connection from the PVE node with the commands below:

Bash
pvesm statusnc -zv pbs.example.com 8007timedatectl

Port 8007 must be open. The time must be correct on both sides because login tickets depend on it.

Then, test a real login with the backup client. Use your API token as the user and its secret as the password:

Bash
export PBS_PASSWORD='your-token-secret'proxmox-backup-client list --repository 'backup@pbs!pve1@pbs.example.com:store1'

If PBS uses a self-signed certificate, you must add PBS_FINGERPRINT (check the section below).

Common Causes and Fixes for Failed Backups

A failed backup does not always mean your data is damaged. Start by checking the error message in the task log. Then, use the table below to find the possible cause, check it, and follow the fix. This helps you avoid changing settings that are not related to the problem.

Cause How to check Fix
Datastore is full df -h /mnt/datastore/store1 Run prune, then garbage collection (see the prune section)
Certificate changed Fingerprint error on PVE Get the new fingerprint on PBS and update PVE
Wrong token or no rights Task log says access denied See the permissions section
Datastore in maintenance mode datastore show store1 shows a maintenance mode Clear the mode (see the locks section)
Network problem nc fails, or backup stalls Fix firewall, routing, or MTU
Backup stuck on a large VM Task runs for hours with no progress Check disk speed and the network (see the speed section)

Fix a Changed Certificate Fingerprint

PVE checks the PBS certificate fingerprint on every connection. If the certificate changes, PVE stops the backup and shows a fingerprint error. This usually happens after a certificate renewal or a PBS reinstall.

To fix it, you must get the new fingerprint from PBS and add it to the PVE storage:

Bash
#On the PBS server:proxmox-backup-manager cert info | grep Fingerprint #On the PVE node:pvesm set pbs-store --fingerprint 'AA:BB:CC:...'

Old or Unfinished Snapshots

PBS removes old unfinished backups when you prune. It keeps the last failed backup only if it is newer than the last one. So a failed snapshot that stays visible is usually the newest one, and it is normal.

Hanging Backups on Kernel 6.17 (PBS 4.1 only)

PBS 4.1 came with kernel 6.17. Some users saw backups become very slow or get stuck. If this happens to you, the release notes say to switch back to the older 6.14 kernel:

Bash
uname -rproxmox-boot-tool kernel listproxmox-boot-tool kernel pin 6.14.11-4-pve

PBS 4.2 uses kernel 7.0 as the new default, so upgrade first if you can.

Fix PBS Permission Errors

A permission error means PBS knows who you are, but it will not let you do the action. This can happen for two reasons. Either the user or token does not have the right access rules in PBS, or the Linux folder rights on the datastore are wrong. You must check both, one by one.

Layer 1: PBS Access Rules

New users and API tokens have no permissions at all. Also, a token has its own rules, and it can never do more than its user. 

First, check what a token can really do with the commands below:

Bash
proxmox-backup-manager user permissions 'backup@pbs!pve1' --path /datastore/store1proxmox-backup-manager acl list

Then, let your backup token create backups with the command below:

Bash
proxmox-backup-manager acl update /datastore/store1 DatastoreBackup --auth-id 'backup@pbs!pve1'

Keep these rules in mind:

  • Datastore.Backup lets a user create backups and read or verify only the groups it owns.
  • Datastore.Prune also needs ownership of the group.
  • DatastorePowerUser can back up, restore, and prune owned backups.
  • A backup group has one owner. If a different user or token tries to write to it, PBS refuses.

Change the Owner of a Backup Group

This is common after you switch from a user to a token, or from a token to a user. To change it, run:

Bash
proxmox-backup-client change-owner vm/100 'backup@pbs!pve1' \  --repository 'root@pam@pbs.example.com:store1'

Also, you can do this in the web UI from the datastore Content tab.

Layer 2: Linux File Permissions

PBS runs as the backup user. The datastore folder must belong to it:

Bash
ls -ld /mnt/datastore/store1ls -l /mnt/datastore/store1grep -A3 "datastore: store1" /etc/proxmox-backup/datastore.cfg

If the owner is wrong, fix it while no backup is running:

Bash
chown backup:backup /mnt/datastore/store1

Also, make sure the path in /etc/proxmox-backup/datastore.cfg matches the real mount point. If you change the path or the owner, restart the proxy when no tasks are running:

Bash
systemctl restart proxmox-backup-proxy

The ext4, xfs, and zfs are the supported file systems for a datastore. If a mount point is empty after a reboot, check that the disk was mounted before PBS started.

Resolve PBS Datastore Locks

PBS uses locks so two jobs do not change the same data at once. A lock error means another task still holds it, or the server is very busy. Lock problems are easy to troubleshoot in Proxmox Backup Server once you know which task holds the lock.

Step 1: Find the Task that Holds the Lock

A lock error means another task is using the datastore. First, you must find out which task it is. The commands below show all running tasks and the lock messages in the logs.:

Bash
proxmox-backup-manager task listps auwx | grep '[p]roxmox-backup'journalctl -u proxmox-backup-proxy --since "1 hour ago" --no-pager | grep -i lock

Wait for the running task to end, or stop it from Administration > Tasks in the web UI.

Step 2: Stop Jobs from Overlapping

Backup, prune, garbage collection, verify, and sync jobs should not all start at the same time. A simple plan includes:

  1. Backups at night.
  2. Prune after the backups finish.
  3. Garbage collection on the weekend.
  4. Verify jobs on other days or later in the day.
  5. Sync jobs after the backups finish.

Step 3: Handle Lock Errors on Very Busy Servers

An error such as Unable to acquire lock ".../tasks/.active.lock" appears when many backups start in the same second. PBS already waits up to 15 seconds for this lock. Spread out the start times of your backup jobs instead of starting every node at midnight.

Step 4: Clear a Stuck Maintenance Mode

A removable datastore that fails to unmount can stay in unmounting mode, which blocks all IO. Reset it like this:

Bash
proxmox-backup-manager datastore update store1 --maintenance-mode type=offlineproxmox-backup-manager datastore update store1 --delete maintenance-mode

The first command blocks all IO. The second one clears the mode.

Step 5: Update PBS

Newer releases fixed several lock problems. For example, PBS 4.1 fixed a case where a backup did not drop its lock in time, so the next backup failed. Also, it fixed a locking issue where a backup was not given priority over garbage collection during a server reload.

Bash
apt updateapt list --upgradable | grep -i proxmox

Read the release notes first. Then, upgrade when no backups are running.

Do not delete lock files manually while PBS is running. If a lock still stays after you stop all tasks, save the journalctl output and check it for the cause.

Prune and Garbage Collection in PBS: Fix a Datastore That Stays Full

Many people get confused here. When you troubleshoot Proxmox Backup Server disk usage, first ask: did GC run after the prune? Prune does not free disk space. It only removes the snapshot records. The data stays on disk until garbage collection (GC) removes it.

Step What it does Frees space?
Prune Removes snapshot metadata (manifest, indexes, logs, notes) No
Garbage collection Deletes chunks that no snapshot uses Yes

Why GC Does Not Delete Everything at Once

GC works in two phases. In phase 1, it marks every chunk that a snapshot still uses. It does this by updating the chunk's access time (atime). In phase 2, it deletes chunks that were not marked and are older than a cutoff time. The cutoff is 24 hours and 5 minutes before GC started, or the start of the oldest running backup, whichever is earlier.

Chunks newer than the cutoff are not deleted yet. The GC log shows them as Pending removals. This is not an error. PBS waits because most file systems use relatime, which updates atime only about once a day. So the real cycle is:

  1. Prune the snapshots.
  2. Run GC. The unused chunks get marked.
  3. Wait more than 24 hours and 5 minutes.
  4. Run GC again. The chunks are removed, and space comes back.

Prune and GC Commands You Need

Use the commands below to test your prune rules, run GC, and check its status. First, run the prune command with --dry-run. It shows what would be removed without deleting anything:

Bash
proxmox-backup-client prune vm/100 --keep-last 3 --keep-daily 7 --keep-weekly 4 --dry-run \  --repository 'root@pam@pbs.example.com:store1'

Manage prune jobs and GC with the following commands:

Bash
proxmox-backup-manager prune-job listproxmox-backup-manager garbage-collection start store1proxmox-backup-manager garbage-collection status store1proxmox-backup-manager garbage-collection list

Then, set a weekly GC schedule with the command below:

Bash
proxmox-backup-manager datastore update store1 --gc-schedule 'Sun 03:00'

GC Problems and Fixes

GC can fail or not free space for a few simple reasons. The table below shows the most common problems and how to fix each one. 

Problem Cause Fix
Disk is full after prune GC has not run, or the grace time is not over Run GC, then run it again after 24h 5m
Snapshots are not pruned They are marked as protected Remove the protected flag if you really want them gone
GC aborts with a "nested" message One datastore sits inside another one Move or remove the inner datastore. Nested datastores are not supported
GC will not start on a 100% full disk GC needs a little free space Free a few MB, for example old files in /var/log, then start GC
GC fails an atime safety check The file system does not update atime as expected Fix the mount options. Keep gc-atime-safety-check enabled (it is the default)

Do not try to make the GC wait time shorter to get space back faster. The wait time protects running backups from losing data.

Fix PBS Verification Failures

Verification reads every chunk and checks its checksum. To troubleshoot Proxmox Backup Server verify errors, you must find out if the cause is the disk, the data, or the S3 provider. A failed verify means PBS found a chunk that is missing or does not match.

Run a Manual Verify

A verify job reads your backup data and checks that it is not damaged. You can start one manually at any time. Use the command below to check the whole datastore, or use the web UI to check one snapshot:

Bash
proxmox-backup-manager verify store1 --read-threads 1 --verify-threads 4 --ignore-verified false

The thread defaults are 1 reader and 4 verify threads, and you can use values from 1 to 32. To check one snapshot, open the datastore Content tab and click the verify icon on that snapshot.

What to Check when a Snapshot Fails

A failed verify means PBS found a chunk that is missing or damaged. Follow the steps below to find the cause. Most of the time, the problem is the disk.

  1. Read the verify task log. Note which chunk or archive failed.
  2. Check the disks (smart-attributes, zpool status -v, dmesg).
  3. Check RAM and cables if you see random errors on many snapshots.
  4. If you have a second PBS, you can repair the damaged snapshot from the copy on that server. Use a pull sync job with the resync-corrupt option. It re-syncs snapshots that failed the last verify, so run a verify job first.

Once a chunk fails on disk, it will not fix itself. You must fix the hardware cause first, or the same errors will return.

Plan your Verify Jobs

Check all your backups again at least once a month. A simple plan is two jobs, including a daily job for new backups, and a weekly or monthly job that checks everything. Also, you can verify new backups right after they finish by turning on the datastore verify-new option.

Make Verify Faster

Verify is heavy on disk and CPU. You can change the thread numbers and the chunk order. For fast NVMe, chunk-order=none can be faster than the default inode order.

First look at your current tuning, because the new value replaces the old one:

Bash
proxmox-backup-manager datastore show store1proxmox-backup-manager datastore update store1 --tuning 'chunk-order=none,default-verification-workers=4,default-verification-readers=2'

Troubleshoot Failed PBS Sync Jobs

A sync job copies backups from one PBS server to another. When it fails, the cause is usually the network, the certificate, or missing rights. Run the job manually, read the log, and then use the checklist below.

Bash
proxmox-backup-manager sync-job listproxmox-backup-manager sync-job run pbs2-localproxmox-backup-manager task list --limit 5
Problem Check Fix
Cannot connect nc -zv remote-host 8007 Open port 8007 on the firewall
Fingerprint error proxmox-backup-manager cert info on the remote Update the remote entry with the new fingerprint
Only some groups sync Remote user can read only its own groups Give the remote user more rights, or use the right owner
Cannot remove vanished snapshots Missing Datastore.Prune Add the right on the local datastore
Owner error Job owner is not the configuring user Set the owner option, or give Datastore.Modify
Push jobs delete each other's data Several push jobs share one remote user Use one remote and one remote user for each push job
Job is very slow on a far-away link One HTTP/2 connection is the limit Use worker-threads (new in 4.2)

A pull job needs two rights:

  • Remote.Read on /remote/{remote}/{remote-store}
  • Datastore.Backup or higher on /datastore/{store}

PBS 4.2 can sync several groups at once. The default is 1 worker, and the maximum is 32:

Bash
proxmox-backup-manager sync-job update pbs2-local --worker-threads 4

More workers use more memory and more connections on both servers. Start low and raise the number slowly.

Limit the Bandwidth

A sync job can use all of your network speed and slow down other work. You can set a speed limit to stop this. Use rate-in for pull jobs and rate-out for push jobs:

Bash
proxmox-backup-manager sync-job update pbs2-local --rate-in 20MiB

Encrypted Snapshots

Push jobs in PBS 4.2 can encrypt snapshots before they leave your server. Snapshots that are only partly encrypted are skipped. If a job skips snapshots, check the encryption key setup and the encrypted-only flag.

Fix Slow PBS Backup Speed

Slow backups can come from the CPU, the network, or the disk. Test each part in the order below. This helps you find the slow part quickly, without changing settings you do not need to change.

Step 1: Run the Built-in Benchmark

Run the command below to check TLS speed, hashing, compression, and encryption speed:

Bash
proxmox-backup-client benchmark --repository 'root@pam@pbs.example.com:store1'

Low TLS speed points to the network or a weak CPU.

Step 2: Test the Network

At this point, you must check for the wrong MTU or a bad switch port. Run the command below:

Bash
iperf3 -s                    # on PBSiperf3 -c pbs.example.com    # on the PVE node

In PBS 4.1, switching back to the default MTU of 1500 helped fix slow or stuck backups in some cases.

Step 3: Test the Disk

Next, check whether the datastore disk is slowing down your backups. Use the commands below to see how busy the disk is and how long read and write requests take:

Bash
apt install sysstatiostat -x 2zpool iostat -v 2      # ZFS only

If %util stays near 100% and wait times are high, the datastore disk is slowing down your backups. PBS needs fast access to small files across the disk. Use enterprise SSDs, or add a metadata cache, such as a mirrored ZFS special device, if you use HDDs.

Step 4: Look for Other Jobs

Check whether other jobs are running during your backups. GC, verify, and sync jobs also use disk and network resources. You must move them to a different time so they do not slow down your backups.

Step 5: Check Traffic Control and Tuning

Check your traffic limits and datastore settings. A speed limit or a storage setting may be slowing down your backups. Review the options below before making changes.

  • In the web UI, look at Configuration > Traffic Control. A rule there may limit the client.
  • The default sync-level is filesystem. The file level runs fsync on every chunk and is slow on slow storage.
  • Keep chunk-order at inode for HDDs. Try none only on very fast NVMe.

PBS 4.2 S3 Problems: Errors, Cache, and Cost

S3 backups depend on your storage provider, network, and local cache. A problem with any of these can cause errors or slow backups. This section covers common S3 issues in PBS 4.2, cache space, and storage costs.

All data goes to the S3 bucket, but PBS still needs a persistent local cache. The cache keeps metadata and recent chunks, so PBS does not call S3 for every action. Important facts:

  • The bucket and the access key must exist before you create the datastore. PBS does not create buckets.
  • The key needs permission to get, put, list, and delete objects.
  • PBS talks to S3 over HTTPS only. Plain HTTP does not work.
  • One S3 datastore cannot be shared between two PBS servers.
  • The cache cannot be an existing regular datastore, and a RAM-only cache is not possible.

First Checks for any S3 Problem

To troubleshoot Proxmox Backup Server S3 datastores, you must test the endpoint before you test the datastore.

Bash
cat /etc/proxmox-backup/s3.cfgcat /etc/proxmox-backup/datastore.cfgproxmox-backup-manager s3 endpoint listproxmox-backup-manager s3 endpoint list-buckets my-s3-ep

list-buckets is the fastest test. If it fails, no datastore task will work.

Common S3 Errors and Fixes

You can find your error in the table below. Check the possible cause, then follow the steps to fix it.

Symptom Likely cause Fix
403 Forbidden with SignatureDoesNotMatch Wrong region, wrong keys, or a port set by hand Set the correct region. Leave the port empty if you use the standard port (the port is part of the signed host header)
Connection or TLS error Plain HTTP, or a self-signed certificate Use HTTPS. Add the certificate fingerprint to the endpoint
Bucket not found Wrong address style Use vhost style, or turn on path-style if the bucket name is not in the endpoint address
Upload errors on some providers Provider does not support the If-None-Match header Enable the skip-if-none-match-header provider quirk
Delete errors or failed GC cleanup Provider does not support batch delete Enable the delete-objects-via-delete-object quirk (added in 4.2)
Cloudflare R2 auth errors Wrong region value Use path-style and set the region to auto
Random 500, 503, or 504 errors Provider is busy or down PBS 4.2 retries these automatically. If they continue, check the provider status
Writes and cleanup both fail The bucket is out of space or over quota Free space in the bucket, remove stray objects of the broken snapshot, then run an S3 refresh

For AWS, use the endpoint {{bucket}}.s3.{{region}}.amazonaws.com and set the region in its own field. The region is part of the request signature.

You can set a provider quirk from the CLI or from Configuration > Remotes > S3 Endpoints > Edit:

Bash
proxmox-backup-manager s3 endpoint update my-s3-ep --provider-quirks skip-if-none-match-header

Verify Jobs that Fail with S3 Errors

If your S3 provider blocks downloads, a verify job may mark snapshots as failed even when the stored data is not damaged. For example, the provider may return HTTP 403 when you reach a daily download limit. To fix this:

  • Raise or remove the download limit, or wait for it to reset.
  • Verify each affected snapshot again using the verify icon on the Content tab. Make sure already verified snapshots are not skipped.
  • Set a download alert with your provider so you know before you reach the limit.

If a verify job skips snapshots already checked, it may also skip those marked with errors. This means the error status may stay until you check them again. Check your version’s release notes for a fix.

Use S3 Refresh to Rebuild the Cache View

If you changed objects in the bucket manually, lost the cache, or cleaned up stray objects, you must refresh the local cache from S3:

Bash
proxmox-backup-manager datastore s3-refresh s3store

PBS 4.2 fixed two refresh bugs, including a crash on every refresh that started in PBS 4.1, and empty namespaces that were skipped.

Local Cache Pressure

The cache is a normal folder on your local disk, so it can fill that disk. A common mistake is to place it on the root disk, which then runs out of space. Check it with:

Bash
df -h /mnt/datastore/s3store-cachedu -sh /mnt/datastore/s3store-cacheproxmox-backup-manager datastore show s3store

In PBS 4.2, the web UI shows this number as Local Cache Usage. Follow these rules:

  • Use a dedicated disk, partition, or ZFS dataset with a quota.
  • Use fast storage such as NVMe. Restores and GC both depend on cache speed.
  • The cache is least recently used. When it reaches its limit, old chunks are removed by PBS. You do not need to clean it manually.

Example of a ZFS cache with a quota:

Bash
zfs create -o mountpoint=/mnt/datastore/s3-cache -o quota=128G rpool/s3-cache

Known issue in PBS 4.0: cache space may stay used after a restart, reboot, or maintenance mode. If this happens, check the latest release notes and update PBS.

Move the Cache to a better Disk

If your cache disk is slow or nearly full, you must move the cache to a faster disk with more space. Remember to stop all running tasks before you start.

Bash
proxmox-backup-manager datastore remove s3store --keep-job-configs true --destroy-data falseproxmox-backup-manager datastore create s3store /mnt/datastore/new-s3-cache \  --backend type=s3,client=my-s3-ep,bucket=pbs-s3-bucket \  --reuse-datastore true --overwrite-in-use trueproxmox-backup-manager datastore s3-refresh s3store

Watch your S3 Costs

S3 providers may charge for storage, requests, and downloads. You must check your usage to avoid unexpected costs. You can set notification limits and a schedule that resets the counters, for example once a month:

Bash
proxmox-backup-manager datastore update s3store --counter-reset-schedule 'monthly'

GC and verify make many S3 requests, so check your usage after they run. PBS 4.1 adds speed limits per S3 endpoint, and PBS 4.2 adds HTTP proxy support for S3 traffic.

Unexpected Memory Usage in PBS

High RAM use in PBS is usually normal. Before you troubleshoot Proxmox Backup Server memory use, remember that Linux uses spare RAM on purpose. Find out which part uses it before you act:

Bash
free -hps aux --sort=-%mem | head -10systemctl status proxmox-backup-proxy --no-pagerdmesg -T | grep -i -E "out of memory|oom"

Read the available column in free -h, not the free column. Linux uses spare RAM for file cache, and gives it back when programs need it. Common causes include:

Cause Check Fix
ZFS ARC cache arc_summary -s arc Set a limit with zfs_arc_max
GC chunk cache gc-cache-capacity in tuning Lower the value (see below)
Many verify threads Verify job settings Use fewer threads
Sync with many workers worker-threads value Lower the number
Many jobs at the same time Task list Spread out the jobs

Limit the ZFS Cache

ZFS uses RAM to cache data. If it uses too much, you must set a limit to leave enough memory for PBS and other tasks. To set a limit of 8 GiB, you can use:

Bash
echo "options zfs zfs_arc_max=8589934592" > /etc/modprobe.d/zfs.confupdate-initramfs -u -k allreboot

Tune the GC Cache

GC keeps a cache of chunks that it has already marked. The default is 1048576 slots, and the maximum is 8388608. Higher numbers can shorten GC but use more memory. A value of 0 turns the cache off.

Bash
proxmox-backup-manager datastore update store1 --tuning 'gc-cache-capacity=524288'

Check your current tuning first, and include the other options, because the new value replaces the old one.

Size the Server Correctly

It is recommended to consider at least 4 GiB of RAM for the OS, file cache, and PBS services, plus at least 1 GiB for each TiB of storage. Add more if you use ZFS, run many jobs at once, or use sync workers. For S3 datastores, plan RAM for the system plus fast local disk for the cache.

If your jobs keep fighting for RAM and disk speed, you can move backups to a separate machine. A dedicated server for backup infrastructure with enough NVMe for the S3 cache and enough RAM gives you steady backup and restore speed, and your production hosts stay free for production work.

Conclusion

Always start with the task logs, then check storage, permissions, and running jobs. Keep backups, GC, verify, and sync jobs on separate schedules. For S3, watch cache space and costs. Also, test your restores regularly to make sure your backups are ready when you need them.

We hope you enjoy this guide to troubleshoot Proxmox Backup Server. For more detailed information, you can check the PBS Maintenance Tasks Docs.