Best Practices. DL380 G8

MrPurple

Member
Sep 12, 2018
32
1
8
32
Hallo Proxmox-Community,

Zu Beginn: Ich bin relativ neu, sowohl im Server- als auch im Proxmoxumfeld, daher entschuldigt falls ich selbstverständliches frage. Ich suche immer best practices und die Erfahrund von Profis ist immer enorm viel wert für mich. Ich hoffe, dass ich hier ein paar Antworten auf meine Fragen finde um so den Trial-and-Error Aufwand etwas minimieren zu können :)

Momentan habe ich einen Proxmox Test-Server auf einem alten Consumer-PC laufen:
* i7 920
* 20GB DDR3 RAM Non-EEC
* 1x LVM Proxmox ~250GB HDD
* ZFS Mirror-0 (2x 1.36 TiB HDD)

darauf läuft momentan Graylog (mit Elasticsearch) eigentlich problemlos als docker container in einer debian VM. Als storage dient der ZFS mirror der allerdings nach meiner Erfahrung nach eine üble performance aufweist. Ich hatte soweit ich das im kopf habe rund 1/4 des IO's als mit einer single disk. müsste ich aber nocheinmal nachsehen. kann das sein? (ram hat er genug) weiters hatte ich auf dem consumer pc das phänomen, dass wenn ich eine SATA platte aus dem ZFS verbund physisch gezogen habe, proxmox mir hierbei sowohl in der gui als auch im terminal manchmal einfach nichts angezeigt hat (alle Platten auf Grün) und auch beim wiederanstecken scheinbar nichts passiert ist. Funktioniert dies nur bei dedizierten RAID-Controllern? laut recherche müsste SATA out-of-the-box "hotplug" können. liegt wohl an der implementierung der mainboard-hersteller.

Damit habe ich etwas herumgespielt und ein paar Erfahrungen gesammelt:
  • Proxmox ist geil, stabil und relativ user-friendly
  • Suspended VM's verlieren Ihren Status beim Reboot vom Host. Gibts hierfür eine Lösung? was ich gelesen habe -> Snapshot machen und dann nach dem reboot snapshot wiederherstellen?
  • nicht alles ist über die GUI (vollständig) zu konfigurieren. zB. ZFS pools (status teilweise inkonsistent), partitionierung nur via terminal etc.
Mein Ziel: Meinen DL380 G5 (!) wo derzeit debian mit VirtualBox headless läuft, auf einen Proxmox DL380 G8 storage server mit 2x Xeon E5-2690 (refurbished) übersiedeln. Ich tendiere zu 2,5 zoll einschüben für schnellere 10k platten um in ZFS die performance zu erhöhen.

Was soll er können?
  • ~8 kleine Linux VM's (intranet, inventarsystem etc). absolutes kleinzeugs, low-IO, minimal speicher etc.
  • 1x kleiner windows server 2012 (testsystem), allerdings maximal IO für MySQL Imports gefragt.
  • 1x Windows 10 Client (ebenfalls low-IO, minimale resourcen notwendig)
  • 1x debian VM als Docker Host mit Loggingystem (Graylog, Elkstack). mittel bis high IO, 8GB RAM, 2TB Speicher
eventuell zukünftig:
  • 1x zukünftig Übersiedlung von dedizierten DC in VM (+inkl Exchange, ~2TB Netzlaufwerke, ~10 User). mittlerer IO, mittlerer resourcenbedarf. (momentan 16GB RAM dediziert)

generell muss nichts davon super HA laufen, daher auch kein Cluster. Backups gibts sowieso, wenn mal was steht: what ever. Sollte der DC mal übersiedelt werden sollte das ganze schon gut laufen.

Nun bin ich am überlegen betreffend Hardware RAID vs ZFS. Die ewig lange Diskussion eben :) Fakt ist, bei dem Server ist ein Smart Array P420i welches laut meinen Informationen HBA kann, daher sollten mir beide Optionen offen bleiben. Alles in allem habe ich folgendes geplant, egal ob hardware raid oder ZFS:
  • 2x SAS server SSD's für proxmox host. high-IO für proxmox überhaupt notwendig? falls kein hardware raid: proxmox will ja automatisch LVM auf die "host"-platte. daher mirror im nachhinein ziehen?
  • 8x 2,5" 900 GB 10K SAS platten für alle VM's
  • 1-2x 2,5" 240 GB SATA server SSD für testumgebungen die high-IO benötigen. einfach zusätzlich in die VM gemounted, zB. für MySQL. kein HA notwendig. Ausfall --> Wurst
  • eventuell ein paar billige große 2,5" low-IO SATA platten für filestorage, backup what ever.

Nun meine Fragen:
  • ist der P420i Controller kompatibel und kann wirklich HBA?
  • Hardware-Raid oder ZFS? für ZFS brauch ich viel RAM, dass weis ich. Kann ich ähnliche Performance erwarten? Gibts eine Daumenregel für den ZFS Overhead? zB. 2x RAM-Bedarf?
  • falls ZFS: welchen verbund? Mirror-0 ist genauso langsam wie single-disk, richtig? was dann: RAID10? 200% platteninvestition für 100% speicher wär das maximum für mich.
  • mittels ZFS hab ich dann ebenfalls Hot-Swap, richtig? für den tausch von platten gibt es ja infos in der proxmox-doku. funktioniert das zuverlässig?
  • Ist irgend eine Art von Cache-(HDD's/SSD's) empfohlen? Laut doku wird keinerlei cache empfohlen, stimmt das?

Ich danke euch und freue mich über jegliche Art von Feedback. :)
 
ist der P420i Controller kompatibel und kann wirklich HBA?

Ja, ist mit Proxmox VE kompatibel und ich weiß nicht ob der P420i das kann, Der P410 und P400 kann es IMHO nicht. Wir haben daher in unseren DL360G6 eine Karte eingebaut, die IT-Mode unterstützt, aber für unsere Zwecke nur mit unseren Shelves für ZFS redet.

Hardware-Raid oder ZFS?

Hardware RAID kann keine Kompression, Snapshots und intelligentes Scrubbing, dafür brauchst du mehr RAM als bei einem RAID-Controller. So generell kann man nicht sagen was schneller ist, da es oft auch darauf ankommt, was der RAID-Controller alles kann (BBU vorhanden, Cache-Größe, Read/Write Ratio). Die Kompression bei ZFS holt dir nochmal einiges raus an Performance.

Mirror-0 ist genauso langsam wie single-disk, richtig?

Was ist Mirror-0? Also wenn du RAID1, meist, dann ist ein ZFS gespiegeltes vdev im Schreiben natürlich so schnell wie ein einzelnes Laufwerk. Theoretisch sollte er aber in der Lage sein eine bessere Lese-Performane zu haben als ein einzelnes Laufwerk.

was dann: RAID10? 200% platteninvestition für 100% speicher wär das maximum für mich.

Also ein Pool aus vielen gespiegelten vdevs ist schon flott, wie RAID10 auch. Je nach Ausbau könntest du auch ein RAID50 machen, wobei ich bei so wenig Platten dann 3 in ein vdev legen würde, du also den Platz von zweien hast - dabei wäre dann 9 Platten für den Pool gut. Das ist aber nicht so schnell wie ein RAID10 mit 8 Platten, du verbrätst aber weniger. Vielleicht solltest du dann eher die "großen" SATA Platten in Hinblick auf mehr IO im Hauptpool opfern.

mittels ZFS hab ich dann ebenfalls Hot-Swap, richtig? für den tausch von platten gibt es ja infos in der proxmox-doku. funktioniert das zuverlässig?

Ja, ist alles Hot-Swap bei ZFS und bei Enterprise Platten ja auch über den Kontroller ohne Probleme möglich. Wir haben das sogar im externen Shelf schon relativ oft (3-4x im Jahr) gemacht.

Ist irgend eine Art von Cache-(HDD's/SSD's) empfohlen? Laut doku wird keinerlei cache empfohlen, stimmt das?

Caching für schnelleres Lesen ist meistens langsamer, wenn du nicht genug RAM für ZFS hast. Durch die Verwendung eines L2ARC hast du nämlich weniger ARC, da die Mappings was wo im Cache liegt auch im ARC vorgehalten werden muss und dadurch der Speicher für eigentlichen Aufgaben des ARC somit geringer wird. Baue einfach mehr RAM ein, RAM ist immer super (mit oder ohne ZFS), denn jedes OS und jedes Dateisystem cached gelesene Dinge im Arbeitsspeicher.

Ein SLOG für synchrone Schreibaufgaben ist auf jeden Fall ein nettes Spielzeug, du solltest hierfür aber auf jeden Fall eine Enterprise SSD (muss nicht groß sein, 32 GB reicht da aus) sein, z.B. von dieser Liste:

http://www.sebastien-han.fr/blog/20...-if-your-ssd-is-suitable-as-a-journal-device/
 
Ich fasse mal zusammen da wir hier von den DL380 G8 ein paar Maschinen laufen haben:
- Der P420i kann ab einer bestimmten Firmware auch im HBA Modus (passthrough) laufen, ich habe die Version 8 und ist dort aktivierbar
- Ich plane für Mitte/Ende Januar eines der Systeme als FreeNAS Storage einzusetzen, da FreeNAS ZFS möchte kann ich dir (sofern du so lange warten möchtest) Rückmeldung zu dem Controller in Verbindung mit ZFS geben
- Bei Spindle Disks empfiehlt sich eine SSD als ZIL/L2ARC (wobei ich bei genug RAM bisher auf L2ARC verzichtet habe)
- Egal ob nu LVM oder ZFS, installiert Proxmox einfach mit auf das entsprechende Volume, mehr als 20-30GB habe ich hier nie reserviert

Ich habe hier bisher LVM Thin mit einem Hardware Raid 10 aus 8 600GB SAS 10k am Laufen und kann mich absolut nicht beklagen über die Leistung. Zu ZFS in dem System kann ich wie gesagt nichts sagen. Aber vergleichbares System mit 10k SAS und 1 Intel Optane als ZIL bringt Performance technisch keinen Leistungszuwachs. Anders sieht es bei einem reinen SSD ZFS Raid10 aus. Brauchst du die Features von ZFS nicht, nimm halt Standard Einstellung von Proxmox mit LVM Thin.
 
wow, danke für eure Antworten. Das hilft mir schon einmal eine Menge! Ich werde somit demnächst mal den Server checken da die Hardware, soweit ich das verstanden habe, die gleiche bleibt. Egal ob ZFS oder Hardware RAID. Ram werd ich ebenfalls, so oder so, genug reinknallen.

Was ist Mirror-0? Also wenn du RAID1, meist, dann ist ein ZFS gespiegeltes vdev im Schreiben natürlich so schnell wie ein einzelnes Laufwerk. Theoretisch sollte er aber in der Lage sein eine bessere Lese-Performane zu haben als ein einzelnes Laufwerk.
ja, ich schätze RAID1 ist in proxmox (bzw. via zpool status) mit mirror-0 gemeint. Ist in der GUI als "Mirror" und in zpool status als "mirror-0" angegeben.

Also ein Pool aus vielen gespiegelten vdevs ist schon flott, wie RAID10 auch. Je nach Ausbau könntest du auch ein RAID50 machen, wobei ich bei so wenig Platten dann 3 in ein vdev legen würde, du also den Platz von zweien hast - dabei wäre dann 9 Platten für den Pool gut. Das ist aber nicht so schnell wie ein RAID10 mit 8 Platten, du verbrätst aber weniger. Vielleicht solltest du dann eher die "großen" SATA Platten in Hinblick auf mehr IO im Hauptpool opfern.
Uff, da habe ich noch einiges zu lernen und muss mich ersteinmal in vdevs einlernen. Die GUI bietet ja nur an
  • Mirror
  • Raid10
  • RaidZ (RAID5) X-1 Platte Kapazität (1 platte fault tolerant)
  • RaidZ2 (RAID6) X-2 Platten Kapazität (2 platten fault tolerant)
  • RaidZ3 (RAID7) X-3 Platten Kapazität (3 platten fault tolerant)
Wie kann man diese Liste von der Performance her reihen? Wie geht man bei einem Aufbau eines Raid50 vor? schätze mal alles im terminal mittels "zpool"? 3 x 3 platten wobei jedes 3er bundle ein RAIDZ ist, auf 3 gruppen gestriped, richtig? bei 9 platten eine kapazität von 6 stück. aus jeder gruppe kann ich einen fault haben. wieso nicht gleich RaidZ2 oder RaidZ3?

Caching für schnelleres Lesen ist meistens langsamer, wenn du nicht genug RAM für ZFS hast. Durch die Verwendung eines L2ARC hast du nämlich weniger ARC, da die Mappings was wo im Cache liegt auch im ARC vorgehalten werden muss und dadurch der Speicher für eigentlichen Aufgaben des ARC somit geringer wird. Baue einfach mehr RAM ein, RAM ist immer super (mit oder ohne ZFS), denn jedes OS und jedes Dateisystem cached gelesene Dinge im Arbeitsspeicher.
Also zusammengefasst: Cachen einfach lassen weils nur in speziellen Fällen Performance bringt und der Aufbau sehr komplex zu sein scheint? Daher wenn ich Proxmox genug RAM gebe, regelt er sich das von selbst? Inwiefern kann ich den Memory Cache diesbezüglich konfigurieren bzw. überwachen wie viel momentan für Caching in Verwendung ist? In der Summary von Proxmox kann ich nur den RAM Verbrauch generell sehen?

Ein SLOG für synchrone Schreibaufgaben ist auf jeden Fall ein nettes Spielzeug, du solltest hierfür aber auf jeden Fall eine Enterprise SSD (muss nicht groß sein, 32 GB reicht da aus) sein, z.B. von dieser Liste:
muss ich mich auch erst einlesen. hört sich aber auch so an, als könnte man mehr falsch machen asl dass es mir bringt? :confused:

@HBO
Der P420i kann ab einer bestimmten Firmware auch im HBA Modus (passthrough) laufen, ich habe die Version 8 und ist dort aktivierbar
sehr cool. danke. Habe zwar noch keinen RAID Controller geflasht, aber die Basis habe ich damit ja schonmal.

könnte sich ausgehen. freue mich auf deine Rückmeldung! Generell könntest du ja auf deinem System einen IO Benchmark machen und dann im ZFS verbund noch einmal, damit wir einen genauen Vergleich haben? :)

Bei Spindle Disks empfiehlt sich eine SSD als ZIL/L2ARC (wobei ich bei genug RAM bisher auf L2ARC verzichtet habe)
Werde wohl vorerst auch mit RAM bekämpfen. kann ich den Cache jederzeit im Nachinein einhängen bzw. wieder rausnehmen? Wo konfiguriere ich den in Proxmox am schlauesten? (ich hab immer angst, dass wenn ich im terminal was ändere, es in der GUI was zamhaut)

Egal ob nu LVM oder ZFS, installiert Proxmox einfach mit auf das entsprechende Volume, mehr als 20-30GB habe ich hier nie reserviert
Daher du hast kein eigenes Volume für Proxmox sondern einfach 30gigs im RAID10 abgezweigt? Spielt Performance eigenetlich eine Rolle hier? Also muss das Proxmox Volume schnell sein?

Anders sieht es bei einem reinen SSD ZFS Raid10 aus
Ein HDD Verbund mit Optane als Cache brachte keine Performance aber ein SSD Verbund mit Cache schon? Das klingt ja seltsam.
 
Nein, ich meine den Performance Vergleich. Gute Enterprise SSDs kosten mittlerweile nur unwesentlich mehr wie SAS 15k Platten. Wenn du neue Platten kaufen musst würde ich gleich SSDs nehmen, da spart man sich die SLog SSD.
 
Nein, ich meine den Performance Vergleich. Gute Enterprise SSDs kosten mittlerweile nur unwesentlich mehr wie SAS 15k Platten. Wenn du neue Platten kaufen musst würde ich gleich SSDs nehmen, da spart man sich die SLog SSD.
nein, das werden gebrauchte platten sein. trotzdem werde ich schaun, dass ich neue SSDs bekomme. Apropos, eine Frage die noch aufgetaucht ist:
wenn ich nur einen pool für alle VMs verwende, kann ich IO per VM limitieren? Denn wenn ich elasticsearch hart rannehme um logs zu durchforsten, will ich eigentlich nicht, dass meine anderen VMs stehenbleiben :rolleyes:
 
Wie kann man diese Liste von der Performance her reihen? Wie geht man bei einem Aufbau eines Raid50 vor? schätze mal alles im terminal mittels "zpool"? 3 x 3 platten wobei jedes 3er bundle ein RAIDZ ist, auf 3 gruppen gestriped, richtig? bei 9 platten eine kapazität von 6 stück. aus jeder gruppe kann ich einen fault haben. wieso nicht gleich RaidZ2 oder RaidZ3?

Performance. Geschwindigkeit bekommst du über mehrere vdevs, nicht über größere vdevs - wie bei RAID5 vs. RAID50 auch.

Inwiefern kann ich den Memory Cache diesbezüglich konfigurieren bzw. überwachen wie viel momentan für Caching in Verwendung ist? In der Summary von Proxmox kann ich nur den RAM Verbrauch generell sehen?

arcstat(.py)

muss ich mich auch erst einlesen. hört sich aber auch so an, als könnte man mehr falsch machen asl dass es mir bringt?

Bei einer miserablen SSD ja. Ich habe eine gebrauchte Enterprise SSD gekauft (von Sebastiens Liste) mit 120 GB und das tut gut.

wenn ich nur einen pool für alle VMs verwende, kann ich IO per VM limitieren? Denn wenn ich elasticsearch hart rannehme um logs zu durchforsten, will ich eigentlich nicht, dass meine anderen VMs stehenbleiben :rolleyes:

Für QEMU-VMs ist dies möglich, für LXC laut diesem Post auch: https://forum.proxmox.com/threads/i-o-disk-limit.28591/
 
Danke für eure Antworten. Ich werde mir wohl jetzt einmal die Hardware besorgen und dann weiterschauen. Es tauchen sicher wieder Fragen auf :)
 

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!