Lösungen fĂŒr die Arbeit mit RAID-Arrays von Festplatten werden seit sehr langer Zeit verwendet. Im Allgemeinen bleiben sie in vielen Bereichen weiterhin beliebt, in denen ein relativ kostengĂŒnstiges, fehlertolerantes Array mit hohem Volumen erforderlich ist. Angesichts der GröĂe moderner Festplatten, ihrer Geschwindigkeit und aus anderen GrĂŒnden sind Arrays von RAID6 (oder RAID60, wenn es viele Festplatten gibt) das gröĂte praktische Interesse. Diese Art von Arrays hat jedoch eine geringe Leistung bei zufĂ€lligen SchreibvorgĂ€ngen und es ist nicht einfach, etwas damit zu tun.
In diesem Fall sprechen wir natĂŒrlich ĂŒber die Geschwindigkeit des "Rohvolumens". Im wirklichen Leben das Dateisystem, das Betriebssystem, die Anwendungen und alles, was dazu hinzugefĂŒgt wird. TatsĂ€chlich ist also nicht alles so schlecht. Es gibt jedoch auch Hardware- und Softwaremethoden zur Steigerung der ProduktivitĂ€t, die von diesen Subsystemen unabhĂ€ngig sind. Wir sprechen von Caching-Technologien, wenn einem Array von Festplatten ein wesentlich schnelleres Flash-Speicherlaufwerk hinzugefĂŒgt wird.
Insbesondere in Adaptec RAID-Controllern wird diese Technologie als maxCache bezeichnet und ihre Version 3.0 ist in den Modellen ASR-8885Q und ASR-81605ZQ implementiert. Bei der Verwendung mĂŒssen mehrere Funktionen berĂŒcksichtigt werden: Es ist nur ein maxCache-Volume pro Controller zulĂ€ssig, das maximale Volume des maxCache-Volumes betrĂ€gt 1 TB. Damit das Schreib-Caching funktioniert, muss das maxCache-Volume selbst fehlertolerant konfiguriert sein (z. B. ein Spiegel). Gleichzeitig kann der Benutzer fĂŒr jedes logische Volume unabhĂ€ngig festlegen, wie genau er mit maxCache arbeiten soll - zum Lesen und / oder Schreiben und in welchem ââModus.
Zum Testen verwendeten wir einen Server, der auf einem Supermicro X10SLM-F-Motherboard, einem Intel Xeon E3-1225 v3-Prozessor (4C / 8T, 3,2 GHz) und 32 GB RAM unter Debian 9 basiert.

Der getestete ASR-81605ZQ-Controller verfĂŒgt ĂŒber eine Speicherschutzeinheit und bei der Arbeit mit einem Array von Festplatten ĂŒber aktive Lese- und Schreibcaches. Denken Sie daran, dass der interne Speicher dieses Modells 1 GB betrĂ€gt. Ein RAID6-Array mit einem 256-KB-Block wurde aus sechs Seagate ST10000NM0086-SATA-Festplatten mit einer KapazitĂ€t von 10 TB erstellt. Das Gesamtvolumen des Volumens betrug etwa 36 TB.
Zwei GerĂ€tepaare fungierten als SSDs fĂŒr das maxCache-Volume: zwei Samsung 850 EVO 1-TB-SATA-Schnittstelle der zweiten Generation der zweiten Generation und zwei 400-GB-SAS-Schnittstelle Seagate 1200 SSD (ST400FM0053), aus der RAID1-Arrays erstellt wurden. NatĂŒrlich kann das erste Modell bereits als veraltet und nicht nur moralisch angesehen werden. Aber um das Budgetszenario zu veranschaulichen, wird es reichen. Die zweite Kategorie passt formal besser in die Kategorie âUnternehmenâ, ist aber auch schwer als modern zu betrachten. In den Einstellungen des maxCache-Arrays selbst gibt es nur die Option Flush and Fetch Rate, die auf dem Standardwert (Medium) blieb. Es gibt keine Möglichkeit, eine PrioritĂ€t fĂŒr VorgĂ€nge oder DatentrĂ€ger auszuwĂ€hlen. Beachten Sie, dass sich die Laufwerke nicht in einem neuen Zustand befanden und TRIM in dieser Konfiguration nicht verwendet wird.
Nach dem Erstellen des maxCache-Volumes mĂŒssen Sie die Parameter fĂŒr die Verwendung in den Eigenschaften des logischen Volumes aktivieren. Insgesamt gibt es drei Optionen: Lese-Cache aktivieren, Schreib-Cache aktivieren und Schreib-Cache-Typ.
Das Dienstprogramm fio wurde als Testwerkzeug verwendet, und der Satz von Skripten enthielt sequentielle und zufĂ€llige Operationen mit einer unterschiedlichen Anzahl von Threads. Es ist erwĂ€hnenswert, dass die Untersuchung der Leistung von Produkten mit Caching-Technologien der synthetischen Technologie schwer als die beste Option zu erkennen ist. Es ist besser, die Auswirkungen auf reale Aufgaben angemessen zu bewerten, da die synthetische Last in gewissem MaĂe der Idee des Caching widerspricht. DarĂŒber hinaus betrachten wir in diesem Fall Operationen auf niedriger Ebene, und tatsĂ€chlich befasst sich der Benutzer normalerweise mit Dateien, und wie oben erwĂ€hnt, sind das Dateisystem des Volumes, das Betriebssystem und die Software selbst in die Arbeit mit ihnen einbezogen. Es handelt sich also um Kunststoffe, die aufgrund ihrer Einfachheit und Wiederholbarkeit attraktiv sind und fĂŒr sich genommen keinen Sinn ergeben, sondern hauptsĂ€chlich fĂŒr den Vergleich von âwie es war und wie es wurdeâ in Szenarien, die fĂŒr das Zwischenspeichern von Algorithmen schwierig sind, und fĂŒr eine ziemlich grobe AbschĂ€tzung des Effekts.
Lassen Sie uns zuerst sehen, wozu unser Array allein in der Lage ist. Denken Sie daran, dass bei sequentiellen Operationen die Geschwindigkeit in MB / s und Verzögerungen (auf einer logarithmischen Skala) interessant sind und bei zufÀlligen Operationen auch IOPS und Verzögerungen interessant sind.
Die Geschwindigkeit von Stream-Operationen mit einem Array dieser Konfiguration liegt bei 900 MB / s. Gleichzeitig ĂŒberschreiten Verzögerungen auch bei einer groĂen Anzahl von Threads nicht 70 ms.


Bei Festplatten sind zufĂ€llige VorgĂ€nge die schwierigste Last, wie aus den Ergebnissen hervorgeht. Wenn Sie den Latenzschwellenwert auf 100 ms einstellen, können Sie beim Lesen ungefĂ€hr 1100 IOPS erhalten, und im Datensatz kann das Array unabhĂ€ngig von der Last ungefĂ€hr 300 IOPS liefern. Beachten Sie, dass Sie mit einem RAID60-Array von 36 Festplatten auf demselben Controller dank der Konfiguration von drei Blöcken mit 12 Festplatten interessantere Zahlen erhalten können. Auf diese Weise können Sie beim zufĂ€lligen Lesen und Schreiben eine Rotation hinzufĂŒgen und die Geschwindigkeit auf 3500 bzw. 1200 IOPS erhöhen (in dieser Konfiguration gab es ziemlich alte SAS-Festplatten von HGST mit 2 TB). Die negative Seite dieser Option sind die zusĂ€tzlichen Volumenkosten, da nicht zwei Festplatten pro Volumen "verloren" gehen, sondern zwei pro Gruppe.
Ohne Caching sieht unser Array also traurig genug fĂŒr zufĂ€llige Operationen aus. Dies ist natĂŒrlich die âroheâ Geschwindigkeit des Volumes, und Programme laden selten ausschlieĂlich zufĂ€llig (denken Sie daran, dass wir hier noch ein Array zum Speichern groĂer Dateien haben, nicht die Datenbank).

Mal sehen, wie SSDs in dieser Situation helfen können. In den Tests werden vier verfĂŒgbare Konfigurationsoptionen verwendet - nur Lesen, Lesen und Schreiben Durchschreiben, Lesen und Schreiben ZurĂŒckschreiben, Lesen und Schreiben Sofortiges ZurĂŒckschreiben:
- WB - RĂŒckschreiben aktiviert. maxCache speichert die Daten auf der SSD und schreibt sie auf die Festplatten zurĂŒck, wenn die Leistung kaum oder gar nicht beeintrĂ€chtigt wird. Dies ist die Standardrichtlinie.
- INSTWB - Sofortiges ZurĂŒckschreiben aktiviert. ZusĂ€tzlich zur Standardrichtlinie erstellt maxCache im laufenden Betrieb schmutzige Seiten fĂŒr Vollstreifen-SchreibvorgĂ€nge, wenn auf der SSD Platz vorhanden ist und die Anzahl der schmutzigen Seiten unter dem Schwellenwert liegt.
- WT - Durchschreiben aktiviert. Ăhnlich wie beim sofortigen ZurĂŒckschreiben werden jedoch SchreibvorgĂ€nge mit vollem Streifen sowohl in den Cache als auch auf die Festplatte ĂŒbertragen, und es werden keine schmutzigen Seiten im laufenden Betrieb erstellt.
Beginnen wir mit SATA-Laufwerken, die ziemlich groĂ sind. Die Diagramme sind diesmal getrennt - Geschwindigkeit und Verzögerungen fĂŒr jedes der vier Testszenarien.
Bei sequentiellen LesevorgÀngen zeigt das Array stabile Ergebnisse unabhÀngig von der Art des verwendeten Caches, was zu erwarten ist. Gleichzeitig unterscheiden sie sich kaum von einem Array ohne Cache - alle 900 MB / s und Verzögerungen von etwa 70 ms.
Beim sequentiellen Schreiben gibt es zwei Gruppen - nur zum Lesen und mit Write Back zeigen sie Ergebnisse Ă€hnlich einem Array ohne Cache - etwa 900 MB / s und bis zu 100 ms, und Write Through und Instant Write Back können nicht mehr als 100 MB / s und mit deutlich gröĂeren Werten herausziehen Verzögerungen.
Denken Sie daran, dass beim Lesen des Festplattenarrays maximal etwa 1100 IOPS angezeigt wurden, aber an dieser Grenze begannen die Verzögerungen bereits 100 ms zu ĂŒberschreiten. Mit dem SATA-SSD-Caching können Sie etwas bessere Ergebnisse erzielen - etwa 1.500 IOPS und mit den gleichen Verzögerungen.
Bei zufĂ€lligen AufzeichnungsvorgĂ€ngen sehen wir den gröĂten Effekt - eine zweieinhalbfache Erhöhung der Indikatoren bei gleichzeitiger Erhöhung der TragfĂ€higkeit. Bei Verwendung des Caches können Verzögerungen von bis zu 100 ms mit zwei- bis dreimal so vielen Threads auftreten.
Die allgemeine Schlussfolgerung zu dieser Konfiguration lautet: Sie stört das sequentielle Lesen nicht, stört in einigen Konfigurationen das sequentielle Schreiben nicht, fĂŒgt bei zufĂ€lligen LesevorgĂ€ngen etwa 35% hinzu und erhöht die Leistung bei zufĂ€lligen SchreibvorgĂ€ngen ein paar Mal.
Schauen wir uns nun eine Variante des Caching-Volumes des zweiten Paares von SSD-Laufwerken an. Beachten Sie, dass sie in unserem Fall deutlich weniger Volumen, eine 12-Gbit / s-SAS-Schnittstelle und höhere Geschwindigkeitseigenschaften (vom Hersteller angegeben) hatten.
Beim sequentiellen Lesen unterscheiden sich die Ergebnisse nicht von den zuvor angegebenen, was durchaus zu erwarten ist.
Bei der sequentiellen Aufnahme haben wir jetzt drei Gruppen - die Konfiguration mit Write Through-Schreibcache bleibt zurĂŒck, etwa Instant Write Back zeigt ungefĂ€hr die HĂ€lfte der maximalen Geschwindigkeit und nur Write Back unterscheidet sich nicht von einem Array ohne Cache. Die gleiche Situation mit der Wartezeit.
Beim zufĂ€lligen Lesen erwies sich Instant Write Back mit 2500 IOPS als das Beste, wĂ€hrend der Rest der Konfigurationen nur bis zu 1800 IOPS umfassen kann. Beachten Sie, dass alle Optionen mit Schreib-Caching deutlich schneller sind als ein "sauberes" Array. Gleichzeitig ĂŒberschreitet die Wartezeit auch bei einer groĂen Anzahl von Threads nicht 100 ms.
Bei zufÀlligen LesevorgÀngen wird Instant Write Back erneut angezeigt und zeigt fast 2.000 IOPS an. Die zweite Gruppe enthÀlt die Konfigurationen Write Through und Write Back mit 1000 IOPS.
Der letzte Teilnehmer, der den Cache nicht fĂŒr SchreibvorgĂ€nge verwendet, zeigt ungefĂ€hr 300 IOPS sowie nur eine Reihe von Festplatten an.
Die vielleicht interessanteste Option fĂŒr dieses Cache-Volume ist Instant Write Back. Es stimmt, es ist langsamer beim Streaming von LesevorgĂ€ngen. Möglicherweise kann dies mithilfe der RAID10-Konfiguration fĂŒr das maxCache-Volume behoben werden, es kostet jedoch bereits vier Felder im SpeichergehĂ€use.
Im Allgemeinen können wir sagen, dass die Verwendung der maxCache-Technologie wirklich nĂŒtzlich sein kann, um die Leistung von Arrays von Festplatten zu steigern, insbesondere wenn die Last viele zufĂ€llige VorgĂ€nge enthĂ€lt. Es ist jedoch immer noch nicht in Betracht zu ziehen, dass dies genauso effektiv ist wie das Ersetzen der Festplatte durch eine SSD in einem Desktop-Computer oder einer Workstation.
Der gröĂte Effekt, der in den Tests festgestellt wurde, ist eine Erhöhung der Geschwindigkeit zufĂ€lliger Operationen um das 2-3-fache. NatĂŒrlich wurden nicht die schnellsten SSDs verwendet, was sich in einigen Tests deutlich widerspiegelte (z. B. sequentielle Aufzeichnung im Durchschreibemodus). DarĂŒber hinaus möchte ich noch einmal darauf hinweisen, dass die Wahl der Caching-Konfiguration die Ergebnisse erheblich beeinflusst. Da das Ăndern von Einstellungen "on the fly" ohne Datenverlust möglich ist, lohnt es sich, alle Optionen fĂŒr Ihre Aufgaben selbst zu ĂŒberprĂŒfen und die beste Option auszuwĂ€hlen.