Als Dienst schlug jeder Snapshot mit "cfs-lock 'storage-data' error: got lock request timeout" fehl, waehrend derselbe Aufruf in der Shell funktionierte. Ursache war ProtectSystem=full in unserer eigenen Unit: das haengt /etc im Namespace des Dienstes schreibgeschuetzt ein. pvesh fuehrt die Proxmox-API im eigenen Prozess aus, der Snapshot-Task ist also ein Kindprozess von pvesnap und erbt diese Einschraenkung. pmxcfs legt seine Sperren aber als Verzeichnisse unter /etc/pve/priv/lock/ an - das mkdir scheitert, Proxmox wiederholt es erfolglos und meldet am Ende einen Lock-Timeout statt eines Rechtefehlers. ProtectHome=yes war aus demselben Grund schaedlich: es blendet /root aus, womit die SSH-Schluessel fuer die uebrigen Cluster-Nodes fehlen. * Unit enthaelt keine Sandbox-Optionen mehr, mit Kommentar, warum nicht. * Neu: pvesnap/preflight.py prueft root-Rechte, Schreibzugriff auf /etc/pve und Sichtbarkeit von /root. Der Dienst schreibt das beim Start ins Journal, "pvesnap check" zeigt es ebenfalls an - damit faellt so etwas sofort auf, statt sich als Lock-Timeout zu tarnen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
39 lines
1.5 KiB
Desktop File
39 lines
1.5 KiB
Desktop File
[Unit]
|
|
Description=pvesnap - automatische Proxmox-Snapshots
|
|
Documentation=file:/usr/share/doc/pvesnap/README.md
|
|
After=network-online.target pve-cluster.service pvedaemon.service
|
|
Wants=pve-cluster.service pvedaemon.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/usr/bin/python3 -m pvesnap --config /etc/pvesnap/pvesnap.conf daemon
|
|
ExecReload=/bin/kill -HUP $MAINPID
|
|
Environment=PYTHONPATH=/usr/lib/pvesnap
|
|
Environment=PYTHONUNBUFFERED=1
|
|
Restart=on-failure
|
|
RestartSec=30
|
|
TimeoutStopSec=300
|
|
|
|
# pvesh fuehrt die API im eigenen Prozess aus - der Snapshot-Task ist also ein
|
|
# Kindprozess von pvesnap und erbt dessen Umgebung.
|
|
User=root
|
|
StateDirectory=pvesnap
|
|
|
|
# ACHTUNG: Hier duerfen KEINE Sandbox-Optionen stehen.
|
|
#
|
|
# ProtectSystem= haengt /etc schreibgeschuetzt ein. pmxcfs legt seine
|
|
# Sperren aber als Verzeichnisse unter /etc/pve/priv/lock/
|
|
# an - das mkdir scheitert dann, Proxmox wiederholt es
|
|
# erfolglos und der Task endet in
|
|
# "cfs-lock 'storage-XXX' error: got lock request timeout".
|
|
# ProtectHome= blendet /root aus - damit fehlen die SSH-Schluessel, mit
|
|
# denen Proxmox andere Nodes im Cluster erreicht.
|
|
# PrivateTmp= gibt dem Dienst ein eigenes /tmp, das Proxmox-Werkzeuge
|
|
# nicht mit den uebrigen pve-Diensten teilen.
|
|
#
|
|
# Die Proxmox-eigenen Units (pvedaemon, pvescheduler) verzichten aus denselben
|
|
# Gruenden auf diese Optionen.
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|