Brauche ich SLOG/L2ARC?

Mrt12

Well-Known Member
May 19, 2019
144
11
58
44
CH
Hallo zusammen
ich möchte einen neuen Fileserver einrichten. Ich habe ein paar bestehende NAS, die möchte ich einstampfen und einen einzigen, grossen Fileserver einrichten. Auf dem sollen dann auch per iSCSI die Images für VMs sitzen, die in Proxmox auf einem anderen Rechner laufen.
Der neue Server wird über 2x 25GBit Glasfaser angebunden und soll 128TB mit ZFS zur Verfügung stellen. RAM wird 128GB zur Verfügung stehen. Es kommen Seagate Exos Festplatten zum Einsatz.
Auf zumindest einer der VMs läuft eine Datenbank, alle anderen VMs haben sowas nicht.
Nun überlege ich, ob ich an dem Setup für den Fileserver etwas optimieren kann, damit die Performance gut wird. Zum Beispiel, wenn ich eine zusätzliche SSD rein baue für den SLOG, kann ich da dann wirklich profitieren oder wird das gar nichts bringen?
Dasselbe für den L2ARC; kann ich bei 128GB RAM von einem zusätzlichen L2ARC per SSD wirklich profitieren oder bremse ich den Fileserver nur aus?
Die restlichen Daten, die da drauf sind, sind ca. 80% WORM Daten, also werden nur einmal beschrieben und dann regelmässig gelesen.

Ich würde, wenn der Server eingerichtet ist, gerne auch mal zpool iostat laufen lassen, um zu schauen, wie viel % ich wirklich sync Writes habe, denn soweit ich es verstanden habe, bringt eine SLOG SSD nur für sync writes etwas. Beim zpool iostat weiss ich aber nicht genau, worauf ich achten muss, um beurteilen zu können, ob ich von einem SLOG profitieren könnte.

Der Hintergrund meiner Frage ist eigentlich nur der, dass es ja schade wäre, wenn ich 25GBit Glasfaser einbaue, und dann am Ende eine miese Performance habe ;-)
Die einzelnen Benutzer sind zwar über 1GBit Ethernet angebunden, aber der Switch kann ja das dann bündeln, sodass - theoretisch - bis zu 25 User gleichzeitig mit 1GBit zugreifen können.
 
Auf zumindest einer der VMs läuft eine Datenbank, alle anderen VMs haben sowas nicht.
Dann könnte ein SLOG durchaus Sinn machen. Aber nicht vergessen, dass das definitiv eine schnelle Enterprise SSD mit ordentlich TBW/DWPD sein sollte...bevorzugt eine kleine (sowas wie 32GB reichen üblicherweise) Intel Optane mit SLC NAND.

Nun überlege ich, ob ich an dem Setup für den Fileserver etwas optimieren kann, damit die Performance gut wird. Zum Beispiel, wenn ich eine zusätzliche SSD rein baue für den SLOG, kann ich da dann wirklich profitieren oder wird das gar nichts bringen?
SLOG hilft ausschießlich bei Sync Writes. Nichts für Async Writes oder Reads, also sollte für die Workload eines Fileservers nicht viel bringen. Da nimmt man lieber 2 oder 3 SSDs und nutzt die gespiegelt als "special" Metadata Vdevs. Das würde dann für alle Dateioperationen (auch Async Writes und Reads) helfen da alle Metadaten dann auf den schnellen SSDs liegen und so die HDD nicht mit massig kleinen IO bombadiert werden. Gerade praktisch, wenn man Ordner mit vielen kleinen Dateien hat und dann die Dateien auflisten will.

Dasselbe für den L2ARC; kann ich bei 128GB RAM von einem zusätzlichen L2ARC per SSD wirklich profitieren oder bremse ich den Fileserver nur aus?
Die restlichen Daten, die da drauf sind, sind ca. 80% WORM Daten, also werden nur einmal beschrieben und dann regelmässig gelesen.
L2ARC macht in den wenigsten Fällen Sinn. Daumenregel ist erst den RAM maximal ausbauen, danach über L2ARC nachdenken.
 
Last edited:
  • Like
Reactions: news
gut. Sind denn 128GB RAM adäquat für den Fileserver oder zu wenig? es soll nebst iSCSI auch Samba drauf laufen, weil einige User unbedingt Windows benötigen.

ich habe auf einem bereits bestehenden Proxmox Server 30 VMs, und eben die eine davon mit der Datenbank (eine Altlast, die ich hoffentlich bald los werde). Der Rest sind Linux VMs und eine Windows. (Xeon E5 2630 v4 10 Core 2.2GHz)
Trotz dem dass ich da auch 128GB RAM habe, läuft vor allemdie WindowsVM recht harzig.
Darum möchte ich mit dem neuen Storage sicher sein, dass der genug "Dampf" hat, dass da nichts harzt...
der neu einzurichtende Storage kann bis zu 3TB RAM, aber das bekomme ich wohl von der Buchhaltung nicht bewilligt


Bevor ich eine teure enterprise SSD kaufe: wäre es OK den SLOG erstmal mit einer Consumer SSD zu testen? Samsung Evo 850 Pro habe ich nämlich gleich da.
 
Last edited:
Bevor ich eine teure enterprise SSD kaufe: wäre es OK den SLOG erstmal mit einer Consumer SSD zu testen? Samsung Evo 850 Pro habe ich nämlich gleich da.
Nein macht Null Sinn. Consumer SSDs sind was Sync Writes angeht fast so lahm wie HDDs da diese wegen fehlender Power-loss Protection keine Sync Writes im DRAM-Cache cachen können. Also ähnlich wie man es viellicht von HDDs am HW-Raid ohne BBU+Cache kennt... . Entweder Enterprise SSD mit PLP oder garnicht.
Generell ist ZFS und Consumer SSD echt keine gute Kombination. Und beim SLOG erst recht nicht, da dessen einzige Aufgabe es ist die Sync Writes zu machen.
 
Last edited:
Also meine zwei Cent:
Im Privatumfeld gehen auch Prosumer SSDs. Kingston hat SSDs mit 1PBW im Angebot. SLOG hilft zB massiv bei einem TimeMachine Storage, da dort viel Sync writes durch gehen. Im Enterprise Umfeld würde ich aber wirklich auf optane setzen.
 
Nein macht Null Sinn. Consumer SSDs sind was Sync Writes angeht fast so lahm wie HDDs da diese wegen fehlender Power-loss Protection keine Sync Writes im DRAM-Cache cachen können. Also ähnlich wie man es viellicht von HDDs am HW-Raid ohne BBU+Cache kennt... . Entweder Enterprise SSD mit PLP oder garnicht.
Generell ist ZFS und Consumer SSD echt keine gute Kombination. Und beim SLOG erst recht nicht, da dessen einzige Aufgabe es ist die Sync Writes zu machen.
ich wollte die Consumer SSD ja auch nur für Testzwecke, um mal zu schauen ob es etwas bringt, z.B. 2..3 Wochen Testbetrieb. Wenn Verbesserung feststellbar, dann kommt eine Enterprise SSD rein.
 
Also meine zwei Cent:
Im Privatumfeld gehen auch Prosumer SSDs. Kingston hat SSDs mit 1PBW im Angebot. SLOG hilft zB massiv bei einem TimeMachine Storage, da dort viel Sync writes durch gehen. Im Enterprise Umfeld würde ich aber wirklich auf optane setzen.
dieser Storage ist leider nicht für mein Privstumfeld, sondern auf Arbeit
 
Naja dann hast du ja deine Antwort :D. Special Device testen ist eher schlecht. SLOG und l2Arc kannst du testen. Kann man beliebig entfernen und hinzufügen.
 
gut ich werd, wenn ich das Teil in Betrieb habe, mal testen und allenfalls berichten.
 
Ein ZFS Special Device kann man mit zpool attach und zpool detach hinzu- und wieder wegnehmen. Aber man benötigt dazu eine ZFS MIRROR als ZFS Special Device.
Anderenfalls eine ZPOOL REPLACE und auf die Syntax ist zu achten.
 
Ein ZFS Special Device kann man mit zpool attach und zpool detach hinzu- und wieder wegnehmen. Aber man benötigt dazu eine ZFS MIRROR als ZFS Special Device.
Anderenfalls eine ZPOOL REPLACE und auf die Syntax ist zu achten.

das Special Device als SSD würde sich wahrscheinlich definitiv lohnen, aber wie ist denn das: wenn ich jemals ein Special Device im Pool hatte, und das dann weg nehme, ist dann die Struktur auf dem Pool irgendwie anders?

Beispiel: im neuesten openZFS ist es möglich, zusätzliche Devices zu einem RaidZ-2 hinzuzufügen. Wenn man das allerdings macht, ist das Layout der Daten auf den Disks anders, als wenn man den Pool gleich von Beginn weg mit dem zusätzlichen Device erstellt hätte, was dann, soweit ich das verstanden habe, leichte Performanceeinbussen zum Resultat haben kann. Darum die Frage: ändert sich am physikalischen Layout des Pools irgend was, wenn ich ein Special Device dazu mache bzw. wieder weg nehme? und auch da, lohnt es sich, das allenfalls erstmal mit einer "billigen" SSD zu testen, bevor man viel Geld ausgibt und dann merkt, dass es nicht viel gebracht hat?
Das Special Device soillte als Mirror sein, oder?
 
Einmal ZFS Special Device, dann immer mit Special Device für den Pool, den dort liegen die Metadaten oder auch etwas anderes.
Man stelle sich vor, in den Metadaten werden die speicherorte der ZFS Blöcke abgelegt, alles Zusammen ist als lineare Liste an zu sehen. Somit muss der HDD Kopf erst alle Metadaten lesen und dann die gewünschten ZFS Blöcke, wenn man nun die Metadaten auf dem schnelleren Devicve SSD, entweder als SATA oder NVMe, ablegt, ist das schon eine Lastverteilung.
Und nach meiner Erfahrung lege ich jeden HDD Pool immer mit einem ZFS Special Device über SSD an.

ZFS Special Device sollten immer die selbe oder höhere Sicherheitstufe im Pool haben, wie die HDDs!

Auch kan man ein ZFS Special Device als ZFS Special Device
a) Mirror Nx SSDs
oder
b) RaidZn SSDs anlegen

Das hängt von Bedarf ab.

Z.B kann man einen Pool so aufbauen und betreiben: ZFS Raidz1 3x HDDs.

Der wird im nächsten Schritt per command Zeile erweitert: ZFS Special Device Mirror 3x SSDs.

Dann nach vielleicht ein paar Monaten auf: ZFS Raidz1-0 3x HDDs; Raidz1-1 3x HDDs mit ZFS Special Device Mirror 3x SSDs.

ZFS ist es egal, ob man ein Mirror mit 2x SSDs, mit 3x SSDs oder mit Nx SSDs anlegt, die Sicherheit des gesamten Pool hängt auch immer vom Special Device ab.

Der erweiterte Pool mit Z1-0 3x; Z1-1 3x; Special Device 3x SSD wird sich über die Zeit ausbalancieren und als Vorteil die Leserate steigt.

Ein "Zürckbauen" ist nur begrenzt möglich, aber ein erweitern immer. D.h. möchte man ein neues ZFS Layout, muss man den Pool neu erzeugen und die Daten zurückspielen.
 
Last edited:
Einmal ZFS Special Device, dann immer mit Special Device für den Pool, den dort liegen die Metadaten oder auch etwas anderes.
Man stelle sich vor, in den Metadaten werden die speicherorte der ZFS Blöcke abgelegt, alles Zusammen ist als lineare Liste an zu sehen. Somit muss der HDD Kopf erst alle Metadaten lesen und dann die gewünschten ZFS Blöcke, wenn man nun die Metadaten auf dem schnelleren Devicve SSD, entweder als SATA oder NVMe, ablegt, ist das schon eine Lastverteilung.
Und nach meiner Erfahrung lege ich jeden HDD Pool immer mit einem ZFS Special Device über SSD an.

ZFS Special Device sollten immer die selbe oder höhere Sicherheitstufe im Pool haben, wie die HDDs!

Auch kan man ein ZFS Special Device als ZFS Special Device
a) Mirror Nx SSDs
oder
b) RaidZn SSDs anlegen

Das hängt von Bedarf ab.

Z.B kann man einen Pool so aufbauen und betreiben: ZFS Raidz1 3x HDDs.

Der wird im nächsten Schritt per command Zeile erweitert: ZFS Special Device Mirror 3x SSDs.

Dann nach vielleicht ein paar Monaten auf: ZFS Raidz1-0 3x HDDs; Raidz1-1 3x HDDs mit ZFS Special Device Mirror 3x SSDs.

ZFS ist es egal, ob man ein Mirror mit 2x SSDs, mit 3x SSDs oder mit Nx SSDs anlegt, die Sicherheit des gesamten Pool hängt auch immer vom Special Device ab.

Der erweiterte Pool mit Z1-0 3x; Z1-1 3x; Special Device 3x SSD wird sich über die Zeit ausbalancieren und als Vorteil die Leserate steigt.

Ein "Zürckbauen" ist nur begrenzt möglich, aber ein erweitern immer. D.h. möchte man ein neues ZFS Layout, muss man den Pool neu erzeugen und die Daten zurückspielen.
wie gross muss ich denn den Special Device machen, wenn mein Pool 128TB haben soll?
Wahrscheinlich braucht es nicht so viel Platz für die Metadaten, sind ja "nur" die Blockadressen und wahrscheinlich File-Attribute usw.
Mein Storage wird initial mit 55 Mio Files bestückt werden, im Moment sind das rund 60 TB. Die 128 TB habe ich gewählt, damit noch genug "Luft" nach oben ist, weil ich nicht in 2 Jahren schon wieder alle Disks wechseln will.
 
Kann ich Dir und sonst keiner beantworten, hängt ja von deinen Blockgröße und mehr ab.

zfs get recordsize: 128k ist default

Denke daran auf deinem Pool, auf der obersten Ebene ein Quota von ca. 80% des Maximus zu setzen.
Den das ist deine Füllgrenze.

Wenn es ein ZFS RaidZ2 HDD wird, dann kann man mit ZFS Special Device RaidZ2: 4x 500 GB - 1 TB SSDs arbeiten und hat noch Luft mach oben und bei den größeren SSD mit DDR Cachespeicher ist der bei 1 TB auch noch größer.

Damit kannst Du nachsehen, was der passende Parameter für recordsize und special_small_blocks sein könnte.

Script: $ calc_metadata_size.sh
#!/bin/bash find . -type f -print0 | xargs -0 ls -l | \ awk '{ n=int(log($5)/log(2)); if (n<10) { n=10; } size[n]++ } END { for (i in size) printf("%d %d\n", 2^i, size[i]) }' | \ sort -n | \ awk 'function human(x) { x[1]/=1024; if (x[1]>=1024) { x[2]++; human(x) } } { a[1]=$1; a[2]=0; human(a); printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
 
Last edited:
ich wollte die Consumer SSD ja auch nur für Testzwecke, um mal zu schauen ob es etwas bringt, z.B. 2..3 Wochen Testbetrieb. Wenn Verbesserung feststellbar, dann kommt eine Enterprise SSD rein.
Genau das geht eben nicht. Guck dir das Proxmox ZFS Benchmark Paper an was Sync Write IOPS Performance getestet hat:
HDD: 117 IOPS
Beste Consumer SSD: 339 IOPS
Schlechteste Enterprise SSD: 12.099 IOPS
Optane: 80.732 IOPS
Du kannst also nicht mit einer Consumer SSD testen ob die als SLOG die Performance deines Pools verbessern würde, wenn die selbst nur unwesentlich schneller als deine HDD ist. Da kannst du dann genau so gut eine HDD als SLOG zum testen einbauen. ;)
1692011635190.png

Auch kan man ein ZFS Special Device als ZFS Special Device
a) Mirror Nx SSDs
oder
b) RaidZn SSDs anlegen
KA ob da was inzwischen geändert wurde, aber Special Devices könnten früher kein Raidz. Da gingen nur (striped) Mirrors. Und die waren dann auch nicht wieder komplett entfernbar.
 
  • Like
Reactions: Neobin
Ich kann hier auch meinen Senf nach einer teuren Lernkurve ergänzen: Nutze keine Consumer SSDs!
Anfangs habe ich das auch ignoriert und mir preiswerte "Pro-sumer" Hardware gekauft - zB die Samsung SSDs Pro Serie.

Diese gehen einerseits bei entsprechender Auslastung schnell in die Knie und nutzen sich auch entsprechend schnell ab.


Eine Enterprise SSD kannst du zB voll mit Daten befüllen und die liefert dir immer noch die gleiche Leistung, wie wenn sie leer wäre.
Consumer SSDs straucheln dann sehr schnell.

Ich habe in meinem Server aktuell noch eine "alte" Force MP510. Die habe ich letztes Jahr verbaut und hat mittlerweile 67 % Wearout.
 
  • Like
Reactions: news
Ich nutzte aktuell die hier: https://www.kingston.com/de/ssd/gaming/kingston-fury-renegade-nvme-m2-ssd Auf Grund der 1PBW. Wearout bei 2% :) Leistungstechnisch merke ich keine Einbrüche.

Wer auf Nummer Sicher gehen will: https://geizhals.de/kingston-dc1000...-960gb-sedc1000bm8-960g-a2460370.html?hloc=de Da hast du dann auch PLP

Die Unterschiede sind: Die Fury hat den E18 und 40GB weniger Spare und DDR4. Die "Datacenter" hat den E12 mit DDR3L und halt mehr Spare.

Wie oft propagierte Samsung ist garnicht so Pro, wie sie tut. Das war sie zu MLC Zeiten mal, aber seit dem die auch auf TLC setzten.. Nene.
 
Last edited:
ZFS selbst kannst du mittels zpool trim <poolname> trimmen. Inkl slog und meta (bei l2 bin ich mir unsicher )
 

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!