Als IT-Dienstleister stehe ich täglich vor der Herausforderung, die passende Software für die verschiedensten Einsatzszenarien zu finden. Während in vielen Enterprise-Umgebungen Lösungen wie Veeam ihre Berechtigung haben und hervorragend auf den spezifischen Anwendungsfall abgestimmt sind, habe ich immer eine Vorliebe für Open-Source-Software bewahrt. Diese ermöglicht nicht nur die Flexibilität, die ich als Entwickler schätze, sondern auch eine größere Kontrolle über die eingesetzten Lösungen.
Vor Kurzem stieß ich auf den Proxmox Backup Server (PBS), eine besonders vielversprechende Open-Source-Lösung im Bereich der Datensicherung. Der PBS ist speziell auf die Proxmox VE (Virtual Environment) abgestimmt, einen Open-Source-Hypervisor, der sich als leistungsstark und ressourcenschonend erwiesen hat. Doch was den Proxmox Backup Server wirklich auszeichnet, ist nicht nur seine Integration in Proxmox VE, sondern das innovative Chunking-Verfahren, das für eine besonders effiziente Deduplizierung und Kompression von Daten sorgt.
Im Vergleich zu traditionellen Backup-Lösungen bietet der PBS einige einzigartige Funktionen und eine benutzerfreundliche, webbasierte Oberfläche, die den Prozess der Backup-Erstellung und -Verwaltung vereinfacht. Doch was mich besonders fasziniert, ist die Flexibilität des Systems, das sowohl für die Sicherung von virtuellen Maschinen als auch von Docker-Umgebungen und einzelnen Datenbanken verwendet werden kann.
In diesem Artikel möchte ich meine Erfahrungen mit dem Proxmox Backup Server teilen und erläutern, warum ich ihn als eine der vielversprechendsten Open-Source-Backup-Lösungen betrachte. Besonders im Hinblick auf Docker-Umgebungen und die Sicherung von Applikationen wie Mailcow bei Hosting-Providern wie Netcup hat sich der PBS als besonders effizient und zuverlässig erwiesen.
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.
- Daten aus der Quelle zieht (z.B. aus einem MySQL Server über mysqldump)
- Diese Daten lege ich in ein Verzeichnis wie z.B. backup
- 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@pbs@pbs.meinpbs.de: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.