TrueNAS Scale ZFS VDEV Aufteilung

qiller

Commander
Registriert
Nov. 2022
Beiträge
2.813
Hu zusammen,

hab hier einen älteren gebrauchten 1HE Server (Intel Xeon E3-1220 v5, 2x 8GB DDR4-2133 ECC UDIMM) mit 4x Sata HotSwap und insgesamt 6x Sata Anschlüssen. Da meine Zeit mit FreeNAS schon verdammt lang zurück liegt und auch nur kurz war, wollte ich hier mal nach dem Best Practice mit TrueNAS Scale fragen. Im Grunde soll da nur 1 SMB-Share für Videos und eine iSCSI-LUN für Sicherungen angelegt werden. Festplatten fehlen noch. 2x 250GB SSDs wären schon vorhanden.

Im Server selber ist kein Platz mehr für irgendwelche NVMe-Adapter etc., da eine 10G NIC verbaut bleiben soll. Also habe ich hier 4x Sata Hotswap und 2x Sata Non-Hotswap.

Mein Plan wäre jetzt einfach die beiden Sata-SSDs beim TrueNAS-Setup zu spiegeln und da das TrueNAS-OS zu installieren und dann halt 4x 16TB HDDs zu kaufen, und die einfach in nem RaidZ1 mit 4 Laufwerken laufen zu lassen. Mir ist nur aufgefallen, dass es ja bei ZFS auch diese Special VDEVs wie ZIL, Metadata, Lesecache, Dedup und Spare-Laufwerk gibt. Macht es für meine Zwecke (Video-Share+Backup-LUN) Sinn, irgendwas davon einzusetzen und das Setup nochmal umzubasteln? Einzige was ich ansonsten noch neben den HDDs anschaffen würde, wäre vlt. nochmal 2x16GB ECC RAM. Dann käme ich auf 48GB RAM. Oder wie würdet ihr das angehen?

Danke schonmal für die Anregungen.
 
  • RAID-Z1 hat tatsächlich ein Stück overhead, und beim recover (falls ne Platte ausfällt) sind wg. der Belastung schon öfters Verbünde komplett ausgefallen. Lieber mirroring. Gerade, wenn ich von 10 GbE lese.
  • KEIN Dedup! Viel zu wenig RAM, außerdem sind die Einsparungen nur in Spezialfällen nutzbar (z.B. viele leere VM-Images). Da war mal ne Daumenregel von 5 GB RAM pro TB Daten, was man für die Tabelle braucht. Nicht Rekomprimierbares, wie Filme, MP3s, od. was man halt hat, fallen da regelmäßig raus.
  • Lese-Cache muss nicht mirror sein, wird aber sehr belastet.
  • Lieber keinen Schreibcache (ist fehleranfällig), lieber mehr RAM.
  • Ich mag keine spare-Laufwerke, weil da zB mitten in der Nacht ein recover startet und man nichts mitbekommt. Mittags ist der pool dann ggf. komplett tot. Lieber auf warn-Meldungen setzen und selber pool-recovern anstoßen (zB wenn man die backups kontrolliert hat). Aber ja, man sollte Ersatzplatte(n) parat haben, wenn man offline-Zeit nicht abwarten kann.
... nur mal so. :)

Nachtrag: Also ja, 2x250 GB ist gut fürs TrueNAS. Da kann man auch ein paar extra VMs laufen lassen fürs LAN. Aber Vorsicht mit dem Datengrab! Bestes ZFS hilft dir nicht vor Verlust, Backup ist nötig. Und da halt besser 2xmirror (also 2 mirror-vdevs als ein raidz)
Nutze ZFS (unter Solaris+Nachfolger) seit vllt. 15 Jahren und es geht dabei eben auch mal was kaputt! Vorsicht mit den Familienfotos 😇
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: qiller
Sparelaufwerk musst du selber wissen. Bei den wenigen Platten in der Kiste vermutlich doof auf eine Platte zu verzichten. Und bevor du eine Platte ungenutzt für den Fall der Fälle in die Kiste hängst, bau direkt ein RaidZ2 oder bei vier Platten nen Mirror. Da hab ich gerade keine Idee, was "besser" ist.

ZIL bzw. eher SLOG müsste der Sicherheit halber ein Mirror sein, damit keine Daten verloren gehen, falls eine der ZIL-Platten ausfällt. Und dann ist ZIL auch nur bei synchronen Zugriffen interessant. Also vorher gucken, ob du eher sync oder asnyc Zugriffe hast. Ist vermutlich auch wieder dem Platzmangel geschuldet eher doof.

Dedup kostet richtig RAM. Ist im Zweifel nen Rechenexempel und du musst schauen, ob sich deine Daten überhaupt gut dedupen lassen.

Das wären gerade meine Gedanken dazu.
 
  • Gefällt mir
Reaktionen: qiller
Du kannst dir auch überlegen ob du dir 10G nicht einfach sparst. Der Storage wird weitestgehend nicht schnell genug dafür sein, sodass du nur beim Caching vielleicht 10G erreichen kannst, falls die Daten, die du lesen willst, gerade noch im ARC sind. Und beim schreiben mit 10G wären die TXGs ständig voll, denn das System wird die Daten aus dem RAM nicht schnell genug an den Storage los. Die Transferrate sieht dann aus wie eine Sinuskurve (die aber natürlich nicht unter 0 geht, sondern entsprechend verschoben ist ;)) mit 10G Peaks, der Durchschnitt ist aber maximal die Hälfte, bei vier SATA HDDs eher noch weniger und die Wellentäler sind dann entsprechend länger als die Peaks.
 
KillerCow schrieb:
Ist im Zweifel nen Rechenexempel und du musst schauen, ob sich deine Daten überhaupt gut dedupen lassen.
Das kann man übrigens auch "ZFS" selbst machen lassen mit:
zdb -S poolname
(siehe dazu auch ZDB(8))
Das sagt einem dann auch, wieviel DDT-Einträge benötigt werden. Und dann kann man den Speicherbedarf halt berechnen, in dem man für jeden Eintrag ca. 320 Bytes veranschlagt (siehe dazu auch: https://openzfs.readthedocs.io/en/latest/performance-tuning.html#deduplication).
 
Khorneflakes schrieb:
Du kannst dir auch überlegen ob du dir 10G nicht einfach sparst.
Es geht nur darum, nicht bei 1G festzuhängen. Ob man dann real bei "nur" ~400-500MB/s Schreibrate hängen bleibt, wär erstmal nicht so tragisch. Dass man 10G mit nur 4 Platten ohne SSD Cache nicht erreicht, ist mir schon klar. Ich mein, was bringt mir denn der freie PCIe x8-Slot? Ich kann dann z.B. 2x x4 NVMe SSDs verbauen. Aber wofür, wenn das NAS dann nur noch 1G kann?
Ergänzung ()

shh schrieb:
Lieber mirroring.
Die Daten, die aufs NAS kommen, sind nur Sicherungsdateien, auch die Videos gibts noch an anderer Stelle nochmal. Daher wäre Mirror zuviel Platzverschwendung. Aber ansonsten hättest natürlich recht.
shh schrieb:
Also ja, 2x250 GB ist gut fürs TrueNAS.
Hab grad mal geguckt. TrueNAS hat da ja ne recht simple Konfigurationssicherung!

Unbenannt.png


Macht da nen Mirror des OS überhaupt Sinn? Ich mein, wenn wirklich mal die OS-SSD kaputt gehen sollte (was eh schon selten genug passiert), wird halt ne andere eingebaut, TrueNAS installiert und dann die Config wieder zurückgespielt. Oder seh ich das falsch?
 
Zuletzt bearbeitet:
qiller schrieb:
Dass man 10G mit nur 4 Platten ohne SSD Cache nicht erreicht, ist mir schon klar. Ich mein, was bringt mir denn der freie PCIe x8-Slot?
Na vermutlich nichts, aber wenn dir das klar ist, dann ist es ja gut. Das kann ich ja von hier aus nicht riechen ob dir das schon klar war, ich hab den Gedanken einfach nur mal in den Raum geworfen.

Wenn du ein Raid-Z1 machst, dann wäre 1G eigentlich auch völlig ausreichend. Selbst wenn du weniger Nettokapazität in Kauf nimmst und ein Mirror machst, dann sind 400-500 MB/s schon optimistisch.

Vorallem via iSCSI wird das eher langsam sein. Wenn es geht, dann würde ich iSCSI-Shares auf einem NAS mit ZFS vermeiden.

Ich würde sagen, das wäre sonst ein typisches NAS, wo 1G oder 2.5G angemessen wären. 2.5G wäre auch ein guter Upgradepfad gewesen, wenn das schon ein bestehendes NAS gewesen wäre.

NVMe-SSDs wären eine Option für die anderen VDEVs. Wenn du z.B. mit was anderem als Videodateien arbeitest, dann könntest du auch Small Block Files in die Special Allocation Class aufnehmen, damit die HDDs sich nicht darum kümmern müssen.
 
  • Gefällt mir
Reaktionen: qiller
Khorneflakes schrieb:
Wenn du ein Raid-Z1 machst, dann wäre 1G eigentlich auch völlig ausreichend. Selbst wenn du weniger Nettokapazität in Kauf nimmst und ein Mirror machst, dann sind 400-500 MB/s schon optimistisch.
Also ne Synology NAS, ebenfalls mit 4x 8TB Sata HDDs in nem Raid5 schafft fast 700MB/s . Und da ist auch nur ein Xeon-D 4-Kerner mit 16GB RAM verbaut. Also eine gewisse Erwartungshaltung habe ich schon. Ein RaidZ1, was quasi nur so schnell ist, um 1G auszulasten, wär mir definitiv zu wenig. Aber ich werde das sicherlich erstmal austesten. Kann ich ja hier dann berichten.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    666,5 KB · Aufrufe: 25
  • Unbenannt2.png
    Unbenannt2.png
    12,2 KB · Aufrufe: 19
Das ist leider nicht direkt vergleichbar. Mein Gefühl sagt mir, dass du dann eher enttäuscht sein wirst. Aber ja, teste das auf jeden Fall mal. Hardware-Sizing und Konfiguration von TrueNAS / ZFS ist eine Wissenschaft für sich.
 
Ok, hab mich mal bisschen schlau gelesen und für meine Einsatzzwecke sind die ganzen Special VDEVs eher unnötig. Die werden primär benötigt, wenn man VMs/DBs oder viele kleine Dateien (Readcache) auf dem ZPool laufen lassen möchte. Für simple sequentielle Reads/Writes, wie sie bei Backups und Videos anfallen werden, ist das nur eine zusätzliche potentielle Fehlerquelle.
 
Ja, schon, aber...
Es ist auch wichtig festzuhalten, dass die fast maximale Schreibrate von 500MB/s von HDDs (über SATA) natürlich nur bei relativ leeren Datenträgern möglich ist. Und natürlich nur solange der HDD-(oder System-)Cache nicht leer ist, was nach wenigen Minuten passiert.
ZFS auf HDDs "verstopft" auch über die Zeit (es gibt kein defrag), was sich recht schnell auf die Schreib- und auch Leserate auswirkt. Solange die HDDs leer bleiben (was man in der Praxis nicht hat), kann man da immer irgendwelche theoretische Traumwerte (Synology, 700MB/s lesen) formulieren.
Beim Lesecache mittels SSDs/NVMes ist auch anzumerken, dass es da teilw. Probleme mit dem Trim gibt und natürlich der Lebenszeit des Cache. Die inhärenten HDD-Probleme kann man also nicht einfach durch eine dauerzubeschreibende NVMe lösen.

Man könnte schon RAIDZ1 machen, da ist die CPU nicht wirklich unterdimensioniert.
Wichtig, wenn der Durchsatz einigermaßen bleiben soll: Die HDDs sollten zur Hälfte leer bleiben.
Auch zu beachten: man hat ja auch snapshots, der space läuft somit automatisch im Hintergrund voll. Und 16 GB RAM wären extremst knapp, insb. wenn ich 10 GbE und iSCSI lese.
 
So, mal ein RaidZ1 mit 3x 2TB Platten, die ich hier noch rumliegen hatte, erstellt. Keinerlei sonstige VDEVs:

Unbenannt.png


344MB/s Schreibrate und 374MB/s Leserate mit 2MB Blöcken. In der Berichtsseite bei den Datenträgern lagen die einzelnen R/W-Raten der Laufwerke bei 170-180MB/s. Also für mich sieht das nach ner ziemlich guten Skalierung aus. CPU-Last war nur beim Schreiben bei 30-35%, wahrscheinlich aber auch nur wegen der Erzeugung der Zufallszahlen, beim Lesen lag sie bei 10-15%.

Ich geh davon aus, dass mit 4 größeren HDDs, die dann einzeln schon ~250MB/s schaffen, man wieder ca. bei dem landet, was ich auch beim Synology-NAS schon gesehen habe (natürlich mit abnehmender Tendenz bei höherem Füllgrad). Also bisher verhält sich TrueNAS Scale eigentlich wie erwartet (und das mein ich durchaus positiv).

Aktuell fehlt mir noch der Test inkl. 10G Netzwerkstack, da geht sicherlich noch bisschen was durch den Overhead runter, aber ich bin da optimistisch.
 
qiller schrieb:
Macht da nen Mirror des OS überhaupt Sinn? Ich mein, wenn wirklich mal die OS-SSD kaputt gehen sollte (was eh schon selten genug passiert), wird halt ne andere eingebaut, TrueNAS installiert und dann die Config wieder zurückgespielt. Oder seh ich das falsch?
Nein macht kein Sinn, musste auch schon mal Truenas Scale neuinstallieren -> reinstall +cfg laden und alles ist beim Alten :)
 
  • Gefällt mir
Reaktionen: qiller
So, die Platten sind da. Hier mal paar Werte:
  • Intel Xeon E3-1220v5 (4/4-Kerne/Threads aus der Skylake-Ära)
  • 64GB ECC DDR4-2133 UDIMMs
  • 4x Toshiba MG09 18TB als ZFS RAIDZ1 (ohne weitere Special VDEVs, zum Test deaktivierte Kompression)
truenas_dd_datarates.png

Die Tests wurden bei ca. 1/4 Füllstand gemacht, also wenn man die Tests am Anfang des Plattenplatzes machen würde, kämen da noch etwas höhere Werte raus.

CPU-Last Schreiben:
truenas_cpu-load_write.png


CPU-Last Lesen:
truenas_cpu-load_read.png


Lese-/Schreibraten der Disks:
truenas_disk_read-write-rates.png


Bin soweiten zufrieden. Tests mit 10G Netzwerk kommen später.

Edit: Übers 10G Netzwerk schwanken die Schreibraten um die 700MB/s.
Unbenannt.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Banned und Superseven77
Zurück
Oben