LXC unprivilegierte Container - Backup+Clone geht nicht mehr

tony blue

Well-Known Member
Dec 26, 2017
81
2
48
52
Hallo,

ich betreibe seit 2 Jahren einen Proxmox-Server (ZFS-Dateisystem). Seit dem Upgrade von Proxmox 5 auf Proxmox 6 (das meine ich zumindest) funktioniert bei unprivilegierten Containern weder

* ein Backup auf eine per NFS eingebundene Freigabe noch

Alle privilegierten LXC Container und VM kann ich ohne Probleme auf die NFS-Freigabe wegsichern. Beim Backup von unprivilegierten LXC-Contrainern erhalte ich folgende Fehlermeldung im Log:

INFO: starting new backup job: vzdump 115 --compress lzo --remove 0 --node virtualhost --storage backupserver_virtualhost --mode snapshot
INFO: Starting Backup of VM 115 (lxc)
INFO: Backup started at 2020-03-01 16:11:44
INFO: status = stopped
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: CT Name: ubuntu-18.04-lts-plain-wlan-unprivileged
INFO: creating archive '/mnt/pve/backupserver_virtualhost/dump/vzdump-lxc-115-2020_03_01-16_11_44.tar.lzo'
INFO: tar: /mnt/pve/backupserver_virtualhost/dump/vzdump-lxc-115-2020_03_01-16_11_44.tmp: Cannot open: Permission denied
INFO: tar: Error is not recoverable: exiting now
ERROR: Backup of VM 115 failed - command 'set -o pipefail && lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- tar cpf - --totals --one-file-system -p --sparse --numeric-owner --acls --xattrs '--xattrs-include=user.*' '--xattrs-include=security.capability' '--warning=no-file-ignored' '--warning=no-xattr-write' --one-file-system '--warning=no-file-ignored' '--directory=/mnt/pve/backupserver_virtualhost/dump/vzdump-lxc-115-2020_03_01-16_11_44.tmp' ./etc/vzdump/pct.conf ./etc/vzdump/pct.fw '--directory=/mnt/vzsnap0' --no-anchored '--exclude=lost+found' --anchored '--exclude=./tmp/?*' '--exclude=./var/tmp/?*' '--exclude=./var/run/?*.pid' ./ | lzop >/mnt/pve/backupserver_virtualhost/dump/vzdump-lxc-115-2020_03_01-16_11_44.tar.dat' failed: exit code 2
INFO: Failed at 2020-03-01 16:11:45
INFO: Backup job finished with errors
TASK ERROR: job errors

Die Fehlermeldung "Cannot open: Permission denied" verstehe ich nicht. Auf dem Backup-Verzeichnis /mnt/pve/backupserver_virtualhost/dump/ kann ich als "root" Dateien anlegen und auch wieder löschen. Wird das Backup nicht als User "root" ausgeführt?

Wenn ich wie hier vorgeschlagen die Variable tmpdir setze funktioniert es.

Code:
/etc/vzdump.conf
# vzdump default settings
    #tmpdir: DIR
    tmpdir: /tmp


* ein clonen des Containers noch

Der Clone-Vorgang startet, bleibt jedoch stehen bzw. friert ein.

create full clone of mountpoint rootfs (local-zfs:subvol-115-disk-0)


Number of files: 21,523 (reg: 16,153, dir: 2,087, link: 3,253, special: 30)
Number of created files: 21,522 (reg: 16,153, dir: 2,086, link: 3,253, special: 30)
Number of deleted files: 0
Number of regular files transferred: 16,134
Total file size: 1,135,382,415 bytes
Total transferred file size: 922,796,969 bytes
Literal data: 922,796,969 bytes
Matched data: 0 bytes
File list size: 917,464
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 924,316,811
Total bytes received: 328,783

sent 924,316,811 bytes received 328,783 bytes 43,006,771.81 bytes/sec
total size is 1,135,382,415 speedup is 1.23
Cannot stat file /proc/13832/fd/12: Transport endpoint is not connected
Cannot stat file /proc/13832/fd/14: Transport endpoint is not connected

* läuft in unpvivilegierten LXC Containern kein docker mehr

Ich hatte Docker in einem LXC Contrainer lauffähig installiert. Nun erhalte ich beim Start diese Fehlermeldung im LXC Container

root@printserverwlan:~# /etc/init.d/docker restart
[....] Restarting docker (via systemctl): docker.serviceJob for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
failed!
root@printserverwlan:~# journalctl -xe
Abgebrochen
root@printserverwlan:~# systemctl status docker.service
Assertion 'p > 0' failed at ../src/journal/journal-file.c:2482, function test_object_offset(). Aborting.
Abgebrochen

Es sieht für mich so aus, als ob sich irgenwo Benutzerrechte geändert haben.

Ich freue mich über jede Hilfe.


Vielen Dank!


Tony



Leider finde ich nirgendwo eine Information, was zu tun wäre.

Ich freue mich über jede Hilfe.


Tony
 
Vielen Dank für den Hinweis.

Leider löst das noch nicht mein Problem vollständig. Leider geht das Clonen und auch das Starten von Docker im LXC damit auch nicht.

Hat vielleicht noch jeman einen Tipp für mich?

Tony
 
Kann mir vorstellen das Docker erweiterte Rechte und somit eher einen privilegierten LXC Container benötigt.
Frage: Wieso Docker wenn Du doch schon LXC verwendest?
 
Die Fehlermeldung "Cannot open: Permission denied" verstehe ich nicht. Auf dem Backup-Verzeichnis /mnt/pve/backupserver_virtualhost/dump/ kann ich als "root" Dateien anlegen und auch wieder löschen. Wird das Backup nicht als User "root" ausgeführt?

das backup von unpriviligierten containern wird im context von unpriv uid/gid des containers ausgefuehrt, d.h. diese uid/gid muss schreibrechte auf dem ordner besitzen.
 
Hallo Oguz,

Ich glaube das Backup Thema war geklärt. Der Threadersteller wollte noch wissen wieso sein Docker nicht mehr läuft.

Grüße
 
Der Threadersteller wollte noch wissen wieso sein Docker nicht mehr läuft.

docker kann man in LXC genau dann benutzen, wenn man das 'Nesting' aktiviert.

diese kann man in 'Options' menu von CT aktivieren

edit: auf jeden fall ist es aber besser, wenn man einfach eine VM fuer docker benutzt
 
  • Like
Reactions: CoolTux
Hallo Oguz,

vielen Dank für die Rückmeldung.

Im LXC Container ist keyctl und nesting aktiviert. FUSE (sowie NVS + CIFS weil nicht privilegiert) ist nicht aktiviert. Trotzdem startet Docker nicht.

/etc/init.d/docker restart
[....] Restarting docker (via systemctl): docker.serviceJob for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
failed!
root@printserverwlan:~# systemctl status docker.service
Assertion 'p > 0' failed at ../src/journal/journal-file.c:2482, function test_object_offset(). Aborting.
Aborted
root@printserverwlan:~# journalctl -xe
Aborted

Woran könnte denn das liegen?

Vielen Dank!

tony
 
Hi @tony blue ,

konntest du dein Backup Problem lösen? Ich stehe vor einem ähnlichen Problem.
Ich habe unpriviligierte LXC Container mit Docker laufen. Das Backup wird anscheinend auch auf meinem NAS abgelegt, jedoch kann ich das Backup nicht wieder herstellen.
Ich bekomme diese Fehlermeldung:

Code:
tar: ./var/lib/docker/overlay2/487ce11182cdc104d0efd731730059b27c4cbc24af1ee224cb47e41dfbc6ed50/diff/tmp/patches: Cannot mknod: Operation not permitted

Code:
TASK ERROR: unable to restore CT 107 - command 'lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- tar xpf - --lzop --totals --one-file-system -p --sparse --numeric-owner --acls --xattrs '--xattrs-include=user.*' '--xattrs-include=security.capability' '--warning=no-file-ignored' '--warning=no-xattr-write' -C /var/lib/lxc/107/rootfs --skip-old-files --anchored --exclude './dev/*'' failed: exit code 2

Vielleicht hat noch jemand nen Tipp für mich.

Danke!
 
Hallo hankman,

die Lösung hatte sixpack.de in diesem Beitrag geliefert:

https://forum.proxmox.com/threads/b...r-grund-war-unprivileged-lxc-container.65956/

die zeigt auf dump --> /mnt/pve/proxmox-syn/dump/ in meinem fall (siehe log) wohin die bei Dir zeigt steht in Deinem Log.

Lösung:
Option A) Schreibrechte für den User 1000 auf dem Verzeichnis einräumen
Option B) Schreib-pfad auf ein Verzeichnis umbiegen in das alle User schreiben dürfen
Option C) Container auf priviligiert setzten

Ich habe A) gewählt, erschien mir am saubersten.
 
Hallo zusammen,

noch ein kleines Update von mir.
Der Fehler der bei mir geworfen wir hängt irgendwie mit mknod zusammen.
Wenn ich meinen Restore Befehl mit dem Parameter -ignore-unpack-errors 1 klappt das Wiederherstellen auch.

der komplette Befehl (inkl. Verkleinerung des Rootfs auf 8 GB)
Code:
pct restore 108 /var/lib/vz/dump/vzdump-lxc-xxx.tar.lzo -rootfs 8 -unprivileged -storage local-lvm -ignore-unpack-errors 1
 
Du musst doch beim restore einfach nur sagen das es ein KEIN unprivileged Container werden soll. Dann klappt das auch.
Im Frontend ist ja per default unprivileged Container der Haken gesetzt beim erstellen und auch beim restore.
 
Du musst doch beim restore einfach nur sagen das es ein KEIN unprivileged Container werden soll. Dann klappt das auch.
Im Frontend ist ja per default unprivileged Container der Haken gesetzt beim erstellen und auch beim restore.

Es war ja ein unprivileged Container und sollte es auch bleiben. Für mich hat es funktioniert, dass ich die Entpack-Fehler ignoriere. Der Container läuft bisher ohne Probleme. Ich werde das mal beobachten und hoffe das mein Problem erstmal gelöst ist.
 
Hallo Zusammen,

ich habe unpriviligierte LXC´s und wenn ich jetzt ein Backup (Snapshot) machen will kommt das:

Code:
NFO: starting new backup job: vzdump 200 --node pve --remove 0 --mode snapshot --storage Backup_Syno_213 --compress zstd
INFO: Starting Backup of VM 200 (lxc)
INFO: Backup started at 2021-05-27 21:12:09
INFO: status = running
INFO: CT Name: iobroker-live
INFO: including mount point rootfs ('/') in backup
INFO: backup mode: snapshot
INFO: ionice priority: 7
INFO: create storage snapshot 'vzdump'
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "snap_vm-200-disk-0_vzdump" created.
  WARNING: Sum of all thin volume sizes (312.00 GiB) exceeds the size of thin pool pve/data and the size of whole volume group (232.38 GiB).
INFO: creating vzdump archive '/mnt/pve/Backup_Syno_213/dump/vzdump-lxc-200-2021_05_27-21_12_09.tar.zst'
INFO: tar: /mnt/pve/Backup_Syno_213/dump/vzdump-lxc-200-2021_05_27-21_12_09.tmp: Cannot open: Permission denied
INFO: tar: Error is not recoverable: exiting now
INFO: cleanup temporary 'vzdump' snapshot
  Logical volume "snap_vm-200-disk-0_vzdump" successfully removed
ERROR: Backup of VM 200 failed - command 'set -o pipefail && lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- tar cpf - --totals --one-file-system -p --sparse --numeric-owner --acls --xattrs '--xattrs-include=user.*' '--xattrs-include=security.capability' '--warning=no-file-ignored' '--warning=no-xattr-write' --one-file-system '--warning=no-file-ignored' '--directory=/mnt/pve/Backup_Syno_213/dump/vzdump-lxc-200-2021_05_27-21_12_09.tmp' ./etc/vzdump/pct.conf ./etc/vzdump/pct.fw '--directory=/mnt/vzsnap0' --no-anchored '--exclude=lost+found' --anchored '--exclude=./tmp/?*' '--exclude=./var/tmp/?*' '--exclude=./var/run/?*.pid' ./ | zstd --rsyncable '--threads=1' >/mnt/pve/Backup_Syno_213/dump/vzdump-lxc-200-2021_05_27-21_12_09.tar.dat' failed: exit code 2
INFO: Failed at 2021-05-27 21:12:10
INFO: Backup job finished with errors
TASK ERROR: job errors

habe auch das in der vzdump.conf geändert:
Code:
/etc/vzdump.conf
# vzdump default settings
    #tmpdir: DIR
    tmpdir: /tmp

klappt nicht :-( da ich noch nicht so in Proxmox drin bin wäre ich froh wenn mir jemand in versändlichen Worten erklären kann was ich zu tun habe??

WIE GIBT MAN DEM USER 10000000 SCHREIBRECHTE?

Über ne Info herzlichen Dank
 
Last edited:
WIE GIBT MAN DEM USER 10000000 SCHREIBRECHTE?
Brauchst du eigentlich nicht mehr wenn du tmpdir auf /tmp ändernst. /tmp hat ja regulär chmod 777 dass da jeder schreiben darf.

Und nicht die Warnung da mit dem Thin-Provisioning übersehen. Wenn du da nicht aufpasst bekommst du Probleme. Nichts wird da deinen Server daran hindern mehr schreiben zu wollen als er Platz hat. Das musst du selbst im Auge behalten und rechtzeitig größere Laufwerke nachkaufen.
Der wird da sonst einfach die Laufwerke vollschreiben bis kein Byte mehr draufpasst und dann der Server abstürzt und sich nicht mehr starten lässt.
 
Last edited:

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!