Proxmox Backup Server on TrueNAS (bhyve)

 

Mit Proxmox Backup Server (PBS) hat Proxmox nun eine eigenständige Backuplösung mit durchaus beachtlichen Features und einer vielversprechenden Roadmap im Angebot. 

Da wurde es Zeit sich das mal genauer anzuschauen - als VM kombiniert und virtualisiert auf/mit TrueNas 12 (bhyve) (Freenas). 

Hier geht es zu den holprigen Details:

 

In einem der kommenden eigenen Artikel werde ich die Hardware meines Offline-Backup- und Archiv-Server genauer vorstellen. So viel vorweg, es handelt sich um Marke Eigenbau in einem Midi-Tower mit bis zu 14! 3,5" Disks, basierend auf einem Intel(R) Celeron(R) CPU J3355 @ 2.00GHz mit 16 GB RAM und TrueNAS 12. Der ZFS Pool ist mit OpenZFS nativ verschlüsselt. (hier TrueNAS-12.0-U3). Ob die Performance für die anspruchsvolle Aufgabe ausreichend ist, berichte ich am Ende. 

Der Einfachheit halber gehe ich hier davon aus, dass sich der TrueNAS Server und die PBS-VM eine Netzwerkschnittstelle untagged im gleichen Netzwerk teilen. 

Proxmox Backup Server (ab hier "PBS") bietet durch die Komprimierung und Deduplizierung auf Client- und Serverseite einen entscheidenden Vorteil bei vielen Backups/Versionen gegenüber der klassischen vollständigen Sicherung. Diese nimmt durch die Komprimierung und Sicherung der tatsächlich belegten Blöcke zwar weniger Platz ein als auf dem Primärstorage (von hier werden die VMs ausgeführt), aber dennoch kommt bei vielen Backupversionen einiges an Speicherplatz auf dem Sekundär-Storage (Backup) zusammen. Hier punktet PBS damit, dass nur noch geänderte Blöcke gesichert werden (Differentielles Backup). Das geht zum Einen viel schneller, belastet das Netzwerk weniger und belegt natürlich viel weniger Speicherplatz (ab der 2. Sicherung der gleichen VM). (hier PBS 1.1)

PBS gibt es als fertige ISO, welche den offenbar einen vergleichbaren grafischen Installer wie Proxmox verwendet. PBS bevorzugt allerdings lokale Disks und eine dedizierte Hardware für die Installation in produktiven Umgebungen. Für mein Projekt etwas too much. Außerdem habe ich ja bereits o.g. Archivserver, also warum nicht diesen beides erledigen lassen?! NFS/cifs Mounts für die Datastores des PBS sind anders als bei Proxmox nicht vorgesehen und nicht empfohlen.  

TrueNAS (FreeBSD) unterstützt virtuelle Maschinen, diese basieren auf bhyve und hier wird es interessant. Einfach so will sich Proxmox nämlich nicht unter bhyve installieren lassen. Nach etwas suchen, bin ich in einem Reddit-Forum auf eine Lösung für Proxmox VE gestoßen, welche auch für PBS funktioniert.
Zudem wollte nach der Installation auch die NIC nicht so recht. Für beides findet ihr hier eine mögliche Lösung und die damit gemachten Erfahrungen. Schreibt mich gern an, falls ihr einen weiteren Workaround gefunden habt, ich ergänze diesen gern. Manche Punkte werde ich nur kurz ansprechend, aber an dieser Stelle nicht zu ausführlich beschreiben. Dies würde sonst den Artikel unnötig vergrößern. 

TrueNAS

- System / Tuneables -> RAM für ARC so beschränken, dass für den ARC mindestens 8GB (besser meeehr) übrig bleibt und auch die VM ihren zugeordneten RAM für sich hat. Es wäre fatal für die Performance wenn dieser und weitere Prozesse sch um den RAM "streiten" und am Ende noch der Swap genutzt wird. 

- Storage / Pools -> hier am Besten ein neues Dataset für VMs erstellen "Add Dataset"

- Virtual Machines -> Add -> 

Guest Operating System: Linux
Virtual CPUs: 1
Cores: 2
Threads: 1
Memory Size: 4.00 GiB
Boot Loader Type: UEFI
System Clock: UTC
VNC Port: 40318
Com Port: /dev/nmdm1B
Description: proxbackup.m.xx
Shutdown Timeout: 25 seconds

Bei der Installation erstelle ich zunächst nur die Boot-Disk, 50GB sollten hier ausreichend sein, Disktyp -> "virtIO" auf dem Dataset welches du in Schritt 2 angelegt hast.
Bei der Anzahl der Kerne, die Größe ist RAMs, müsst ihr natürlich entsprechend euren verfügbaren Ressourcen / Ansprüchen eine sinnvolle Auswahl treffen. 
Boot Method -> "UEFI" wichtig, sonst funktioniert die lokale Konsole mit VNC nicht.
Network interface -> "virtIO", Attach NIC -> die einzig verfügbare (bei mir "em0") (des TrueNAS).
Installation Media -> auch hier habe ich das Dataset aus 2. gewählt und direkt die ISO hochgeladen und für die Installation ausgewählt.

Wenn du dir nun die Eigenschaften / Devices der neuen VM anschaust, solltest du etwas wie hier sehen - das wird später noch wichtig:

Als nächstes die VM und den VNC Viewer starten - Achtung wer zwischen den Netzen eine Firewall hat, muss hier den VNC-Port freigeben (der Port scheint pro VM random vergeben dann aber beibehalten zu werden).

Du siehst nun den "PBS Willkommens Bildschirm" -> Install Proxmox Backup Server.

.. ab "Starting chrony ..." dauert es und endet damit dass du in der CLI, statt im Installer stehst. 

Das liegt, soweit ich das sagen kann, am bhyve hypervisor. Hier muss die Konfiguration des x-Server auf dem tmp Installationspfad angepasst werden (siehe Screenshot und Code-Snippet). 

Achtung die Tastatur hat hier weder ein deutsches noch englisches Layout, ich habe den Slash auf dem Nummernblock verwendet, der Rest sollte mit der Autovervollständigung machbar sein. 

chmod 1777 /tmp
Xorg -configure
mv /xorg.conf.new /etc/X11/xorg.conf
nano /etc/X11/xorg.conf      # update Section "Devices" / Driver -> "fbdev"
startx

 

Und siehe da - der Installer, wie wir ihn kennen. Diese Prozedur ist nur für die Installation notwendig. 

Ich passe i.d.R. noch die Partitionierung an. 

Wichtig: Beim Passwort würde zunächst auf Sonderzeichen und y,z etc. verzichten. Bei der Installation etwas einfaches vergeben und nach der Installation mit klaren Tastaturlayout direkt ändern (ssh)!
Auch bei der Email-Adresse um das "@"-Zeichen herum editieren, da ihr kein @-Zeichen über die VNC-Konsole eingeben könnt. Wer es versehentlich gelöscht hat, ein Klick auf Previous und wieder Next hilft. 

Ansonsten sind hier keine besonderen Einstellungen notwendig. Am Ende der Installation stehst du wieder in der CLI. Befehle wie reboot / shutdown sind nicht möglich. Also schalten wir die VM über TrueNAS aus. Je nachdem was du bei dem Timeout eingestellt hast, kann das etwas dauern.

Im ausgeschalteten Zustand der VM entfernen wir direkt die ISO, diese wird nun nicht mehr benötigt. (VM -> Devices -> 9 CDROM -> delete). Den Komfort von Proxmox vermisst man hier und da schon mal. :) . Anschließend VM wieder starten. 

PBS sollte nun starten und bis zum Login in der VNC-Konsole starten. 

Eigentlich müssten wir nun nur die angezeigte URL eingeben und weiter geht es - dachte ich. 

Der Link ist nämlich down und ich habe auch keinen Weg gefunden das zu ändern. 

Hier muss man bei der Installation bzw. später in der /etc/network/interfaces genauer hinschauen. Bei der Installation wird offenbar die Netzwerkadresse enp0s5 erkannt und konfiguriert, das fertig installierte Betriebssystem sieht aber inp0s4 !!. 

Um das aufzulösen musst du in der /etc/network/interfaces aus der "5" eine "4" machen. Neustart - läuft. Alternativ über TrueNas eine weitere Netzwerkschnittstelle hinzufügen, diese hat dann die passende Adresse. 

Etwas unlogisch. Entsprechend hat es mich auch etwas Zeit gekostet, das zu finden. Wenn du bis hier gelesen hast, hast du Glück und sparst dir die Fehlersuche. 

Nun sollten noch die Updates und Grundkonfigurationen für Proxmox erfolgen. An dieser Stelle möchte ich auf den Artikel Proxmox Homeserver - Grundinstallation verweisen. Die Schritte sind vergleichbar. 

Als nächstes benötigt PBS noch Speicherplatz für die Backups. 

Als Proxmox - Nutzer würde man jetzt [TrueNAS] "Devices->Add" erwarten, um eine Disk mit der entsprechenden Größe anzulegen. Nicht doch .. in TrueNAS legen wir zunächst über Storage / Pool / [o.g. Dataset für VMs] /  Add Zvol ein neues Blockvolume an. 

Aus Performancegründen deaktiviere ich den ZFS-Sync, stelle die Komprimierung auf "zstd". Super wichtig -> auf keinen Fall ZFS Deduplication aktivieren! Das lassen wir den PBS machen. Die Blocksize habe auf das Maximum gestellt. 

Anschließend lässt sich das entsprechende Device der VM zuordnen. Die Order für die neue Disk habe ich auf 1003 gestellt.

      

Nun starten wir die VM wieder und stellen fest, dass wir noch keinen Datastore für die Backups zur Verfügung haben. Der Teil ist nun aber entspannt über das Webinterface zu erledigen.

 >>  >>  

 

Damit Proxmox nun auch auf unseren Backup Server sichern kann müssen wir noch einen Nutzer anlegen und diesen für unseren neuen Datastore berechtigen:

    >>  

und fügen im Proxmox-Cluster diesen als DataStore hinzu

oder via CLI:

pvesm add pbs proxbackup-data1 --server 10.10.182.35 --datastore 'proxbackup-data1' --fingerprint bf:14:39:bf:86:0c:1c...:ff --username mlab-proxcluster@pbs --password '***' --nodes prox01

Wichtig - hier aus dem Proxmox Backup Server -> SSL Zertifikat den SHA-256 Fingerprint kopieren (Default selbst erstelltes Zertifikat).

Ich habe hier immer wieder die Fehlermledung "create storage failed: error during cfs-locked 'file-storage_cfg' operation: proxbackup-data1: error fetching datastores - 401 Unauthorized" erhalten. Über die WebGUI als auch über die CLI. 

Am Ende war alles richtig eingestellt, aber der PBS wollte nochmal neustarten..


Abschließende Arbeiten für die Testphase

Notwendig, aber nicht voreingestellt müssen noch ein paar Jobs konfiguriert werden, damit die Backups nicht ewig fort geschrieben und nie gelöscht werden, außerdem muss das Backupergebnis verifiziert wird. Die Einstellungen befinden sich in Eigenschaften des Datastores. 

Prune und Garbage Collection

Proxmox empfiehlt beim Einsatz von PBS diese auf dem Backupserver, statt im Proxmox VE zu konfigurieren. Nach meiner Erfahrung muss diese dennoch in PM VE auf unbegrenzt gestellt werden, damit überhaupt mehr als ein Backup gemacht werden kann. Im PBS habe ich für mich dann die folgende Konfiguration gewählt. Die Zeitplanung für den Job ist in relativ kurzen Abständen, da mein Backupserver nur nach Bedarf überhaupt gestartet ist. 

Proxmox bietet selbst einen Simulator für die Backup Retention an LINK

Proxmox VE:                                                                                  Proxmox Backup Server:

            

Verify Jobs

 

Performance

Das TrueNas System, mit dem kleinen Prozessor, ist mit der Aufgabe erwartungsgemäß ausgelastet, aber nicht überlastet! Die Zeit / Datendurchsatz des Initialbackup ist mit einem klassischen Backup von Proxmox direkt auf den TrueNAS Server (CIFS) vergleichbar. 

Folgend ein Vergleich des belegten Speichers. Beim Primär-Storage ist es der Brutto-Wert, also die Summe der virtuellen Diskgrößen.

  Proxmox konv. Backup(kompr. Full-Backup via CIFS) Proxmox Backup Server
Durchläufe 1. Initial 2. Folgebackup 1. Initial 2. Folgebackup
Primärspeicher
(brutto)
1179 GiB
TrueNAS CIFS-Share xxx GiB
xxx GiB nach ZFS Compr.
xxx GiB
xxx GiB nach ZFS Compr.
- -
TrueNas DataSet / Zvol - -  1002 GiB 1002 GiB 
Proxmox Backup Server - - 302 GiB 2 GiB (Diff.)

Welche Erkenntnis erlangen wir nun? Bei den klassischen Full-Backups wird bei jedem Backup die gleiche Datenmenge gelesen und geschrieben. Es ist einfach und bewährt. 
Wer wenige Versionen benötigt kommt hier ggf. sogar besser, da nur der tatsächlich benötigte Speicher auf dem Backup-Storage belegt wird. 

Der Proxmox Backup Server spielt in meinem Beispiel erst ab der 4. Backup-Version sein volles Potential aus, da ich dem DataStore direkt mal 1000GiB spendiert habe. Diese werden sofort im ZFS belegt und profitieren nicht von der ZFS-Komprimierung. Dafür lief das 2. Backup der VMs dann in einem Bruchteil der Zeit durch und belegte nur zwei zusätzliche 2GiB! Der zeitliche Versatz waren ca. 12 Stunden. Ich werde hier später ergänzen wie es nach ein paar Wochen aussieht. 

Link-Sammlung / weitere Informationen:

TrueNAS virtual machines
Proxmox Backup Server Reference Documentation
Thomas-Krenn PBS Konfiguration