ZFS: zvol vs dataset --- Frage (betrifft auch Backup-Strategie)

Dec 19, 2012
494
14
83
Hallo.
Wenn ich das richtig sehe, legt Proxmox im Zusammenhang mit ZFS immer ZVOLs aber niemals Datasets an, richtig?
Kann man dennoch ZFS-Datasets unter Proxmox nutzen?

Der Hintergrund der Frage ist dieser:
Ich hab eine VM, die ein ziemlich großes /home-Verzeichnis besitzt. Dort liegen Files von ca 1300 Usern -- und obwohl es ein Quota gibt, kommt da 'ne Menge Zeug zusammen. Im Moment ist diese VM so strukturiert, dass jeder Mountpoint (/home, /var und / ) in einem eigenen ZVOL liegt. Somit funktionieren Snaphosts hier wunderbar (auch bei einzelnen ZVOLs oder gleich alle in einem Rutsch). Nachts läuft zfs-auto-snapshot und fast alles ist gut.
Warum nur fast? Wenn ich das richtig sehe, habe ich auf diese Weise leider keinen Zugriff auf Einzeldateien, da die ZVOLs (im Gegensatz zu den Datasets) blockorientiert arbeiten, korrekt?

Konkretes Beispiel:
Ein User hat in seinem /home/-Verzeichnis eine "wichtige_Datei_die_nicht_geloescht_werden_durfte_aber_versehentlich_doch_geloescht_wurde.txt"
MIt ZFS-Mitteln kann ich einen Snapshot zurückholen, der dann aber für das komplette /home-Verzeichnis gilt.
Ein dateibasiertes Backup könnte man natürlich zusätzlich z.B. mit BackupPC oder diversen anderen Tools innerhalb der VM realisieren, aber wenn man /home als Dataset und nicht als ZVOL anlegen würde, könnte man das gleiche doch direkt mit ZFS-Bordmitteln erreichen und müsste nicht andere Tools on top bemühen, oder?
Stimmt der Gedanke so? Daher zurück zur Frage ganz oben...
 
VMs verwenden Block Devices. Deshalb ZVOLs. Wenn du Dateibasierte Backups nicht innerhalb der VM sondern auf Host Ebene machen willst musst du das Dateisystem in die VM bekommen. AFAIK gibt es da keine magische Lösung sondern du wirst auf klassische Lösungen wie NFS Export am Host und in der VM entsprechend mounten.

Wenn du dann aber so Dinge wie HA und Cluster haben willst wird das ziemlich schnell problematisch da du dich an einen einzelnen Host bindest.
 
oder habe ich da was übersehen?
Das wird technisch nicht so einfach gehen. Ein Container ist nichts anderes als eine Anzahl von Prozessen die mehr oder weniger abgeschottet auf dem gleichen Kernel wie der Proxmox VE Host laufen. Entsprechend kann man ihm schreib und leserechte auf ein ZFS subvol geben und ihm vorgaukeln, dass das sein root (/) ist.

Eine VM ist ein eigener Kernel der seine Dateisysteme selber mounted und verwaltet. Ja es gibt bei verschiedenen Virtualisierungslösungen diverse Funktionen um einen Ordner mit dem Gast zu teilen.
Diese funktionieren aber auch immer mit irgendwelchen Netzwerkdateisystemprotokollen o.Ä. und brauchen auch innerhalb des Gastes installierte Software die das dann für den User transparent einbindet.

Proxmox VE hat soweit ich weiß keine automagische Lösung dafür.

Für dein Problem, eine Datei aus einem snapshot des ZVOLs wiederherzustellen könnte es auch evtl klappen, das Dateisystem des snapshots lesend auf dem Host zu mounten und dann anderweitig wieder in die VM zu schieben. Hab das aber nicht getestet.

Vielleicht hat jemand noch eine andere Idee.
 
Ok, das erklärt einiges.

Wie wäre es, wenn man die Ideen von oben kombiniert:
Das ZVOL läuft einfach weiter wie es ist. Aus dieser VM rsync'ed man /home in einen LXC-Container (z.B. Debian 10 aus der turnkey-Liste). Damit hätte man das Verzeichnis zusätzlcih als Dataset und könnte dort mit Snapshots weiterarbeiten. Ob das letztlich mehr Komfort bietet als BackupPC mitsamt Webinterace und Versioning ist aber eine ganz andere Frage ...
 
Ok, das erklärt einiges.

Wie wäre es, wenn man die Ideen von oben kombiniert:
Das ZVOL läuft einfach weiter wie es ist. Aus dieser VM rsync'ed man /home in einen LXC-Container (z.B. Debian 10 aus der turnkey-Liste). Damit hätte man das Verzeichnis zusätzlcih als Dataset und könnte dort mit Snapshots weiterarbeiten. Ob das letztlich mehr Komfort bietet als BackupPC mitsamt Webinterace und Versioning ist aber eine ganz andere Frage ...

es ist auch möglich einen snapshot eines zvols als block device zu exposen - sh. "snapdev" property in "man zfs". das ist quasi das analog zu snapdir, welches snapshots von datasets in .zfs/snapshot read-only mounted. je nachdem was auf dem zvol drauf ist (partitionstabelle? direkt filesystem? LVM?) sind die schritte um die eigentlichen daten zu mounten natürlich unterschiedlich involviert, aber das sollte prinzipiell leicht möglich sein. snapshots sind immer immutable, dh. gegebenenfalls müssen entsprechende parameter an mount und co übergeben werden sonst versuchen die befehle eventuell zu schreiben und liefern fehlermeldungen.
 
Hallo whiterabbit,

ich würde mir vielleicht überlegen, einen guten Backup Server einzurichten.
Mit ZFS Snapshots geht dass bestimmt auch, aber bei 1300 Usern wäre das mir zuviel Aufwand.

Ich setzte seit 6 Jahren einen Bacula Server ein.

Seit der Version 9 hat sich im Webfrontend einiges getan.

DEMO
http://baculum.baculus.pl/web/ Zugang admin/admin

in der linken Spalte zu "Restore wizard" gehen.
Später den Client auswählen, Daten per DRAG and DROP in ein Fentser ziehen und den Restore beginnen.

Zugegeben, Bacula oder Bareos ist am Anfang echt nicht so einfach.

Das Buch
https://www.eurobuch.com/buch/isbn/9783955391003.html

ist sehr sehr hilfreich, zumal auf der DVD ein laufender Bacula Server eingerichtet worden ist bzw. man diesen sofort nutzen kann.

Ich sichere auch einige Server oder Laufwerke per snapshot mit send/receive auf anderen Laufwerken oder auf externe Proxmox Server, aber der zfs rollback kann Dir übelst mitspielen, wenn man nicht genau weiss, was man macht.
zB. zfs clone und zfs destroy.


Bei 20 Usern hatte ich schon einen Samba Server eingerichtet mit ZFS (Shadow Copy), dass ging auch, da konnte man wie bei einem Windows Server 2012 mit Shadow Copy Daten zurückspielen.

Allerdings kann man den Überblick teilweise nicht mehr im Auge behalten, da ja noch die ganzen Updates dazu kommen, sowohl auf dem Promox als auch auf der VM.

Mein Rat, investiere etwas Zeit in einen guten Backup Server, der jede Datei sichert.
 
Ja, ein filebasiertes Backup (neben den Vollbackups) ist sicher keine schlechte Idee (zumindest für /home). Ich habe gerade erst heute BackupPC 4 zum Laufen gebracht. Das kommt ebenfalls mit einem Webfrontend daher -- lief super.

Übrigens: Der Buchpreis (in der Grafik auf deiner verlinkten Seite) entwickelt sich ja überaus großzügig :)
 
Last edited:
keine Sorge ... die Full-Backups werden täglich rotierend auf unterschiedlichen Systemen in unterschiedlichen Brandabschnitten abgelegt. Das ist nicht das Problem.
Die zfs-rocks-Videos (Teil 002) war der Ausgangspunkt meiner Frage :)
 

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!