VM-Backups auf ZFS Storage

cracksilver

Member
Feb 24, 2022
41
4
13
46
Hallo zusammen

Schönen guten Abend. Ich bin neu hier im Forum.

Ich bin soeben nach fast 3 Jahren von unraid auf proxmox umgestiegen. Proxmox ist um einiges einfacher und logischer aufgebaut als unraid. Es kommt natürlich immer darauf an für was man es verwendet. Ich für meinen Zweck habe eine relativ grosse Nextcloud Installation in einer Ubuntu VM am laufen. Also eher Virtualisierung als NAS.

Nun da alles wunderbar läuft, bin ich am Thema lokales Backup angelangt. Und da hätte ich nun auch schon eine Frage dazu. Ich habe festgestellt, dass standardmässig keine Backups auf ZFS-Storage gemacht werden können. Kann man das irgendwie umgehen oder muss ich tatsächlich die ganzen 1.4TB auf ext4 oder xfs backupen? Vielleicht möchte ich ja später noch raidz nutzen...

Danke schon mal im voraus.
cracksilver
 
Kann man schon. Wenn du einen "ZFS"-Storage in PVE anlegst, dann bist du aber auf VMs/LXCs als Content-Type beschränkt. Was du aber machen kannst ist ein Dataset selbst über die CLI erzeugen und dann den Mountpoint dieses Datasets als ein "Directory" Storage zu PVE hinzufügen. Dann liegen deine Daten immer noch auf dem ZFS Pool aber mit einem Directory-Storage darfst du auch ISOs/Templates/Snippets und Backups speichern. Aber nicht vergessen über die CLI noch "is_mointpoint" für den Directory-Storage zu aktivieren.

Hier hatte ich das schon einmal erklärt: https://forum.proxmox.com/threads/festplatte-backups-funktionieren-nicht.87867/post-385077
 
Last edited:
Danke für die Info und Anleitung.

Was ist den der wirklich grosse Vorteil von ZFS gegenüber von ext4 Directory im Bezug auf Backups anlegen?
 
Naja, bei PBS sind das nicht mehr so wirklich viele. Prinzipiell spricht für ZFS:
- Kompression auf Blockebene (aber PBS komprimiert eh schon alle Chunks aufDateiebene per ZSTD und komprimiertes lässt sich schlecht weiter komprimieren)
- Deduplikation auf Blockebene (aber PBS dedupliziert schon auf Dateiebene und dedupliziertes lässt sich schlecht weiter deduplizieren)
- Schutz vor schleichendem Dateiverfall aka Bit Rot (aber das kann PBS zu mindestens für Chunks auch auf Dateiebene über Verify-Jobs...aber vielleicht trotzdem nützlich, da ich nicht glaube, dass da PBS auch alle Metadaten verifizieren kann...ZFS aber schon)
- Snapshots (super gegen Ransomware...aber Ransomware hat es bei PBS ja eh schwer, da man den Clients die Rechte nehmen kann etwas zu löschen oder zu editieren)
- Replikation (aber PBS kann auch von sich aus schon Datastores syncen was auf das gleiche herauskommt)
- Verschlüsselung bei dem man dem Host nicht trauen können muss (aber bringt PBS auch schon so mit)
- Software Raid
- Beschleunigung von HDDs durch SSDs (als L2ARC mit primarycache=metadata oder als "special device") damit die GC und Prune Jobs nicht so ewig brauchen, weil dann die Metadaten von der SSD statt der HDD gelesen werden
 
Last edited:
Danke für die Infos.

Also wenn ich das richtig verstanden habe, falls ich alles über PBS mache, dann kommt es nicht wirklich darauf an ob ich nun ext4 oder ZFS erstelle. In PBS kann ich sowieso auch auf ZFS Storeage Backups machen?
 
Danke für die Infos.

Also wenn ich das richtig verstanden habe, falls ich alles über PBS mache, dann kommt es nicht wirklich darauf an ob ich nun ext4 oder ZFS erstelle.
Ja, wenn du kein SW raid oder oder SSD Caching brauchst dann sollte es auch ext4 tun.
In PBS kann ich sowieso auch auf ZFS Storeage Backups machen?
Was genau meinst du?
 
Last edited:
Ja ich habe das soeben in einer PBS Backup ausprobiert. Wenn ich eine ZFS Platte durchreiche dann kann ich nacher diese als Datastore für Backups nutzen.
 
Soweit ich weiß ist es PBS ziemlich egal wodrauf es die Backups speichert, solange man einen Ordner auf einem Posix kompatiblen Dateisystem hat, da alles in Software gemacht wird. Hauptsache gute IOPS, also besser keine HDD oder Netzwerk-Share.
 
Ja dann ist das ja alles gut. Ich mache sowieso 2 x PBS mit Syncjob. Einmal auf dem externen und einmal auf dem internen PVE Host.
 
Noch kurz als Verständnisfrage:
- Ein Backup mit herunterfahren der VM auf einem PVE System ergibt automatisch ein Vollbackup, also nicht inkrementiel?
- Ein Backup mit herunterfahren der VM auf dem PBS ergibt immer automatisch ein inkrementieles, dedupliziertes Backup?

Ich frage darum, weil diese nextcloud VM ein Volume von 1.34 TB frisst. Das kann ich aufgrund von Platzmangel nicht täglich zur Verfügung stellen mit Aufbewahrung von 7 Tagen. Ich suche also die Lösung, einmal Vollbackup und danach immer inkrementieles, dedupliziert.

Von der Leistung her sollte ja auch die Deduplizierung problemlos möglich sein mit 2 x Xeon und 128GB ECC RAM. Habe nur mal etwas gelesen das dies leistungshungrig sei.

Sorry für all die Proxmox Anfängerfragen. Danke Euch im Voraus.
 
Noch kurz als Verständnisfrage:
- Ein Backup mit herunterfahren der VM auf einem PVE System ergibt automatisch ein Vollbackup, also nicht inkrementiel?
- Ein Backup mit herunterfahren der VM auf dem PBS ergibt immer automatisch ein inkrementieles, dedupliziertes Backup?
Alle Backups sind immer Vollbackups. Weder Vzdump noch PBS können inkrementelle Backups machen. PBS nutzt aber im Gegensatz zu Vzdump Deduplizierung, was heißt, dass da nichts doppelt gespeichert werden muss. Ein Vollbackup mit PBS braucht also nicht mehr Platz ein typisches inkrementelles Backup mit anderen Backup-Lösungen.
Ich frage darum, weil diese nextcloud VM ein Volume von 1.34 TB frisst. Das kann ich aufgrund von Platzmangel nicht täglich zur Verfügung stellen mit Aufbewahrung von 7 Tagen. Ich suche also die Lösung, einmal Vollbackup und danach immer inkrementieles, dedupliziert.
Platz wäre wie gesagt wegen Deduplizierung nicht so das Problem. Problematischer kann da eher die Zeit sein die das Backup braucht, wenn du Große Datenmengen sichern willst. Nur VMs können Dirty-Bitmapping benutzen und das auch nur wenn man die Backups im "Snapshot"-Mode macht. Sobald man ein LXC sichern will oder eine VM im "Stop"-Mode dann ist Dirty-Bitmapping nicht nutzbar was bedeutet, dass da jedes mal die kompletten 1.34TB gelesen und gehasht werden müssen. Also selbst wenn sich von den 1.34TB nur 1GB geändert haben und daher auch nur 1GB zum PBS gesendet werden muss, müssen immer die vollen 1.34TB gelesen werden.
Von der Leistung her sollte ja auch die Deduplizierung problemlos möglich sein mit 2 x Xeon und 128GB ECC RAM. Habe nur mal etwas gelesen das dies leistungshungrig sei.
PBS ist nicht wirklich leistungshungig. Läuft hier mit 3 vCPUs und 3GB RAM und weder RAM noch CPU sind je völlig ausgelastet, da meine HDDs einfach der Flaschenhals sind. Was PBS vorallem braucht ist eine gute IOPS-Performance beim Storage, also SSDs.
 
Last edited:
Danke für Deine ausführliche Antwort.

Dann kann man da auch nichts einstellen in PBS betreffend der Art wie das gebackupt wird, es wird standardmässig einfach dedupliziert?

Ok, die Zeit ist nicht so das Problem. Ein Backup läuft ca. 6h im Stop Mode. Läuft nachts um 00:00 Uhr los. Wäre denn ein Snapshot schneller oder kommt das zeitlich aufs gleiche raus? Was ist der Nachteil an einem Snapshot?
 
Dann kann man da auch nichts einstellen in PBS betreffend der Art wie das gebackupt wird, es wird standardmässig einfach dedupliziert?
Ne, da ist nichts einstellbar. PBS kann nur dedupliziert und zst-komprimiert.
Wäre denn ein Snapshot schneller oder kommt das zeitlich aufs gleiche raus?
Hängt davon ab wieviele der Daten sich zwischen den Backups ändern. Wenn sich nur 1GB ändert muss ein Snapshot-Mode Backup auch nur 1GB lesen und 1GB zum PBS schicken. Der eine Gigabyte wird wohl deutlich kürzer dauern als das komplette einlesen von 1.34TB im Stop-Mode. Außerdem hast du beim Snapshot-Mode den Vorteil, dass da die VM nicht extra für das Backup heruntergefahren werden muss, wo dann ja deine Nextcloud immer für eine kurze Zeit offline wäre.
Was ist der Nachteil an einem Snapshot?
Snapshot-Mode Backups sind aber nicht so sicher wie Stop-Mode Backups, da du ja die VM im laufenden Betrieb sicherst. Wenn du eine VM aus einem Snapshot-Mode Backup wiederherstellst, dann ist es für die VM so, als hätte ein Stromausfall stattgefunden mit einem Crash aller laufenden Anwendungen. Konsistent sollten die Backups zwar eigentlich trotzdem sein, zu mindestens solange du den QEMU Gastagent installierst und einstellst, da dieser dann vor dem Snapshot-Backup einmal alle Caches leer, aber ob alle deine Anwendungen einen Crash gut vertragen ist immer noch eine andere Sache.
 
Danke für Deine Hilfe. Bin gerade an der Entscheidungsfindung zwischen Stop-Mode und Snapshot.

In der VM läuft übrigens nur eine Nextcloud Instanz. Als LAMP und Nextcloud.
qemu-guest-agent ist installiert und aktiv. Muss ich da für den Snapshot-Mode noch etwas einstellen?

Mal angenommen ich fahre folgende Backupstrategie:
Einmal die Woche Sonntag Nacht ein Vollbackup (ca. 6h)
Mo-Sa ein nächtlicher Snapshot (ca. 1h)

Falls ich eine Wiederherstellung machen muss, alle Snapshots jedoch inkonsistent sind, könnte ich zum 100% sicheren Vollbackup zurück, welches dann aber im worst case 7 Tage alt wäre. korrekt?

Ich hätte dadurch jedoch den Vorteil, dass die Instanz nur Sonntag Nacht für ein paar Stunden nicht erreichbar wäre. Mit dem Nachteil dass die Daten aus dem Snapshot allenfalls inkonsistent sind.

Oder gibt es ein bessere Strategie?
 
Mal angenommen ich fahre folgende Backupstrategie:
Einmal die Woche Sonntag Nacht ein Vollbackup (ca. 6h)
Mo-Sa ein nächtlicher Snapshot (ca. 1h)

Falls ich eine Wiederherstellung machen muss, alle Snapshots jedoch inkonsistent sind, könnte ich zum 100% sicheren Vollbackup zurück, welches dann aber im worst case 7 Tage alt wäre. korrekt?

Ich hätte dadurch jedoch den Vorteil, dass die Instanz nur Sonntag Nacht für ein paar Stunden nicht erreichbar wäre. Mit dem Nachteil dass die Daten aus dem Snapshot allenfalls inkonsistent sind.

Oder gibt es ein bessere Strategie?
Jup, genau so mache ich das hier auch. Und das ganze dann in zwei getrennten Datastores, damit ich unterschiedliche Backup Retentions nutzen kann. Weil die Snapshot-Mode Backups will ich nur für 2 Wochen behalten und die wöchentlichen über Jahre. Hätte ich da einen Datastore für beide Backup-Jobs, dann könnte es sein, dass da die unsichereren Snapshot-Backups für die Langzeitsicherung benutzt werden würden und nicht die sichereren Stop-Mode Backups. Zwei Datastores heißt dann aber auch doppelter belegter Platz, da nur Daten innerhalb eines Datastores dedupliziert werden können.
Mit nur einem Datastore wäre es Zufall, ob da ein Snapshot-Mode oder ein Stop-Mode Backup bei einer monatlichen/jährlichen Backup-Retention behalten werden würde.
 
Last edited:
Zwei Datastores heißt dann aber auch doppelter belegter Platz, da nur Daten innerhalb eines Datastores dedupliziert werden können.

Hat jemand (Praxis-)Erfahrungen mit der ZFS-Deduplication in diesem Fall?
 
Jup, genau so mache ich das hier auch. Und das ganze dann in zwei getrennten Datastores, damit ich unterschiedliche Backup Retentions nutzen kann. Weil die Snapshot-Mode Backups will ich nur für 2 Wochen behalten und die wöchentlichen über Jahre. Hätte ich da einen Datastore für beide Backup-Jobs, dann könnte es sein, dass da die unsichereren Snapshot-Backups für die Langzeitsicherung benutzt werden würden und nicht die sichereren Stop-Mode Backups. Zwei Datastores heißt dann aber auch doppelter belegter Platz, da nur Daten innerhalb eines Datastores dedupliziert werden können.
Mit nur einem Datastore wäre es Zufall, ob da ein Snapshot-Mode oder ein Stop-Mode Backup bei einer monatlichen/jährlichen Backup-Retention behalten werden würde.
Bei mir sieht das folgendermassen aus:

server@extern (beide Instanzen PVE und PBS laufen auf der gleichen Hardware)
--------> PVE mit VM nextcloud | Backup auf PBS
--------> PBS datastore

server@home (beide Instanzen PVE und PBS laufen auf der gleichen Hardware)
--------> PVE mit diversen VMs| Backup auf PBS
--------> PBS datastore | pull datastore von PBS datastore server@extern

Ich sollte also eine exakte Kopie von den Backups auf server@extern auf dem server@home haben.

Ahh ich habe gerade kapiert was du mit den getrennten Datastores meinst. Du meinst 2 Datastore auf demselben PBS? Die unterschiedlichen Backup Retentionen bekomme ich aber auch wenn ich verschiedene Backup-Jobs anlege. Bei mir habe ich das folgendermassen gelöst:

1645914865568.png

Wobei ich noch am rausfinden bin, wie ich die Verbindung von PBS@home und PBS@extern am sichersten hinbekomme..... eigentlich möchte ich nicht den Port 8007 einfach ins Netz stellen.
 
Hat jemand (Praxis-)Erfahrungen mit der ZFS-Deduplication in diesem Fall?
Leider nein. ZFS Deduplication war mir bisher zu heikel. Das verbraucht ja wohl 5GB mehr RAM pro 1TB an Daten und selbst wenn man danach die Deduplication wieder entfernen sollte wird der Pool immer noch diesen extra RAM benötigen. Man müsste also erst den Pool löschen um den RAM wieder frei zu bekommen. RAM ist mir eh schon immer die knappste Ressource. Aber ja, mit zusätzlicher ZFS Deduplikation müsste man wohl Platz sparen können bei mehreren Datastores.
 
Last edited:
Ahh ich habe gerade kapiert was du mit den getrennten Datastores meinst. Du meinst 2 Datastore auf demselben PBS? Die unterschiedlichen Backup Retentionen bekomme ich aber auch wenn ich verschiedene Backup-Jobs anlege. Bei mir habe ich das folgendermassen gelöst:

View attachment 34656
Leider nein. PBS/PVE unterscheiden da nicht zwischen Backups der selben VM von verschiedenen Jobs. Wenn du einfach nur fix die 30 letzten Backups haben willst ist es nicht das Problem. So wie von dir eingestellt wirst du immer 4 Stop-Mode Backups und 26 Snapshot-Mode Backups haben.
Das ist meiner meinung nach aber ziemliche Platzverschwendung. Man könnte genau so gut 14 tägliche + 8 wöchentliche + 12 monatliche + 5 Jährliche Backups behalten. Dann hast du auch nur knappe 40 Backups, kannst aber viel weiter zurück. Und je weiter die Backups in der Vergangenheit liegen, desto unwichtiger werden ja auch die Abstände zwischen den Backups.
Sowas wie "keep-last=20" für den Stop-Mode Job und "keep-last=10" für den Snapshot-Mode Job klappt z.B. nicht. Da würde PBS dann keine 30 Backups behalten sondern nur 10, egal von welchem Job die erstellt wurden, und PVE würde dir einfach immer alles weglöschen was was 10 Backups auf dem PBS überschreitet. Da hättest du dann immer nur 9 Snapshot-Mode und 1 Stop-Mode Backups.
Wenn du da unterschiedliche Backup Retentions für beide Jobs haben willst geht das nur, wenn du auf dem selben PBS je einen eigenen Datastore für jeden Backup Job anlegst. Jedenfalls solange beide Jobs die gleichen Gäste sichern sollen.
 
Last edited:
Okey. Verstanden.

Dann wäre es also besser, 2 Datastores einzurichten, jeweils eines für Stop-Mode und ein anderes für Snapshots?

Theoretisch brauche ich max. 1 Woche zurück. Dann reichen also in beiden Jobs (Stop-Mode und Snapshot) jeweils 7 Tage behalten?

Ich muss keine alten Daten wiederherstellen können die versehentlich gelöscht wurden und älter als 1 Woche alt sind.
 

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!