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:
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:
systemctl status proxmox-backup proxmox-backup-proxy --no-pager
Number 2: Read the recent logs with the following commands:
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:
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:
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:
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:
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:
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:
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:
proxmox-backup-manager cert info | grep Fingerprint 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:
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:
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:
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:
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:
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:
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:
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.:
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:
- Backups at night.
- Prune after the backups finish.
- Garbage collection on the weekend.
- Verify jobs on other days or later in the day.
- 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:
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.
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:
- Prune the snapshots.
- Run GC. The unused chunks get marked.
- Wait more than 24 hours and 5 minutes.
- 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:
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:
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:
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:
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.
- Read the verify task log. Note which chunk or archive failed.
- Check the disks (
smart-attributes, zpool status -v, dmesg).
- Check RAM and cables if you see random errors on many snapshots.
- 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:
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.
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}
Speed up Sync on Slow Links (PBS 4.2)
PBS 4.2 can sync several groups at once. The default is 1 worker, and the maximum is 32:
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:
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:
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:
iperf3 -s iperf3 -c pbs.example.com
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:
apt install sysstatiostat -x 2zpool iostat -v 2
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.
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:
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:
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:
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:
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.
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:
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:
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:
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.
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.