Allgemeine Fragen

DerT

Member
May 16, 2020
17
1
8
30
Hallo zusammen,

ich hatte vor kurzen ein Thema über "ZFS Speicher" eröffnet und habe festgestellt, dass es doch einige Kniffe gibt die man bei Proxmox beachten sollte um nicht unnötig Speicher oder Ressourcen zu verschwenden.
Danach bin ich mein System einmal durchgegangen und habe ein paar Punkte aufgeschrieben zu denen ich doch noch einige Fragen habe.
Klar habe ich vorher die offizielle Doku angeschaut, allerdings sind trotzdem noch ein paar Dinge offen geblieben.

Zuerst mal eine Auflistung meines Systems.

  1. Einsatzgebiet:
    Der Server wird ausschließlich privat genutzt und wurde angeschafft um meine Raspberry Pis abzulösen.
    Zum einen gab es Dinge welche durch die ARM Architektur nicht liefen und zum anderen ist natürlich die Performance und Skalierbarkeit besser.

  2. VMs und Container.
    Anfangs habe ich VMs installiert da ich mit Containern noch nicht vertraut war. Mittlerweile versuche ich allerdings alles erst als Container laufen zu lassen und falls es da Probleme gibt erstelle ich eine VM. Ich erstelle je "Aufgabe" einen neuen Gast.
    Zum Beispiel gibt es einen eigenen Container für DNS und DHCP, einen für SQL und einen für ioBroker.
    Insgesamt laufen aktuell 7 Container und 2 VMs (8x Linux, 1xWindows10) dauerhaft.
    1609183083328.png

  3. Hardware
    CPU: Intel Core I3-8100
    RAM: 32GB

  4. Speicher
    1 x 250 GB SDD für den Hypervisor
    1 x 250 GB SDD für Gast Festplatten

    RAIDZ Pool mit
    3 x 2TB HDD
    1 x 120 GB SSD (Cache)

  5. Backup
    Sowohl die Container als auch die VMs werden nächtlich mit "STOP" gesichert.
    Die Backups liegen auf einem NAS. (2x 4TB RAID1)

So das ist nun genug zu meinem System.
Nun meine Fragen.

"refer" bei ZFS LIST

In der offiziellen Dokumentation steht folgendes.
Eine schreibgeschützte Eigenschaft, die die Datenmenge festlegt, auf die ein Dataset zugreifen kann. Solche Daten können von Datasets im Pool gemeinsam genutzt oder auch nicht gemeinsam genutzt werden.
Bei der Erstellung eines Snapshots bzw. Klons wird anfänglich die gleiche Festplattenkapazität referenziert, die der Kapazität des Dateisystems bzw. Snapshots entspricht, aus dem er erstellt wurde, da der Inhalt identisch ist.
Die Abkürzung der Eigenschaft lautet refer.
https://docs.oracle.com/cd/E19253-01/820-2313/gazss/index.html

Wenn ich das also richtig verstehe ist das der Speicher welcher in diesem Dataset zur gemeinsamen Nutzung zur Verfügung steht.

Beispiel:
VM101 hat einen refer Wert von 100G
Das bedeutete 100G des Datasets können gemeinsam genutzt werden, es bedeutet aber nicht, dass dies auch getan wird.
Wenn ich nun einen Snapshot erstelle werden die 100G aus dem refer Wert für diesen Snapshot verwendet und damit effektiv nur einmal im Speicher belegt.

Privilegierte Container
Das Thema hab ich bis jetzt noch nicht wirklich verstanden.
Was ich weiß.
Ein Container greift direkt auf die Ressourcen des Hosts zu. Dadurch muss kein vollwertiges System emuliert werden was wiederum Ressourcen spart.
Aus Sicherheitsgründen wird der Zugriff auf den Host eingeschränkt.
Ein privilegierter Container hat diese Einschränkungen nicht.
Aber wie wirkt sich das aus? Was bringt ein privilegierter Container für Vorteile?

Zusätzlich dazu gibt es noch ein paar Optionen zu denen ich Fragen habe.
Nesting: In der Doku steht nur, dass "Nesting" erlaubt wird wenn die Funktion aktiviert ist. Allerdings habe ich noch nicht herausgefunden was Nesting ist.
NFS und CIFS: Wenn ich es richtig verstanden habe erlauben mir diese Optionen NFS bzw. CIFS mounts im Gast zu nutzen, also zu mounten.
FUSE: Hier steht in der Doku wieder nur, dass man es nutzen kann aber nicht was es ist.
Bin mir nicht sicher ob es sich dabei hierum handelt: https://de.wikipedia.org/wiki/Filesystem_in_Userspace

Create Device Nodes: Dazu habe ich in der Doku leider nichts gefunden.

Cache bei Festplatten.
Ich bin mir auch noch nicht sicher wie ich bei meinen Festplatten die Cache Funktion am besten einstelle.
Meine Informationen habe ich aus folgender Doku.
https://pve.proxmox.com/wiki/Performance_Tweaks

Demnach würde ich bei allen Festplatten "Writeback" einstellen.
Zwar können bei einem Stromausfall Daten verloren gehen, da ich aber nächtlich ein Backup erstelle würde sich ein möglicher Verlust in Grenzen halten.
Was meint ihr?

Run Guest Trim after Clone Disk
Bei dieser Option bin ich noch gar nicht dahinter gekommen was diese bring und ob ich sie aktiviert haben sollte.

Docker
Wie nutzt ihr Docker in Proxmox?
Eigentlich habe ich bis jetzt immer versucht darauf zu verzichten aber es gibt 1-2 Projekte bei denen meistens empfohlen wird.
Nun bin ich mir unsicher wie ich das am besten platzieren.
Je Docker Container einen eignen Gast oder doch einen Gast in denen mehrere Docker Container laufen.
LXC oder VM?

Aktuell würde ich dazu tendieren eine VM einzurichten in der alle meine gewünschten Docker Container laufen.
Hier würden mich eure Erfahrungen interessieren.

Backup
Wie sichert ihr euren Host?
Ich würde gerne die Konfigurationsdateien des Hosts auf meinem NAS sichern.
Bin mir aber nicht zu 100% sicher welche ich alles brauche.

Zu guter Letzt noch die Frage nach allgemeinen Tipps und Tricks für so ein System.
Wie ich bereits eingangs erwähnt habe bin ich durch mein anderes Thema darauf Aufmerksam gemacht worden, dass mein System nicht optimal konfiguriert ist.
Wenn also jemand Erfahrungswerte oder anderes hat, immer her damit.

Nicht falsch verstehen, ich bin nicht hier damit mir jemand sagt wie ich alles konfigurieren soll.
Ich möchte verstehen wie es funktioniert und wie ich es dann optimieren kann.

Vielen Dank schonmal an jeden der sich alles durchgelesen hat.

Gruß
T
 
Last edited:
"refer" bei ZFS LIST

In der offiziellen Dokumentation steht folgendes.

https://docs.oracle.com/cd/E19253-01/820-2313/gazss/index.html

Wenn ich das also richtig verstehe ist das der Speicher welcher in diesem Dataset zur gemeinsamen Nutzung zur Verfügung steht.

Beispiel:
VM101 hat einen refer Wert von 100G
Das bedeutete 100G des Datasets können gemeinsam genutzt werden, es bedeutet aber nicht, dass dies auch getan wird.
Wenn ich nun einen Snapshot erstelle werden die 100G aus dem refer Wert für diesen Snapshot verwendet und damit effektiv nur einmal im Speicher belegt.
REFER bezieht sich quasi auf die eigentlichen Daten. Ein Dataset kann "REFER = 120K" haben, auch wenn das Dataset 100G (USED = 100G) groß ist. In dem Fall sind dann auf dem Dataset selbst kaum Daten (nur ein paar Metadaten) aber das Dataset hat dann z.B. Unter-Datasets oder Zvols die 100GB belegen. Wenn ein Zvol, also virtuelles Blockdevice, "REFER = 50G" angibt, dann sind da 50GB auf dem Blockdevice belegt. "USED" kann aber deutlich höher sein, weil Snapshots z.B. nicht bei REFER einberechnet sind und nur mit im USED stecken.
Privilegierte Container
Das Thema hab ich bis jetzt noch nicht wirklich verstanden.
Was ich weiß.
Ein Container greift direkt auf die Ressourcen des Hosts zu. Dadurch muss kein vollwertiges System emuliert werden was wiederum Ressourcen spart.
Aus Sicherheitsgründen wird der Zugriff auf den Host eingeschränkt.
Ein privilegierter Container hat diese Einschränkungen nicht.
Aber wie wirkt sich das aus? Was bringt ein privilegierter Container für Vorteile?
In einem unprivilegierten LXC kannst du vieles nicht tun. Z.B. kannst du keinerlei Shares direkt einbinden, weil dir einfach die rechte Fehlen. Viele Dinge gehen nicht wenn zu viel isoliert wurde, daher möchte man evtl. für gewisse Dinge privilegierte LXC nutzen, wenn es der Einsatzfall bzw die Sicherheit denn zulässt.
Wichtig ist noch, dass da im unprivilegierten LXC alle User und Gruppen ein Remapping bekommen. Speicherst du im LXC eine Datei als User "bob" mit der UID 1000 wird die Datei auf dem Host in wirklichkeit einem nicht exsistenten User mit der UID 101000 gehören, weil alle User von 0-65535 auf 100000-165535 gemappt werden. Das macht es schwer z.B. einen gemeinsamen Ordner zu benutzen. Da müsste man dann immer manuell das Remapping anpassen, dass da "bob" von UID 1000 auf 1000 gemappt wird anstatt von 1000 auf 101000, weil das sonst mit den Rechnen nicht klappt, sobald du die Rechte z.B. mit chmod von "777" auf "770" änderst.
Zusätzlich dazu gibt es noch ein paar Optionen zu denen ich Fragen habe.
Nesting: In der Doku steht nur, dass "Nesting" erlaubt wird wenn die Funktion aktiviert ist. Allerdings habe ich noch nicht herausgefunden was Nesting ist.
Nesting brauchst du wenn du in deinem LXC Container noch verschachtelt andere Container betreiben willst. Ich habe z.B. Docker-Container im LXC-Container laufen. Da braucht man das dann.
NFS und CIFS: Wenn ich es richtig verstanden habe erlauben mir diese Optionen NFS bzw. CIFS mounts im Gast zu nutzen, also zu mounten.
Ja und geht nur bei privilegierten LXCs. Shares gehen indirekt auch im unprivilegierten LXC, aber da ist das sehr umständlich.
FUSE: Hier steht in der Doku wieder nur, dass man es nutzen kann aber nicht was es ist.
Bin mir nicht sicher ob es sich dabei hierum handelt: https://de.wikipedia.org/wiki/Filesystem_in_Userspace
Genau das. Wird manchmal für Programme gebraucht.
Cache bei Festplatten.
Ich bin mir auch noch nicht sicher wie ich bei meinen Festplatten die Cache Funktion am besten einstelle.
Meine Informationen habe ich aus folgender Doku.
https://pve.proxmox.com/wiki/Performance_Tweaks

Demnach würde ich bei allen Festplatten "Writeback" einstellen.
Zwar können bei einem Stromausfall Daten verloren gehen, da ich aber nächtlich ein Backup erstelle würde sich ein möglicher Verlust in Grenzen halten.
Was meint ihr?
Das hängt echt vom Anwendungsfall ab. Unsafe würde ich nicht nehmen, da werden dann Sync Writes als Async Writes behandelt und man zerschießt sich schnell etwas. Mit Writeback und Writethrough kannst du einen zusätzlichen Lese-/Schreibpuffer aktivieren. Puffer geben dir halt mehr Leistung weil mehr im RAM gecacht wird, sind aber flüchtig, also beim Stromausfall sind dann die Daten weg. Writeback wird eher empfohlen wenn du auch eine USV und ein redundantes Netzteil nutzt. Wenn du Writeback ohne USV nutzt, dann musst du aber auch gucken, dass du die VM IMMER aus dem Backup wiederherstellst und nicht einfach nur guckst "Geht die VMS noch? Ja, anscheinend...gut dann nutze ich die halt weiter". Auch wenn die VM nach einem Stromausfall oder Absturz noch läuft sollte man die nicht weiterverwenden, weil du nicht weißt, ob da trotzdem Daten korrumpiert wurden.
Ich persönlich nutze bei mir einfach "None", weil ZFS schon cacht und die Gäste ebenfalls. Da brauche ich nicht noch einen dritten Cache der im selben RAM läuft. Etwas 3 statt 2 mal temporär in den RAM zu kopieren macht es bei mir auch nicht schneller, eher langsamer.
Musst du halt mal durchtesten und ein paar Benchmarks laufen lassen, was dir am meisten bringt.
Docker
Wie nutzt ihr Docker in Proxmox?
Eigentlich habe ich bis jetzt immer versucht darauf zu verzichten aber es gibt 1-2 Projekte bei denen meistens empfohlen wird.
Nun bin ich mir unsicher wie ich das am besten platzieren.
Je Docker Container einen eignen Gast oder doch einen Gast in denen mehrere Docker Container laufen.
LXC oder VM?

Aktuell würde ich dazu tendieren eine VM einzurichten in der alle meine gewünschten Docker Container laufen.
Hier würden mich eure Erfahrungen interessieren.
Ich habe 2 Docker-LXCs aber du kannst auch eine VM nehmen. Gerade wenn etwas auch vom Internet aus erreichbar sein soll, würde ich da wegen der besseren Isolation und damit Sicherheit eigentlich immer zur VM raten. Nicht nur bei Docker.
Portainer kann ich als GUI für Docker empfehlen. Läuft auch ohne Docker Swarm oder Kubernetes mit einem ganz normalen Docker.
Sollte eigentlich reichen wenn du da nur eine VM/LXC erstellst. Spart dann gerade bei VMs gut Ressourcen und ist viel bequemer mit z.B. Portainer zu bedienen, wenn da alles nur auf einem Gast läuft.
Backup
Wie sichert ihr euren Host?
Ich würde gerne die Konfigurationsdateien des Hosts auf meinem NAS sichern.
Bin mir aber nicht zu 100% sicher welche ich alles brauche.
Glaube da reichte der "/etc/pve/" Ordner. Ansonsten kann man noch ein komplettes 1-zu-1-Image auf Blockebene von dem ganzen Systemlaufwerk erzeugen. Z.B. von einem Clonezilla Live booten und das Image dann auf dem NAS speichern. Nimmt dann zwar etwas Platz weg, aber dafür kann man dann zur Not die ganze SSD inkl Bootloader und Co aus dem Backup wiederherstellen.
Zu guter Letzt noch die Frage nach allgemeinen Tipps und Tricks für so ein System.
Wie ich bereits eingangs erwähnt habe bin ich durch mein anderes Thema darauf Aufmerksam gemacht worden, dass mein System nicht optimal konfiguriert ist.
Wenn also jemand Erfahrungswerte oder anderes hat, immer her damit.

Nicht falsch verstehen, ich bin nicht hier damit mir jemand sagt wie ich alles konfigurieren soll.
Ich möchte verstehen wie es funktioniert und wie ich es dann optimieren kann.
Ich würde überall "atime" deaktivieren. Also sowohl per ZFS Attribut auf dem Host als auch in den Gästen (bei ext4 z.B. im fstab die Option "noatime" und "nodiratime" setzen). Wenn du das nicht machst sorgt jede Leseoperation auch gleichzeitig für eine Schreiboperation und die SSD geht schneller kaputt.

"/tmp"-Mountpunkt auf eine RAMdisk legen kann auch die SSD-Lebenszeit erhöhen.

Ich würde überall den QEMU-Guest-Agent installieren.

Über die Swappiness auf Host und Gästen kann du auch noch nachdenken.

Falls du neben den Backups auch noch regelmäßige Snapshots willst, kannst du dir mal das Script hier angucken.

Generell finde ich auch noch die Nutzung von einem Monitoring Tool sinnvoll. Ich habe z.B. Zabbix in einer VM am laufen und alle meine VMs, Rechner, Router, Raspis, NASs etc daheim senden regemäßig ihre Metrics zu der Zabbix-VM. Muss ich dann nur einmal am Tag auf die Zabbix-WebGUI gucken , ob da irgendeiner der 30 (virtuellen) Rechner Probleme hat und mir Warnungen gemeldet werden. Gerade bei ZFS-Ausfällen etc möchte man das ja schnell mitbekommen.
Aber auch sonst sehr nett, wenn man z.B. eine Warnung bekommt, wenn da einer VM der RAM oder Speicherplatz ausgeht, ein Dienst vielleicht nicht mehr läuft weil abgestürzt, zu viele Pakete im Netzwerk verloren gehen oder sonst etwas.
Macht das leben deutlich einfacher, wenn man ein gemeinsames Dashboard hat wo übersichtlich alle Fehler aufpoppen, als wenn ich da immer alle 30 Rechner durchgehen und manuell gucken müsste, ob noch alles läuft wie es soll.
 
Last edited:

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!