Anleitung: Sicherung des PVE Hosts mit dem Proxmox Backup Server

Loni78

Active Member
Dec 7, 2019
39
12
28
49
Hallo zusammen,

seit längerem habe ich nach einer Möglichkeit gesucht den Proxmox Host (PVE) zu sichern. Dann ist mir eingefallen, dass sich der Proxmox Backup Server dazu eignet. Neben VMs und LXCs kann man auch den Host sichern. Die Ausgangslage bei mir ist, dass der Backup Server auf einem separaten Server läuft. Die Anleitung funktioniert auch, wenn z.B. der Backup Server in einer VM/LXC auf dem Host laufen würde.

Was ist nun zu tun:

Proxmox Backup Server:

1) Erstellung eines API Tokens mit einer entsprechende Berechtigung

1655338422824.png

Bitte darauf achten, dass man sich den Token Secret merkt/aufschreibt. Dieser wird nur einmal angezeigt.

2) Im Proxmox Backup Server den Datastore auswählen und Berechtigung vergeben:

1655338668386.png
Die Rolle "DataStoreBackup" ist ausreichend. Wer eine andere Berechtigung vergeben möchte, kann gerne in der PBS Dokumentation nachschauen.

Proxmox Host (PVE)

1) Im Proxmox Host auf die Shell/CLI gehen und dort erstellen wir mittels nano oder vim ein kleines Skript, Bei mir liegt das Skript direkt im "root" Verzeichnis. Andere Plätze sind auch möglich:

#!/bin/bash
export PBS_REPOSITORY=root@pam!rafael(API_Token)@IP_von_Backup_Server:Name_DataStore
export PBS_PASSWORD=Secret_von_API_Token
export PBS_FINGERPRINT=Fingerprint_von_Backup_Server

export PBS_REPOSITORY
export PBS_PASSWORD
export PBS_FINGERPRINT

proxmox-backup-client backup root.pxar:/ --include-dev /etc/pve


Die letzten Zeile bedeutet, dass ich das gesamte "root" Verzeichnis sichere + das Verzeichnis /etc/pve. Das Verzeichnis /etc/pve wird normalerweise übersprungen. Man kann auch ganze Laufwerke zusätzlich sichern. Informationen dazu stehen in der Dokumentation.

2) Skript ausführbar machen.

Das Skript habe ich bei mir unter dem Namen "pbs.sh" gespeichert. Damit es durch einen Cronjob ausgeführt werden kann, müssen wir es noch ausführbar machen mit dem Befehl

chmod +x pbs.sh

Jetzt könnten wir schon das Skript mit dem Befehlt "bash pbs.sh" testen.

3) Cronjob

Das Verzeichnis /etc/crontab mit nano öffnen und den Cronjob erstellen:

20 23 * * * root /root/pbs.sh (bzw. hier den Pfad zum Skript eingeben)

20 23 steht hier für tägliche Ausführung um 23:20 Uhr.

4) Nach der Ausführung des Cronjob wird eine Email über den Proxmox Host mit der Ausführung verschickt, die dann wie folgt aussieht:

Starting backup: host/pve2/2022-06-15T21:45:01Z Client name: pve2 Starting backup protocol: Wed Jun 15 23:45:01 2022 No previous manifest available.
Upload directory '/' to 'root@pam!rafael@1xxxxxxxxxx:TrueNAS' as root.pxar.didx
skipping mount point: "dev"
skipping mount point: "mnt/pve/truenas_nvme"
skipping mount point: "proc"
skipping mount point: "run"
skipping mount point: "sys"
skipping mount point: "var/lib/lxcfs"
skipping mount point: "var/lib/pve/local-btrfs"
root.pxar: had to backup 3.809 GiB of 4.173 GiB (compressed 1.416 GiB) in 89.15s
root.pxar: average backup speed: 43.753 MiB/s
root.pxar: backup was done incrementally, reused 372.247 MiB (8.7%) Uploaded backup catalog (1.322 MiB)
Duration: 89.84s
End Time: Wed Jun 15 23:46:31 2022



Im Proxmox Backup Server unter DataStore sieht es dann wie folgt aus (ich habe hier einen 3 Node Cluster):

1655340076963.png


So, das war eigentlich schon. Was ich allerdings nicht weiss, ob evtl. das Skript bzw. der Cronjob bei einem Update evtl. überschrieben wird.

Grüsse
Rafael
 

Attachments

  • 1655338587413.png
    1655338587413.png
    14.3 KB · Views: 59
ich sichere meinen pve auch auf meinen pbs
den Fingerprint lese ich automatisch aus da spart man sich das anpassen des scriptes

HASH="$(openssl x509 -in /etc/proxmox-backup/proxy.pem -noout -fingerprint -sha256 | cut -d'=' -f2)" PBS_FINGERPRINT=${HASH}
 
  • Like
Reactions: matt69 and Loni78
Ich persönlich sichere nur /etc, /var, /boot, /home und /root von PVE aus. Da hat man dann eigentlich alle wichtigen Daten und Konfig-Dateien ohne Dinge wie /tmp oder gemountetes in /mnt oder /media und Co mitsichern zu müssen.
Für ein komplettes Systembackup würde ich lieber Debian von einem USB-Stick booten und dann auf Blockebene ein Diskimage der kompletten PVE Systemdisk zum PBS schicken. Dann hat man auch Bootloader etc gesichert und sollte mal die ganze Systemplatte ausfallen braucht man nur eine neue leere Disk einbauen, vom Debian Stick booten und das Diskimage zurückspielen.
 
Last edited:
  • Like
Reactions: Loni78
Ich persönlich sichere nur /etc, /var, /boot, /home und /root von PVE aus. Da hat man dann eigentlich alle wichtigen Daten und Konfig-Dateien ohne Dinge wie /tmp oder gemountetes in /mnt oder /media und Co mitsichern zu müssen.
Für ein komplettes Systembackup würde ich lieber Debian von einem USB-Stick booten und dann auf Blockebene ein Diskimage der kompletten PVE Systemdisk zum PBS schicken. Dann hat man auch Bootloader etc gesichert und sollte mal die ganze Systemplatte ausfallen braucht man nur eine neue leere Disk einbauen, vom Debian Stick booten und das Diskimage zurückspielen.
Das ist auch nochmal wichtig…… Meine oben beschriebene Anleitung ist natürlich weder bootfähig noch ein komplettes Systembackup. Es werden nur wichtige Dateien / Verzeichnisse gesichert. Bei einer Neuinstallation müsste man erstmal PVE neu installieren und dann die gesicherten Dateien wieder einspielen.

Auf der anderen Seite ist die Neuinstallation von PVE ja in 15-30 Minuten erledigt.
 
Das ist auch nochmal wichtig…… Meine oben beschriebene Anleitung ist natürlich weder bootfähig noch ein komplettes Systembackup. Es werden nur wichtige Dateien / Verzeichnisse gesichert. Bei einer Neuinstallation müsste man erstmal PVE neu installieren und dann die gesicherten Dateien wieder einspielen.

Auf der anderen Seite ist die Neuinstallation von PVE ja in 15-30 Minuten erledigt.
Hängt immer davon ab wieviel man individualisiert hat. Bei mir läuft PVE z.B. auf einem Debian 11 mit LUKS verschlüsseltem mdadm raid1, unlockbar über SSH mit initramfs-dropbear über VLAN. Dann PCI passthrough, eingerichtetes filebeat, nut, cv4pve-autosnap und zabbix-agent, etliche selbstprogrammierte Bash-Skripte für automatische ZFS entschlüsselung, Autostart von Gästen nach der Entschlüsselung, Backups, Lüfterregelung, usw . Dann alles mögliche an Konfig-Dateien von sysctl über fstab, crontab, systemd, repositories, sshd, zfs, vzdump, cpu governor, syslog, usw angepasst und optimiert.

Da wäre ich dann schon einen ganzen Tag mit beschäftigt PVE neu aufzusetzen und wäre nicht einmal sicher, dass ich das 1-zu-1 wieder genau so hinbekommen würde, weil ich bestimmt etliche Änderungen vergessen habe mitzuschreiben.

Da macht es bei mir deutlich mehr Sinn einfach die kompletten Systemdisks zu sichern, dass ich da wieder ein fertig lauffähiges PVE erhalte. Im Gegensatz.zu Clonezilla nimmt bei PBS dank Deduplizierung die zweite Disk des Raid1 ja auch keinen zusätzlichen Platz weg.
Blocklevel Backup mache ich aber auch nur selten (immer vor einem Major und/oder Minor Upgrade) weil es ja nur manuell geht, recht viel platz raubt und man den Server runterfahren muss. Von daher ist es immer praktisch zusätzlich noch automatisch von PVE aus die Konfig-Dateien zu sichern. Dann kann ich erst das rechte alte Blocklevel Backup wiederherstellen und danach dann einzelne aktuellere Konfig-Dateien.
 
Last edited:
Vielen Dank für die Anleitung. Habe jetzt noch eine Frage. Wie mache ich ein Restore? Dass ich die VM zunächst neu installieren muss, ist mir klar.
Beste Grüße
Jürgen K.
 
ich würde einfach einen USB Stick machen mit Debian drauf darauf dann noch den Proxmox Backup Server installieren der dann deinen Backup Store gemountet hat

und dann das Backup zurück spielen
proxmox-backup-client restore host/pve/2021-07-26T20:52:27Z pve_sda.img - --repository 192.168.122.3:bkpstorage | dd of=/dev/sda bs=4096
Daten natürlich anpassen bei der Zeile oben

steht in dem Link unten alles noch erklärt

Ich hab es etwas anders gemacht wie es hier drin steht im letzten Post von mir https://forum.proxmox.com/threads/proxmox-pve-host-backup-and-desaster-recovery-mit-pbs.93485/
 
Last edited:
Ich kriege einen Syntax-Error in Zeile 2:

pbs.sh: line 2: syntax error near unexpected token `(' pbs.sh: line 2: `export PBS_REPOSITORY=root@pam!root(root)@192.168.179.82:hdd'

export PBS_REPOSITORY=root@pam!root(root)@192.168.179.82:hdd
Mein API-Token heißt "root", mein Datastore "hdd".
Was stimmt da nicht?
 

Attachments

  • Bild_2023-11-28_181815946.png
    Bild_2023-11-28_181815946.png
    5.2 KB · Views: 16
  • Bild_2023-11-28_181835770.png
    Bild_2023-11-28_181835770.png
    10.2 KB · Views: 16
Last edited:
Das "(root)" sieht falsch aus. Es ist "user@realm!token" also "root@pam!root" und nicht "root@pam!root(root)".
 
  • Like
Reactions: maddin-la
Gibt es die Möglichkeit noch irgendwie einzufügen, dass er z. B. nur die letzten 10 Backups behält und die älteren gleich löscht? Sonst sammelt sich da ja ganz schön was an.
 
Last edited:
Ich persönlich sichere nur /etc, /var, /boot, /home und /root von PVE aus. Da hat man dann eigentlich alle wichtigen Daten und Konfig-Dateien ohne Dinge wie /tmp oder gemountetes in /mnt oder /media und Co mitsichern zu müssen.
Hallo,
Verzeihung, dass ich da nochmal nachfrage. Ich bin auch nicht so weit, dass ich die ganze Tragweite überblicke. Reicht die obige Datensicherung aus, um folgendes Szenario abzudecken:

- Sicherung der Container und VM auf externes Medium
- Sicherung obiger Verzeichnisse in die cloud oder USB-stick
- nach Plattencrash Neueinbau einer neuen Platte und Installation von Proxmox VE
- Zurückkopieren obiger Verzeichnisse aus dem USB oder cloud in die Ursprungsverzeichnisse
- anschließend hat man auch wieder Zugriff auf die (zurückkopierten) Container und VM

Ich halte schon jedes mal die Luft an, wenn ein neues PVE Update angeboten wird, ob der Rechner dann wieder hoch kommt. Fahre dazu jedes mal die Container und die VM runter um dann das Update einzuspielen. 2. Frage an euch wäre also, wie handled ihr die häufig in kurzen Abständen angebotenen PVE-Updates?
 
Hallo,
Verzeihung, dass ich da nochmal nachfrage. Ich bin auch nicht so weit, dass ich die ganze Tragweite überblicke. Reicht die obige Datensicherung aus, um folgendes Szenario abzudecken:

- Sicherung der Container und VM auf externes Medium
- Sicherung obiger Verzeichnisse in die cloud oder USB-stick
- nach Plattencrash Neueinbau einer neuen Platte und Installation von Proxmox VE
- Zurückkopieren obiger Verzeichnisse aus dem USB oder cloud in die Ursprungsverzeichnisse
- anschließend hat man auch wieder Zugriff auf die (zurückkopierten) Container und VM
Prinzipiell ja, aber du kannst nicht einfach alle Ordner komplett zurückkopieren und alles überschreiben. Mal darfst du ganze Ordner kopieren, mal nur einzelne Dateien und mal darfst du sogar nur einzelne Zeilen aus Dateien übernehmen.

2. Frage an euch wäre also, wie handled ihr die häufig in kurzen Abständen angebotenen PVE-Updates?
Ich mache da keine automatischen Updates. Monitoring meckert wenn PVE Updates verfügbar hat. Dann warte ich einen oder zwei Tage und gucken mich im Forum um und wenn hier keiner einen Aufschrei macht, dann führe ich die Updates manuell über das webUI durch. Mit dem Wissen da zur Not noch meine Backups der Configs auf dem PBS zu haben.
Im Falle von Major-Updates warte ich eine ganze Weile bis die Kinderkrankheiten verschwunden sind, boote in ein Debian vom USB-Stick, sichere die kompletten Systemplatten auf Blockebene zum PBS, dass ich da zur Not zur alten Major-Version zurückrollen kann und dann gehe ich die Upgrade-Anweisungen im Wiki nach.
 
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!