Zwischen Veeam und Co. – Proxmox Backup

Als IT-Dienstleister bin ich täglich mit verschiedenen Softwarelösungen konfrontiert. Davon nutzen meine Kollegen in Enterpriseumgebungen of Veeam und vergleichbare Software. Wobei diese Software super für Ihren Einsatzzweck konzipiert ist, so bin ich doch immer ein großer Freund von Open-Source-Software gewesen. Ich bin in jüngster Vergangenheit auf den Proxmox Backup Server gestoßen.

Ähnlich wie andere Lösungen einen Fokuspunkt haben, z.B. im Anwendungsfall Veeam und VMWare, so hat auch der Proxmox Backup Server seinen optimierten Bereich. Wie zu erwarten, Proxmox Backup Server ist optimiert auf die Proxmox VE. Ein kompletter Open Source Hypervisor. Die Host-Backups oder eigentlich müsste es genauer Backup auf Dateiebene heißen.

Der Proxmox Backup Server ist eine auf Debian Linux basierende Lösung, die als virtuelle Appliance (auch unter Proxmox VE) oder als Hardware-Appliance installiert werden kann. Der PBS nutzt ein eigenes Chunking-Verfahren, um eine effiziente Deduplizierung und Kompression von Daten zu ermöglichen. Es bietet eine webbasierte Benutzeroberfläche, die einfach zu bedienen ist und eine intuitive Methode zur Erstellung und Verwaltung von Backup-Jobs. Der PBS unterstützt an sich keine normalen Voll und Inkrementellen Backups wie man Sie herkömmlich kennt. Es wird eher ein Prozess angewendet der sich Chunking nennt.

Chunking

Der Proxmox Backup Server verwendet das Chunking-Verfahren, um große Dateien in kleine, effiziente Stücke zu zerlegen, ähnlich wie ein Puzzle. Diese Stücke werden dann dedupliziert und komprimiert, um den Backup-Prozess zu optimieren. Der PBS erstellt sich eine Anleitung, um diese Puzzlestücke später wieder zusammenzusetzen.

Chunking ist ein Verfahren, das große Dateien in kleine, gleichgroße Stücke (Chunks) aufteilt, die dann dedupliziert und komprimiert werden können. Der Proxmox Backup Server verwendet eine variable Chunk-Größe, die automatisch an die Größe der Daten angepasst wird, um eine optimale Deduplizierung zu erreichen. Dies bedeutet, dass der PBS nur die Änderungen zwischen den Chunks speichert und somit die Datenmenge reduziert und die Backup-Zeit verkürzt.

Bei der Wiederherstellung von Daten werden die Chunks wieder zusammengefügt, um die ursprüngliche Datei wiederherzustellen. Da jeder Chunk mit einem eindeutigen Hash-Wert versehen ist, kann der PBS auch sicherstellen, dass die Datenintegrität während des Backup- und Wiederherstellungsprozesses erhalten bleibt.

Zusätzlich zu diesem Chunking-Verfahren bietet der Proxmox Backup Server auch Unterstützung für Verschlüsselung und Kompression von Backup-Daten, um die Sicherheit und Effizienz des Backup-Prozesses zu maximieren.

Für blockbasierte Backups verwendet der Proxmox Backup Server eine feste Chunk-Größe von 4 MiB. Diese Art von Backup wird normalerweise für virtuelle Maschinen verwendet und basiert auf der Blockebene, was bedeutet, dass Änderungen an der gesamten virtuellen Festplatte erkannt und gesichert werden.

Für dateibasierte Backups verwendet der Proxmox Backup Server jedoch eine variable Chunk-Größe von 64 KiB bis 4 MiB, um eine optimale Deduplizierung von Daten zu erreichen. Dateibasierte Backups basieren auf der Dateiebene und ermöglichen die Sicherung von bestimmten Dateien oder Verzeichnissen anstatt der gesamten Festplatte.

Dateibasierte Backups

Ich habe die Backups aktuell mit zwei Methoden im Einsatz, zum einen war ich erstaunt, dass diese Backups unheimlich gut in Docker Umgebungen funktionieren. Sowie in Fällen, wo ich Inhalte einer VM, z.B. unseren Mailcow bei Netcup backupen möchte.

Die Host-Backups vom PBS laufen über das cli tool proxmox-backup-client welches von Proxmox erhältlich ist. Ich erstelle mit dabei ein Bash Script welches über einen Cronjob angesprochen wird.

  1. Daten aus der Quelle zieht (z.B. aus einem MySQL Server über mysqldump)
  2. Diese Daten lege ich in ein Verzeichnis wie z.B. backup
  3. Ich führe den proxmox-backup-client aus und gebe das Verzeichnis mit den Daten als Quelle an.

In der Realität würde das wie folgt aussehen.

Backup.sh

1. # !/bin/bash
# Beende Skript beim ersten Fehler
2. set -e
# Tritt ein fehler auf, dann melde es meinem Monitoring Server.
3. trap 'curl -fs "https://status.meinuptimekuma.de/api/push/Avf1241sdas?status=down&msg=FAILED"' ERR
# Führe mysqldump aus, schiebe das Backup in den backup ordner.
4. /root/backup-database.sh
# Setze Environment variablen
5. export PBS_REPOSITORY=mailcow@[email protected]:datastore
6. export PBS_PASSWORD="xxxx"
7. export PBS_ENCRYPTION_PASSWORD="xxxx"
# Führe den Proxmox Backup Client aus.
8. proxmox-backup-client backup database.pxar:/root/database-backups docker-volumes.pxar:/var/lib/docker/volumes mailcow-config.pxar:/root/mailcow-dockerized --ns mailcow  --skip-lost-and-found
# Meldung an meinen Uptime Kuma (Open Source Monitoring Software) das das Backup erfolgreich war
10. curl "https://status.meinuptimekuma.de/api/push/Avf1241sdas?status=up&msg=OK"

Zuerst vorab, dieser Artikel ist in keiner Art gesponsort. Becker Software steht in keinem Zusammenhang mit Proxmox.

Inhaltsverzeichnis