Storage Überlegungen Proxmox

scooter010

Commander
Registriert
Sep. 2014
Beiträge
2.811
Moin!



TL;DR
Wie kann ich Speicherplatz in Form von mehreren Pools in Proxmox so verwalten, dass mehrere Container als auch Benutzer per Netzwerk die Daten gleichzeitig verwenden können, diese aber von Proxmox weiterhin gesnapshottet und gesichert werden können (per USB und auf einen Proxmox Backup Server)?


Ich habe bereits zwei Proxmox am Laufen und möchte den "größeren" der Beiden upgraden, neu strukturieren und dabei von Disks zu SSDs wechseln, weil ich nicht (mehr) soooo viel Speicherplatz benötige.

Zukünftig plane ich
  • 2x NVMe (RAIDz1, netto 2TB)
  • 2x SATA SSD (RAIDz1, Netto 4TB) für meine Daten und VMs/LXCs zu verwenden
  • (2x HDD für Archivdaten, aber erstmal nicht)
  • Supermicro X11
    • 2x NVMe (PCIe4)
    • 8x SATA
    • 4x DDR4 DIMM
    • ECC
    • 2x 1G NICs
  • i3 8100
    • 4C/4T
    • ECC
  • 96 GB DDR4 ECC RAM
  • USV
  • Switch(e) mit VLAN-Support

Frage:
Ich habe noch 2 128GB NVMe herum liegen. Macht es bei Proxmox Sinn, das OS auf diese "auszulagern". Dafür gibt es ja diese Adapterkarten. Wenn es Sin macht, gibt es "bessere" bzw. günstigere Optionen?


Was will ich machen:

Ich möchte mit dem Proxmox viele Dinge machen, u.A.
meine Dateien mittels einer Nextcloud im Internet bereit stellen (für mich und Familie).
Derzeit habe ich es so gelöst, dass ich die Pools mit meinen Daten nach /mnt (PM-Host) gemountet habe und von da dann MountPoints in den Nextcloud LXC nach `/var/www/nextcloud-data/...`gemounted habe. Da es in der Familie geteilte Ordner gibt, unter Verwendung von Groupfolders. Da die korrekten MPs heraus zu finden war nervig.
Das Ergebnis ist jedoch unbefriedigend, da dieses Vorgehen von NC nicht unterstützt wird und manche Daten trotzdem außerhalb der Mountpoints landen, was / des NC-LXC hat voll laufen lassen -> Server tot, ergo: scheiß-Konfig.
Weiterhin möchte ich meine Daten (also Dokumente, Fotos, etc.) am liebsten komfortabel über die Proxmox-Oberfläche mit sichern. Vorzugsweise auf einen Proxmox-Backup-Server (uraltes QNAP NAS mit Atom-CPU, 2 oder 3 GB RAM und 5 Slots) bei meinen Eltern. Zusätzlich eine bzw. 2 externe USB-HDD(s).
Ich möchte sowohl einige Docker als auch ein paar LXC und vielleicht 2 VMs laufen lassen. Einige wenige (wie Vaultwarden oder Proxy) haben außer ihrer Konfiguration keine Daten, können also als Snapshot vollständig und halbwegs effizient gesichert werden. Andere Container (sowohl docker als auch LXC) wie z.B. git sollen (auf Teile) der Dokumente Zugriff erhalten. Vielleicht ein Container zur Verwaltung von Fotos, ein weiterer als gittea für Dokumentationen oder Notizen, ein audiobookshelf für die Hörbücher usw. Natürlich auch das Mounten über Netzwerk vom Laptop aus.

Da man Container und Daten trennen soll(te), frage ich mich nun, wie ich den ganzen Containern den Speicherplatz bereit stellen kann. Wenn ich die Daten einfach nur im Host habe, dann werden die entweder nicht mit gesichert, oder ich hänge da mit drölfzig mountpoints und ich kann/sollte die Daten jeweils nur max einem Container zur Verfügung stellen. Ist also IMHO keine Lösung.

Idee:
Ich erzeuge eine TrueNAS VM, welche die Daten hostet und diese per NFS für die ganzen Container bereit stellt. Wenn ich nun meine 4 Speichermedien (logisch 2 pools) per "passthrough" an den Truenas durch reiche, dass die sich um das ZFS kümmert, dann ist ja das Proxmox-Backup bzw. der Proxmox-Backup-Server wieder raus. Und ich habe keinen Storage für die ganzen Container und VMs. Ich habe zwar noch 2 500GB SATA-SSDs, aber das ist ja nicht soooo viel Speicherplatz, könnte aber knapp reichen.

Gibt es dazu Alternativen? Wie kann ich den Speicherplatz sinnvoll bereit stellen, so dass der Proxmox die Daten selbst mit snapshottet und weg sichert und trotzdem mehrere Container diese Daten verwenden können?
 
scooter010 schrieb:
:
Ich erzeuge eine TrueNAS VM, welche die Daten hostet und diese per NFS für die ganzen Container bereit stellt.
Würde ich genau so machen, allerdings braucht es eigentlich gar kein trueNAS oder auch keine VM
Das kannst du locker in einem lxc machen, du willst ja eh proxmox nutzen für snapshots etc
 
  • Gefällt mir
Reaktionen: scooter010
Proxmox selbst kann zfs auch ganz gut, NFS eben so.. Im zweifelsfall braucht das keine VM
 
  • Gefällt mir
Reaktionen: Der_Dicke82 und scooter010
OK, das mit dem LXC kaufe ich. Der bekommt einfach "fast den ganzen" Speicherplatz. Dann kann man den Speicher mit einbinden. Welche storage-Art brauche ich dann, wenn die weiterhin zfs raidz1 sein sollen?
@madmax2010 Wenn das der Host macht, wie werden die Daten dann aus der gui heraus gesichert? Wären ja dann nur rein separate pools irgendwo gemounted. Proxmox unterstützt ja AFAIK keinen Dataset basierten Sicherungsservice?!
 
du kannst zfs datasets an LXC container durchreichen und auf dem LXC einen User anlegen, der auch auf dem Proxmox Root vorhanden ist.
https://www.schreiners-it.de/proxmox/zfs-share-an-unprivilegierten-lxc-durchreichen/
Die verschiedenen Datasets aus deinen ZFS Pool weist du dann an deinen "NetworkShare" Container weiter... Das kann TrueNAS sein, du könntest das aber auch selbst basteln, je nachdem was einfacher ist...
Du musst dich auch Fragen ob du direkt mit dem Hypervisor arbeiten willst, oder z.b. alles in einem Container löst was z.b. "nach draußen" muss...

zum Backuppen, kannst du ZFS eigene Tools verwenden um die entsprechenden Datasets übers Netzwerk zu senden...
https://docs.oracle.com/cd/E18752_01/html/819-5461/gbchx.html

Wenn du alle Daten in der VM oder dem LXC Container selbst haben willst kannst du auch den Proxmox Backup Server verwenden:
https://www.proxmox.com/de/proxmox-backup-server/uebersicht
 
  • Gefällt mir
Reaktionen: scooter010
Und so kann der Proxmox host weiterhin ungenutzten Speicher für weitere Container und VMs nutzen, ist ja ein pool...

Muss das dann ein previleged container sein?
Theoretisch könnte ich ja dann alle Nutzer auf dem Proxmox-Host anlegen und jeweils durch reichen...
 
Zuletzt bearbeitet:
clmns schrieb:
Das ist ja bind mount... Da ist der Nachteil, ich muss per zfs sichern.

zfs send und receive sind ja toll, aber haben einen Nachteil: Wenn man inkrementel sichern mövhte, muss man lokal die Übersicht behalten, von welchen snapshot das letzte backup angelegt wurde. Sonst hat man auf empfangsseite irgendwas.

Habe da nie ein zuverlässiges script zum laufen bekommen.

Als war für pools sollte ich die denn anlegen, damit ich die daten im Container habe aber trotzdem.noch platz für den Host und VMs?
 
Grade geschehen. Supported es nicht gemountete verschlüsselte empfänger?

Wie gesagt, ich möchte weg von zfs backups und am liebsten Richtung file based. Container dann als "dump"-file. Ist mir für privat zu komplex mit no Benefit im Vergleich zu rsync & co.

Bind mounts in lxc einbinden, da stehe ich ja grade und bin damit nicht zufrieden.
 
scooter010 schrieb:
Bind mounts in lxc einbinden, da stehe ich ja grade und bin damit nicht zufrieden.
dann das mal anschauen:
clmns schrieb:
Wenn du alle Daten in der VM oder dem LXC Container selbst haben willst kannst du auch den Proxmox Backup Server verwenden:
https://www.proxmox.com/de/proxmox-backup-server/uebersicht
da machste dann quasi wie im Proxmox Backup für jede VM, bzw jedes LXC nen Backup, nur dass das quasi ne VM ist die das ganze etwas besser macht, so mit incrementellen Backups auf ZFS Snapshot basis...
Du könntest bspw. bei deinen Eltern eine VM damit laufen lassen und übers VPN dann deine VMs oder Container wie z.b. deine Nextcloud backuppen...
Ergänzung ()

scooter010 schrieb:
Ich erzeuge eine TrueNAS VM, welche die Daten hostet und diese per NFS für die ganzen Container bereit stellt. Wenn ich nun meine 4 Speichermedien (logisch 2 pools) per "passthrough" an den Truenas durch reiche, dass die sich um das ZFS kümmert, dann ist ja das Proxmox-Backup bzw. der Proxmox-Backup-Server wieder raus.
annstatt passthrough würde ich wohl das mit den Mountpoints machen, von da kannst du immer noch alles per Netzwerkprotokoll freigeben. Ob du auf ein Bindmounts mit mehreren Containern gleichzeitig draufschreiben kannst geht wohl sicher irgendwie, aber ich weiß nicht ob das besser oder schlechter ist...

Es sei denn du willst die Platten die an TrueNAS durchgereicht werden nur für das NAS benutzen.
Ich glaube aber auch dass es nicht wirklich empfohlen ist TrueNAS virtualisiert laufen zu lassen.
Reicht dir nicht eventuell Samba für die Netzwerkshares? Oder was willst du mit TrueNAS alles lösen?
 
Zuletzt bearbeitet:
Der Vorteil soll halt sein: Der Host ist, bis auf seine eigene Konfig, absolut austauschbar und nur die VMs/LXCs enthalten die Daten.
Ich finde es umständlich, mit dem Host zu hantieren. Klar ist Linux, geht alles, aber ich habe kein Bock mehr auf selbst geschriebene Backup-Scripte. Oder selbst modifizierte. Man muss sie selbstständig monitoren und wenn was schief geht, bekommt man es im Zweifel nicht mit. Oder man steckt wieder mehr Aufwand in das Script. Aber das ist für privat, ich will kein ausgewachsenes Monitoring oder gar auditing betreiben (müssen).
Einfach in der gui sagen "Backup, inkrementell, Ziel" und die meldet sich schon, wenn was klemmt.
 
sure, whatever floats your boat...

für mich hat die Abstraktion von Daten und "Compute" gereicht...
woher, bzw. wo die Pools liegen die ich an den LXC weitergebe möchte ich vielleicht später ändern können... bspw. fürs gitea die Daten auf nen Flash Pool zusammen mit Datenpools wo Bilder und Dokumente liegen.
Audio und Video Dateien dafür dann eher auf HDD Storage.
Bzw. halte ich je nach Größe der Container die Daten in dem LXC selbst. Z.b. bei meiner Nextcloud und Gitea, bei meinem Samba LXC reiche ich die Mountpoints meiner ZFS Datasets durch...
So habe ich managebare Daten bei den Backups meiner LXC Container und kann die eigenlichen Nutzdaten für mein NAS über ZFS managen....
In meiner Nextcloud binde ich die externen Laufwerke über Samba wieder ein, dadurch sind die Netzlaufwerke theorethisch auch über Nextcloud verfügbar... das finde ich bisher ganz praktisch und auch gut handlebar...
 
OK,
ich schreibe diese Antwort eher als Verschriftlichung meiner Gedanken. Wenn ich einen groben Schnitzer drinne habe, bitte ich trotzdem Feedback.

Nutzdaten werde ich sauber von Containern trennen. Leider ist das in einer heterogenen Struktur mit VMs, LXCs und Docker einfach nicht immer möglich. Bzw. es ist nicht in einer über alle Container einheitlichen Art und Weise möglich, wenn zumindest manche Daten von mehr als einem Container aus erreicht werden können müssen.

Ich werde nun alle Dateien in ein LXC schmeißen, dass per mp Zugriff auf diese hat. Die Daten werden aber nicht per (proxmox)snapshot gesichert (weil nicht inkrementel), sondern entweder per zfs send|receive und/oder per rsync. Dieser LXC wird die Daten per SAMBA im LAN verfügbar machen.

Bei den anderen Containern werde ich versuchen, Konfiguration und Nutzdaten - docker-like - von der eigentlichen Anwendung zu trennen. Auch hier wieder vorzugsweise über unprivilegierte mountpoints, notfalls per smb-shares.
Andere Container erlauben keine saubere Trennung von Daten und Applikation. z.B. Vaultwarden. Nicht ohne in jede dieser Applikationen tief einzusteigen und die korrekten Verzeichnisse zu finden. Hier muss ich dann leider den vollständigen Container sichern.
 
Zurück
Oben