Ein Node, zwei Nodes? Ups, Problem…
Ich habe im letzten Beitrag gezeigt, wie man den Proxmox Backup Server einrichten kann. Samt dem ganzen Extra-Graffel, welches letztlich fast anderthalb Monate gedauert hat. Aber nachdem das alles geschehen ist, und dazu habe ich einen vielleicht nicht so flotten, aber recht umfangreich Beiträge geschrieben (Teil 1 mit ersten Vorgeschmack, Teil 2 mit viel Versuch und Irrtum und den dritten Teil, wo dann tatsächlich Backups geschrieben werden). Am Ende habe ich bemerkt, dass die ganzen Backups von den zwei Nodes einfach zusammen gewurstelt werden und sobald zwei Container oder Virtuelle Maschinen die gleiche ID haben, würde das zu einer Kollision führen – das ist nicht gut. Gut ist hingegen, dass man das relativ einfach umgehen kann, indem man Namespaces verwendet. Das ist fancy speak für Unterordner. Seit PBS 2.2 wird das unterstützt, wie in dieser Presseaussendung aus Wien bekannt gegeben wurde. In dieser Blog-Aussendung aus Wien geht es nun darum die bestehenden Backups zweier Proxmox Instanzen auseinander zu dröseln, in eigene Unterordner zu verschieben und dann zukünftige Backups eigene Plätzchen auf dem Backup Server zuzuweisen.
Bestehende Backups in Unterordner verschieben
Um einen eigenen Namespace für die jeweiligen Nodes zu erstellen braucht es letztlich nur einen entsprechenden Unterordner im Datastore. Diesen kann man entweder im GUI oder über die Kommandozeile erstellen.
Namespace erstellen
Unter “Datastore” auf den erstellten Datastore, hier “wpbs-Datastore”, klicken und dann unter “Content” auf “Add Namespace” klicken…
… und als Namen am Besten den der Proxmox Instanz nehmen:
Dieser Namespace taucht dann in der Liste auf:
Richtige Container/VM IDs identifizieren
Jetzt kann man die bestehenden Container bzw. Virtuelle Maschinen über die Kommandozeile verschieben. Dazu geht man am einfachsten im PBS auf “Shell” und müsste dort bereits den entsprechenden Ordner im folgenden Pfad haben:
/mnt/<pbs-share>/<pbs-datastore>/ns/<namespace-name>
Vorsicht: Die Verzeichnisse, <pbs-share>
, <pbs-datastore>
und <namespace-name>
nach den eigenen Gegebenheiten anpassen.
Als nächstes muss man die entsprechenden Container/VMs von Proxmox Instanz identifizieren. Dazu notiert man sich einfach die IDs des Nodes, bei mir sind das Container mit den IDs:
200, 201, 202, 230, 240
Wenn man nun im Datastore nachsieht und sich alle Container in /mnt/<pbs-share>/<pbs-datastore>/ct/
anzeigen lässt dann sieht man alle Container schön nach ihrer ID in einzelne Ordner aufgelistet:
root@pbs:/mnt/<pbs-share>/<pbs-datastore>/ct# ls
200 201 202 230 240 300 {...}
Sehr gut, dann erstellt man den Unterordner für Container im neuen Namespace (Update: unten ist mir geschossen, dass man vor mkdir
eigentlich gleich sudo -u backup
hinzufügen könnte und man sich so das aufräumen nachher ersparen kann):
mkdir -p /mnt/<pbs-share>/<pbs-datastore>/ns/<namespace-name>/ct
Tricks mit dem Befehl mv
Jetzt müssen die Ordner noch an ihren neuen Platz gebracht werden, dazu kann man natürlich für jeden Container den Unix-Klassiker mv
, also Verschiebebefehl, bemühen, das würde dann in etwa so aussehen:
mv /mnt/<pbs-share>/<pbs-datastore>/ct/<ID> /mnt/<pbs-share>/<pbs-datastore>/ns/<namespace-name>/ct/<ID>
Das wird jedoch mit zunehmender Zahl der Container und Virtuellen Maschinen etwas fad. Daher habe ich mir vom Chatbot diese Befehle basteln lassen:
mv /mnt/<pbs-share>/<pbs-datastore>/ct/{200,201,202,230,240} /mnt/<pbs-share>/<pbs-datastore>/ns/<namespace-name>/ct/
Alternativ kann man auch eine for
Schleife nehmen…
for id in 200 201 202 230 240; do
echo mv /mnt/<pbs-share>/<pbs-datastore>/ct/$id /mnt/<pbs-share>/<pbs-datastore>/ns/<namespace-name>/ct/
done
… aber aus komplett irrationalen Gründen ist so eine Schleife in der CLI etwas suspekt (Anmerkung: der obere Befehl wird auch nicht viel anderes machen, aber naja was soll’s).
Wenn man dann fertig mit dem Verschieben ist, sollten sich die gewünschten Ordner nun unter einem Namespace befinden:
root@pbs:/mnt/<pbs-share>/<pbs-datastore>/ns/<namespace-name>/ct# ls
200 201 202 230 240
Das ist gut, denn jetzt kann ich die Container und VMs des viel umfangreicheren Proxmox Nodes en bloc kopieren.
Namespace manuell erstellen und alle verbliebenen Backups verschieben
Dazu erstellen wir jetzt in der Kommandozeile einen neuen Namespace:
mkdir /mnt/<pbs-share>/<pbs-datastore>/ns/<noch-ein-namespace-name>
Und jetzt können wir die übergeordneten Verzeichnisse direkt in den neuen Namespace verschieben mit:
mv /mnt/<pbs-share>/<pbs-datastore>/{ct,vm} /mnt/<pbs-share>/<pbs-datastore>/ns/<noch-ein-namespace-name>/
Sehr schön, die ganzen Backups befinden sich nun in ihren eigenen Verzeichnisse!
Wichtig: Alle Verzeichnisse dem User backup
zuweisen!
Wenn man es jetzt sein lässt, dann kommt es unter Umständen zu einer bösen Überraschung. Denn die neue erstellten Ordner sind jetzt dem User root
zugewiesen. Das geht natürlich nicht, denn dem zartberechtigten PBS wird schnell übel, wenn nicht alles seine UID:GID-Ordnung hat. Wem das jetzt nichts sagt, keine Sorge, in den vorherigen Beiträgen habe ich mich umfangreich damit herumgeschlagen, dort kann man gerne alles nachlesen.
Hier sieht man potenzielle troubles on the horizon:
root@pbs:/mnt/<pbs-share>/<pbs-datastore>/ns# ls -la
total 48
drwxrwxrwx 4 backup backup 4 Dec 13 19:21 .
drwxrwxrwx 4 backup backup 6 Dec 13 19:26 ..
drwxrwxrwx 3 backup backup 3 Dec 13 18:51 <namespace-name>
drwxrwxrwx 4 root backup 4 Dec 13 19:26 <noch-ein-namespace-name>
Hier gehört kein root
her!
Wir werden jetzt einfach alle Verzeichnisse und Dateien dem User backup
zuordnen mit (Vorsicht: vielleicht vorher den Befehl darunter ausführen um zu sehen, was alles geändert wird):
chown -R backup:backup /mnt/<pbs-share>/<pbs-datastore>/
Dieser Befehl hat bei mir fast verdächtig lange gedauert.
Vielleicht hätte ich sicherheitshalber vorher noch schauen können was alles geändert wird:
find /mnt/<pbs-share>/<pbs-datastore>/ ! -user backup -o ! -group backup
Überprüfen, welche Dateien und Ordner nicht dem backup
User zugeordnet sind mit:
ls -lR /mnt/<pbs-share>/<pbs-datastore>/ | grep -v 'backup backup'
Oder doch lieber nicht:
An dieser Stelle soll noch einmal eine Warnung vor LLM-kreierten Befehlen und Tabletten von der Mama ausgesprochen werden (kleiner Scherz, zumindest das leblose neuronale Netz findet Spaß an meinem Humor – pardon gewichtet “Haha!” als einzig logische und sinnvolle Tokenfolge nach diesem surrealistic Schenkelklopfer).
Wie auch immer, das hier ist der richtige Befehl:
find /mnt/<pbs-share>/<pbs-datastore>/ \! -user backup -o \! -group backup -exec ls -ld {} +
Oder zumindest gibt es bei mir keinen Output mehr, nachdem ich alles dem User backup
zugewiesen habe.
”
“
Alternative zu chown
im Nachhinein: alles gleich mit richtigen User ausführen
Ich überlege gerade, ob es nicht noch etwas eleganter gewesen wäre die ganzen Befehle direkt als User backup
laufen zu lassen mit dem Präfix:
sudo -u backup <restlicher-befehl-wie-oben-beschrieben>
Aber so läuft es oft, erst nachdem man alles erledigt hat, kommt man auf eine möglicherweise bessere Lösung.
Zukünftige Backups anpassen
Damit zukünftige Backups aber nicht wieder im falschen Verzeichnis landen, muss man in den jeweiligen Proxmox Instanzen noch den richtigen Namespace auswählen.
Aus irgendeinen Grund kann ich unter “Datacenter” “Storage” den PBS-Storage nicht bearbeiten und einen Namespace hinzufügen, eigenartig. Aber über die CLI sollte es gehen, nämlich wie folgt.
In der jeweiligen Proxmox Instanz führt man…
nano /etc/pve/storage.cfg
… aus und fügt beim PBS-Datastore die Zeile hinzu:
namespace <namespace-name>
Dann ladet man mit…
systemctl restart pvestatd
… die Konfiguration neu und schaut ob es eh wieder läuft mit:
pvesm status
Das sollte den PBS-Datastore als aktiv anzeigen. Anschließend kann man ein Backup erstellen lassen und dann sollte es nicht mehr im root-Verzeichnis vom Datastore landen sondern unter dem jeweiligen Namespace. Das wiederholt man mit allen anderen Proxmox Nodes, die noch nichts davon wissen und schon kann man schön aufgeräumt einen Berg von Backups auftürmen, ohne dass einem die Bude durch ID-Kollision um die Ohren fliegt!
Fazit
Diese Namespaces sind wunderbar, es wundert mich ein bisserl, dass der eigentlich von mir sehr geschätzte Kanal Jim’s Garage in seinem PBS Video kein Wort darüber verliert (und, dass er die Proxmox Nodes einfach mit dem root
User reinlässt, etwas unschön). Aber grundsätzlich macht er solide Videos.
Ich bin froh, dass jetzt endlich meine Backup-Situation gut aussieht und ich diese langwierige Beitrags-Serie zum Thema beenden kann. Ich hoffe es ist auch etwas sinnvolles für die Leserschaft dabei, ich selbst werde bestimmt auf diese Befehle zurückkommen, wenn ich einen neuen PBS aufsetzen werde.