SMB Performance mit ZFS

Hi…

Ich bin gerade neu im Truenas Game, aber nicht neu im IT Sektor und hätte gern etwas Input zu meinem neues Truenas Server.

Zur Vorgeschichte: Ich habe ein DIY NAS schon sehr lange. Dazu auch noch ein Backup System, aber darum geht es gerade nicht. Ich habe mein Standard NAS bisher immer auf Proxmox mit einer Openmediavault VM betrieben. Unter OMV waren die Festplatten dann mit Snapraid und MergerFS eingerichtet und per CIFS/SMB im Netz freigegeben.

Mit etwas neuerer Hardware wollte ich mal etwas neues wagen, weil mir auch Kollegen Truenas ans Herz gelegt hatte. Zur wichtigsten Hardware: CPU Ryzen 5600GT, 80 GB Ram, 7 HDDs, 4 SSDs plus eine SSD zum Booten. Einrichtung war alles kein Thema: 2 Pool mit allen HDDs als RaidZ2 und alle SSDs als RaidZ1 - dazu ein paar Datasets und Freigaben. Netzwerk ist eine 10Gbit Mellanox an einem Switch, der das auch kann.

Nun zu meiner eigentlichen Frage / Problem. Wenn ich Daten von meinem PC aufs NAS (egal auf welchen Share) kopiere, dann läuft das mit der maximalen Geschwindigkeit vom PC (=2,5 Gbit). Das läuft dann ein paar Minuten und bricht dann ein auf ca. 1/10 der theoretischen Geschwindigkeit. Davon erholt sich das alles aber nicht und bleibt so. Ach, das ist in beide Richtungen so. Und diverse Netzwerktest u.a. mit iperf3 sagen mir, das ich die volle max. Bandbreite normal nutzen kann.

Nun habe ich das schon ne Weile mit Hilfe von ChatGPT und Google zu ergründen versucht, aber leider ohne Erfolg. Er läuft auf ein Software Problem mit Truenas / ZFS raus. Die gleiche Hardware mit der o.g. Software Konfig hat das Problem nicht gehabt (ja ich weiß kein ZFS).

Ich gehe davon aus, dass das eigentlich normal ist, aber wo ist der Flaschenhals ? Ist die Hardware “zu schlecht” ?

Ach und nochwas: das Problem ist keine exklusives Problem von meinem PC mit der Truanas. Auch wenn ich das testweise von einem Mac Mini M4 mache oder Daten von / nach dem Backup NAS kopiere, komme ich irgendwann an den Punkt, dass die Geschwindigkeit drosselt und sich i.d.R. nicht erholt.

Leider habe ich schon alle meine Daten auf das neues Truenas System kopiert (ja ich habe ein Backup !) und würde es ungerne wieder rückgängig machen, weil mir Truenas auch gefällt.

Gruß

Reiner

Ein einzelnes RAIDZx vdev hat die Schreibrate einer einzelnen Platte. Wenn du mehr Performance brauchst, musst den Pool aus mehr als einem Mirror aufbauen. Irgendwann ist der Cache halt voll und dann geht es nur noch so schnell, wie die Daten auf die Platten geschrieben werden können.

Was für HDs und SSDs hast du ?

Danke für die Antworten… es sind 7 Seagate Exos HDDs und 4 Sata SSDs von Macron (aus einem alten Lenovo Server).

Die Geschwindigkeit auf einem vdev ist beim Start des Kopiervorgangs so ca. 300 MByte/s - nach ein paar Minuten (5-10) geht sich auf ca. 30-35 MByte/s. Eine einzelne HDD würde unter optimalen Bedingungen 125 MByte/s machen (real so 115). Bei der SSD wären es optimal 500 Mbyte/s. Und das RaidZx sollte durch die Verteilung doch konstant schneller sein.

Oder täusche ich mich irgendwie ?

kleine Nachtrag, der mir eben gerade erst aufgefallen ist: Ich kopiere gerade unter Windows 50 GB auf eine Truenas Share - wie oben beschrieben: es startet mit ca. 300 MByte/s - nach einer Minute zurück auf 40 MByte/s - während des weiteren Kopiervorgangs zeigt mir aber die Reporting Funktion der Netzwerkkarte eingehend weiterhin Werte im 300er Bereich an… Sehr komisch finde ich.

Das klingt erstmal nach gefülltem RAM/SMB write cache. Danach muss ZFS die Daten dauerhaft auf den RAIDZ vdev schreiben. Die Netzwerkkarte kann dabei weiter 300 MB/s anzeigen, obwohl der Pool hinten nachhinkt.

Lass beim Kopieren zpool iostat -v 1 laufen. Schreib die Ausgabe für HDD-Pool und SSD-Pool mit. Wenn die vdevs dort bei ca. 40 MB/s liegen, ist der Flaschenhals gefunden. Danach noch zpool status -v und SMART für die Platten prüfen.

Ein einzelnes RAIDZ2 vdev fällt bei langen Writes irgendwann auf die echte Plattenrate. 2.5 Gbit am Anfang muss nicht die Dauerrate sein.

@frogger13 Du schreibst, dass du HDDs einsetzt. Kannst du bitte Hersteller und genaue Modelle nennen? Ich selbst bin in meinem aktuellen NAS vollständig auf Flash-Speicher umgestiegen und habe damit bisher sehr gute Erfahrungen gemacht.

Moin Zusammen…

Ich bin immer noch nicht weiter, wie ich mir das vorstelle. Manchmal scheint alles OK und ich übertrage mit 300mybte - also volle Geschwindigkeit. Aber je nach Größe der Dateien wird es mal langsamer, manchmal auch nicht. Es ist auch abhängig ob gerade ein scrub task läuft (ist mir auch schon passiert) - ich habe auch ein paar Tipps und Tricks gelesen, dass man die HDDs auch mit mirror HDDs als vdevs in die Pools bauen soll. Hier ist mir aber die “Verschwendung” bei den HDDs zu groß.

Ich habe aktuell 7 HDDs zu je 16 TB von Seagate (Exos) - 5 habe ich noch vor dem Preisanstieg neu gekauft und 2 habe ich mal refurbished etwas später nachgekauft. Sind alle noch top ich Schuss - dazu habe ich noch 4 Sata SSDs zu je 480GB von Micron aus einem “alten” Server in meiner Firma, die wir nicht mehr benutzen.

Ziel soll es eigetlich nur sein, dass man mit dieser Hardware ein zuverlässiges NAS baut, wobei mir eine konstante und angebrachte Geschwindigkeit beim Kopieren von und zu dem Server wichtig sind. Und ja, mir ist bewusst, das mit HDDs man keine Rekorde aufstellen kann, aber alleine eine konstante Geschwindigkeit einer HDD wäre ja schön.

Umstellen auf SSD wäre cool, aber mein Finanzminister sagt da NEIN !

kleine Nachtrag, den ich vergas: Mein Pool ist jetzt schon zu 86% voll, was ja wohl ein Problem ist von ZFS. Wenn ich das umgehen will bleibt mir nix andere über als den Pool um eine HDD zu erweitern, aber da die Daten ja eher mehr, als weniger werden und die Preise für HDDs nun auch arschteuer sind ist das alle nicht so geil, denn die Daten müssen ja auch noch gebackupt werden…:-1:

Aber es scheint als ob das langfristig die einzige Lösung ist… mehr Speicher.