Welche Lösungen gibt es für ein DIY NAS für 10-20gbit/s

Rokuda

Lieutenant
Registriert
Dez. 2007
Beiträge
525
Moin moin zusammen,

aktuell habe ich einen kleinen Homeserver der Daten über iSCSI (via Dual Port 10gbit) an 3 weitere Rechner bereitstellt. Die Daten liegen auf einem LVM Stripe-Set, bestehend aus 6x4TB Platten, die direkt am B550 Chipset hängen.
Die Lese und Schreibraten brechen jedoch regelmäßig auf 250mb/s ein und auch das lesen vieler kleiner Dateien ist nicht gerade super schnell.

Aktuelle Config:
AMD R5 5600G
2x16GB 3600Mhz RAM
ASRock B550M Steel Legend (1x PCIe 16x 4.0 über CPU, 1x PCIe 4x 3.0 über B550, 6x SATA 6gbit über B550)
Mellanox Connectx 2 Dual SFP+ 10gbit Karte (PCIe 8x)
256gb Samsung NVMe SSD
6x 4TB Seagate HDDs

Jetzt wollte ich mal einerseits auf 6x16TB von Toshiba aufrüsten und mal schauen wie ich die Performance hoch bekomme. Dazu stelle ich mir folgende Fragen, bei denen ihr mir möglicherweise auf die Sprünge helfen könntet.
Mein Ziel wäre es mindestens 1 gigabyte/s dauerhaft halten zu können und möglicherweise einen Cache davor zu schalten der beim lesen kleiner Dateien unterstützt.

  • Sollten die Platten weiterhin über Chipset laufen lassen oder sollte ich einen RAID/HBA kaufen? PCIe-Lanes?
  • Macht ein RAM/NVME-Cache Sinn? Welche guten Lösungen gibt es da die gut funktionieren?
  • Welches Dateisystem? (gibt es inzwischen sinnvolle Deduplication Lösungen?)
  • gibt es fertige NAS Boxen die diese Anforderungen erfüllen und machen diese in meinem Fall Sinn?

Es liegen keine sensiblen Daten auf dem Server und es gibt ein Backup. Ein Ausfall wäre also etwas nervig, aber absolut verschmerzbar.

Ich bin für Bastellösungen und fertige OS Pakete (trueNAS oder Unraid) offen und auch bereit Sachen zu testen. (Solange es den finanziellen Rahmen nicht sprengt)

Liebe Grüße,
Rokuda
 
Zuletzt bearbeitet:
HDD + kleine Dateien + 1 GByte/s?
Wie wäre es mit SSDs? Evtl. einfach mal mit einer sehr schnellen SSD testen?
 
  • Gefällt mir
Reaktionen: nazgul77
All-Flash und/oder Cache dürfte hier wohl die allgemeinste Antwort sein.
Allerdings wäre es vorher wohl sinnvoll, jeden Teil der Gleichung einzeln und gezielt zu testen. Wie verhält sich das Storage lokal bei den Lasten, die du so hast? Läuft das Netzwerk wie gewünscht (ohne iSCSI)? Wie schauts mit der iSCSI Verbindung aus? Ist das Dateisystem für die Nutzung auf nem iSCSI Volume optimiert (kenne mich an der Stelle nicht aus, ist vielleicht nicht betrachtenswert)?

Mit diesen Daten kannst du dann entscheiden, ob Neuanschaffung oder Optimierung der sinnvollere Weg ist.

Ich bin persönlich ein Freund von ZFS, ABER das ist nicht automagisch die Lösung für alle Szenarien und Probleme. Auch mit ZFS muss man sich ab einem gewissen Level tiefer auseinandersetzen und die Eigenheiten kennenlernen.

Und zum Schluß: Was sind "kleine Dateien" bei dir? Und kleine Dateien, die man nicht parallel lesen/schreiben kann/will, zerstören dir ziemlich jedes Storage in Sachen Performance ;)
 
Cache hilft (eigentlich) nur, wenn wieder die selben Daten abgefragt werden, sonst liegen sie ja nicht im Cache.
Für dauerhaft höheren Durchsatz gibt es eigentlich nur drei Wege, erstens mehr Datenträger, zweitens anderes RAID-System oder drittens schnellere Datenträger (SSD).

Bei vielen kleinen, immer wieder anderen, Daten hilft eigentlich nur Umstellung auf SSDs.
Lässt sich ja aber kombinieren, also für die "langsamen", großen (linearen) Daten HDDs und für die "schnellen", kleinen zufälligen Daten SSDs. Sind dann eben in verschiedenen Pools.

Theoretisch macht das ein Cache oder Auto Tiering nicht anders, nur mit dem "Nachteil", dass es frühestens beim zweiten Zugriff auf die selben Daten spürbare Effekte hat
 
Kannst ja mal testweise es mit ner SSD probieren, wirst ja nicht alle Daten auf ner SSD haben müssen?
 
@wahli:
1Gbyte/s für sequentielles Lesen/Schreiben dauerhaft ist durchaus mit 6 HDDs erreichbar.
Für kleine Daten dachte ich an einen NVMe oder RAM Cache

@KillerCow:
das LAN/iSCSI Connection ist vermutlich eher weniger das Problem. Die Auslastung der Platten ist bei dem LVM Stripe Set ziemlich schnell auf 100% und sobald der RAM auch voll ist, auf dem Home-Server, bricht die Übertragung auf 250mbyte/s ein.

Ich weiß leider nicht, was für Caching Lösungen es so gibt, aber mir würde es schon reichen, dass oft verwendete Daten auf einem NVMe Device liegen würde. Vielleicht gibts da ja schon was?
 
Rokuda schrieb:
Die Lese und Schreibraten brechen jedoch regelmäßig auf 250mb/s ein und auch das lesen vieler kleiner Dateien ist nicht gerade super schnell.

Na mit HDD's wird's ned schneller >> SSD's nehmen 👍
 
@T3Kila:
Caching würde mein Problem vermutlich schon verringern. Welche Lösungen könntest du empfehlen?
Das mit der Tiering Pools klingt interessant, müsste aber irgendwie im Hintergrund laufen, da ich Client Seitig beide Arten von Dateien auf ein Volume schiebe.
 
Wie viele Daten werden denn in 95% der Fälle "pro Übertragungsvorgang" maximal übertragen?
 
Rokuda schrieb:
Ich weiß leider nicht, was für Caching Lösungen es so gibt, aber mir würde es schon reichen, dass oft verwendete Daten auf einem NVMe Device liegen würde. Vielleicht gibts da ja schon was?
So ganz spontan gefunden, vielleicht als Einstieg:
https://www.thomas-krenn.com/de/wiki/LVM_Caching_mit_SSDs_einrichten

Für ein bisschen Hintergrund, welche Mechanismen ZFS in Sachen Caching bietet, ist der Artikel hier ganz nett als Einstieg:
https://www.45drives.com/community/articles/zfs-caching/
 
  • Gefällt mir
Reaktionen: T3Kila
@mr hyde:
der größte Anteil der Daten sind Steam Libraries mit sowohl großen als auch kleinen Dateien.
Edit: Demnächst kommen noch Shares für mein Homelab dazu (VMs, Container und DBs)

@KillerCow:
Danke, ich werde mir das mal anschauen und berichten, wie es geklappt hat :)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: T3Kila
Wenn die Übertragung jetzt bei 6x 4TB im LVM Stripe-Set auf 250MB/s einbricht, dann riecht das nach der maximalen Geschwindigkeit einer einzelnen Platte aus dem Stripe-Set.
 
Rokuda schrieb:
@mr hyde:
der größte Anteil der Daten sind Steam Libraries mit sowohl großen als auch kleinen Dateien.

Ich präzisiere meine Frage:


Welche Datenmenge (in GB oder TB) wird denn in 95% der Fälle "pro Übertragungsvorgang" maximal übertragen?
 
@prian:
da gebe ich dir Recht, aber laut atop sind alle Platten zu 100% ausgelastet.
Allerdings sagt atop dass das LV mit 1400mbyte/s ausgelastet wird, während Windows 700mbyte/s anzeigt. Irgendwas scheint da also nicht rund zu laufen.

@mr hyde:
Maximal 2TB auf einmal, wenn ich ein Voll-Backup von einem Client fahre.
 
Jegliches Unterfangen mit rein HDD als Speicherpool und <12 HDDs mit der Erwartung 10GBe zu erreichen ist eigentlich zwecklos.

Nicht mal Enterprise Storage mit 2.5" Server HDDs die mit 10'000 RPM (oder 15K) drehen erreichen wirklich gute Transferraten.

Unser 12 HDD DAS auf der Arbeit sättig nicht mal die SAS 12G Schnittstelle...
Und da sind "schnelle" 16TB SAS HDDs drin.

Es ist zwingend ein GUTES Caching notwendig. Habe vor geraumer Zeit mal sowas mit NappIT (ZFS), 128GB RAM und SLOG Flash probiert. Da kommt dann schon deutlich mehr bei raus.

LVM und Hardware-Raid sind hier eine Sackgasse für was du vor hast.
Eine HDD macht dir im super-optimalen-bestfall ~180-200MB/s.

Im Raid gibt es zwar mehr (je nach Modi) aber nicht pro Disk +100%.
Somit, 6 Disks werden ganz sicher nicht für 10Gbit und mehr reichen.

Ein paar Suchworte: ZFS, SLOG

https://www.servethehome.com/what-is-the-zfs-zil-slog-and-what-makes-a-good-one/

https://ubuntu.com/tutorials/setup-zfs-storage-pool#1-overview

https://www.truenas.com/community/threads/slog-benchmarking-and-finding-the-best-slog.63521/

https://klarasystems.com/articles/w...se-openzfs-slog-and-when-should-you-avoid-it/
 
  • Gefällt mir
Reaktionen: [AlphaRC]Eraser und KillerCow
Ich les hier mal mit und sage Danke für die links @Gohst!

Kämpfe bei meinem Ubuntu ZFS RAID5 setup damit dass nicht mal 1GBit ausgelastet wird und werde die links mal durchschauen.
 
Ich erreiche seit "langem" (also seit ich halt 10 Gbit nutze, das sind ~ 4 Jahre :affe:) problemlos 0,9-1 GByte / sec mit meinen ZFS Servern. Meine HW ist relativ alt Xeons 1155 - mit onboard SATAs + 1x LSI Controller genutzt wird jeweils RAIDZ2.

Bei grossen Dateien 0,9 - 1 GByte - bei kleinen ist halt das Problem dass Datei anlegen etc einfach Zeit frisst, sicher auch wegen COW , da bin ich dann z.B. bei MP3s bei ~ 200 Mbyte / sec.

Ich habe gerade knapp 50 TByte 3x kopiert (also a=>c (als Backup), a=> b, dannach b=>a) wegen Serverumbau und bin im Schnitt über die gesamte Kopieraktion bei etwas über 700 MByte / sec gelandet - was deutlich schneller war als gedacht, eben weil auch sicher 5 TB kleine Dateien sind - bei a=>b mit der Kombi 8 Daten HDDs.

Selbst mein kleinstes Minimalsystem der Server der bei uns immer läuft ein Intel J4105 schafft problemlos > die vollen 2,5 GBit mit denen es angebunden ist - das läuft auch mit Ubuntu 20.04.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: [AlphaRC]Eraser
Ha witzig! Ich hatte naemlich auch ein LSI Hardware Raid (kein ZFS, aber Veracrypt verschluesselt) mit dem es geflutscht ist. Wollte dann aber die extra Karte loswerden und bin auf ZFS mit Verschluesselung migriert. Der Rest der Hardware & Software ist gleich geblieben, nur eben Raid5 gegen das ZFS equivalent getauscht und eben noch nen extra 4GB Riegel spendiert (8GB insgesamt) und seitdem duempelt es bei 40MB/sec rum :(

Dachte bisher dass es eigtl nicht an der Hardware liegen sollte (Celeron G3900, MSI H110I Pro, 8GB Ram) aber vielleicht muss ich die Kiste doch mal komplett neu aufsetzen.
 
DIe LSI laufen natürlich im IT Modus als "doofe" SATA Controller :D

Ich denke das liegt an was anderem dass Du nur 40 MByte / sec hast

Du nutzt vermutlich Verschlüsselung von OpenZFS? das ist mit der CPU leider langsam, weil Verschlüsselung des ZFS AVX / AVX2 der CPU benötigt und nicht nur AES-NI - AVX(2) haben aber Celeron und Pentium Silver etc meistens nicht.

Ich nutze LUKS Crypt (AES256bit) und auf den verschlüsselten Luks Devices dann ZFS (zumindest auf dem Celeron, die Xeons haben AVX da tut dann OpenZFSCrypt) Für Luks Crypt reicht nämlich AES NI - mit OpenZFSCrypt kam mein J4105 Celeron auf max 100 MByte/sec bei 100% Last mit Luks Crypt + OpenZFS auf problemlos > 250 MByte / sec - (beides AES256bit)

Du musst also jedes "HDDs Device" Luks crypten und auf das Luks Dev / Mapping dann das OpenZFS obendrauf setzen, das denke ich bringt Dir wieder die volle Geschwindigkeit zurück.

Bevor ZFS Crypt eingebaut hatte (da kam ja erst mit OpenZFS) habe ich das auch so gemacht auf meinen "grossen" Servern. Heute immer noch auf meinem kleinen.

Ist halt etwas ärgerlich dass AES-NI nicht reicht für OpenZFS Crypt aber naja was soll's man kann es ja hinkloppen. Auf CRC Datencheck und COW will ich halt nirgends mehr verzichten, wenn es nicht sein muss.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: [AlphaRC]Eraser
Zurück
Oben