Proxmox Backup Server 4.0 released!

  • Like
Reactions: Johannes S
@Amodin ,

This does not result in performance issues for other processes.
ZFS takes 95% of unused RAM. If your system needs that RAM for anything else, the ARC cache will shrink so your system can do other things.
Thanks, it's good to know. Like I said, it's never done that with my bare metal server, and to see it now all of a sudden not be the 'norm' I believe was still worth mentioning. That's a significant change from 'what it was' to 'what it's supposed to do', when it should have been doing that the entire time.
 
  • Like
Reactions: SInisterPisces
Thanks, it's good to know. Like I said, it's never done that with my bare metal server, and to see it now all of a sudden not be the 'norm' I believe was still worth mentioning. That's a significant change from 'what it was' to 'what it's supposed to do', when it should have been doing that the entire time.
Definitely worth mentioning.

While more ARC cache is always better, my understanding is that Proxmox's dev team policy is to track the ZFS defaults. The default upstream in the OpenZFS 2.3 release was changed to use 95% of available RAM for ARC, so it changed in PBS (and presumably PVE).
 
  • Like
Reactions: Amodin
While more ARC cache is always better, my understanding is that Proxmox's dev team policy is to track the ZFS defaults. The default upstream in the OpenZFS 2.3 release was changed to use 95% of available RAM for ARC, so it changed in PBS (and presumably PVE).
On new installs of PVE the ARC cache is still limited to 10% of RAM ( max eight GB ) according to the manual:


ZFS uses 50 % of the host memory for the Adaptive Replacement Cache (ARC) by default. For new installations starting with Proxmox VE 8.1, the ARC usage limit will be set to 10 % of the installed physical memory, clamped to a maximum of 16 GiB. This value is written to /etc/modprobe.d/zfs.conf.
Allocating enough memory for the ARC is crucial for IO performance, so reduce it with caution. As a general rule of thumb, allocate at least 2 GiB Base + 1 GiB/TiB-Storage. For example, if you have a pool with 8 TiB of available storage space then you should use 10 GiB of memory for the ARC. https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysadmin_zfs_limit_memory_usage

That part mentioning the default for new installs is missing in PBS manual ( see: https://pbs.proxmox.com/docs/sysadmin.html#limit-zfs-memory-usage ) which makes sense overall: For a virtualization host you need the memory for the VMs and cobtainers and want to avoid the OOM killer. A backup server is basically a kind of file/database server whose performance will profit from the ZFS ARC cache.

Please note that the PVE/PBS manual doesn't mention the new ZFS defaults, guess I will file a bug report ;)
 
Last edited:
I need a bit of help with the upgrade. I'm following the directions at https://pbs.proxmox.com/wiki/Upgrade_from_3_to_4 . Specifically, I got a bit turned around on changing the repos over at https://pbs.proxmox.com/wiki/Upgrade_from_3_to_4#Update_the_Configured_APT_Repositories .

I ran through the instructions, but I'm getting odd output from the GUI. It could just be that the GUI is complaining that since I've updated the repos, there's no valid way to update PBS 3 anymore, but I wanted to double-check that I've done this right.

1754773723539.pngI'm using the no-subscription repos.

Here's what I've already done, per the Wiki.
I changed over all the repos to Trixie with this command:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

After that, I added the new enterprise repo, just so it would be there if I ever get a support subscription.
Bash:
cat > /etc/apt/sources.list.d/pbs-enterprise.sources << EOF
Types: deb
URIs: https://enterprise.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

At this point, apt update failed out with an error because I was unauthorized to access the enterprise repos, not having a subscription, so I deactivated the enterprise repo in the GUI.

I then added the no-subscription repo:
Bash:
cat > /etc/apt/sources.list.d/proxmox.sources << EOF
Types: deb
URIs: http://download.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

So, now, I think I'm there. Here's what my 3 source files look like:
Bash:
root@andromeda0:/etc/apt# batcat sources.list
───────┬───────────────────────────────────
       │ File: sources.list
───────┼───────────────────────────────────
   1   │ deb http://ftp.us.debian.org/debian trixie main contrib non-free-firmware
   2   │
   3   │ deb http://ftp.us.debian.org/debian trixie-updates main contrib non-free-firmware
   4   │
   5   │ # security updates
   6   │ deb http://security.debian.org trixie-security main contrib non-free-firmware
───────┴───────────────────────────────

root@andromeda0:/etc/apt/sources.list.d# batcat pbs-enterprise.sources
───────┬───────────────────────────
       │ File: pbs-enterprise.sources
───────┼───────────────────────────
   1   │ Types: deb
   2   │ URIs: https://enterprise.proxmox.com/debian/pbs
   3   │ Suites: trixie
   4   │ Components: pbs-enterprise
   5   │ Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
   6   │ Enabled: false
   7   │
───────┴───────────────────────────

root@andromeda0:/etc/apt/sources.list.d# batcat proxmox.sources
───────┬───────────────────────────
       │ File: proxmox.sources
───────┼───────────────────────────
   1   │ Types: deb
   2   │ URIs: http://download.proxmox.com/debian/pbs
   3   │ Suites: trixie
   4   │ Components: pbs-no-subscription
   5   │ Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
───────┴──────────────────────────

The apt policy looks correct:
Bash:
root@andromeda0:/etc/apt/sources.list.d# apt policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://download.proxmox.com/debian/pbs trixie/pbs-no-subscription amd64 Packages
     release o=Proxmox,a=stable,n=trixie,l=Proxmox Backup System Debian Repository,c=pbs-no-subscription,b=amd64
     origin download.proxmox.com
 500 http://security.debian.org trixie-security/main amd64 Packages
     release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=main,b=amd64
     origin security.debian.org
 500 http://ftp.us.debian.org/debian trixie-updates/main amd64 Packages
     release v=13-updates,o=Debian,a=stable-updates,n=trixie-updates,l=Debian,c=main,b=amd64
     origin ftp.us.debian.org
 500 http://ftp.us.debian.org/debian trixie/non-free-firmware amd64 Packages
     release v=13.0,o=Debian,a=stable,n=trixie,l=Debian,c=non-free-firmware,b=amd64
     origin ftp.us.debian.org
 500 http://ftp.us.debian.org/debian trixie/contrib amd64 Packages
     release v=13.0,o=Debian,a=stable,n=trixie,l=Debian,c=contrib,b=amd64
     origin ftp.us.debian.org
 500 http://ftp.us.debian.org/debian trixie/main amd64 Packages
     release v=13.0,o=Debian,a=stable,n=trixie,l=Debian,c=main,b=amd64
     origin ftp.us.debian.org

And apt update wants to grab about 330+ new packages. So, I think I've configured everything, but that warning in the GUI is still a concern.

pve3to4 seems to be happy.
Bash:
root@andromeda0:~# pbs3to4 --full
= CHECKING VERSION INFORMATION FOR PBS PACKAGES =

INFO: Checking for package updates..
WARN: updates for the following packages are available:
      dpkg, reportbug, cifs-utils, tcpdump, dmidecode, libwrap0, libkeyutils1, libxtables12, dmeventd, initramfs-tools-core, mokutil, libsmartcols1, debconf-i18n, console-setup, zstd, libpam-runtime, udev, coreutils, krb5-locales, hdparm, bind9-host, libffi8, pciutils, libnftnl11, libgssapi-krb5-2, proxmox-default-kernel, netbase, readline-common, libnghttp2-14, open-iscsi, openssh-client, dosfstools, iputils-ping, libaudit-common, fdutils, proxmox-widget-toolkit, libnl-3-200, libnl-genl-3-200, apt, bat, xkb-data, libnftables1, ssl-cert, libsensors-config, libacl1, gpg, perl, libtinfo6, libtirpc-common, tzdata, zfs-zed, libunwind8, bridge-utils, libldb2, libmagic-mgc, kbd, libidn2-0, libtasn1-6, python3-minimal, chrony, libpam-systemd, busybox, liblzo2-2, nmap-common, zfs-initramfs, libselinux1, liblzma5, sed, ssh, libnvpair3linux, tar, proxmox-mail-forward, ucf, libavahi-common-data, sg3-utils, libcap2-bin, tasksel-data, whiptail, base-passwd, libsasl2-modules, libsasl2-2, libexpat1, grub-pc-bin, libp11-kit0, procmail, python3-reportbug, libblas3, libqrencode4, patch, python3-debianbts, libfido2-1, kmod, libuutil3linux, tasksel, dbus-daemon, libjansson4, liblua5.3-0, librtmp1, debconf, vim-common, liblvm2cmd2.03, libproc2-0, libip4tc2, libsystemd0, libfreetype6, pci.ids, libmount1, nfs-common, file, bzip2, python3-requests, libpipeline1, libnss-systemd, debianutils, libpopt0, liblockfile-bin, logrotate, libapparmor1, libwbclient0, proxmox-grub, xfsprogs, pbs-i18n, python3-httplib2, python3, openssh-server, libdbus-1-3, python3-urllib3, runit-helper, dbus-bin, gnupg, libsasl2-modules-db, gpg-wks-server, libkrb5support0, libsepol2, netcat-traditional, python3-pyparsing, libbpf1, libmnl0, libxml2, xz-utils, libzstd1, util-linux, libbsd0, less, python-apt-common, util-linux-extra, psmisc, wamerican, systemd, libudev1, gpg-agent, console-setup-linux, libgpg-error0, wget, isc-dhcp-common, proxmox-backup, liblocale-gettext-perl, fdisk, lua-lpeg, debian-archive-keyring, libcom-err2, python3-pycurl, gettext-base, libmaxminddb0, diffutils, strace, sensible-utils, python3-pkg-resources, qrencode, grub-efi-amd64, libfdisk1, gdisk, eject, usbutils, lsof, libcap2, systemd-boot-efi, lvm2, libc6, locales, powermgmt-base, klibc-utils, libuchardet0, lynx, libkrb5-3, usrmerge, libpam-modules, libprotobuf-c1, ifupdown2, manpages, linux-base, libusb-1.0-0, libuuid1, man-db, gpgv, libtext-charwidth-perl, bash, traceroute, libgcrypt20, isc-dhcp-client, mailcap, grep, media-types, libproxmox-acme-plugins, mawk, libfile-find-rule-perl, inetutils-telnet, libcap-ng0, libklibc, vim-tiny, libsemanage2, bind9-dnsutils, proxmox-offline-mirror-helper, debian-faq, libnsl2, base-files, libk5crypto3, grub-efi-amd64-signed, ncurses-base, gzip, proxmox-archive-keyring, keyutils, libtdb1, python3-apt, dmsetup, login, rpcbind, python3-certifi, libsqlite3-0, hostname, libjemalloc2, pinentry-curses, libjson-c5, libopeniscsiusr, gpgsm, proxmox-backup-client, btop, libdevmapper-event1.02.1, dbus-session-bus-common, libcryptsetup12, systemd-boot, adduser, findutils, libgmp10, distro-info-data, libxxhash0, libpcre2-8-0, libcrypt1, libavahi-common3, ca-certificates, libpam-modules-bin, init-system-helpers, grub-efi-amd64-bin, grub2-common, libsemanage-common, proxmox-mini-journalreader, smartmontools, libseccomp2, smbclient, python3-six, procps, libpython3-stdlib, bash-completion, mount, perl-base, openssh-sftp-server, libpam0g, nano, libc-l10n, btrfs-progs, lynx-common, libbrotli1, grub-common, htop, bind9-libs, cron-daemon-common, apt-listchanges, samba-libs, libsensors5, liblmdb0, libc-bin, libsystemd-shared, keyboard-configuration, libattr1, efibootmgr, libaudit1, libkmod2, initramfs-tools, bsd-mailx, nmap, cpio, dirmngr, bc, libksba8, libtext-iconv-perl, libhttp-parser2.9, systemd-sysv, samba-common, cron, apt-utils, python3-idna, lm-sensors, gnupg-utils, memtest86+, libblkid1, python3-chardet, curl, libslang2, libargon2-1, sysvinit-utils, python3-debconf, logsave, gnupg-l10n, python3-setuptools, gpg-wks-client, liblz4-1, libpci3, libncursesw6, ncurses-bin, libbz2-1.0, libinih1, zlib1g, ethtool, python3-charset-normalizer, gcc-12-base, liblockfile1, init, groff-base, libmd0, dbus-system-bus-common, shim-signed, libnfsidmap1, ncurses-term, proxmox-backup-docs, dash, libtalloc2, dbus, libedit2, bsdutils, iproute2, proxmox-backup-server, libavahi-client3, gpgconf, liblinear4, libdevmapper1.02.1, proxmox-kernel-helper, libfstrm0, libss2, libnewt0.52, shim-signed-common, intel-microcode, bsdextrautils, libstdc++6, zfsutils-linux, python3-systemd, libdebconfclient0, postfix, openssl, python3-debian, e2fsprogs, proxmox-offline-mirror-docs, proxmox-termproxy, passwd, nftables, libgcc-s1, libpcap0.8t64, libarchive13t64, liburcu8t64, libevent-core-2.1-7t64, liblua5.4-0, initscripts, libicu76, dracut-install, libgdbm6t64, libsmbclient0, libzfs6linux, libcbor0.10, python3-inflect, gcc-14-base, libgnutls30t64, libreiserfscore0t64, libunistring5, libnettle8t64, libtevent0t64, libldap2, libcurl4t64, cdebconf, python3-jaraco.functools, python3-typing-extensions, login.defs, libsgutils2-1.48, perl-modules-5.40, libisns0t64, libreadline8t64, python3-typeguard, python3-jaraco.text, libssh2-1t64, liblsof0, libwtmpdb0, systemd-standalone-sysusers, grub-efi-ia32, bsdmainutils, libtlsrpt0, libefiboot1t64, libmagic1t64, libuv1t64, python3-zipp, libapt-pkg7.0, python3-more-itertools, python3-autocommand, libpsl5t64, python3.13, libassuan9, anacron, libpng16-16t64, lsb-base, libzpool6linux, grub-efi-amd64-unsigned, initramfs-tools-bin, libdb5.3t64, libext2fs2t64, python3-jaraco.context, libgit2-1.9, libperl5.40, libtirpc3t64, libaio1t64, libefivar1t64, busybox-static, libelf1t64, sqv, libnpth0t64, libcurl3t64-gnutls, proxmox-kernel-6.14, libhogweed6t64, libssl3t64, systemd-boot-tools, libpython3.13-stdlib, python3-importlib-metadata, libfuse3-4, python3-dbus
INFO: Checking proxmox backup server package version..
PASS: 'proxmox-backup' has version >= 3.4.0
INFO: Check running kernel version..
PASS: running kernel '6.8.12-13-pve' is considered suitable for upgrade.

= MISCELLANEOUS CHECKS =

INFO: Checking PBS daemon services..
PASS: systemd unit 'proxmox-backup.service' is in state 'active'
PASS: systemd unit 'proxmox-backup-proxy.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit
INFO: Checking for package repository suite mismatches..
PASS: found no suite mismatch
INFO: Checking bootloader configuration...
SKIP: not yet upgraded, no need to check the presence of systemd-boot
SKIP: could not get dkms status

= SUMMARY =

TOTAL:     9
PASSED:    6
SKIPPED:   2
NOTICE:    0
WARNINGS:  1

ATTENTION: Please check the output for detailed information!

Thoughts? Am I good to go?

EDIT: That worked. :) A couple of oddities. See next post.
 
Last edited:
That was the old default for PVE 8/ZFS 2.2.
I'm not sure what PVE 9 does yet, but I observed PBS 3 taking and holding 50 percent of available RAM for ARC regularly.
You peaked my interest so I created a test VM with two virtual disks (both 100GB), four vCPUs and 24 GB of RAM. I installed both PBS4 and PVE9 on a ZFS mirror out of both discs. The PBS install ended up with using 50% of available RAM for the ARC cache as described in the PBS documentation:
It is good to use at most 50 percent (which is the default) of the system memory for ZFS ARC, to prevent performance degradation of the host. Use your preferred editor to change the configuration in /etc/modprobe.d/zfs.conf and insert:


https://pbs.proxmox.com/docs/sysadmin.html#zfs-administration

The PVE9 install however ended up in using 10% of the available memory for ARC cache like written in the doc:
ZFS uses 50 % of the host memory for the Adaptive Replacement Cache (ARC) by default. For new installations starting with Proxmox VE 8.1, the ARC usage limit will be set to 10 % of the installed physical memory, clamped to a maximum of 16 GiB. This value is written to /etc/modprobe.d/zfs.conf.
https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysadmin_zfs_limit_memory_usage

The values in /etc/modprobe.d in both installs reflected the 10%/50% rule from the doc too. So in the end the change of ZFS default behaviour doesn't matter on new installs of PVE or PBS since their installers already limit the ARC caches limit to a smaller default than 95%. I still think that it would be a good idea to mention it in the documentation so people upgrading from older systems or installed PBS/PVE on a regular Debian system knows about this.

I will write a bug report now :)
Edit: Bug reports are done, for reference:
 
Last edited:
As noted above, I ran the update via a serial console. My system survived and rebooted and I'm going through the tail end of the setup now. A couple of notes. ( @t.lamprecht , I think these might be errors in the docs):

Systemd-boot meta-package changes the bootloader configuration automatically and should be uninstalled​

With Debian Trixie the systemd-boot package got split up a bit further into systemd-boot-efi (containing the EFI-binary used for booting), systemd-boot-tools (containing bootctl) and the systemd-boot meta-package (containing hooks which run upon upgrades of itself and other packages and install systemd-boot as bootloader). As Proxmox Systems usually use systemd-boot for booting only in some configurations (ZFS on root and UEFI booted without secure boot), which are managed by proxmox-boot-tool, the meta-package systemd-boot should be removed. The package was automatically shipped for systems installed from the PBS 3.0 to PBS 3.4 ISOs, as it contained bootctl in bookworm.If the pbs3to4 checklist script suggests it, the systemd-boot meta-package is safe to remove unless you manually installed it and are using systemd-boot as a bootloader. Should systemd-boot-efi and systemd-boot-tools be required, pbs8to9 will warn you accordingly. The pbs3to4 checklist script will change its output depending on the state of the upgrade, and should be run continuously before and after the upgrade. It will print which packages should be removed or added at the appropriate time.The only situation where you should keep the meta-package systemd-boot installed is if you manually setup systemd-boot for your system.See also the filed bug for systemd-boot.
(This is the PBS page. Typo: "pbs8to9." See also: "Then remove the previous Proxmox Backup Server 8 no-subscription repository from either the /etc/apt/sources.list, /etc/apt/sources-list.d/pbs-install-repo.list or any other .list file you may have added it to. Run apt update and apt policy again to be certain that the old repo has been removed.")

Something odd's going on on my system vs. the docs. I have the following output from the checking tool and apt:
Bash:
root@andromeda0:~# pbs3to4 --full
= CHECKING VERSION INFORMATION FOR PBS PACKAGES =

INFO: Checking for package updates..
PASS: all packages up-to-date
INFO: Checking proxmox backup server package version..
PASS: Already upgraded to Proxmox Backup Server 4
INFO: Check running kernel version..
PASS: running new kernel '6.14.8-2-pve' after upgrade.

= MISCELLANEOUS CHECKS =

INFO: Checking PBS daemon services..
PASS: systemd unit 'proxmox-backup.service' is in state 'active'
PASS: systemd unit 'proxmox-backup-proxy.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit
INFO: Checking for package repository suite mismatches..
PASS: found no suite mismatch
INFO: Checking bootloader configuration...
PASS: bootloader packages installed correctly
SKIP: could not get dkms status

= SUMMARY =

TOTAL:     9
PASSED:    8
SKIPPED:   1
NOTICE:    0

So, I've got a PASS: bootloader packages installed correctly, but:
Bash:
root@andromeda0:~# apt search systemd-boot
proxmox-kernel-helper/stable,now 9.0.3 all [installed]
  Function for various kernel maintenance tasks.

python3-virt-firmware/stable 24.11-2 all
  Tools for manipulating edk2 (ovmf/qemu-efi) firmware images

systemd-boot/stable,now 257.7-1+pmx1 amd64 [installed]
  simple UEFI boot manager - integration and services

systemd-boot-dbgsym/stable 257.7-1+pmx1 amd64
  debug symbols for systemd-boot

systemd-boot-efi/stable,now 257.7-1 amd64 [installed]
  simple UEFI boot manager - EFI binaries

systemd-boot-efi-amd64-signed/stable 257.7-1 amd64
  Tools to manage UEFI firmware updates (signed)

systemd-boot-efi-amd64-signed-template/stable 257.7-1 amd64
  Template for signed systemd-boot-efi package (amd64)

systemd-boot-tools/stable,now 257.7-1 amd64 [installed,automatic]
  simple UEFI boot manager - tools

systemd-bootchart/stable 235-2 amd64
  boot performance graphing tool

I've still got the systemd-boot metapackage installed, even though it's not supposed to be according to the docs (I forgot to remove it), but my system survived a reboot just fine, and I'm not getting warnings from the migration tool.

What's going on?

EDIT:
@Johannes S , thanks for filing those bug reports. I'm completely confused about what the intended behavior in PVE 9/PBS 4 is supposed to be at this point. Of course, I'm also useless for testing: I just realized the /etc/modprobe.d/zfs.conf file is missing entirely from my PBS 4 install.

Not sure when or how that happened. It could have been before the upgrade from PBS 3.
 
Last edited:
I've still got the systemd-boot metapackage installed, even though it's not supposed to be according to the docs (I forgot to remove it), but my system survived a reboot just fine, and I'm not getting warnings from the migration tool.

What's going on?

Afaict, the patch is not applied yet.
 
Afaict, the patch is not applied yet.
Thanks, @Neobin ! It's a bit overwhelming keeping up with some of the little details. I probably should have waited another few days. :P

I assume a simple apt remove is enough? No strange flags necessary?
EDIT: Removed the package and survived a reboot. :)
 
Last edited:
I’ve seen this same discussion elsewhere for PVE also…if the ARC defaults changed it would be helpful to update the documentation.

Wanted to update this from my end of things, @Johannes S & @SteveITS .

I've (somehow) got no zfs.conf in my /etc/modprobe.d/ directory on my PBS 4 install (upgraded from PBS 3).
I'm not sure why, and don't necessarily think it's the upgrade's fault, but in any case, ZFS 2.3 defaults seem to be controlling.

After a backup that ran overnight, I'm seeing the expected ZFS 2.3 ARC behavior, with 95 percent of RAM in use. I never saw it using more than half my RAM in PBS 3, so this is a welcome change.
1754848789588.png
I'm still not used to looking at the in-GUI ZFS statistics, so here's htop's view of ZFS ARC.
1754849100493.png
 
  • Like
Reactions: Johannes S
Hi,
I ran through the instructions, but I'm getting odd output from the GUI. It could just be that the GUI is complaining that since I've updated the repos, there's no valid way to update PBS 3 anymore, but I wanted to double-check that I've done this right.

View attachment 89209
are you sure you had the latest version of the proxmox-widget-toolkit installed before the upgrade and reloaded the UI:
Code:
proxmox-widget-toolkit (4.3.13) bookworm; urgency=medium

  * apt repositoires: allow major upgrade.

 -- Proxmox Support Team <support@proxmox.com>  Mon, 04 Aug 2025 15:50:29 +0200
? Without this, it won't detect Trixie as allowed. You can check in /var/log/apt/history.log and the related rotated log files.
 
Hi,
(This is the PBS page. Typo: "pbs8to9." See also: "Then remove the previous Proxmox Backup Server 8 no-subscription repository from either the /etc/apt/sources.list, /etc/apt/sources-list.d/pbs-install-repo.list or any other .list file you may have added it to. Run apt update and apt policy again to be certain that the old repo has been removed.")
thanks for the report, typos have been fixed!
 
  • Like
Reactions: SInisterPisces
Hi,

thanks for the report, typos have been fixed!
You're most welcome.

The odd output I saw in the GUI fixed itself after I finished the upgrade per the instructions and rebooted the system. All is well now; no errors or warnings in the update GUI at all (aside from the usual warning about a lack of subscription).
 
Hi,

are you sure you had the latest version of the proxmox-widget-toolkit installed before the upgrade and reloaded the UI:
Code:
proxmox-widget-toolkit (4.3.13) bookworm; urgency=medium

  * apt repositoires: allow major upgrade.

 -- Proxmox Support Team <support@proxmox.com>  Mon, 04 Aug 2025 15:50:29 +0200
? Without this, it won't detect Trixie as allowed. You can check in /var/log/apt/history.log and the related rotated log files.

I thought I had upgraded PBS 3 until I was on the latest point release. Odd.

The pbs3to4 tool didn't warn me about anything before or during the install while I was switching the repos around.

Everything's working great now, though. :)
 
I need a bit of help with the upgrade. I'm following the directions at https://pbs.proxmox.com/wiki/Upgrade_from_3_to_4 . Specifically, I got a bit turned around on changing the repos over at https://pbs.proxmox.com/wiki/Upgrade_from_3_to_4#Update_the_Configured_APT_Repositories .

I ran through the instructions, but I'm getting odd output from the GUI. It could just be that the GUI is complaining that since I've updated the repos, there's no valid way to update PBS 3 anymore, but I wanted to double-check that I've done this right.

View attachment 89209I'm using the no-subscription repos.

Here's what I've already done, per the Wiki.
I changed over all the repos to Trixie with this command:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

After that, I added the new enterprise repo, just so it would be there if I ever get a support subscription.
Bash:
cat > /etc/apt/sources.list.d/pbs-enterprise.sources << EOF
Types: deb
URIs: https://enterprise.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

At this point, apt update failed out with an error because I was unauthorized to access the enterprise repos, not having a subscription, so I deactivated the enterprise repo in the GUI.

I then added the no-subscription repo:
Bash:
cat > /etc/apt/sources.list.d/proxmox.sources << EOF
Types: deb
URIs: http://download.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

So, now, I think I'm there. Here's what my 3 source files look like:
Bash:
root@andromeda0:/etc/apt# batcat sources.list
───────┬───────────────────────────────────
       │ File: sources.list
───────┼───────────────────────────────────
   1   │ deb http://ftp.us.debian.org/debian trixie main contrib non-free-firmware
   2   │
   3   │ deb http://ftp.us.debian.org/debian trixie-updates main contrib non-free-firmware
   4   │
   5   │ # security updates
   6   │ deb http://security.debian.org trixie-security main contrib non-free-firmware
───────┴───────────────────────────────

root@andromeda0:/etc/apt/sources.list.d# batcat pbs-enterprise.sources
───────┬───────────────────────────
       │ File: pbs-enterprise.sources
───────┼───────────────────────────
   1   │ Types: deb
   2   │ URIs: https://enterprise.proxmox.com/debian/pbs
   3   │ Suites: trixie
   4   │ Components: pbs-enterprise
   5   │ Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
   6   │ Enabled: false
   7   │
───────┴───────────────────────────

root@andromeda0:/etc/apt/sources.list.d# batcat proxmox.sources
───────┬───────────────────────────
       │ File: proxmox.sources
───────┼───────────────────────────
   1   │ Types: deb
   2   │ URIs: http://download.proxmox.com/debian/pbs
   3   │ Suites: trixie
   4   │ Components: pbs-no-subscription
   5   │ Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
───────┴──────────────────────────

The apt policy looks correct:
Bash:
root@andromeda0:/etc/apt/sources.list.d# apt policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://download.proxmox.com/debian/pbs trixie/pbs-no-subscription amd64 Packages
     release o=Proxmox,a=stable,n=trixie,l=Proxmox Backup System Debian Repository,c=pbs-no-subscription,b=amd64
     origin download.proxmox.com
 500 http://security.debian.org trixie-security/main amd64 Packages
     release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=main,b=amd64
     origin security.debian.org
 500 http://ftp.us.debian.org/debian trixie-updates/main amd64 Packages
     release v=13-updates,o=Debian,a=stable-updates,n=trixie-updates,l=Debian,c=main,b=amd64
     origin ftp.us.debian.org
 500 http://ftp.us.debian.org/debian trixie/non-free-firmware amd64 Packages
     release v=13.0,o=Debian,a=stable,n=trixie,l=Debian,c=non-free-firmware,b=amd64
     origin ftp.us.debian.org
 500 http://ftp.us.debian.org/debian trixie/contrib amd64 Packages
     release v=13.0,o=Debian,a=stable,n=trixie,l=Debian,c=contrib,b=amd64
     origin ftp.us.debian.org
 500 http://ftp.us.debian.org/debian trixie/main amd64 Packages
     release v=13.0,o=Debian,a=stable,n=trixie,l=Debian,c=main,b=amd64
     origin ftp.us.debian.org

And apt update wants to grab about 330+ new packages. So, I think I've configured everything, but that warning in the GUI is still a concern.

pve3to4 seems to be happy.
Bash:
root@andromeda0:~# pbs3to4 --full
= CHECKING VERSION INFORMATION FOR PBS PACKAGES =

INFO: Checking for package updates..
WARN: updates for the following packages are available:
      dpkg, reportbug, cifs-utils, tcpdump, dmidecode, libwrap0, libkeyutils1, libxtables12, dmeventd, initramfs-tools-core, mokutil, libsmartcols1, debconf-i18n, console-setup, zstd, libpam-runtime, udev, coreutils, krb5-locales, hdparm, bind9-host, libffi8, pciutils, libnftnl11, libgssapi-krb5-2, proxmox-default-kernel, netbase, readline-common, libnghttp2-14, open-iscsi, openssh-client, dosfstools, iputils-ping, libaudit-common, fdutils, proxmox-widget-toolkit, libnl-3-200, libnl-genl-3-200, apt, bat, xkb-data, libnftables1, ssl-cert, libsensors-config, libacl1, gpg, perl, libtinfo6, libtirpc-common, tzdata, zfs-zed, libunwind8, bridge-utils, libldb2, libmagic-mgc, kbd, libidn2-0, libtasn1-6, python3-minimal, chrony, libpam-systemd, busybox, liblzo2-2, nmap-common, zfs-initramfs, libselinux1, liblzma5, sed, ssh, libnvpair3linux, tar, proxmox-mail-forward, ucf, libavahi-common-data, sg3-utils, libcap2-bin, tasksel-data, whiptail, base-passwd, libsasl2-modules, libsasl2-2, libexpat1, grub-pc-bin, libp11-kit0, procmail, python3-reportbug, libblas3, libqrencode4, patch, python3-debianbts, libfido2-1, kmod, libuutil3linux, tasksel, dbus-daemon, libjansson4, liblua5.3-0, librtmp1, debconf, vim-common, liblvm2cmd2.03, libproc2-0, libip4tc2, libsystemd0, libfreetype6, pci.ids, libmount1, nfs-common, file, bzip2, python3-requests, libpipeline1, libnss-systemd, debianutils, libpopt0, liblockfile-bin, logrotate, libapparmor1, libwbclient0, proxmox-grub, xfsprogs, pbs-i18n, python3-httplib2, python3, openssh-server, libdbus-1-3, python3-urllib3, runit-helper, dbus-bin, gnupg, libsasl2-modules-db, gpg-wks-server, libkrb5support0, libsepol2, netcat-traditional, python3-pyparsing, libbpf1, libmnl0, libxml2, xz-utils, libzstd1, util-linux, libbsd0, less, python-apt-common, util-linux-extra, psmisc, wamerican, systemd, libudev1, gpg-agent, console-setup-linux, libgpg-error0, wget, isc-dhcp-common, proxmox-backup, liblocale-gettext-perl, fdisk, lua-lpeg, debian-archive-keyring, libcom-err2, python3-pycurl, gettext-base, libmaxminddb0, diffutils, strace, sensible-utils, python3-pkg-resources, qrencode, grub-efi-amd64, libfdisk1, gdisk, eject, usbutils, lsof, libcap2, systemd-boot-efi, lvm2, libc6, locales, powermgmt-base, klibc-utils, libuchardet0, lynx, libkrb5-3, usrmerge, libpam-modules, libprotobuf-c1, ifupdown2, manpages, linux-base, libusb-1.0-0, libuuid1, man-db, gpgv, libtext-charwidth-perl, bash, traceroute, libgcrypt20, isc-dhcp-client, mailcap, grep, media-types, libproxmox-acme-plugins, mawk, libfile-find-rule-perl, inetutils-telnet, libcap-ng0, libklibc, vim-tiny, libsemanage2, bind9-dnsutils, proxmox-offline-mirror-helper, debian-faq, libnsl2, base-files, libk5crypto3, grub-efi-amd64-signed, ncurses-base, gzip, proxmox-archive-keyring, keyutils, libtdb1, python3-apt, dmsetup, login, rpcbind, python3-certifi, libsqlite3-0, hostname, libjemalloc2, pinentry-curses, libjson-c5, libopeniscsiusr, gpgsm, proxmox-backup-client, btop, libdevmapper-event1.02.1, dbus-session-bus-common, libcryptsetup12, systemd-boot, adduser, findutils, libgmp10, distro-info-data, libxxhash0, libpcre2-8-0, libcrypt1, libavahi-common3, ca-certificates, libpam-modules-bin, init-system-helpers, grub-efi-amd64-bin, grub2-common, libsemanage-common, proxmox-mini-journalreader, smartmontools, libseccomp2, smbclient, python3-six, procps, libpython3-stdlib, bash-completion, mount, perl-base, openssh-sftp-server, libpam0g, nano, libc-l10n, btrfs-progs, lynx-common, libbrotli1, grub-common, htop, bind9-libs, cron-daemon-common, apt-listchanges, samba-libs, libsensors5, liblmdb0, libc-bin, libsystemd-shared, keyboard-configuration, libattr1, efibootmgr, libaudit1, libkmod2, initramfs-tools, bsd-mailx, nmap, cpio, dirmngr, bc, libksba8, libtext-iconv-perl, libhttp-parser2.9, systemd-sysv, samba-common, cron, apt-utils, python3-idna, lm-sensors, gnupg-utils, memtest86+, libblkid1, python3-chardet, curl, libslang2, libargon2-1, sysvinit-utils, python3-debconf, logsave, gnupg-l10n, python3-setuptools, gpg-wks-client, liblz4-1, libpci3, libncursesw6, ncurses-bin, libbz2-1.0, libinih1, zlib1g, ethtool, python3-charset-normalizer, gcc-12-base, liblockfile1, init, groff-base, libmd0, dbus-system-bus-common, shim-signed, libnfsidmap1, ncurses-term, proxmox-backup-docs, dash, libtalloc2, dbus, libedit2, bsdutils, iproute2, proxmox-backup-server, libavahi-client3, gpgconf, liblinear4, libdevmapper1.02.1, proxmox-kernel-helper, libfstrm0, libss2, libnewt0.52, shim-signed-common, intel-microcode, bsdextrautils, libstdc++6, zfsutils-linux, python3-systemd, libdebconfclient0, postfix, openssl, python3-debian, e2fsprogs, proxmox-offline-mirror-docs, proxmox-termproxy, passwd, nftables, libgcc-s1, libpcap0.8t64, libarchive13t64, liburcu8t64, libevent-core-2.1-7t64, liblua5.4-0, initscripts, libicu76, dracut-install, libgdbm6t64, libsmbclient0, libzfs6linux, libcbor0.10, python3-inflect, gcc-14-base, libgnutls30t64, libreiserfscore0t64, libunistring5, libnettle8t64, libtevent0t64, libldap2, libcurl4t64, cdebconf, python3-jaraco.functools, python3-typing-extensions, login.defs, libsgutils2-1.48, perl-modules-5.40, libisns0t64, libreadline8t64, python3-typeguard, python3-jaraco.text, libssh2-1t64, liblsof0, libwtmpdb0, systemd-standalone-sysusers, grub-efi-ia32, bsdmainutils, libtlsrpt0, libefiboot1t64, libmagic1t64, libuv1t64, python3-zipp, libapt-pkg7.0, python3-more-itertools, python3-autocommand, libpsl5t64, python3.13, libassuan9, anacron, libpng16-16t64, lsb-base, libzpool6linux, grub-efi-amd64-unsigned, initramfs-tools-bin, libdb5.3t64, libext2fs2t64, python3-jaraco.context, libgit2-1.9, libperl5.40, libtirpc3t64, libaio1t64, libefivar1t64, busybox-static, libelf1t64, sqv, libnpth0t64, libcurl3t64-gnutls, proxmox-kernel-6.14, libhogweed6t64, libssl3t64, systemd-boot-tools, libpython3.13-stdlib, python3-importlib-metadata, libfuse3-4, python3-dbus
INFO: Checking proxmox backup server package version..
PASS: 'proxmox-backup' has version >= 3.4.0
INFO: Check running kernel version..
PASS: running kernel '6.8.12-13-pve' is considered suitable for upgrade.

= MISCELLANEOUS CHECKS =

INFO: Checking PBS daemon services..
PASS: systemd unit 'proxmox-backup.service' is in state 'active'
PASS: systemd unit 'proxmox-backup-proxy.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit
INFO: Checking for package repository suite mismatches..
PASS: found no suite mismatch
INFO: Checking bootloader configuration...
SKIP: not yet upgraded, no need to check the presence of systemd-boot
SKIP: could not get dkms status

= SUMMARY =

TOTAL:     9
PASSED:    6
SKIPPED:   2
NOTICE:    0
WARNINGS:  1

ATTENTION: Please check the output for detailed information!

Thoughts? Am I good to go?

EDIT: That worked. :) A couple of oddities. See next post.
I didn't read through all of this, but the oddity I had updating had to do with the enterprise repo kicking in for some reason and the disconnect from terminal, which stopped the update packages. I had to rem out the enterprise repos then update again and it worked. If I left the enterprise repos enabled, PBS wouldn't update, lol.
 
I didn't read through all of this, but the oddity I had updating had to do with the enterprise repo kicking in for some reason and the disconnect from terminal, which stopped the update packages. I had to rem out the enterprise repos then update again and it worked. If I left the enterprise repos enabled, PBS wouldn't update, lol.
I did actually mention the enterprise repos in my longwinded post there. ;)

I disabled the enterprise repo in the GUI (on the repository page) before I started doing the update process, but didn't mention that explicitly. (You can see the "disabled" tag in my config files.)

I'd recommend doing that before starting the process if you don't have a subscription just to make things simpler.

I still converted the enterprise repo config over to the new deb822 format, just so it would be in the format PBS expects. The old format might break in the future.