Jump to content

NVMe SSD oder SATA SSD als Cache?


Recommended Posts

Hi zusammen,

 

ich bin gerade dabei meine Laufwerke einzurichten. Folgende SSD-Platten sind aktuell vorhanden für den Cache und einem weiteren schnellen Pool.

 

1x SATA SSD 1TB

1x NVMe SSD 1TB

 

Jetzt überlege ich mir eine zweite SATA SSD mit 1 TB zu kaufen und damit ein RAID 1 beim Cachepool einzurichten. Die NVMe SSD wollte ich dann für Docker und VM´s in einem extra Pool verwenden, da diese Platte ja deutlich schneller als die SATA SSD´s sind.

 

Wäre das der richtige Schritt? Soviel Cache werde ich vermutlich gar nicht brauchen, da ich nicht ständig Daten hin und her schiebe.

 

Wie sehr Ihr das?

 

Danke Euch.

 

Gruß

Infosucher

Link to comment

Du musst das in Relation zu Deiner LAN Geschwindigkeit sehen.

 

Der Cache wird nur beim Schreiben von NEUEN Dateien benutzt, er sollte möglichst den ankommenden Daten standhalten können.

Bei einem 1G LAN schafft das eine SATA SSD locker, bei einem 10G LAN kommen auch einfache NVMe SSDs ins Schwitzen.

 

Für Docker und VMs sind NVMe deutlich besser, denn hier erfolgt der Zugriff ja lokal, ohne LAN Bremse.

 

Ob man wirklich RAID1 braucht, muss jeder selber wissen. Auf jeden Fall halbiert sich dadurch die Schreibrate in den Cache sofort...

 

 

  • Upvote 1
Link to comment

Seit wann halbiert Raid1 die Schreibgeschwindigkeit?

 

Bei RAID1 ist die Schreibgeschwindigkeit wie bei einer Einzelplatte und bei guter Implementierung entspricht die Lesegeschwindigkeit der doppelten Lesegeschwindigkeit des Einzellaufwerks.

 

Ich hab einen Sata SSD Mirror für Cache und die meisten Container und einen NVMe Mirror für VMs und die Container die IO brauchen. 

 

Wenn ich mal von 2,5G auf 10G umsteigen, dann muss ich das ändern.

  • Upvote 1
Link to comment
10 hours ago, Infosucher said:

Jetzt überlege ich mir eine zweite SATA SSD mit 1 TB zu kaufen und damit ein RAID 1 beim Cachepool einzurichten. Die NVMe SSD wollte ich dann für Docker und VM´s in einem extra Pool verwenden, da diese Platte ja deutlich schneller als die SATA SSD´s sind.

 

naja, woher kommt denn die Überlegung bzw. was ist das Ziel ?

 

Raid1 im cache bringt die eine Absicherung wenn eine der SSD's abschmiert, ist dass das Ziel, dann ja, macht Sinn ;)

 

bitte bedenke noch, wenn du Docker und VM auf der single drive nvme lässt, Backup ... (da ist keine Absicherung)

- für Docker zumindest /appdata

- für VM's das libvirt image aus /system und die vdisks aus /domains

das Ganze sofern es dir wichtig ist nach einem nvme Ausfall wieder alles herstellen zu können ...

/system/docker/... ist irrelevant, da sind keine persistent Daten drin ...

 

Dafür wäre noch ein Backup deines /config Ordners vom Flash (boot) elementar ...

Link to comment
On 4/10/2024 at 9:41 PM, worli said:

Seit wann halbiert Raid1 die Schreibgeschwindigkeit?

Kann ich nur bestätigen. Hier mal ein von mir durchgeführter Test mit 50GB Daten von und nach NVME:
Healt bedeutet gesundes Raid 1 mit beiden Platten, Broke eine Platte wurde entfernt und ZFS lief im Notmodus.
 

von NVME zu SSD ZFS (health)    10:28,99
von NVME zu SSD ZFS (broke)     13:04,28

von SSD ZFS (health) zu NVME    01:34,33
von SSD ZFS (broke) zu NVME     02:23,03

von NVME zu SSD-Plus 1TB         04:16,18
von SSD-Plus 1TB nach NVME     02:39,02

von NVME zu SSD 1TB                02:17,27
von SSD 1TB nach NVME            02:51,19
 

Das ganze wurde natürlich Unraid intern getestet.

Edited by zero_neverload
Hinweis zum Test
Link to comment

Also ich versteh deine Tabelle nicht und auch nicht was die Tests mit meiner Aussage zu tun haben.

Wenn man auf ein Raid1, bzw Mirror schreibt, dann schreibt man auf beide Platten gleichzeitig. Somit ist ist Schreibgeschwindigkeit des gesamten Verbundes genau die einer Platte.

Bei Lesen gibt es Implementierungen die nur eine Platte nutzen, dann hast du auch keinen Vorteil in der Lesegeschwindigkeit, oder Implementierungen die von beiden lesen, dann kommst du bis auf die doppelte Lesegeschwindigkeit.

 

Das kannst du testen in dem du einen single Pool mit einem Mirror vergleichst. Ein Pool mit defekter Disk ist ist nie ein geeigneter Testkandidat.

 

Laut der Aussage dürfte ich auf den zfs cache Mirror von mir nur noch mit 200MB/s schreiben können, weil meine Einzel-SSDs 400MB/s sequentiell schreiben können und die Rate durch den Mirror halbiert wird. Das seh ich aber nicht.

Es werden realistisch aber auch im Verbund nicht die 400MB/s werden, weil es doch ein bisschen Verwaltungsoverhead im Mirror gibt, aber annähernd.

 

Edited by worli
Link to comment
On 4/13/2024 at 10:13 AM, worli said:

Also ich versteh deine Tabelle nicht und auch nicht was die Tests mit meiner Aussage zu tun haben.

Wenn man auf ein Raid1, bzw Mirror schreibt, dann schreibt man auf beide Platten gleichzeitig. Somit ist ist Schreibgeschwindigkeit des gesamten Verbundes genau die einer Platte.

Bei Lesen gibt es Implementierungen die nur eine Platte nutzen, dann hast du auch keinen Vorteil in der Lesegeschwindigkeit, oder Implementierungen die von beiden lesen, dann kommst du bis auf die doppelte Lesegeschwindigkeit.

 

Das kannst du testen in dem du einen single Pool mit einem Mirror vergleichst. Ein Pool mit defekter Disk ist ist nie ein geeigneter Testkandidat.

 

Laut der Aussage dürfte ich auf den zfs cache Mirror von mir nur noch mit 200MB/s schreiben können, weil meine Einzel-SSDs 400MB/s sequentiell schreiben können und die Rate durch den Mirror halbiert wird. Das seh ich aber nicht.

Es werden realistisch aber auch im Verbund nicht die 400MB/s werden, weil es doch ein bisschen Verwaltungsoverhead im Mirror gibt, aber annähernd.

 

Hier vielleicht verständlicher:

Schreibtest auf einer SAS und anschließend auf einem ZFS Mirror mit zwei baugleichen SAS Platten (hab leider keine Baugleichen SSDs oder NVMEs)

 

root@Proton:/mnt/nvme_cache# dd if=/dev/zero of=/mnt/sas_cache_unsave/testfile bs=1M count=50000
50000+0 records in
50000+0 records out
52428800000 bytes (52 GB, 49 GiB) copied, 197.835 s, 265 MB/s

 

root@Proton:~# dd if=/dev/zero of=/mnt/sas_cache_zfs/testfile bs=1M count=50000
50000+0 records in
50000+0 records out
52428800000 bytes (52 GB, 49 GiB) copied, 210.496 s, 249 MB/s

 

und hier nun der Lesetest der zuvor erstellten Dateien:

 


root@Proton:/mnt/user# dd if=/mnt/sas_cache_unsave/testfile of=/dev/null bs=1M
50000+0 records in
50000+0 records out
52428800000 bytes (52 GB, 49 GiB) copied, 195.891 s, 268 MB/s

 

root@Proton:~# dd if=/mnt/sas_cache_zfs/testfile of=/dev/null bs=1M
50000+0 records in
50000+0 records out
52428800000 bytes (52 GB, 49 GiB) copied, 174.403 s, 301 MB/s
 

Nach deiner Aussage müsste der Schreibzugriff gleich einer Platte sein. (ist er aber nicht)

Nach deiner Aussage müsste die Lesegeschwindigkeit x2 liegen. (ist er aber nicht)

 

Link to comment

Ich habe das Gefühl, dass hier teilweise RAID0 und RAID1 vertauscht werden. Ich empfehle für einen kurzen Überblick über Performance und Ausfallsicherheit die beiden Wikipedia Artikel. Die beschreiben beide Varianten sehr gut - auch den Sonderfall "Verdoppelung der Leseleistung" bei der Verwendung von RAID1 und entsprechenden Controllern:

 

https://de.wikipedia.org/wiki/RAID#RAID_0:_Striping_–_Beschleunigung_ohne_Redundanz

https://de.wikipedia.org/wiki/RAID#RAID_1:_Mirroring_–_Spiegelung

 

Und nicht vergessen: Unraid nutzt ausschließlich Software-RAIDs ...

 

Um auf die Ausgangsfrage zurückzukommen. Die Antwort: Kommt vorrangig auf die Anbindung an ...

 

Edited by hawihoney
Link to comment
8 hours ago, hawihoney said:

Ich habe das Gefühl, dass hier teilweise RAID0 und RAID1 vertauscht werden. Ich empfehle für einen kurzen Überblick über Performance und Ausfallsicherheit die beiden Wikipedia Artikel. Die beschreiben beide Varianten sehr gut - auch den Sonderfall "Verdoppelung der Leseleistung" bei der Verwendung von RAID1 und entsprechenden Controllern:

 

https://de.wikipedia.org/wiki/RAID#RAID_0:_Striping_–_Beschleunigung_ohne_Redundanz

https://de.wikipedia.org/wiki/RAID#RAID_1:_Mirroring_–_Spiegelung

 

Und nicht vergessen: Unraid nutzt ausschließlich Software-RAIDs ...

 

Um auf die Ausgangsfrage zurückzukommen. Die Antwort: Kommt vorrangig auf die Anbindung an ...

 

Ok, bei meinem Test bin ich Raid 1 gefahren, wie ich es ja im vorherigen Post bereit geschrieben hatte.

Link to comment
5 hours ago, zero_neverload said:

Ok, bei meinem Test bin ich Raid 1 gefahren, wie ich es ja im vorherigen Post bereit geschrieben hatte.

 

Den Hinweis habe ich jetzt nicht verstanden. Aber egal.

 

Unraid verwendet ausschließlich Software RAIDs. Die Schreibgeschwindigkeit kann einfach nicht, außer beim Schreiben durch den Linux Block/Buffer Cache im RAM, signifikant schneller sein als die langsamste Platte im RAID1 Verbund. Die Lesegeschwindigkeit kann einfach nicht, außer beim Lesen durch den o.g. Cache, signifikant schneller sein als die schnellste Platte im RAID1 Verbund.

 

Das mit der "schnellsten" Platte ist kein Vertipper. Die RAID Systeme kennen ja die Drive Characteristics und können die Zugriffe bei RAID1 entsprechend anpassen.

 

Das "signifikant" habe ich bewusst geschrieben, denn im Real-World Schreiben/Lesen und damit meine ich nicht dd, gibt es noch die Nickeligkeiten mit Metadaten und den eigentlichen Daten (was IMHO u.a. den Spass mit BTRFS versaut). Auch das kann und wird entsprechend auf die Platten im Verbund (nicht RAID 0/1) verteilt. Dadurch ergeben sich Unterschiede.

 

Aber von 2x oder /2 kann keine Rede sein.

 

Ich lasse mich aber gerne eines Besseren belehren. So kenne ich das jedenfalls und so habe ich es bisher immer erlebt.

 

Edited by hawihoney
Link to comment

@hawihoney genau das habe ich gemeint, du hast halt andere Worte benutzt für die Schreibvorgänge. Mir gings hauptsächlich um die Aussage: Es halbiert die Schreibgeschwindigkeit und die ist halt einfach falsch.

Bei Lesevorgängen nehmen aktuelle Raid1 oder Mirror Implementierungen immer alle Platten zum lesen. Bei sequenziellen Lesen mit einer QD von 1 ist das vielleicht nicht komplett zu sehen, aber bei mehreren parallelen Lesevorgängen sehr wohl.

ZFS hat das in BSD seit 2013 und ZFSonLinux seit 2016

https://openzfs.org/wiki/Features#Improve_N-way_mirror_read_performance

 

@zero_neverload Also bei deinen Schreibtests hast du einmal 265 und einmal 245 MB/s, das sind 8% und ist vom Optimalen nicht weit weg. Wenn deine Theorie mit der halben Geschwindigkeit stimmen würde, dann müsstest du 137MB/s haben. 1 Schreibrequest kommt an den ZFS Mirror und die Softwareschicht gibt dann beide Schreibrequests gleichzeitig an die beiden Backend-Laufwerke weiter.

Das der ZFS Mirror beim Lesen nur 301MB/s hat überrascht mich jetzt, sollte aber im Bestfall bis zur doppelten Lesegeschwindigkeit einer Platte hochgehen.

 

Ich denke es bringt nichts wenn ich jetzt Links zu anderen Seiten inklusive Performancetests poste, weil nach "zfs mirror performance" kann jeder googeln. 🙂

 

Edited by worli
Link to comment
58 minutes ago, worli said:

@zero_neverload Also bei deinen Schreibtests hast du einmal 265 und einmal 245 MB/s, das sind 8% und ist vom Optimalen nicht weit weg. Wenn deine Theorie mit der halben Geschwindigkeit stimmen würde, dann müsstest du 137MB/s haben.

Das habe ich doch so nie behauptet. Ich habe doch lediglich meine Testdaten hier mal eingestellt und dort ist ja belegt, dass die Schreibrate bei einem ZFS Raid 1 nicht gleich der einfachen Schreibrate einer Einzelplatte liegt. (Wie Hawihoney es ja auch beschrieben hat)

 

58 minutes ago, worli said:

1 Schreibrequest kommt an den ZFS Mirror und die Softwareschicht gibt dann beide Schreibrequests gleichzeitig an die beiden Backend-Laufwerke weiter.

Das der ZFS Mirror beim Lesen nur 301MB/s hat überrascht mich jetzt, sollte aber im Bestfall bis zur doppelten Lesegeschwindigkeit einer Platte hochgehen.

Das habe ich damit belegen wollen, das es eben nicht wie du oben geschrieben hattest stimmt, weil es ja auch kein Mirror ist.  (Mirror = Raid 0 falls du das mit Mirror meinst)

 

 

On 4/10/2024 at 9:41 PM, worli said:

Bei RAID1 ist die Schreibgeschwindigkeit wie bei einer Einzelplatte und bei guter Implementierung entspricht die Lesegeschwindigkeit der doppelten Lesegeschwindigkeit des Einzellaufwerks.

Mythos zerstört hätten die Mythtbusters gesagt 😅

 

So ich glaube der Threadersteller ist hier eh schon lange raus aus dem Thema, da wir seinen Post hier zum Philosophieren missbraucht haben. (sorry dafür)

Link to comment

Mirror == Raid1 🙂, Stripe-Set == Raid0

Und ich hab nur auf die Aussage von MAM reagiert, die mal Grundlegend Falsch ist und du hast gegen mich argumentiert. 🙂

Ich wollte die Aussage nur nicht so stehen lassen.

 

Mythos nicht zerstört. Siehe meinen Link, oder einfach mal danach googlen, da werden dir alle Performance Analysen das zeigen. DD liest und schreibt mit QD1, da bekommst nie die komplette Performance. Raid1 oder auch ein Mirror liest in allen aktuellen Implementierungen von beiden Platten.

 

 

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...