SSD-basierte leistungssteigernde Technologien, die in Speichersystemen weit verbreitet sind, sind seit langem erfunden. Dies ist vor allem die Verwendung von SSDs als Speicherplatz, der 100% effizient, aber teuer ist. Daher werden Peering- und Caching-Technologien verwendet, bei denen SSDs nur für die beliebtesten ("heißen") Daten verwendet werden. Das Zerreißen ist gut für Szenarien, in denen "heiße" Daten langfristig (Tage-Wochen) verwendet werden. Im Gegensatz dazu ist das Caching für den kurzfristigen Gebrauch (Minuten-Stunden) vorgesehen. Beide Optionen sind im QSAN XCubeSAN- Speicher implementiert. In diesem Artikel werden wir die Implementierung des zweiten Algorithmus betrachten - SSD-Caching .

Die Essenz der SSD-Caching-Technologie ist die Verwendung von SSDs als Zwischencache zwischen Festplatten und Controller-Speicher. Die Leistung von SSDs ist natürlich geringer als die Leistung des eigenen Cache des Controllers, aber die Lautstärke ist um eine Größenordnung höher. Daher erhalten wir einen Kompromiss zwischen Geschwindigkeit und Lautstärke.
Hinweise zur Verwendung des SSD-Lesecaches:
- Das Überwiegen von Leseoperationen gegenüber Schreiboperationen (am häufigsten charakteristisch für Datenbanken und Webanwendungen);
- Das Vorhandensein eines Engpasses in Form der Leistung einer Reihe von Festplatten;
- Die Menge der angeforderten Daten ist geringer als die Größe des SSD-Cache.
Die Angaben zur Verwendung des Lese- / Schreib-SSD-Cache sind dieselben Gründe, mit Ausnahme der Art der Vorgänge - ein gemischter Typ (z. B. Dateiserver).
Die meisten Speicheranbieter verwenden in ihren Produkten einen schreibgeschützten SSD-Cache. Der grundlegende Unterschied zwischen QSAN und ihnen besteht in der Möglichkeit, den Cache auch zum Schreiben zu verwenden. Um die Funktionalität des SSD-Caching im QSAN-Speicher zu aktivieren, ist eine separate Lizenz erforderlich (in elektronischer Form).
Der SSD-Cache in XCubeSAN wird physisch als separate SSD-Cache-Pools implementiert. Es können bis zu vier davon im System vorhanden sein. Jeder Pool verwendet natürlich seine eigenen SSDs. Und bereits in den Eigenschaften einer virtuellen Festplatte bestimmen wir, ob und welcher den Cache-Pool verwendet. Das Aktivieren und Deaktivieren der Verwendung des Cache für Volumes kann online erfolgen, ohne die E / A zu stoppen. Auch auf der "heißen" können Sie SSDs zum Pool hinzufügen und von dort entfernen. Wenn Sie einen SSD-Pool-Cache erstellen, müssen Sie auswählen, in welchem Modus er funktionieren soll: Nur Lesen oder Lesen + Schreiben. Ihre physische Organisation hängt davon ab. Da der Pool-Cache mehrere sein kann, kann die Funktionalität unterschiedlich sein (dh das System kann Cache-Pools zum gleichzeitigen Lesen und Lesen + Schreiben haben).
Wenn Sie einen schreibgeschützten Pool-Cache verwenden, kann dieser aus 1-8 SSDs bestehen. Festplatten müssen nicht dasselbe Volumen und denselben Anbieter haben, da sie zu einer NRAID + -Struktur zusammengefasst sind. Alle SSDs im Pool werden gemeinsam genutzt. Das System versucht unabhängig, eingehende Anforderungen zwischen allen SSDs zu parallelisieren, um maximale Leistung zu erzielen. Bei einem Ausfall einer der SSDs passiert nichts Schreckliches: Schließlich enthält der Cache nur eine Kopie der Daten, die auf einem Array von Festplatten gespeichert sind. Es ist nur so, dass die Menge des verfügbaren SSD-Caches abnimmt (oder Null, wenn Sie den ursprünglichen SSD-Cache von einem Laufwerk aus verwenden).

Wenn der Cache für Lese- und Schreibvorgänge verwendet wird, muss die Anzahl der SSDs im Pool ein Vielfaches von zwei sein, da der Inhalt auf Laufwerkspaaren gespiegelt wird (unter Verwendung der NRAID 1+ -Struktur). Das Duplizieren des Caches ist erforderlich, da er möglicherweise Daten enthält, die noch nicht auf die Festplatten geschrieben wurden. In diesem Fall würde ein Ausfall der SSD aus dem Cache-Pool zum Verlust von Informationen führen. Im Fall von NRAID 1+ führt ein SSD-Fehler einfach zu einem Cache-Übergang in einen schreibgeschützten Zustand, bei dem nicht aufgezeichnete Daten von Festplatten auf ein Array übertragen werden. Nach dem Ersetzen der ausgefallenen SSD kehrt der Cache in seinen ursprünglichen Betriebsmodus zurück. Übrigens kann für mehr Sicherheit einem Cache, der zum Lesen und Schreiben dient, ein dedizierter Hotspare zugewiesen werden.

Bei Verwendung der SSD-Caching-Funktion in XCubeSAN gibt es eine Reihe von Anforderungen an die Speicherkapazität von Speichercontrollern: Je mehr Systemspeicher vorhanden ist, desto größer ist der Cache-Pool.
Im Gegensatz zu den meisten Speicherherstellern, die nur die Ein / Aus-Option als SSD-Cache-Einstellungen anbieten, bietet QSAN mehr Optionen. Insbesondere können Sie den Cache-Betriebsmodus abhängig von der Art der Last auswählen. Es gibt drei vordefinierte Vorlagen, die in ihrer Arbeit den entsprechenden Diensten am nächsten kommen: Datenbank, Dateisystem, Webdienst. Darüber hinaus kann der Administrator sein eigenes Profil erstellen, indem er die erforderlichen Parameterwerte festlegt:
- Blockgröße (Cache-Blockgröße) - 1/2/4 MB
- Die Anzahl der Anforderungen zum Lesen eines Blocks, damit dieser in den Cache kopiert wird (Populate-on-Read Threshold), beträgt 1..4
- Die Anzahl der Anforderungen zum Schreiben eines Blocks, damit dieser in den Cache kopiert wird (Populate-on-Write Threshold), beträgt 0..4
| 
|
Profile können im laufenden Betrieb geändert werden, natürlich mit dem Nullstellen des Cache-Inhalts und dem neuen „Aufwärmen“.
In Anbetracht des Funktionsprinzips des SSD-Cache können wir die Hauptoperationen bei der Arbeit damit unterscheiden:
Daten lesen, wenn sie sich nicht im Cache befinden
- Die Anfrage vom Host geht an den Controller.
- Da sich die angeforderten nicht im SSD-Cache befinden, werden sie von Festplatten gelesen.
- Die gelesenen Daten werden an den Host gesendet. Gleichzeitig wird geprüft, ob diese Blöcke „heiß“ sind.
- In diesem Fall werden sie zur späteren Bezugnahme in den SSD-Cache kopiert.
Daten lesen, wenn sie im Cache vorhanden sind
- Die Anfrage vom Host geht an den Controller.
- Da sich die angeforderten Daten im SSD-Cache befinden, werden sie von dort gelesen.
- Die gelesenen Daten werden an den Host gesendet.
Schreiben Sie Daten, wenn Sie den Lesecache verwenden
- Eine Schreibanforderung vom Host geht an die Steuerung.
- Daten werden auf Festplatten geschrieben.
- Der Host gibt eine Antwort über die erfolgreiche Aufzeichnung zurück.
- Gleichzeitig wird geprüft, ob der Block „heiß“ ist (der Parameter Populate-on-Write Threshold wird verglichen). In diesem Fall wird es zur späteren Verwendung in den SSD-Cache kopiert.
Schreiben von Daten bei Verwendung des Lese- / Schreibcaches
- Eine Schreibanforderung vom Host geht an die Steuerung.
- Daten werden in den SSD-Cache geschrieben.
- Der Host gibt eine Antwort über die erfolgreiche Aufzeichnung zurück.
- Daten aus dem SSD-Cache im Hintergrund werden auf Festplatten geschrieben.
Überprüfung im Geschäft
Prüfstand2 Server (CPU: 2 x Xeon E5-2620v3 2,4 Hz / RAM: 32 GB) sind über zwei Ports über Fibre Channel 16G direkt mit dem XCubeSAN XS5224D-Speichersystem (16 GB RAM / Controller) verbunden.
Verwendet 16 x Seagate Constellation ES, ST500NM0001, 500 GB, SAS 6 Gbit / s, kombiniert in RAID5 (15 + 1), für Datenarray und 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100 GB, SAS 12 Gbit / s als Cache
Es wurden 2 Volumes erstellt: eines für jeden Server.
Test 1. Nur-Lese-SSD-Cache mit 1-8 SSD
SSD-Cache
- E / A-Typ: Anpassung
- Cache-Blockgröße: 4 MB
- Schwellenwert für das Auffüllen beim Lesen: 1
- Populate-on-Write-Schwellenwert: 0
| E / A-Muster
- Werkzeug: IOmeter V1.1.0
- Arbeiter: 1
- Hervorragend (Warteschlangentiefe): 128
- Zugriffsspezifikationen: 4 KB, 100% gelesen, 100% zufällig
|
Theoretisch ist die Leistung umso höher, je mehr SSDs sich im Cache-Pool befinden. In der Praxis wurde dies bestätigt. Der einzige signifikante Anstieg der Anzahl von SSDs mit einer geringen Anzahl von Volumina führt nicht zu einer explosiven Wirkung.
Test 2. SSD-Cache im Lese- / Schreibmodus mit 2-8 SSD
SSD-Cache
- E / A-Typ: Anpassung
- Cache-Blockgröße: 4 MB
- Schwellenwert für das Auffüllen beim Lesen: 1
- Populate-on-Write-Schwellenwert: 1
| E / A-Muster
- Werkzeug: IOmeter V1.1.0
- Arbeiter: 1
- Hervorragend (Warteschlangentiefe): 128
- Zugriffsspezifikationen: 4 KB, 100% Schreiben, 100% Zufällig
|
Das gleiche Ergebnis: explosives Leistungswachstum und Skalierung mit zunehmender Anzahl von SSDs.
In beiden Tests war die Menge der Betriebsdaten geringer als die Gesamtgröße des Caches. Daher wurden im Laufe der Zeit alle Blöcke in den Cache kopiert. Tatsächlich wurde die Arbeit mit einer SSD durchgeführt, praktisch ohne Auswirkungen auf die Festplatten. Der Zweck dieser Tests bestand darin, die Wirksamkeit des Aufwärmens des Caches und der Skalierung seiner Leistung in Abhängigkeit von der Anzahl der SSDs klar zu demonstrieren.
Kehren wir nun vom Himmel zur Erde zurück und überprüfen eine wichtigere Situation, wenn die Datenmenge größer als die Cache-Größe ist. Damit der Test in einer vernünftigen Zeit abläuft (der Begriff "Aufwärmen" des Caches nimmt mit zunehmender Volumengröße erheblich zu), beschränken wir uns auf die Volumengröße von 120 GB.
Test 3. Emulation der Datenbank
SSD-Cache
- E / A-Typ: Datenbank
- Cache-Blockgröße: 1 MB
- Schwellenwert für das Auffüllen beim Lesen: 2
- Populate-on-Write-Schwellenwert: 1
| E / A-Muster
- Werkzeug: IOmeter V1.1.0
- Arbeiter: 1
- Hervorragend (Warteschlangentiefe): 128
- Zugriffsspezifikationen: 8 KB, 67% gelesen, 100% zufällig
|
Das Urteil
Als offensichtliche Schlussfolgerung bietet sich natürlich eine gute Effizienz bei der Verwendung des SSD-Cache an, um die Leistung eines Speichersystems zu steigern. In Bezug auf QSAN XCubeSAN ist diese Aussage voll anwendbar: Die SSD-Caching-Funktion ist perfekt implementiert. Dies gilt für die Unterstützung beim Lesen und Lesen + Schreiben, für flexible Arbeitseinstellungen für alle Anwendungsfälle sowie für die endgültige Leistung des Gesamtsystems. Daher können Sie zu sehr vernünftigen Kosten (der Preis einer Lizenz ist vergleichbar mit den Kosten von 1-2 SSDs) die Gesamtleistung erheblich steigern.