Sandbox-Optionen aus der systemd-Unit entfernen
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e26d966a8b
commit
1be13ad294
@@ -13,6 +13,7 @@ from datetime import datetime
|
||||
|
||||
from .config import ConfigError, load_config
|
||||
from .engine import run_group
|
||||
from .preflight import warn_about_environment
|
||||
from .proxmox import Proxmox, ProxmoxError
|
||||
from .schedule import next_due
|
||||
from .state import State
|
||||
@@ -137,6 +138,10 @@ class Daemon:
|
||||
len(self.config.groups), globals_.prefix,
|
||||
", TESTLAUF" if globals_.dry_run else "")
|
||||
|
||||
# Der Dienst laeuft trotzdem weiter - aber es soll gleich beim Start im
|
||||
# Journal stehen, warum spaeter jeder Snapshot scheitert.
|
||||
warn_about_environment(log)
|
||||
|
||||
daemon_lock = SingleInstanceLock(
|
||||
globals_.lock_file + ".daemon",
|
||||
busy_message="Der pvesnap-Dienst laeuft bereits (%s.daemon)" % globals_.lock_file)
|
||||
|
||||
Reference in New Issue
Block a user