Technologien zur Steigerung der ProduktivitĂ€t, die auf der Verwendung von SSDs basieren und in SANs weit verbreitet sind, wurden schon lange erfunden. ZunĂ€chst einmal ist dies die Verwendung von SSDs als Speicherplatz, was zu 100 % effektiv, jedoch teuer ist. Daher kommen Technologien wie Tiering und Caching zum Einsatz, bei denen SSDs nur fĂŒr die am hĂ€ufigsten benötigten (âheiĂenâ) Daten verwendet werden. Tiering ist gut fĂŒr langfristige (Tage-Wochen) Nutzung âheiĂerâ Daten. Caching hingegen eignet sich fĂŒr kurzfristige (Minuten-Stunden) Nutzung. Beide Optionen sind in SANs implementiert. . In diesem Artikel werden wir die Implementierung des zweiten Algorithmus â .

Die Essenz der SSD-Caching-Technologie besteht darin, SSDs als Zwischenpuffer zwischen Festplatten und dem Arbeitsspeicher des Controllers zu nutzen. Die Leistung von SSDs liegt natĂŒrlich unter der des internen Caches des Controllers, bietet jedoch ein um ein Vielfaches höheres Volumen. Daher erhalten wir einen gewissen Kompromiss zwischen Geschwindigkeit und KapazitĂ€t.
Indikationen fĂŒr die Verwendung von SSD-Caching zum Lesen:
- Ăbergewicht von LesevorgĂ€ngen gegenĂŒber SchreibvorgĂ€ngen (hĂ€ufig charakteristisch fĂŒr Datenbanken und Webanwendungen);
- Vorhandensein eines Engpasses in Form der Leistung des Festplattenarrays;
- Das Volumen der benötigten Daten ist geringer als das Volumen des SSD-Caches.
Indikationen fĂŒr die Verwendung von SSD-Caching fĂŒr Lese- und SchreibvorgĂ€nge sind dieselben GrĂŒnde, mit Ausnahme der Art der Operationen â gemischter Typ (z. B. Dateiserver).
Die meisten SAN-Anbieter verwenden in ihren Produkten SSD-Caching nur fĂŒr Leseoperationen. Ein wesentliches Unterscheidungsmerkmal von ihnen ist die Möglichkeit, den Cache auch fĂŒr SchreibvorgĂ€nge zu nutzen. FĂŒr die Aktivierung der SSD-Caching-FunktionalitĂ€t in QSAN-SANs ist der Erwerb einer separaten Lizenz erforderlich (wird in elektronischer Form bereitgestellt).
Der SSD-Cache im XCubeSAN ist physisch in Form separater SSD-Cache-Pools realisiert. Im System können bis zu vier vorhanden sein. Jeder Pool nutzt selbstverstĂ€ndlich sein eigenes SSD-Set. In den Eigenschaften des virtuellen Laufwerks legen wir fest, ob es den Cache-Pool verwenden wird und welcher genau. Das Aktivieren und Deaktivieren der Cache-Nutzung fĂŒr Volumes kann online ohne Unterbrechung des Ein-/Ausgabeverkehrs erfolgen. Auch das HinzufĂŒgen und Entfernen von SSDs aus dem Pool kann âliveâ erfolgen. Bei der Erstellung eines SSD-Cache-Pools muss ausgewĂ€hlt werden, in welchem Modus er arbeiten soll: Nur Lesen oder Lesen + Schreiben. Diese Entscheidung beeinflusst seine physische Organisation. Da es mehrere Cache-Pools geben kann, kann deren FunktionalitĂ€t unterschiedlich sein (das heiĂt, im System können gleichzeitig Cache-Pools fĂŒr Lesen und fĂŒr Lesen + Schreiben vorhanden sein).
Wenn der Cache-Pool nur fĂŒr das Lesen verwendet wird, kann er aus 1-8 SSDs bestehen. Die Laufwerke mĂŒssen nicht unbedingt das gleiche Volumen und den gleichen Anbieter haben, da sie in einer NRAID+-Struktur zusammengefasst werden. Alle SSDs im Pool werden gemeinsam genutzt. Das System versucht eigenstĂ€ndig, die eingehenden Anfragen zwischen allen SSDs zu parallelisieren, um die maximale Leistung zu erzielen. Im Falle eines Ausfalls einer der SSDs geschieht nichts Schlimmes: Der Cache enthĂ€lt nur eine Kopie der Daten, die auf dem Array von Festplatten gespeichert sind. Das verfĂŒgbare Volumen des SSD-Caches verringert sich einfach (oder wird null, wenn der ursprĂŒngliche SSD-Cache aus einem einzigen SpeichergerĂ€t besteht).

Wenn der Cache jedoch fĂŒr Lese- und SchreibvorgĂ€nge verwendet wird, muss die Anzahl der SSDs im Pool gerade sein, da der Inhalt auf Paaren von Speichermedien gespiegelt wird (es wird eine NRAID 1+-Struktur verwendet). Die Duplizierung des Caches ist notwendig, da darin möglicherweise Daten enthalten sind, die noch nicht auf die Festplatten geschrieben wurden. In diesem Fall wĂŒrde der Ausfall einer SSD im Cache-Pool zu einem Datenverlust fĂŒhren. Im Falle von NRAID 1+ wĂŒrde der Ausfall einer SSD einfach dazu fĂŒhren, dass der Cache in den Zustand âNur Lesenâ mit einem ZurĂŒcksetzen der nicht geschriebenen Daten auf das Array der Festplatten wechselt. Nach dem Austausch der defekten SSD kehrt der Cache in seinen ursprĂŒnglichen Betriebsmodus zurĂŒck. Ăbrigens kann fĂŒr einen Cache, der im Lese- und Schreibmodus arbeitet, zur Erhöhung der Sicherheit ein dedizierter Hot Spare zugewiesen werden.

Bei der Nutzung der SSD-Cachefunktion in XCubeSAN gibt es eine Reihe von Anforderungen an den Arbeitsspeicher der Speichercontroller: Je mehr Systemspeicher vorhanden ist, desto gröĂer ist das verfĂŒgbare Cache-Poolvolumen.

Im Gegensatz zu den meisten anderen Speicherherstellern, die lediglich die Option zum Ein- oder Ausschalten des SSD-Caches anbieten, bietet QSAN erweiterte Möglichkeiten. Insbesondere kann der Cache-Modus je nach Art der Belastung gewĂ€hlt werden. Es gibt drei vordefinierte Vorlagen, die in ihrer Arbeitsweise den entsprechenden Diensten am nĂ€chsten kommen: Datenbank, Dateisystem, Webdienst. DarĂŒber hinaus kann der Administrator sein eigenes Profil erstellen, indem er die gewĂŒnschten Parameterwerte festlegt:
- BlockgröĂe (Cache Block Size) â 1/2/4 MB
- Anzahl der Leseanforderungen fĂŒr einen Block, um ihn in den Cache zu kopieren (Populate-on-Read Threshold) â 1..4
- Anzahl der Schreibanforderungen fĂŒr einen Block, um ihn in den Cache zu kopieren (Populate-on-Write Threshold) â 0..4

Profile können âon the flyâ geĂ€ndert werden, allerdings mit dem Verlust des Cache-Inhalts und einer neuen âAufwĂ€rmphaseâ.
Betrachtet man das Prinzip des SSD-Caches, so lassen sich die grundlegenden Operationen bei seiner Nutzung hervorheben:

Daten lesen, wenn sie nicht im Cache vorhanden sind
- Die Anfrage vom Host gelangt zum Controller;
- Da die angeforderten Daten nicht im SSD-Cache vorhanden sind, werden sie von den Festplatten gelesen;
- Die gelesenen Daten werden an den Host gesendet. Gleichzeitig wird ĂŒberprĂŒft, ob diese Blöcke âhotâ sind;
- Falls ja, werden sie in den SSD-Cache fĂŒr die weitere Nutzung kopiert.

Daten lesen, wenn sie im Cache vorhanden sind
- Die Anfrage vom Host gelangt zum Controller;
- Da die angeforderten Daten im SSD-Cache vorhanden sind, werden sie von dort gelesen;
- Die gelesenen Daten werden an den Host gesendet.

Daten schreiben unter Verwendung des Cache zum Lesen
- Die Schreibanforderung vom Host gelangt zum Controller;
- Die Daten werden auf die Festplatten geschrieben;
- Der Host erhĂ€lt eine BestĂ€tigung ĂŒber die erfolgreiche Speicherung;
- Gleichzeitig wird ĂŒberprĂŒft, ob der Block âhotâ ist (der Parameter Populate-on-Write Threshold wird verglichen). Falls ja, wird er in den SSD-Cache fĂŒr die zukĂŒnftige Nutzung kopiert.

Daten schreiben unter Verwendung des Cache zum Lesen+Schreiben
- Die Schreibanforderung vom Host gelangt zum Controller;
- Die Daten werden in den SSD-Cache geschrieben;
- Der Host erhĂ€lt eine BestĂ€tigung ĂŒber die erfolgreiche Speicherung;
- Daten aus dem SSD-Cache werden im Hintergrund auf Festplatten geschrieben;
PrĂŒfung im Vorgang
Teststand
2 Server (CPU: 2 x Xeon E5-2620v3 2,4 Hz / RAM: 32 GB) sind ĂŒber zwei Ports direkt ĂŒber Fibre Channel 16G mit dem Speichersystem XCubeSAN XS5224D (16 GB RAM / Controller) verbunden.
Es wurden 16 x Seagate Constellation ES, ST500NM0001, 500 GB, SAS 6 Gb/s, in RAID5 (15+1) fĂŒr das Daten-Array und 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100 GB, SAS 12 Gb/s als Cache verwendet.
Es wurden 2 Volumes erstellt: jeweils eines fĂŒr jeden Server.
Test 1. SSD-Cache nur im Lese-Modus mit 1-8 SSDs
SSD Cache
- I/O-Typ: Anpassung
- Cache-BlockgröĂe: 4 MB
- Populate-on-read-Schwellenwert: 1
- Populate-on-write-Schwellenwert: 0
I/O-Muster
- Tool: IOmeter V1.1.0
- Arbeiter: 1
- Outstanding (Warteschlangen-Tiefe): 128
- Zugriffs-Spezifikationen: 4 KB, 100% lesen, 100% zufÀllig


Theoretisch fĂŒhrt eine höhere Anzahl an SSDs im Cache-Pool zu einer höheren Leistung. In der Praxis hat sich dies bestĂ€tigt. Ein signifikantes Wachstum der Anzahl an SSDs bei wenigen Volumes fĂŒhrt jedoch nicht zu einem explosionsartigen Effekt.
Test 2. SSD-Cache im Lese- + Schreibmodus mit 2-8 SSDs
SSD Cache
- I/O-Typ: Anpassung
- Cache-BlockgröĂe: 4 MB
- Populate-on-read-Schwellenwert: 1
- Populate-on-write-Schwellenwert: 1
I/O-Muster
- Tool: IOmeter V1.1.0
- Arbeiter: 1
- Outstanding (Warteschlangen-Tiefe): 128
- Zugriffs-Spezifikationen: 4 KB, 100% schreiben, 100% zufÀllig


Das gleiche Ergebnis: explosionsartiges Wachstum der Leistung und Skalierung mit zunehmender Anzahl an SSDs.
In beiden Tests war das Volumen der Arbeitsdaten kleiner als das Gesamte Volumen des Caches. Daher wurden im Laufe der Zeit alle Blöcke in den Cache kopiert. Die Arbeit erfolgte somit im Wesentlichen mit SSDs, wobei die Festplatten nahezu unberĂŒhrt blieben. Ziel dieser Tests war es, die EffektivitĂ€t des Cache-WĂ€rmens und die Skalierbarkeit der Leistung in AbhĂ€ngigkeit von der Anzahl der SSDs anschaulich zu zeigen.
Kehren wir nun von den abstrakten Gedanken zur RealitĂ€t zurĂŒck und prĂŒfen wir eine lebensnahe Situation, in der das Datenvolumen gröĂer ist als die Cache-GröĂe. Damit der Test in einer akzeptablen Zeit durchgefĂŒhrt werden kann (die âWĂ€rmezeitâ des Caches erhöht sich stark mit der VolumengröĂe), beschrĂ€nken wir uns auf eine VolumengröĂe von 120 GB.
Test 3. Emulation des Datenbankbetriebs
SSD Cache
- I/O-Typ: Datenbank
- Cache-BlockgröĂe: 1 MB
- Populate-on-read-Schwellenwert: 2
- Populate-on-write-Schwellenwert: 1
I/O-Muster
- Tool: IOmeter V1.1.0
- Arbeiter: 1
- Outstanding (Warteschlangen-Tiefe): 128
- Zugriffs-Spezifikationen: 8 KB, 67% lesen, 100% zufÀllig

Urteil
Eine offensichtliche Schlussfolgerung ist die beeindruckende Effizienz der Nutzung von SSD-Caches zur Leistungssteigerung eines Speichersystems. Diese Aussage gilt uneingeschrĂ€nkt: Die SSD-Cache-Funktion ist hervorragend umgesetzt. Dies betrifft die UnterstĂŒtzung von Lese- sowie Lese+Schreibmodi, die flexible Anpassung der Arbeitsweise fĂŒr alle Nutzungsszenarien und die Gesamtergebnisse der Systemleistung. Daher kann man zu einem sehr fairen Preis (die Lizenzkosten sind mit den Kosten von 1-2 SSD vergleichbar) die Gesamtleistung erheblich steigern.
Quelle: habr.com
