Was sind die Vor- / Nachteile verschiedener SSD-zu-HDD-Cache-Optionen (dm-cache, flashcashe…)?

23

Es scheinen verschiedene Technologien verfügbar zu sein, um eine SSD als Cache für Festplatten zu verwenden. Die, die ich kenne:

  • dm-cache (von Redhat - im 3.9 Kernel, so sollte es in Ubuntu 13.10 sein)
  • Flashcache (entwickelt und verwendet von Facebook)
  • Bcache (entwickelt und verwendet von Google)
  • EnhanceIO (von STEC; basierend auf Flashcache)

Gibt es bemerkenswerte Unterschiede bei den verschiedenen Implementierungen? Welches ist am besten für den normalen Desktop-PC geeignet - um die Leistung üblicher Programme wie Webbrowser oder Spiele zu steigern?

Uli
quelle
Um die Leistung zu steigern, fand ich heraus, dass die Installation von 64-Bit-Ubuntu großartig funktionierte. Meine Maschine wurde sogar noch schneller als zuvor! Im Hinblick auf den Cache sollten Sie mit diesem Paket einen RAM-komprimierten Cache verwenden zram-config, der Priorität bei der Auslagerungsnutzung erhält. Speichern Sie das Spiel auf der SDD und testen Sie es. Einige Spiele werden nicht viel schneller funktionieren, andere werden großartig funktionieren! Ich bevorzuge es, SDD wegen seiner Schreibbeschränkung nicht als Cache zu verwenden, aber SDDs werden billiger, so dass es nicht mehr so ​​wichtig ist :)
Aquarius Power

Antworten:

14

Ich weiß wirklich nicht, wo ich anfangen soll, da dies alles hervorragende Informationen sind. Ich werde mit ein paar Informationen zu SSDs beginnen, dann eine Beschreibung der verschiedenen Caching-Methoden und einfach von dort aus fortfahren. Ich hoffe, dass du

Vorteile Nachteile

  • Preis: SSDs sind irgendwie teuer
  • Maximale und gemeinsame Kapazität: SSDs mit hoher Kapazität sind sehr selten und teuer
  • Geschwindigkeit: Hier haben SSDs die Nase vorn
  • Haltbarkeit: Eine SSD hat keine beweglichen Teile

Am besten ein Hybridsystem haben, um das Beste aus beiden Welten zu haben (Kapazität, Zuverlässigkeit, Geschwindigkeit usw.)

Der Linux 3.9-Kernel (verfügbar am 28. April 2013) führt das SSD-Caching ein. Der Device Mapper des Kernels enthält jetzt ein Cache-Ziel namens dm-cache, mit dem SSDs oder andere Speichergeräte als Cache für eine Festplatte verwendet werden können. Es beschleunigt im Wesentlichen das Schreiben und Lesen von Daten, da die schnellere SSD Daten zuerst zwischenspeichern und dann auf die langsamere Festplatte übertragen kann.

Quelle: Iwn

Flashcache ist ein Modul, das ursprünglich von Facebook (Mohan Srinivasan, Paul Saab und Vadim Tkachenko) im April 2010 geschrieben und veröffentlicht wurde. Es ist ein Kernel-Modul, das das Durchschreiben des Cachings eines Laufwerks auf einem anderen Laufwerk ermöglicht. Dies wird aus Leistungsgründen am häufigsten zum Zwischenspeichern eines Rotationslaufwerks auf einem kleineren Solid-State-Laufwerk verwendet. Dies gibt Ihnen die Geschwindigkeit einer SSD und die Größe eines Standard-Rotationslaufwerks für kürzlich zwischengespeicherte Dateien. FlashCache ist ein universeller Rückschreib-Blockcache für Linux.

Quelle: ArchLinux

Bcache ist ein Linux-Kernel-Block-Layer-Cache. Damit können ein oder mehrere schnelle Festplattenlaufwerke wie Flash-basierte Solid-State-Laufwerke (SSDs) als Cache für ein oder mehrere langsamere Festplattenlaufwerke fungieren.

Festplatten sind billig und groß, SSDs sind schnell, aber klein und teuer. Wäre es nicht schön, wenn Sie die Vorteile von beiden transparent nutzen könnten? Mit Bcache können Sie Ihren Kuchen haben und ihn auch essen.

Bcache-Patches für den Linux-Kernel ermöglichen die Verwendung von SSDs zum Zwischenspeichern anderer Blockgeräte. Es ist analog zu L2Arc für ZFS, aber Bcache führt auch Writeback-Caching durch (abgesehen davon, dass es nur durch Caching geschrieben wird), und es ist dateisystemunabhängig. Es ist so konzipiert, dass es mit minimalem Aufwand eingeschaltet werden kann und ohne Konfiguration bei jedem Setup gut funktioniert. Standardmäßig werden keine sequentiellen E / A-Vorgänge zwischengespeichert, nur die zufälligen Lese- und Schreibvorgänge, mit denen SSDs glänzen. Es soll für Desktops, Server, High-End-Speicher-Arrays und vielleicht sogar eingebettet sein.

Das Entwurfsziel ist es, genau so schnell wie die SSD und das zwischengespeicherte Gerät (abhängig von Cache-Treffern und -Fehlern sowie Durchschreib- und Rückschreib-Schreibvorgängen) innerhalb der Fehlergrenze zu sein. Es ist noch nicht ganz fertig, hauptsächlich für sequentielle Lesevorgänge. Tests haben jedoch gezeigt, dass es nachdrücklich möglich ist und in einigen Fällen sogar besser ist - hauptsächlich zufällige Schreibvorgänge.

Quelle: Bcache

Bcache hat einen großen Nachteil, und es nimmt dem System Speicherplatz weg, um den Cache zu implementieren.

EnhanceIO ist eine Lösung, die unter der Anwendungsschicht ausgeführt wird und es Anwendungen ermöglicht, die Leistungsvorteile von SSDs zu nutzen, ohne dass wesentliche Änderungen an der IT-Infrastruktur erforderlich sind. Ein SSD-Cache kann die meisten Vorteile eines Wechsels von HDDs zu SSDs zu einem Bruchteil der Kosten eines SSD-Gesamtsystems bieten. Ein zwischengespeichertes System benötigt in der Regel weniger Strom als ein HDD-basiertes System mit ähnlicher Leistung, und dies schafft einen Nebeneffekt, indem der Kühlungsbedarf verringert wird.

Ein SSD-Cache kann auch die Nutzungsdauer eines vorhandenen Systems verlängern, indem die Leistung verbessert wird, um den wachsenden Anforderungen durch eine inkrementelle Investition gerecht zu werden, und nicht durch ein umfassendes Upgrade / Ersatz des vorhandenen Systems.

Das Zwischenspeichern ermöglicht auch einen schnelleren Zugriff auf die Daten, ohne den zusätzlichen Verwaltungsaufwand für den Speicher, um neue Festplattenregale zu beschaffen und zu installieren, neue LUNs zu konfigurieren und Daten auf die neuen LUNs zu migrieren. Das Caching ist nahezu transparent und erfordert keine oder nur geringe Ausfallzeiten. EnhanceIO basiert auf Flashcache.

Quelle: Stec-Inc

bcache ist das wertloseste von allen, da es eine speziell vorbereitete (formatierte) Datenpartition erfordert. Dies macht es schwierig (wenn möglich), einen Cache an eine vorhandene Partition mit Daten anzuhängen, da eine Kapazität von 200% erforderlich wäre, und ein langes Verschieben von Daten durchzuführen, um das Caching zu aktivieren / deaktivieren.

Die Brillanz von EnhanceIO ist, dass es überhaupt kein Zwischengerät benötigt und on-the-fly an jedes Blockgerät angeschlossen werden kann, selbst wenn das Gerät bereits montiert ist. Eine andere super coole Sache ist, dass Sie den EnhanceIO-Cache nicht nur an die Partition, sondern auch an das partitionierte Block-Gerät anhängen können, um alle seine Partitionen auf einmal zu cachen. Genau wie Flashcache werden Enchanceio-Module mit DKMS erstellt und können mit älteren Kerneln verwendet werden.

Quelle: Debian

DM Cache Vorteile

DM-Caches verwenden eine vereinfachte Architektur, wodurch sie anpassbar und einfach anzupassen sind. Benutzer können die Blockgröße und die Cache-Kapazität basierend auf der zu verarbeitenden Datenmenge oder dem Wert der Daten anpassen. Wenn eine bestimmte Anwendung viele Daten nacheinander speichern muss, können Benutzer den Cache für diesen Zweck konfigurieren. Wenn ein Benutzer gleichzeitig mit dem Cache Informationen in einer Datenbank aufzeichnen möchte, wird der Cache dadurch nicht beeinträchtigt.

DM Cache Nachteile

Ein Nachteil bei der Verwendung eines DM-Cache besteht darin, dass das Linux-Betriebssystem nur über begrenzten Speicherplatz zum Speichern von Metadaten verfügt. Wenn der Cache groß ist und viele kleine Blöcke enthält, summiert sich dies zu vielen Metadaten für die gespeicherten Informationen. Um dieses Problem zu lösen, muss der Benutzer die Blockgröße erhöhen. Ein weiteres mögliches Problem besteht darin, dass die Cache-Metadaten nach einem Server-Absturz möglicherweise nicht mehr mit dem Cache-Inhalt übereinstimmen, die korrekte Konfiguration jedoch möglicherweise wiederhergestellt werden kann.

Quelle: Ergänzungen von Fraser Sherman

Aus den obigen Informationen geht hervor, dass EnhanceIO der richtige Weg ist, aber meiner Meinung nach würde ich Flash-Cache verwenden, da es auf Flashcache basiert. Aber ich werde auf jeden Fall beide ausprobieren, bevor ich eine endgültige Entscheidung treffe.

Mitch
quelle
EnhanceIO: Ein Treiber, der auf der EhanceIO-SSD-Caching-Software basiert, die aus dem Open-Source-Flashcache-Projekt von Facebook stammt und für die Verwendung von SSDs als Cache-Geräte für herkömmliche Festplatten nützlich ist. webupd8.org/2013/05/get-better-linux-desktop-performance.html
Qasim
Danke für die Antwort! Hoffentlich landet EnhanceIO im 3.10-Kernel und wird in der nächsten Ubuntu-Version verfügbar sein.
Uli
1
Netter Bericht, aber ich muss hervorheben, dass der DM-Cache absolut sicher ist. Wenn Sie einen Absturz erleben, verlieren Sie natürlich keine Daten. In der Praxis kann der Cache für einige Zeit weniger effizient sein, bis die Metadaten neu generiert werden.
lzap
3
Der Kommentar zur Verwendung des Cache-Speichers ist falsch, ebenso der (zitierte) Kommentar zur Konvertierung.
Gabriel,
@ Gabriel zögern Sie nicht zu ändern, aber fügen Sie die Quelle. :)
Mitch
1

Feedback: Ich habe vor ungefähr einem Jahr Flashcache-Standard-Deb-Pakete auf Ubuntu im Write-Back-Modus installiert, um / home (2 TB) auf einem 50-GB-Slice auf einer SSD zwischenzuspeichern. Es hat sich wunderbar ohne Probleme entwickelt. Ich hatte ein paar X-bezogene "Hangs" (dh nicht auf Flashcache zurückzuführen) und habe "Ctrl-Alt-PrtScr REISUB" einige Male verwendet, um ohne Probleme und ohne Korruptionsprobleme wiederherzustellen. Ich habe Flashcache verwendet, weil a) Debs verfügbar waren und b) keine Sicherung und Wiederherstellung von / home erforderlich war.

Kairuri
quelle