PVE Datastores mit verschiedenen knotenabhängigen ZFS-Zielen

Dataset ist meiner Ansicht nach eigentlich der Oberbegriff für ZFS-Volume und ZFS-filesystem, wird aber manchmal nicht einheitlich verwendet. letzlich liegen Volumes und Filesystems unter einem anderen anderen Filesystem (ggf. dem Root-Filesystem des ZFS-Pools). Der Trick wäre jetzt, dass das Root-Filesystem für den ZFS-Storage optional nicht anhand des Namens sondern nach seinem Mointpint bestimmen kann (also eine einfache Namensauflösung).

Sämtliche ZFS-Kommandos müssen natürlich immer den offiziellen Dataset-Namen (ohne /) verwenden.
Genau das ist das Problem. Unter Storages kannst du ja deine Mountpoints hinzufügen, aber da die ZFS Kommandos im Hintergrund mit dem richtigen ZFS-Pool Namen arbeiten müssen, ist dieser Name hinterlegt, damit die Replikation auch funktioniert.
Man müsste eine extra integration schreiben, wo man in der GUI einen Anzeigenamen hat und dann pro Host einen Pool angeben kann. Dann brauchen wir einen Übersetzer, der für die ZFS Kommandos den richtigen Pool auf dem jeweilgen Host anspricht.
Die Erweiterung wäre jetzt nur, dass dieser Dataset-Name nicht direkt im Storage drinsteht, sondern optional sein Mountpoint, so dass ich den auf ZFS-Ebene verändern kann. Proxmox müsste jetzt nur den echten Dataset-Namen des Storages über den Mountpint bestimmen und dann geht alles wie bisher. Das wäre dann auch recht ähnlich zu Proxmox-File-Storages, wo man (natürlicherweise) ja auch den Mountpoint und nicht den physischen Filesystem-Namen referenziert.
 
Mit meinem zweiten Vorschlag, die ZFS-Mountpoints auszuwerten, ist doch gerade keine GUI-Änderung erforderlich (außer ggf. am Anfang des Zielnamens ein "/" zuzulassen). Wo ist denn jetzt das große Problem? Proxmox müsste nur statt das Storage-Ziel als ZFS-Name zu nehmen, auf dem jeweiligen Host nachschauen und über den Mountpoint den ZFS-Namen bestimmen.

Ähnlich machen das z.B. uach Urbackup und zwar sowohl auf Server und Client. Man gibt für die Client dort einen zu sichernden Pfad an, und dann sucht Urbackup über die Mountspoints das übergeordnete ZFS-Dateisystem, macht einen Snapshot für Konsistenz darauf, und sichert dann den angegebenen Pfad. Der Zielpfad auf dem Server ist ebenfalls nur ein normaler Pfad. Urbackup schaut dann, ob der zu einem ZFS-Dateisystem gehört, sucht den entsprechenden übergeordneten ZFS-Namen heraus und arbeitet dann mit diesen Namen für alle ZFS-Operationen.
 
Last edited:
Aber dazu muss eine extra routine eingebaut werden, weil sich das dann von allen anderen Shared Storages unterscheidet.
Ich verstehe auch nicht das Problem einen Fast-Pool auf jedem Host Fast-Pool zu nennen und mit Slow das gleiche.
Dann ist das übersichtlich für jeden. Ich glaube wir drehen uns im Kreis. Du kannst ja mal einen Bugzilla Request aufmachen mit deiner Idee, mal sehen was das Team dazu sagt.
 
Aber dazu muss eine extra routine eingebaut werden, weil sich das dann von allen anderen Shared Storages unterscheidet.
Ich verstehe auch nicht das Problem einen Fast-Pool auf jedem Host Fast-Pool zu nennen und mit Slow das gleiche.
Dann ist das übersichtlich für jeden. Ich glaube wir drehen uns im Kreis. Du kannst ja mal einen Bugzilla Request aufmachen mit deiner Idee, mal sehen was das Team dazu sagt.
Also dass es eine Änderung / Verbesserung ist, habe ich ja gesagt. Also ist klar, dass man dafür Code ändern muss.

Und es unterscheidet sich auch nicht so wirklich, denn es gibt ja kein generisches Shared-Storage sondern explizit ein ZFS-Modul, dass speziell auf ZFS abgestimmt ist. Dort soll halt nur die Art und Weise der ZFS-Namenbestimmung erweitert werden.

Das ursprüngliche Problem ist, dass große Pools sich nicht so einfach umpartitionieren lassen und man würde mit der Änderung erhebliche Flexibilität bekommen, den die Speichersicht neu zu konfigurieren. Wenn ich also z.B. eine Backup-Server mit einem einen einzigen großen Pool habe, kann ich jetzt nicht alle Maschinen, die auf anderen Hosts auf verschiedenen Pools liegen dort hinreplizieren, weil der ZFS-Name überall gleich sein muss. Ich müsste also auf dem Backup-Server auf den Platten für jeden Pool eigene Partitionen anlegen und dann mehrere Pools auf denselben Platten laufen lassen (unschön, langsam und Speicherplatzverschwendung) oder noch viel mehr Platten einbauen (teuer, unflexibel bzw. Gehäuse-Beschränkungen). Das ist alles sehr unprakisch. Mit meinem Voschlag kann man den Speicher auf jedem Host so umkonfigurieren, dass die logische Sicht passt.
 
Last edited:
Ist echt ein Spezial-Problem, daß nur auftritt, wenn man zfs benutzt ... :)
Aber die Idee mit dem bugzilla Request ist doch garnicht so verkehrt - noch nicht abgeschickt ?!?
Btw. hätte ja auch noch gerne einen Button oder pulldown Menü für Node Maintenance Mode im Web-UI ... :)
 
Btw. hätte ja auch noch gerne einen Button oder pulldown Menü für Node Maintenance Mode im Web-UI ... :)
Da gibt es glaube ich auch schon einen Request für, einfach mal mit anhängen und Druck machen. ;)
 
  • Like
Reactions: waltar
Jetzt schlägt das Problem wieder zu. Mehrere Server wo einer Server mit auf einem schnellen Pool ein Problem hat und ich die VMs nirgendwo hinmigrieren kann, obwohl auf anderen Servern genug Platz wäre. Es wäre kein Problem, wenn man halt den Storage flexibler konfigieren könnte.

Die Änderung wäre wie gesagt recht einfach: Es müsste nur statt "zpoolname/zfsname" auch "/dirname/zfsname" zugelassen werden. Proxmox müsste dann nur bestimmen auf welchem ZFS-Dateisystem "/dirname/zfsname" liegt. Damit könnte man hardlinks, symlinks oder auch mounts nehmen, um lokal auf jedem Server die logische äußere Struktur auf den physikalischen Gegegbenheiten anzupassen.

Beispiel:
Server 1:
Zwei ZFS-Dateisystem auf zwei Zpools: data1fast/fastvms data1big/bigvms
Ich legen die folgenden Symlinks an:
/universaldata/fastvms -> /data1fast/fastvms
/universaldata/bigvms -> /data1big/bigvms
Server 2:
Ein großer zpool hugepool/allvms
Ich lege die folgenden Symlinks an:
/universaldata/fastvms -> /hugepool/fastvms
/universaldata/bigvms -> /hugepool/bigvms

In Proxmox lege ich nun zwei ZFS-Storages an mit Zielen "/universaldata/fastvms" und "/universaldata/bigvms".

Auf der Proxmx-Oberfläche bleibt alles gleich. Nur bei der Replikation ist eine Indirektionsstufe enthalten, um auf Quell- und Ziel-Server aus dem Dateisystempfad (beginnend mit /) den ZFS-Dateisystemnamen zu bestimmen.
 
Last edited:
  • Like
Reactions: waltar
Ein anderer Ansatz wäre, wenn man bei der Replikation nicht nur den Zielserver sondern auch den Ziel-Storage wählen könnte.
Gibt es dazu überlegungen beim Proxmox-Team?
 
  • Like
Reactions: UdoB and waltar
Ein anderer Ansatz wäre, wenn man bei der Replikation nicht nur den Zielserver sondern auch den Ziel-Storage wählen könnte.
Gibt es dazu überlegungen beim Proxmox-Team?

dann wuerde die config aber nicht mehr stimmen - deswegen machen wir das nicht..
 
Wieso würde die nicht stimmen? Natürlich, denn es ist eine anderen Ebene, denn bei Directory-Storage ist es ja dasselbe, auch da könnte der Pfad durch Links oder mounts ganz anderes eingehängt sein.

Noch ein anderen einfacher Ansatz, wo auch die Config stimmen würde, wäre zuzulassen, dass pro Server ein anderer ZFS-Name eingetragen werden kann. Man kann ja jetzt schon sagen, dass ein ZFS-Storage nur auf bestimmten Server zur Verfügung steht. Die kleine Erweierung wäre nun, mehrere solche Einträge zuzulassen, so lange die Server disjunkt sind.
 
Genau da ist ja das Problem. Wir nutzen hier kein Directory Storage wo ein zusätzliches Dateisystem Overhead produziert. Bei Block Storage kannst du schlecht mit links arbeiten. Somit ist das System schön einfach und übersichtlich. Nur weil es bei seltenen Setups anders schöner wäre, muss man den Komfort für das Standardsetup nicht kaputt machen.
 
  • Like
Reactions: Johannes S
Das sehe ich nicht so.
Wir nutzen hier kein Directory Storage wo ein zusätzliches Dateisystem Overhead produziert.
Wir schon. Zudem kann man einen zpool erstellen, ohne irgendwelche zvols oder datasets anzulegen, anschliessend kann man beliebig viele Dir's und Files direkt im poll ablegen, man hat also auch mit zfs einen default Filesystem overhead, der auch bekanntermaßen deiutlich größer als bei nicht zfs Systemen ist, weil es ja u.a. die checksumm erzeugen und zusätzlich schreiben wie auch lesen und verwalten muß.
Somit ist das System schön einfach und übersichtlich.
Wenn es so schön einfach wäre würde es nicht diese vielen Space und Container restore und und und Probleme mit block storage geben, der zumindest für zfs will mal sagen immer noch einfacher als bei lvm ist, aber auf keinstenfalls so einfach wie Filestorage, womit sich jeder auskennt der einen Windows, MAC oder Linux Rechner hat/betreibt. Migration von vm/lxc von einem in anderen NIcht_cluster Host ist ein scp oder mit nfs ein. Ein lxc restore kann bei uns rein technisch niemals ein Größenproblem beim restore von einem snapshot oder vom backup haben. Wir haben auch prinzipbedingt keine lxc mount sicher- oder nicht-sichern Probleme. - das ist einfach !!
Nur weil es bei seltenen Setups anders schöner wäre, muss man den Komfort für das Standardsetup nicht kaputt machen.
Kann meinerseits auch gerne so bleiben wie es ist, wenn denn einfach alle Möglichkeiten wie derzeit gegeben, also freie Wahl der Storage Einbindung, auch weiterhin geben sind.
 
Last edited:
Das sehe ich nicht so.

Wir schon. Zudem kann man einen zpool erstellen, ohne irgendwelche zvols oder datasets anzulegen, anschliessend kann man beliebig viele Dir's und Files direkt im poll ablegen, man hat also auch mit zfs einen default Filesystem overhead, der auch bekanntermaßen deiutlich größer als bei nicht zfs Systemen ist, weil es ja u.a. die checksumm erzeugen und zusätzlich schreiben wie auch lesen und verwalten muß.
Naja hier wirfst du einiges durcheinander, Klar kannst du in dem Dataset (nicht dem Pool) schön Dateien ablegen, aber wozu wenn man nur VMs betreibt?
Wenn es so schön einfach wäre würde es nicht diese vielen Space und Container restore und und und Probleme mit block storage geben, der zumindest für zfs will mal sagen immer noch einfacher als bei lvm ist, aber auf keinstenfalls so einfach wie Filestorage, womit sich jeder auskennt der einen Windows, MAC oder Linux Rechner hat/betreibt.
Welche Probleme meinst du? Block macht in der Regel deutlich weniger Probleme, außer man kommt mit der gewohnten Dateisystem Denke und psilt das System kaputt, weil man sich nicht mit der Technik auseinandersetzt. Ich habe noch nie ernsthafte Probleme mit Block storage gesehen.
Migration von vm/lxc von einem in anderen NIcht_cluster Host ist ein scp oder mit nfs ein. Ein lxc restore kann bei uns rein technisch niemals ein Größenproblem beim restore von einem snapshot oder vom backup haben. Wir haben auch prinzipbedingt keine lxc mount sicher- oder nicht-sichern Probleme. - das ist einfach !!
Klar ist das einfach wenn man gewohnte Tools benutzen möchte und im Homebereicht ist das eventuell auch besserr so. Ich betreue eigentlich fast nur Enterprise Kunden und da gibts in der Regel auch keine LXC und Migrationen sind mit block storage oft noch einfacher als kopieren per scp.
Kann meinerseits auch gerne so bleiben wie es ist, wenn denn einfach alle Möglichkeiten wie derzeit gegeben, also freie Wahl der Storage Einbindung, auch weiterhin geben sind.
Du hast ja alle Möglichkeiten, nur nicht alles in der GUI. Sonst ist die GUI wieder komplett überladen wie bei anderen Projekten.
In der GUI sind die Features die 90% der Leute benötigen und das ist gut so.
 
  • Like
Reactions: Johannes S
Naja hier wirfst du einiges durcheinander, Klar kannst du in dem Dataset (nicht dem Pool) schön Dateien ablegen, aber wozu wenn man nur VMs betreibt?
Ich will nichts durcheinander werfen, man legt dort ja auch nichts an !!), es geht nur um die Aussage "da ist nix mit overhead" im pool mit Bsp,
Welche Probleme meinst du? Block macht in der Regel deutlich weniger Probleme, außer man kommt mit der gewohnten Dateisystem Denke und psilt das System kaputt, weil man sich nicht mit der Technik auseinandersetzt. Ich habe noch nie ernsthafte Probleme mit Block storage gesehen.
Dann lies mal die endlosen threads bzgl. block storage, egal ob zfs oder lvm, dann weißt du was ich meine.
Nur weil du keine hast, finden sich endlose andere pve AW's da oft im hilflos im Regen, aber vielfach gibt's ja auch Hilfe zur Lösung.
Du hast ja alle Möglichkeiten, nur nicht alles in der GUI. Sonst ist die GUI wieder komplett überladen wie bei anderen Projekten.
In der GUI sind die Features die 90% der Leute benötigen und das ist gut so.
Genau, ist mir teilweise jetzt schon zuviel ..., aber kann damit leben so einiges nicht zu drücken :)
 
Ich will nichts durcheinander werfen, man legt dort ja auch nichts an !!), es geht nur um die Aussage "da ist nix mit overhead" im pool mit Bsp,
Klar bringt ein Dataset Overhead mit. Deshalb nutzen wir ja nur das Pooling. Liegt in der Natur der Sache, dass ein Dateisystem auch overhead erzeugt.
Dann lies mal die endlosen threads bzgl. block storage, egal ob zfs oder lvm, dann weißt du was ich meine.
Nur weil du keine hast, finden sich endlose andere pve AW's da oft im hilflos im Regen, aber vielfach gibt's ja auch Hilfe zur Lösung.
Klar lese ich immer wieder wie Leute zuhause aus Unwissenheit ihr Storage kaputt basteln. So lernt man auch ganz viel, aber im Enterprise Bereich wo man weniger bastelt und eher mal jemand mit Ahnung fragt oder ein Support Ticket aufmacht, gibt es die Probleme gar nicht.
 
  • Like
Reactions: Johannes S
OHNE dataset ... OHNE !!!
Und lvm ist beileibe nicht einfach, zfs macht es recht einfach, ist aber für viele immer noch zu abstrakt, der Mensch denkt halt "zum Anfassen" und das sind halt Files und Dir's ... :) Und lernen schadet auch nicht, zumal wenn es wie mit Proxmox soviel Spaß macht !! :)
 
Wenn ich einen Samba auf Fileserver starte kann ich auch mit einem Win Explorer snapshot oder Restore von Backupserver im pve einspielen, mach das mal mit zvols :)
 
OHNE dataset ... OHNE !!!
Und lvm ist beileibe nicht einfach, zfs macht es recht einfach, ist aber für viele immer noch zu abstrakt, der Mensch denkt halt "zum Anfassen" und das sind halt Files und Dir's ... :) Und lernen schadet auch nicht, zumal wenn es wie mit Proxmox soviel Spaß macht !! :)
Ohne Dataset bekommst du keine Dateien abgelegt. In einen Blockpool kannst du nun mal keine Dateien ablegen, dafür brauchst du ein Dataset.
 
  • Like
Reactions: Johannes S
root@pve3:~# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
dpool 9.09T 1.55T 7.54T - - 1% 17% 1.00x ONLINE -
rpool 118G 4.90G 113G - - 13% 4% 1.00x ONLINE -
root@simlab03:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
dpool 1.74T 7.23T 1.30G /dpool
dpool/c1 520G 7.23T 520G /dpool/c1
dpool/c2 1.01T 7.23T 1.01T /dpool/c2
dpool/c3 34.5G 7.23T 34.5G /dpool/c3
dpool/hohoho 33.5G 7.26T 56K -
dpool/unsinn 34.0G 7.26T 56K -
dpool/vm-1118-disk-0 33.5G 7.26T 56K -
dpool/vm-118-disk-0 32.5G 7.26T 56K -
dpool/vm-153-disk-0 32.5G 7.26T 56K -
dpool/vm-2118-disk-0 33.3G 7.25T 6.26G -
rpool 4.89G 109G 104K /rpool
rpool/ROOT 4.83G 109G 96K /rpool/ROOT
rpool/ROOT/pve-1 4.83G 109G 4.83G /
rpool/data 96K 109G 96K /rpool/data
#
root@pve3:~# mkdir /dpool/geht-nicht-dir
root@pve3:~# touch /dpool/geht-nicht-dir/files-geht-auch-nicht
root@pve3:~# l /dpool/geht-nicht-dir/files-geht-auch-nicht
-rw-r--r-- 1 root root 0 Feb 19 23:16 /dpool/geht-nicht-dir/files-geht-auch-nicht # geht doch ganz einfach ohne zu laufen :)