pve-bindsnap: LXC-Container mit Bind-/Device-Mounts snapshotten (Open Source)

bitranox

Member
Oct 11, 2024
97
49
18
Hallo zusammen,

wie viele hier hatte ich das "Problem", dass sich ein Container mit Bind-Mount über die GUI nicht snapshotten lässt: der Snapshot-Button ist ausgegraut, pct verweigert es.
Die üblichen Tipps sind, auf lxc.mount.entry umzustellen, oder die Mounts zu entfernen, zu snapshotten und wieder hinzuzufügen.
Beides hat bei mir nicht gut skaliert, auf einem Host mit mehreren Containern, die jeweils eine Handvoll Host-Binds haben.
Ein manueller Snapshot ist natürlich immer möglich, aber arbeitet nicht z.B. mit cv4üve-autonap zusammen.

Also habe ich ein kleines Overlay geschrieben, das den Snapshot-Pfad selbst repariert.

https://github.com/bitranox/pve-bindsnap

Was es macht:
- Du kannst Container mit Bind- oder Device-Mounts snapshotten, zurückrollen und Snapshots wieder löschen.
- In den Snapshot kommen nur die verwalteten Volumes (rootfs und Volume-mpN).
Die Bind- und Device-Mounts werden übersprungen, die Host-Daten dahinter werden nie angefasst.
- Du kannst außerdem einzelne verwaltete Volumes vom Snapshot ausnehmen, mit einem Ausschluss pro Mountpoint,
der einmalig in den Container-Notizen (oder pro Snapshot) gesetzt wird. Praktisch für ein großes oder flüchtiges mpN, das nicht in jeden Snapshot soll.
- Backups (vzdump) sind nicht betroffen, es ändert nur den Snapshot-Pfad.

Ein paar Sicherheitsdetails, weil das den LXC-Stack anfasst:
- Es greift nur bei Containern, die tatsächlich Bind-/Device-Mounts haben. Normale Container snapshotten exakt wie vorher.
- Es weigert sich, auf pve-container-Builds zu laufen, gegen die es nicht geprüft wurde (eine inhaltliche Prüfsumme, keine Versionsnummer). Aktuell ist das 6.1.10.
Auf einem anderen Build kannst du es per Schlüsselwort freigeben und solltest es idealerweise zurückmelden, damit der Build in die Known-Good-Liste aufgenommen wird.
- Es gibt ein Schlüsselwort, um einen laufenden Container zu snapshotten (kurzer fs-freeze).

Es ist Release 1.0.0 und läuft bei mir im produktiven Cluster, ist aber bisher nur auf pve-container 6.1.10 getestet.
Ich würde mich freuen, wenn ein paar mehr Leute es auf anderen Builds ausprobieren und berichten.
Es funktioniert außerdem direkt mit cv4pve-autosnap und anderen API-basierten Tools, weil es unter der API lädt statt pct zu wrappen.

Über Rückmeldungen und Bug-Reports freue ich mich.

(Englischer Thread mit denselben Infos:
https://forum.proxmox.com/threads/p...t-have-bind-device-mounts-open-source.184133/)