[SOLVED] PBS Backuprestore schlägt fehl: ACL invalid

fifty

New Member
Oct 5, 2024
6
1
3
Hallo,

ich versuche derzeit ein Backup eines Containers auf dem gleichen Host wieder einzuspielen, auf dem es auch erstellt wurde. Leider schlägt dies fehl:

Code:
recovering backed-up configuration from 'roman:backup/ct/102/2024-09-30T00:16:20Z'
Using encryption key from file descriptor..
Fingerprint: ea:19:7b:48:f2:b3:a5:27
Creating filesystem with 131072000 4k blocks and 32768000 inodes
Filesystem UUID: f8fd12b8-0e4c-4cab-812c-e170a95438da
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: c7d6f1df-117d-467d-9f8c-7d33b5383b5a
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376
restoring 'roman:backup/ct/102/2024-09-30T00:16:20Z' now..
Using encryption key from file descriptor..
Fingerprint: ea:19:7b:48:f2:b3:a5:27
Error: error extracting archive - encountered unexpected error during extraction: error at entry "system.journal": failed to extract file: failed to apply acls: Error while restoring ACL - ACL invalid
TASK ERROR: unable to restore CT 102 - command 'lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- /usr/bin/proxmox-backup-client restore '--crypt-mode=encrypt' '--keyfd=13' ct/102/2024-09-30T00:16:20Z root.pxar /var/lib/lxc/102/rootfs --allow-existing-dirs --repository root@pam@my.pbs.domain:main' failed: exit code 255

Der Container existiert auf dem Proxmox Host nicht mehr und würde durch das Backup neu angelegt werden. Der Container war zuvor unprivileged und soll es auch nach dem Restore bleiben, beim Restore habe ich bei "Privilege Level" "From Backup" ausgewählt.
Der Container lief zuvor auf einer ZFS storage, Restore auf eben jene als auch auf eine BTRFS Storage schlägt mit der gleichen Meldung fehl.

Ich verwende Proxmox VE 8.2.4 mit proxmox-backup-client version 3.2.4 und PBS 3.2-7.

Durch googlen habe ich herausgefunden, dass ich nicht der Einzige mit dem Problem bin, doch leider hat bisher niemand eine Lösung für das Problem gefunden:
- https://www.reddit.com/r/Proxmox/comments/1bh2z17/lxc_restore_from_pbs/
- https://forum.proxmox.com/threads/unable-to-restore-lxc-backup-acl-invalid.119324/ (hier wurde das Problem durch Entfernen der ACL umgangen, dies ist für mich allerdings keine Option, da der Container nur noch als Backup existiert und ich daher keine neuen Backups ohne die problematischen ACL anlegen kann)
- https://forum.proxmox.com/threads/failed-to-apply-acls.86885/ (hier hat ein update des proxmox-backup-client das Problem gelöst, ich nutze allerdings bereits die neuste version)
- https://forum.proxmox.com/threads/restore-dump-nicht-möglich.103565/ (Hier ein ähnliches Problem, allerdings mit gewöhnlichen tar backups statt PBS. Ein Fix soll hier in tar 1.35 enthalten sein. Habe ich installiert, macht keinen unterschied. Es scheint so als würde proxmox-backup-client tar ohnehin nicht verwenden.)

Im letzten dieser Posts werden die ACL der problematischen Datei mit folgendem tar Befehl untersucht:
Code:
tar -t -vv --acls -f path/to/archive.tar path/to/file

Also habe ich mir das Verzeichnis /var/log/journal/30e67dbb3d304b198d2c59c137e73a13, welches die Datei system.journal enthält, via das Proxmox VE Webinterface als .tar.zst heruntergeladen und mir mit obigem Befehl die ACL der Datei angesehen:

Code:
$ tar -t -vv --acls -f Downloads/30e67dbb3d304b198d2c59c137e73a13.tar.zst 30e67dbb3d304b198d2c59c137e73a13/system.journal
-rw-r-----  0/984      33554432 2024-09-30 02:16 30e67dbb3d304b198d2c59c137e73a13/system.journal

ACLs sind hier keine vorhanden, es ist allerdings möglich, dass die ACLs während dem On-the-fly-archivieren als .tar.zst gestripped werden. Auch wenn GIDs keine ACLs sind, habe ich die Gruppe 984 mal auf dem Proxmox VE Host angelegt, wie es im letzten verlinkten Post für ACLs als Workaround empfohlen wird. Ich gehe nicht davon aus, dass es einen Unterschied macht, habe den Restore aber nun mal wieder gestartet. Restore braucht 8h bis er failed, irgendwas muss man ja probieren.

Statt einer root.pxar wie bei tar backups gibt es beim PBS nur eine root.pxar.didx, welche lediglich den Chunk Index enthält. Daher sehe ich derzeit keine Möglichkeit das Backup einfach zu mounten um die ACLs zu untersuchen. Gibt es eine Möglichkeit, dies zu tun?
Nevermind, der proxmox-backup-client kann das! Also grad mal das Backup gemounted und die ACL angesehen:
Code:
$ mkdir temp
$ proxmox-backup-client mount ct/102/2024-09-30T00:16:20Z root.pxar temp --repository root@pam@my.pbs.domain:main --keyfile /etc/pve/priv/storage/roman.enc
Password for "root@pam":
Encryption key file: '"/etc/pve/priv/storage/roman.enc"'
Encryption key fingerprint: 'ea:19:7b:48:f2:b3:a5:27'
storing login ticket failed: $XDG_RUNTIME_DIR must be set
FUSE library version: 3.14.0
$ getfacl temp/var/log/journal/30e67dbb3d304b198d2c59c137e73a13/system.journal
# file: temp/var/log/journal/30e67dbb3d304b198d2c59c137e73a13/system.journal
# owner: root
# group: restore-temp
user::rw-
group::r--
other::---

(restore-temp ist die Gruppe, die ich für GID 984 testweise auf dem Host angelegt habe)
Abgesehen davon scheinen auch hier keine besonderen ACL vorhanden zu sein.

Nun weiß ich wirklich nicht weiter. Hat jemand noch eine Idee? Für jede Hilfe bin ich sehr dankbar! Derzeit sitze ich auf 18 Backups, die allesamt nutzlos sind :'D

EDIT: Wie erwartet hat das Erstellen einer Gruppe mit GID 984 auf dem Host keinen Unterschied gemacht, Restore ist trotzdem wieder fehlgeschlagen. Ich habe Restore zwischenzeitlich auch mit einem kleineren Container getestet, dessen Restore keine 8h dauert. Auch dieser schlägt mit dem gleichen Fehler fehl, also können wir nun immerhin schneller testen.
 
Last edited:
Moin,

da ich ebenfalls involviert bin, kann ich verkünden, dass es mit proxmox-backup-client Version 3.2.7-1 ebenfalls nicht funktioniert.

LG
 
  • Like
Reactions: fifty
weder file restore noch fuse mount unterstuetzen derzeit ACLs ;) mit der catalog shell sollte ein selective restore aber moeglich sein (oder vielleicht mehr details liefern).

ist der ZFS storage noch der gleiche wie der auf dem der container urspruenglich lag? ZFS unterstuetzt naemlich verschiedene ACL modi, eventuell liegt da der hund begraben..
 
Hey Fabian,

danke für deine Antwort. Die ZFS storage ist noch genau die gleiche, am gesamten Server hat sich nichts geändert. Wir haben lediglich einen Container gebackupt und möchten dieses Backup nun wieder einspielen. Der Container, der gebackupt wurde, ist auf dem Host nicht mehr vorhanden, wir möchten ihn also gerne vollständig neu wiederherstellen. Wir haben dies zwischenzeitlich auch mit anderen Container getestet, keines unserer Container Backups lässt sich wiederherstellen.

Danke für den Hinweis mit der Catalog Shell, wir haben sie gerade mal ausprobiert! Zuerst haben wir stat auf die problematische Datei ausgeführt, besondere ACL werden hier allerdings auch nicht angezeigt:
Code:
pxar:/ > stat /var/log/journal//30e67dbb3d304b198d2c59c137e73a13/system.journal
  File: /var/log/journal/30e67dbb3d304b198d2c59c137e73a13/system.journal
  Size: 33554432      Type: file
Access: (640/-rw-r-----++)  Uid: 0     Gid: 984  
Modify: 2024-09-30 00:16:15

Anschließend haben wir versucht lediglich diese Datei wiederherzustellen:
Code:
pxar:/ > select /var/log/journal/30e67dbb3d304b198d2c59c137e73a13/system.journal
added path: "/var/log/journal/30e67dbb3d304b198d2c59c137e73a13/system.journal"
pxar:/ > restore-selected /root/temp
Error: failed to apply acls

Caused by:
    Error while restoring ACL - ACL invalid

Die Datei wird allerdings trotz des Fehlers wiederhergestellt, anscheinend schlägt nur das Übernehmen der ACL fehl.
Code:
$ getfacl system.journal  
# file: system.journal
# owner: root
# group: 984
user::rw-
group::---
other::---

Also haben wir uns mal innerhalb eines laufenden Containers die ACL der Datei angesehen:
Code:
sh-5.2# getfacl system.journal  
# file: system.journal
# owner: root
# group: systemd-journal
user::rw-
group::r-x                      #effective:r--
group:wheel:r-x                 #effective:r--
group:wheel:r--
group:adm:r--
mask::r--
other::---

Die Storage ist also mit den ACL kompatibel (die Container laufen ja schließlich darauf), trotzdem schlägt das Wiederherstellen der ACL fehl. Hast du eine Idee wie wir das Problem weiter debuggen können?
 
https://git.proxmox.com/?p=pxar.git;a=summary

da gibts ein beispiel binary mit dem sich das eventuell auslesen lest

Code:
$ git clone ..
$ cd pxar
# apt build-dep .
$ cargo build --release --examples
..
$ ./target/release/examples/pxarcmd ls /tmp/foobar.pxar /test
Metadata { stat: Stat { mode: 33188, flags: 0, uid: 1000, gid: 1000, mtime: StatxTimestamp { secs: 1728299400, nanos: 330599737, _zero: 0 } }, xattrs: [], acl: Acl { users: [], groups: [], group_obj: None, default: None, default_users: [], default_groups: [] }, fcaps: None, quota_project_id: None }

braucht das "devel" repository konfiguriert, und das pxar archive als datei (also z.b. durch runterladen ueber die web UI, oder am PBS server mit proxmox-backup-debug)

falls das ganze mit einem frisch initialisierten container reproduzierbar ist waere das natuerlich auch eine option (das .pxar file zugaenglich zu machen).
 
Hey,

danke für deine Hilfe! Den Hinweis mit dem "devel" repository habe ich leider gerade erst gesehen, bin daher bei apt build-dep gescheitert.

Ich habe jedoch herausgefunden wo das Problem mit den ACLs liegt: Bei unserer system.journal sind doppelte ACL-Einträge vorhanden. Diese sind sogar bereits in meinem letzten Post sichtbar, dort sind für die Gruppe wheel zwei Einträge präsent, einmal nur read und einmal read+execute:

Code:
group:wheel:r-x                 #effective:r--
group:wheel:r--

Beim backupen ist das wohl kein Problem, restoren lässt sich das aber leider nicht. Ich habe keine Ahnung wie diese Duplikate entstehen, könnte ein systemd bug sein. Einen Weg, diese Duplikate mit setfacl selbst anzulegen, habe ich leider nicht gefunden, setfacl modifiziert immer bereits vorhandene Einträge. Jedoch hat das Dateisystem damit keine Problem, daher sollte es meiner Meinung nach auch von Proxmox unterstützt werden.

Zum einfachen Reproduzieren habe ich die system.journal kopiert, geleert und unter dem Namen duplicate-acl-entry alleine in eine .pxar gepackt. Das diesem Post angehängte .pxar repräsentiert somit also keinen gültigen Container, reicht aber aus um das Problem beim Proxmox Restore zu reproduzieren. Da das Forum keine pxar-Dateien erlaubt, habe ich es ZIP-komprimiert.
 

Attachments

  • root.pxar.zip
    455 bytes · Views: 3
perfekt, danke!
 
rein interesse halber - welche distro in welcher version (bzw mit welcher systemd version) habt ihr in den containern laufen?
 
rein interesse halber - welche distro in welcher version (bzw mit welcher systemd version) habt ihr in den containern laufen?
Wir haben 9 Arch Linux Container, habe gerade mal alle geprüft, 3 davon haben doppelte ACL-Einträge, der Rest nicht. In den betroffenen Containern haben wir folgende systemd versionen:

Code:
256.5-1-arch
256.6-1-arch
(dritte version unbekannt, da noch nicht restored)

In den nicht betroffenen Containern haben wir folgende Versionen:

Code:
256.6-1-arch
256.1-1-arch-g34ba18b^
256.1-1-arch-g34ba18b^
256.1-1-arch-g34ba18b^
256.1-1-arch-g34ba18b^
256.1-1-arch-g34ba18b^

Da systemd 256.6-1-arch in einem Container das Problem hat, in einem anderen aber nicht, liegt die Vermutung nahe, dass die doppelten ACL-Einträge irgendwann im Lebenszyklus der Container entstanden sind. Das macht es sehr schwer die Ursache zu bestimmen.




Cool, danke! Werden wir mal testen und berichten!
 
@fabian Wir versuchen gerade die notwendigen Abhängigkeiten des proxmox-backup repositories zu installieren um anschließend den pbs-client mit deinem Patch zu compilen. Derzeit scheitern wir leider daran, hast du vielleicht eine Idee?

Code:
root@pve ~/proxmox-backup (master)# apt build-dep .
Note, using directory '.' to get the build dependencies
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
                                                                  
The following packages have unmet dependencies:
 builddeps:. : Depends: librust-proxmox-acme-0.5+default-dev (>= 0.5.3-~~)
               Depends: librust-proxmox-apt-0.11+cache-dev
               Depends: librust-proxmox-apt-0.11+default-dev
               Depends: librust-proxmox-apt-api-types-1+default-dev (>= 1.0.1-~~)
               Depends: librust-proxmox-auth-api-0.4+api-dev
               Depends: librust-proxmox-auth-api-0.4+api-types-dev
               Depends: librust-proxmox-auth-api-0.4+pam-authenticator-dev
               Depends: librust-proxmox-config-digest-0.1+default-dev
               Depends: librust-proxmox-notify-0.4+default-dev
               Depends: librust-proxmox-notify-0.4+pbs-context-dev
               Depends: librust-proxmox-rrd-api-types-1+default-dev (>= 1.0.2-~~)

Wir haben es bereits mit dem 3.2.7er Tag probiert, hier sind allerdings noch mehr Abhängigkeiten nicht auflösbar. Das devel Repository für bookworm haben wir diesmal konfiguriert.


EDIT: Wir haben mal in die README geschaut und es mal mit mk-build-deps -ir versucht. Klappt leider auch nicht :/

Code:
The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!
Selecting previously unselected package rust-proxmox-backup-build-deps.
(Reading database ... 122808 files and directories currently installed.)
Preparing to unpack rust-proxmox-backup-build-deps_3.2.7-1_all.deb ...
Unpacking rust-proxmox-backup-build-deps (3.2.7-1) ...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies...Starting pkgProblemResolver with broken count: 1
Starting 2 pkgProblemResolver with broken count: 1
Investigating (0) rust-proxmox-backup-build-deps:amd64 < 3.2.7-1 @iU K Nb Ib >
Broken rust-proxmox-backup-build-deps:amd64 Depends on librust-proxmox-acme-0.5+default-dev:amd64 < none @un H > (>= 0.5.3-~~)
  Removing rust-proxmox-backup-build-deps:amd64 because I can't find librust-proxmox-acme-0.5+default-dev:amd64
Done
 Done
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following additional packages will be installed:
  librust-compiler-builtins+rustc-dep-of-std-dev
The following packages will be REMOVED:
  rust-proxmox-backup-build-deps
The following NEW packages will be installed:
  librust-compiler-builtins+rustc-dep-of-std-dev
0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 1,284 B of archives.
After this operation, 1,024 B disk space will be freed.
Do you want to continue? [Y/n]  
Get:1 https://mirror.hetzner.com/debian/packages bookworm/main amd64 librust-compiler-builtins+rustc-dep-of-std-dev amd64 0.1.70-1 [1,284 B]
Fetched 1,284 B in 0s (8,067 B/s)                                          
(Reading database ... 122809 files and directories currently installed.)
Removing rust-proxmox-backup-build-deps (3.2.7-1) ...
Selecting previously unselected package librust-compiler-builtins+rustc-dep-of-std-dev:amd64.
(Reading database ... 122808 files and directories currently installed.)
Preparing to unpack .../librust-compiler-builtins+rustc-dep-of-std-dev_0.1.70-1_amd64.deb ...
Unpacking librust-compiler-builtins+rustc-dep-of-std-dev:amd64 (0.1.70-1) ...
Setting up librust-compiler-builtins+rustc-dep-of-std-dev:amd64 (0.1.70-1) ...
mk-build-deps: Unable to install rust-proxmox-backup-build-deps at /usr/bin/mk-build-deps line 459.
mk-build-deps: Unable to install all build-dep packages
 
Last edited:
sollte jetzt bzw in kuerze gehen!
 
Yep, danke! Wir konnten die patches anwenden und den pbs-client erfolgreich compilen. Ungültige ACLs werden nun erfolgreich restored:

Code:
Warning: "/var/log/journal/d6c66bb9848048a08195f1c442a4f566/system.journal" - ACL invalid, attempting restore anyway..    
Warning: "/var/log/journal/d6c66bb9848048a08195f1c442a4f566/system@00061d8e7c16dc51-83ae310c5899ca31.journal~" - ACL invalid, attempting restore anyway..    
Warning: "/var/log/journal/d6c66bb9848048a08195f1c442a4f566/system@1af0a833981e433b95d960e44e7de1e3-000000000007372b-0006175b0bd664b3.journal" - ACL invalid, attempting restore anyway..    
Warning: "/var/log/journal/d6c66bb9848048a08195f1c442a4f566/system@1af0a833981e433b95d960e44e7de1e3-0000000000073791-0006175b0bdedd43.journal" - ACL invalid, attempting restore anyway..    
Warning: "/var/log/journal/d6c66bb9848048a08195f1c442a4f566/system@3063e76cec4049d6b2ee134eefae8742-0000000000054a0f-00060f3cf8238dda.journal" - ACL invalid, attempting restore anyway..    
[...]

Ich markiere den Thread mal als solved und hoffe, das deine pbs-client patches in den nächsten Release aufgenommen werden! :D
Danke nochmals für die nette Hilfe!
 
  • Like
Reactions: fabian

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!