Jump to content

Verständnisfrage – Array Aufbau mit SSD, NVME


Snapmix

Recommended Posts

Hallo ans Forum,

 

ich bin hier neu und ebenso neu in der Gemeinschaft der Unraid-Fans 😀

 

Als Neuling habe ich ein paar Verständnisfragen und möchte mein aktuelles Setup gerne auch zur Diskussion stellen: 

 

Ich habe ein Unraid auf dem derzeit eine Windows-VM, mehrere Docker-Container und (noch) ein Wireguard-Server laufen. Die HW-Basis ist ein elite-MiniPC X300 
https://store.minisforum.de/products/minisforum-x300-mini-pc
welcher um eine interne SSD 
https://www.amazon.de/gp/product/B071KGRXRG/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&th=1
erweitert wurde.

 

Aktuell lese ich mich deutlich intensiver in die Hintergründe von Unraid ein und möchte mich hier von Zeit zu Zeit rückversichern, ob meine Rückschlüsse plausibel sind. Aktuell geht es mir um meine Array-Situation: 

 

So wie ich die Hilfe, die FAQs hier im Forum, die Youtube-Videos und auch die Unraid-Doku verstehe, ...

  • definiert die Parity die maximale Performance (ohne Cache)
  • sind die Schreibzyklen auf Disk und Parity weitgehend gleich hoch
  • muss die Parity zwangsläufig die größte Platte sein um ihrer Aufgabe nachzukommen
  • liegen die Daten originär auf meiner "Disk1"
  • schließe ich nun eine weite "Disk2" an, wird dort KEIN Raid1 mit der Disk1 aufgestellt, sondern die Disk2 bietet nur zusätzlichen Speicherplatz

 

Daraus resultiert dann üblicher Weise:

  • Die Parität ist idealerweise eine große NAS/Server-Festplatte mit hoher Zyklenfestigkeit und guten Speicher/Preis-Verhältnis
  • Sie wird ergänzt mit anderen Festplatten für die Daten
  • Die langsame Übertragungsleistung dieser Datenträger wird "aufgehoben" mit einem (doppelten) SSD-Cache

 

Fragen: 

  1. War es dann eher kontraproduktiv die (vermutlich schnellere) NVME NICHT als Parity genutzt zu haben (jetzt mal abgesehen davon dass das aktuelle Modell zu klein dafür ist). Oder macht das bis max. 2 x 1 Gbit/s Netzwerkanschluss im Bonding bei den Zugriffen sowieso keinen Unterschied?!
  2. Ist das Setup auch im Hinblick auf die Zyklenfestigkeit "richtig" gewählt oder fliegt mir das "um die Ohren", weil ich keine "richtige" Festplatte als Parity nutze? Ich dachte eigentlich die SSD sei zyklenfester aber das war offenbar ein Irrglaube.
  3. Backups laufen auf eine (externe) Synology (Raid1), ich würde aber gerne lokal eine USB-C-SSD (oder Festplatte) als vor Ort Backup konfigurieren. Sozusagen 1:1 die Disk1 spiegeln. Wie wäre da "Best Practice" in Unraid?
  4. Nehmen wir an, meine HW streikt und ich baue die Disk1 mit meinen Daten in einen anderen Rechner. Welche Voraussetzung benötige ich, um die Daten zuzugreifen? Sind diese verschlüsselt? Kann ich die einfach mit Windows oder nem Linux öffnen und ggfs. wegspeichern?

 

Vielen Dank im Voraus

Bildschirmfoto 2021-11-04 um 12.23.27.png

Link to comment
2 hours ago, Snapmix said:

Vielen Dank im Voraus

 

Zunächst: Ich würde keine NVMe/SSD als Array Devices nehmen. Da gehen die Meinungen auseinander. Ich würde es aber nicht machen. Das Problem ist das fehlende Trim bei der Parity. Sind das beides PCIe Devices oder SATA/NVMe PCIe gemischt?

 

2 hours ago, Snapmix said:

definiert die Parity die maximale Performance

 

Beim Schreiben: Nein, im Array (ohne Cache) bestimmt die langsamste Platte die beschrieben wird (inkl. Parity) die Performance.

 

2 hours ago, Snapmix said:

sind die Schreibzyklen auf Disk und Parity weitgehend gleich hoch

 

Bei nur einer Daten-Disk und genau einer Parity-Disk? Ja.

 

2 hours ago, Snapmix said:

muss die Parity zwangsläufig die größte Platte sein um ihrer Aufgabe nachzukommen

 

Sie muss mindestens so groß sein wie die größte Daten-Disk.

 

2 hours ago, Snapmix said:

liegen die Daten originär auf meiner "Disk1"

 

Bei nur einer Daten-Disk? Klar, wo sonst?

 

2 hours ago, Snapmix said:

schließe ich nun eine weite "Disk2" an, wird dort KEIN Raid1 mit der Disk1 aufgestellt, sondern die Disk2 bietet nur zusätzlichen Speicherplatz

 

Im Array übernimmt die Parity die Absicherung auch dieser weiteren Disk. Das Unraid Array ist ein RAID-4. Bei nur einer Daten-Disk und einer Parity-Disk ergeben beide dadurch "zufällig" ein RAID-1. Ab zwei Daten-Disks bleibt es ein RAID-4.

 

2 hours ago, Snapmix said:

Die langsame Übertragungsleistung dieser Datenträger wird "aufgehoben" mit einem (doppelten) SSD-Cache

 

Es handelt sich nicht um eine langsame Übertragungsleistung, sondern es liegt in der Natur des RAID-4. Jeder Schreibzugriff resultiert bei Standardeinstellung in drei Zugriffen. Somit hat das Array in etwas ein Drittel der Performance der langsamsten Platte. Alternative #1: Schreib-Cache verwenden. Alternative #2: Schreib-Tuning, resultiert allerdings in höherem Stromverbrauch, da alle Platten benutzt werden und nicht nur die eine Daten-Disk inkl. Parity.

 

2 hours ago, Snapmix said:

Nehmen wir an, meine HW streikt und ich baue die Disk1 mit meinen Daten in einen anderen Rechner. Welche Voraussetzung benötige ich, um die Daten zuzugreifen?

 

Das Zielsystem muss das von Dir gewählte Dateisystem der Platte verstehen können (zur Auswahl stehen Dir ReiserFS, BTRFS, XFS).

 

2 hours ago, Snapmix said:

Sind diese verschlüsselt?

 

Wenn Du Verschlüsselung in Unraid gewählt hast, klar. Sonst nicht.

 

Link to comment
18 hours ago, Snapmix said:

definiert die Parity die maximale Performance (ohne Cache)

Ja, wenn man nicht Reconstruct Write aktiviert hat oder nur eine Datendisk hat (weil dann Reconstruct Write aktiv ist), weil er dann parallel von der Parity liest und schreibt.

 

Bei Reconstruct Write bremst die langsamste Platte im Array.

 

Wenn auf zwei Disks im Array parallel geschrieben wird, gilt diese Aussage nicht mehr, denn dann schreibt und liest er auch parallel von Datendisks, selbst bei Reconstruct Write.

 

18 hours ago, Snapmix said:

sind die Schreibzyklen auf Disk und Parity weitgehend gleich hoch

Nicht wenn man mehrere Datendisks hat. Jede Datendisks erhöht die Schreibzyklen der Parität um 100% (wenn man sie vollständig beschreibt).

Link to comment
18 hours ago, Snapmix said:

 

18 hours ago, Snapmix said:

War es dann eher kontraproduktiv die (vermutlich schnellere) NVME NICHT als Parity genutzt zu haben

Korrekt. Nur wer das Geld hat, kann auch gleich SSD Only fahren. Siehe auch:

https://forums.unraid.net/topic/114126-ssd-performance-im-array/

 

18 hours ago, Snapmix said:

Ich dachte eigentlich die SSD sei zyklenfester aber das war offenbar ein Irrglaube.

Nur SSDs haben eine TBW als Schreiblimit. HDDs haben so etwas nicht. Allerdings spielt das mit der richtigen SSD keine Rolle. Enterprise SSDs haben zb Petabytes als Schreiblimit. Allerdings sind die in aller Regel kleiner. Also eine 4TB Enterprise SSD gibt es nicht, um sie mit einer 4TB HDD zu kombinieren. Man musste gleich auf 7.68TB gehen. Rein finanziell lohnt sich das außerdem meiner Ansicht nach nicht wie 128GB RAM. Damit schiebst du je nach Einstellung bis zu 100GB direkt in den RAM und was danach im Array passiert, kann dir egal sein:

 

 

 

 

 

 

Link to comment
On 11/4/2021 at 4:02 PM, hawihoney said:

Das Problem ist das fehlende Trim bei der Parity. Sind das beides PCIe Devices oder SATA/NVMe PCIe gemischt?

Ok, das "Trim-Problem" kann ich nachvollziehen. Die beim kauf inkludierte 

512 GB Kingston NVME steckt an einem M.2 2280 256/512 GB PCIe SSD (PCIe 4X, bis zu 2 TB unterstützt) und arbeitet derzeit als Disk1.

Die hinzugesteckte SSD 

SanDisk Ultra 3D SSD 1 TB interne SSD (SSD intern 2,5 Zoll, stoßbeständig, 3D NAND-Technologie, n-Cache 2.0-Technologie, 560 MB/s Übertragungsraten) arbeitet als Parity und hängt wohl am 1×2,5 Zoll SATA HDD Slot (SATA 3.0 6.0 Gb/s) des MiniPC

 

On 11/4/2021 at 4:02 PM, hawihoney said:

bestimmt die langsamste Platte die beschrieben wird (inkl. Parity) die Performance.

Klingt auffallend plausibel ;-) Ebenso, dass die Schreibzyklen der Parity, bei mehr Platten entsprechend ansteigen.  

 

On 11/4/2021 at 4:02 PM, hawihoney said:

Jeder Schreibzugriff resultiert bei Standardeinstellung in drei Zugriffen. Somit hat das Array in etwas ein Drittel der Performance der langsamsten Platte

Danke für den Hinweis! Aber warum 3? Doch eigentlich nur die jeweilige Disk und die Parität?! Und warum bremsen die sich aus - die können doch parallel erfolgen bei dedizierten Laufwerken? Oder ist eben das der Unterschied zu dem von @mgutt: (ebenso) erwähnten "Reconstruct Write"?

 

On 11/4/2021 at 4:02 PM, hawihoney said:

Das Zielsystem muss das von Dir gewählte Dateisystem

Ok, sehe gerade, da habe ich für die Disk xfs gewählt. Aus Zugriffssicht muss ich aber eh offenbar für alle ein ggfs.virtuelles Linux installieren. Und verschlüsselt ist da nix. Das beruhigt schon mal ;-) 

 

8 hours ago, mgutt said:

SMB Performance Tuning Guide

Danke für die Erläuterung. Mein AMD5 3400g hat 2096 Punkte im PassMark Single Thread. Das sollte erstmal genügen ;-) Welches Samba wird denn in Unraid 6.9.2 eingesetzt? 

 

8 hours ago, mgutt said:

Nur wer das Geld hat, kann auch gleich SSD Only fahren.

Das guck ich mir nochmal genauer an. Bevor ich noch RAM nachrüste, gucke ich erstmal, dass ich die 2 x 1 Gbit/s evtl. mit dem vorhandenen Material soweit möglich ausschöpfe. Das verlinkte Video kenne ich "selbstverständlich" schon ;-)

 

Vielen Dank an Euch beide und ein schönes Wochenende!

 

 

Edited by Snapmix
Link to comment
1 hour ago, Snapmix said:

gucke ich erstmal, dass ich die 2 x 1 Gbit/s

Mit SMB Multichannel und einem Client mit 2.5G LAN Buchse oder WIFI6 wären übrigens 200 MB/s möglich.

 

1 hour ago, Snapmix said:

Ok, das "Trim-Problem" kann ich nachvollziehen

Auch das spielt bei Enterprise SSDs übrigens eher eine untergeordnete Rolle. Die nutzen den größeren Over-Provisioning Bereich als Cache für die Schreibprozesse.

 

1 hour ago, Snapmix said:

Aber warum 3

Lesen, Ändern, Schreiben. Wobei ändern natürlich im RAM erfolgt. Also nur auf den Datenträger bezogen wären es zwei Vorgänge. Bei Reconstruct Write wird gar nicht von der Parity gelesen, sondern mit allen Datendisks neu berechnet. Daher müssen bei Reconstruct Write alle Datendisks bei jedem Schreibprozess laufen. Damit geht dann natürlich die Energieeffizienz von unRAID flöten.

 

Aus dem Grund empfehlen wir auch Hot und Cold Storage klar zu trennen und seine SSDs für den Cache Pool so groß zu wählen, dass im Array wirklich nur "unwichtige" Daten liegen.

Link to comment
12 hours ago, mgutt said:

Lesen, Ändern, Schreiben. Wobei ändern natürlich im RAM erfolgt. Also nur auf den Datenträger bezogen wären es zwei Vorgänge.

 

Ich bin mir nicht sicher ob das in den Jahren mal geändert wurde, aber das ist mein alter Wissensstand zu dem Thema:

 

Quote

To summarize, for the "read/modify/write" method, you need to:

* read in the parity block and read in the existing data block (can be done simultaneously)

* compare the data blocks, then use the difference to change the parity block to produce a new parity block (very short)

* wait for platter rotation (very long!)

* write out the parity block and write out the data block (can be done simultaneously)

 

That's 2 reads, a calc, a long wait, and 2 writes.

 

 

Link to comment
37 minutes ago, mgutt said:

Dort steht "read in the existing data block". Es gibt keinen bereits existierenden Datenblock, sondern der kommt ja gerade "von außen"

 

Du irrst Dich. Nach Deiner Erklärung dürfte beim Schreiben einer Datei auf eine Datenplatte das Folgende nicht passieren. Wie erklärst Du Dir die Lesezugriffe auf die Datenplatte beim Schreiben:

 

image.thumb.png.26c2d463bff038f9c2fcc43f46a03e7b.png

 

Natürlich gibt es einen existierenden Datenblock auf der Datenplatte. Der soll ja überschrieben werden. Der kann leer sein oder bereits Daten enthalten. Durch das Lesen werden die Unterschiede zwischen dem neuen Datenblock und dem alten Datenblock gefunden. Dazu wird der passende Parity-Block gelesen und dann binär abgeglichen. Dann erst werden Daten- und Parity-Platte geschrieben.

 

Probiers mal aus. Schreib einfach mal eine Datei. Es gibt Lese- und Schreiboperationen auf Daten- und Parityplatte(n).

 

Edited by hawihoney
Link to comment
9 minutes ago, mgutt said:

Ok, da habe ich irgendwie Reconstruct Write mit normal vermischt.

 

Nur der Vollständigkeit halber: Auch bei den anderen Write-Alternativen werden Datenplatten gelesen - in diesem Fall aber alle anderen. Es entfällt das Lesen der zu beschreibenden Daten-Platte (was Performance einspart durch das fehlende Warten auf den Schreib-/Lesekopf zwischen Lesen und Schreiben an der gleichen Stelle) und das Lesen der Parity-Platte(n).

 

Edited by hawihoney
Link to comment
1 hour ago, hawihoney said:

Es entfällt das Lesen der zu beschreibenden Daten-Platte (

Das schon, aber die Performance bricht direkt zusammen, wenn man auf zwei Platten parallel Dateien hinzufügt, weil er dann von einer wieder parallel liest und schreibt. Daher ist Reconstruct Write auch nur so "naja".

 

Also wenn SSD Only oder eben Pools. Für Performance taugt das Array einfach nicht.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...