Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Technologien zur Leistungssteigerung, die auf dem Einsatz von SSDs basieren und in Speichersystemen weit verbreitet sind, sind schon lange erfunden. Zunächst einmal ist es die Nutzung von SSD als Speicherplatz, die zwar 100 % effektiv, aber teuer ist. Daher kommen ermüdende und Caching-Technologien zum Einsatz, bei denen SSDs nur für die beliebtesten („heißen“) Daten verwendet werden. Tiering eignet sich gut für Szenarien der langfristigen (Tage-Wochen) Nutzung „heißer“ Daten. Im Gegensatz dazu dient das Caching der kurzfristigen Nutzung (Minuten bis Stunden). Beide Optionen sind im Speichersystem implementiert QSAN XCubeSAN. In diesem Artikel werden wir uns die Implementierung des zweiten Algorithmus ansehen – SSD-Caching.

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Der Kern der SSD-Caching-Technologie besteht in der Verwendung von SSDs als Zwischencache zwischen Festplatten und dem RAM des Controllers. Die Leistung der SSD ist natürlich geringer als die Leistung des Controller-eigenen Caches, das Volumen ist aber um eine Größenordnung höher. Daher erhalten wir einen gewissen Kompromiss zwischen Geschwindigkeit und Lautstärke.

Hinweise zur Verwendung des SSD-Cache zum Lesen:

  • Das Überwiegen von Lesevorgängen gegenüber Schreibvorgängen (am häufigsten typisch für Datenbanken und Webanwendungen);
  • Das Vorhandensein eines Leistungsengpasses des Festplatten-Arrays;
  • Die Menge der benötigten Daten ist geringer als die Größe des SSD-Cache.

Die Hinweise für die Verwendung eines SSD-Cache mit Lese- und Schreibzugriff sind dieselben, mit Ausnahme der Art der Vorgänge – gemischter Typ (z. B. Dateiserver).

Die meisten Speicheranbieter verwenden in ihren Produkten schreibgeschützten SSD-Cache. Der grundlegende Unterschied QSAN Sie bieten die Möglichkeit, den Cache auch zum Schreiben zu nutzen. Um die SSD-Caching-Funktionalität in QSAN-Speichersystemen zu aktivieren, müssen Sie eine separate Lizenz erwerben (elektronisch geliefert).

Der SSD-Cache in XCubeSAN wird physisch in Form separater SSD-Cache-Pools implementiert. Es können bis zu vier davon im System vorhanden sein. Jeder Pool verwendet natürlich seinen eigenen Satz SSDs. Und bereits in den Eigenschaften der virtuellen Festplatte legen wir fest, ob und welcher Cache-Pool verwendet wird. Das Aktivieren und Deaktivieren der Cache-Nutzung für Volumes kann online erfolgen, ohne dass die E/A angehalten werden muss. Sie können SSDs auch im laufenden Betrieb zum Pool hinzufügen und von dort entfernen. Wenn Sie einen SSD-Pool-Cache erstellen, müssen Sie auswählen, in welchem ​​Modus er betrieben werden soll: schreibgeschützt oder Lesen+Schreiben. Davon hängt seine physische Organisation ab. Da es mehrere Cache-Pools geben kann, kann ihre Funktionalität unterschiedlich sein (d. h. das System kann gleichzeitig über Lese- und Lese-/Schreib-Cache-Pools verfügen).

Wenn ein schreibgeschützter Cache-Pool verwendet wird, kann dieser aus 1–8 SSDs bestehen. Festplatten müssen nicht dieselbe Kapazität und denselben Hersteller haben, da sie in einer NRAID+-Struktur zusammengefasst sind. Alle SSDs im Pool werden gemeinsam genutzt. Das System versucht selbstständig, eingehende Anfragen zwischen allen SSDs zu parallelisieren, um maximale Leistung zu erreichen. Sollte eine der SSDs ausfallen, passiert nichts Schlimmes: Schließlich enthält der Cache nur eine Kopie der auf dem Festplattenverbund gespeicherten Daten. Es ist nur so, dass die Menge des verfügbaren SSD-Cache abnimmt (oder Null wird, wenn der ursprüngliche SSD-Cache von einem Laufwerk verwendet wird).

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Wenn der Cache für Lese- und Schreibvorgänge verwendet wird, sollte die Anzahl der SSDs im Pool ein Vielfaches von zwei sein, da die Inhalte auf Laufwerkspaaren gespiegelt werden (es wird die NRAID 1+-Struktur verwendet). Das Duplizieren des Caches ist notwendig, da dieser möglicherweise Daten enthält, die noch nicht auf die Festplatten geschrieben wurden. Und in diesem Fall würde ein Ausfall der SSD aus dem Cache-Pool zu Informationsverlust führen. Bei NRAID 1+ führt ein Ausfall der SSD lediglich dazu, dass der Cache in einen schreibgeschützten Zustand versetzt wird und ungeschriebene Daten auf dem Festplatten-Array abgelegt werden. Nach dem Austausch der defekten SSD kehrt der Cache in seinen ursprünglichen Betriebsmodus zurück. Für mehr Sicherheit können Sie übrigens einem Lese- und Schreibcache dedizierte Hotspares zuweisen.

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Bei der Verwendung der SSD-Caching-Funktion in XCubeSAN gibt es eine Reihe von Anforderungen an die Speicherkapazität von Speichercontrollern: Je mehr Systemspeicher, desto größer ist der Cache-Pool.

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Im Gegensatz zu den meisten Speichersystemherstellern, die lediglich die Option zum Ein-/Ausschalten des SSD-Cache anbieten, bietet QSAN mehr Optionen. Insbesondere können Sie den Cache-Betriebsmodus je nach Art der Auslastung auswählen. Es gibt drei voreingestellte Vorlagen, die in ihrer Funktionsweise 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
  • Anzahl der Anfragen zum Lesen eines Blocks, damit er in den Cache kopiert wird (Populate-on-Read Threshold) – 1..4
  • Anzahl der Anfragen, einen Block zu schreiben, damit er in den Cache kopiert wird (Populate-on-Write Threshold) – 0..4

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Profile können im Handumdrehen geändert werden, aber natürlich mit dem Zurücksetzen des Cache-Inhalts und seinem neuen „Aufwärmen“.

Betrachtet man das Funktionsprinzip des SSD-Cache, können wir die wichtigsten Vorgänge bei der Arbeit damit hervorheben:

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Lesen von Daten, wenn sie sich nicht im Cache befinden

  1. Eine Anfrage vom Host kommt beim Controller an;
  2. Da sich die angeforderten Dateien nicht im SSD-Cache befinden, werden sie von den Festplatten gelesen;
  3. Die gelesenen Daten werden an den Host gesendet. Gleichzeitig wird geprüft, ob diese Blöcke „heiß“ sind;
  4. Wenn ja, werden sie zur weiteren Verwendung in den SSD-Cache kopiert.

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Lesen Sie Daten, wenn sie im Cache vorhanden sind

  1. Eine Anfrage vom Host kommt beim Controller an;
  2. Da sich die angeforderten Daten im SSD-Cache befinden, werden sie von dort gelesen;
  3. Die gelesenen Daten werden an den Host gesendet.

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Schreiben von Daten bei Verwendung des Lesecaches

  1. Beim Controller kommt eine Schreibanforderung vom Host an;
  2. Daten werden auf Festplatten geschrieben;
  3. Eine Antwort, die die erfolgreiche Aufzeichnung anzeigt, wird an den Host zurückgegeben.
  4. Gleichzeitig wird geprüft, ob der Block „heiß“ ist (der Parameter Populate-on-Write Threshold wird verglichen). Wenn ja, wird es zur späteren Verwendung in den SSD-Cache kopiert.

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Schreiben von Daten bei Verwendung eines Lese-/Schreibcaches

  1. Beim Controller kommt eine Schreibanforderung vom Host an;
  2. Daten werden in den SSD-Cache geschrieben;
  3. Eine Antwort, die die erfolgreiche Aufzeichnung anzeigt, wird an den Host zurückgegeben.
  4. Daten aus dem SSD-Cache werden im Hintergrund auf Festplatten geschrieben;

Check-in-Aktion

Prüfstand

2 Server (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) sind über zwei Ports über Fibre Channel 16G direkt mit dem XCubeSAN XS5224D Speichersystem (16GB RAM/Controller) verbunden.

Wir verwendeten 16 x Seagate Constellation ES, ST500NM0001, 500 GB, SAS 6 Gbit/s, kombiniert in RAID5 (15+1), für das 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. Schreibgeschützter SSD-Cache von 1–8 SSDs

SSD-Cache

  • E/A-Typ: Anpassung
  • Cache-Blockgröße: 4 MB
  • Schwellenwert für Auffüllen beim Lesen: 1
  • Schwellenwert für Auffüllen beim Schreiben: 0

E/A-Muster

  • Tool: IOmeter V1.1.0
  • Arbeiter: 1
  • Ausstehend (Warteschlangentiefe): 128
  • Zugriffsspezifikationen: 4 KB, 100 % lesen, 100 % zufällig

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Theoretisch gilt: Je mehr SSDs sich im Cache-Pool befinden, desto höher ist die Leistung. In der Praxis hat sich dies bestätigt. Die lediglich deutliche Erhöhung der SSD-Anzahl bei geringer Volume-Anzahl führt nicht zu einer explosiven Wirkung.

Test 2. SSD-Cache im Lese- und Schreibmodus mit 2-8 SSDs

SSD-Cache

  • E/A-Typ: Anpassung
  • Cache-Blockgröße: 4 MB
  • Schwellenwert für Auffüllen beim Lesen: 1
  • Schwellenwert für Auffüllen beim Schreiben: 1

E/A-Muster

  • Tool: IOmeter V1.1.0
  • Arbeiter: 1
  • Ausstehend (Warteschlangentiefe): 128
  • Zugriffsspezifikationen: 4 KB, 100 % Schreiben, 100 % Zufall

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Das gleiche Ergebnis: explosionsartiges Leistungswachstum und Skalierung mit zunehmender Anzahl von SSDs.

In beiden Tests war die Menge der Arbeitsdaten geringer als die gesamte Cache-Größe. Daher wurden im Laufe der Zeit alle Blöcke in den Cache kopiert. Und tatsächlich wurde die Arbeit bereits mit SSDs durchgeführt, praktisch ohne Auswirkungen auf 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 deutlich zu demonstrieren.

Kehren wir nun zur Erde zurück und prüfen wir eine realistischere Situation, in der die Datenmenge größer als die Cache-Größe ist. Damit der Test in angemessener Zeit bestanden werden kann (die „Aufwärmphase“ des Caches nimmt mit zunehmender Volume-Größe erheblich zu), begrenzen wir die Volume-Größe auf 120 GB.

Test 3. Datenbankemulation

SSD-Cache

  • E/A-Typ: Datenbank
  • Cache-Blockgröße: 1 MB
  • Schwellenwert für Auffüllen beim Lesen: 2
  • Schwellenwert für Auffüllen beim Schreiben: 1

E/A-Muster

  • Tool: IOmeter V1.1.0
  • Arbeiter: 1
  • Ausstehend (Warteschlangentiefe): 128
  • Zugriffsspezifikationen: 8 KB, 67 % lesen, 100 % zufällig

Implementierung von SSD-Caching im QSAN XCubeSAN-Speichersystem

Urteil

Die offensichtliche Schlussfolgerung ist natürlich die gute Effizienz der Verwendung eines SSD-Cache zur Verbesserung der Leistung jedes Speichersystems. Angewendet QSAN XCubeSAN Diese Aussage trifft voll und ganz zu: Die SSD-Caching-Funktion ist perfekt umgesetzt. Dies betrifft die Unterstützung von Lese- und Lese-/Schreibmodi, flexible Einstellungen für jedes Nutzungsszenario sowie die Gesamtleistung des Gesamtsystems. Daher können Sie zu einem sehr günstigen Preis (der Lizenzpreis ist vergleichbar mit den Kosten von 1-2 SSDs) die Gesamtleistung erheblich steigern.

Source: habr.com

Kommentar hinzufügen