Heute sprechen wir über eine interessante Technologie, die in der Unity/Unity XT Storage implementiert ist – FAST VP. Wenn Sie zum ersten Mal von Unity hören, können Sie die Systemmerkmale über den Link am Ende des Artikels nachlesen. Ich habe über ein Jahr im Projektteam von Dell EMC an FAST VP gearbeitet. Heute möchte ich diese Technologie ausführlicher vorstellen und einige Details ihrer Implementierung enthüllen. Natürlich nur die, die freigegeben wurden. Wenn Sie sich für effektive Datenspeicherung interessieren oder einfach die Dokumentation nicht ganz verstanden haben, wird Ihnen dieser Artikel sicherlich nützlich und interessant sein.

Ich möchte gleich sagen, was in diesem Material nicht behandelt wird. Es wird keinen Vergleich mit Wettbewerbern geben. Ich plane auch nicht, über ähnliche Technologien aus dem Open Source-Bereich zu sprechen, da neugierige Leser bereits darüber informiert sind. Und natürlich werde ich nichts bewerben.
Storage Tiering. Ziele und Aufgaben von FAST VP
FAST VP steht für Fully Automated Storage Tiering for Virtual Pool. Klingt kompliziert? Keine Sorge, das klären wir gleich. Tiering ist eine Methode zur Organisation der Datenspeicherung, bei der es mehrere Ebenen (Tier) gibt, auf denen diese Daten gespeichert werden. Jede hat ihre eigenen Merkmale. Die wichtigsten: Leistung, Speichervolumen und Kosten pro Informationen. Natürlich gibt es Zusammenhänge zwischen diesen.
Ein wichtiges Merkmal des Tiering ist, dass der Zugriff auf die Daten einheitlich erfolgt, unabhängig davon, auf welcher Speicherebene sie sich gerade befinden, während die Größe des Pools der Summe der Größen der darin enthaltenen Ressourcen entspricht. Hier liegen die Unterschiede zum Cache: Die Größe des Caches wird nicht zur Gesamtgröße der Ressource (in diesem Fall des Pools) addiert, und die Cache-Daten duplizieren einen bestimmten Datenfragment des Hauptmediums (oder duplizieren es, falls die Daten aus dem Cache noch nicht geschrieben wurden). Auch die Verteilung der Daten auf die Ebenen bleibt dem Benutzer verborgen. Das bedeutet, dass er nicht sieht, welche spezifischen Daten auf jeder Ebene liegen, obwohl er indirekt darauf Einfluss nehmen kann, indem er Richtlinien festlegt (darüber später mehr).
Jetzt schauen wir uns die Besonderheiten der Implementierung von Storage Tiering in Unity an. In Unity gibt es 3 Ebenen oder Tiers:
- Extreme Performance (SSDs)
- Performance (SAS HDD 10k/15k RPM)
- Kapazität (NL-SAS HDD 7200 RPM)
Sie sind in absteigender Reihenfolge von Leistung und Preis angeordnet. In der Extreme Performance sind ausschließlich Solid-State-Laufwerke (SSD) enthalten. In den beiden anderen Tiers gibt es Festplattenlaufwerke, die sich durch ihre Umdrehungsgeschwindigkeit und damit durch ihre Leistung unterscheiden.
Speichermedien der gleichen Stufe und Größe werden in einem RAID-Verbund zusammengefasst, wodurch eine RAID-Gruppe (RAID group, kurz RG) entsteht; Informationen zu den verfügbaren und empfohlenen RAID-Stufen finden Sie in der offiziellen Dokumentation. Aus RAID-Gruppen werden Storage-Pools (Storage pool) gebildet, aus denen der verfügbare Speicherplatz verteilt wird. Aus dem Pool wird dann Speicherplatz für Dateisysteme und LUNs bereitgestellt.

Warum brauche ich Tiering?
Kurz und abstrakt gesagt: um mit minimalen Ressourcen ein größeres Ergebnis zu erzielen. Konkret versteht man unter Ergebnis in der Regel die Gesamtheit der Merkmale eines Speicher-Subsystems – Geschwindigkeit und Zugriffszeit, Speicherkosten und weiteres. Mit minimalen Ressourcen sind die geringsten Aufwendungen gemeint: Geld, Energie usw. FAST VP setzt genau die Mechanismen zur Datenverteilung über verschiedene Ebenen im Speicher-Subsystem Unity/Unity XT um. Wenn Sie mir glauben, können Sie den nächsten Absatz überspringen. Für die anderen werde ich etwas ausführlicher erzählen.
Die richtige Verteilung von Daten über die Speicherungsebenen trägt dazu bei, die gesamten Kosten des Speicher-Subsystems zu senken, indem auf einen gewissen Zugriff auf weniger häufig verwendete Informationen verzichtet wird, und die Leistung zu steigern, indem häufig verwendete Daten auf schnellere Speichermedien verschoben werden. Hier könnte jemand einwenden, dass ein normaler Administrator auch ohne Tiering weiß, wo welche Daten platziert werden sollten, welche Eigenschaften des Speicher-Subsystems für seine Aufgaben wünschenswert sind usw. Das ist zweifellos richtig, aber die manuelle Datenverteilung hat ihre Nachteile:
- benötigt Zeit und Aufmerksamkeit des Administrators;
- es gelingt nicht immer, die Ressourcen des Speicher-Subsystems an geänderte Bedingungen anzupassen;
- ein wichtiges Vorteil geht verloren: der einheitliche Zugang zu Ressourcen, die sich auf verschiedenen Speicherungsebenen befinden.
Damit sich die Storage-Administratoren weniger um die Arbeitsplatzsicherheit sorgen müssen, füge ich hinzu, dass eine durchdachte Ressourcenplanung auch hier notwendig ist. Jetzt, da die Aufgaben des Tierings kurz umrissen sind, lassen Sie uns betrachten, was wir von FAST VP erwarten können. Hier ist der richtige Zeitpunkt, um zur Definition zurückzukehren. Die ersten beiden Wörter – Fully Automated – werden wörtlich als „vollständig automatisiert“ übersetzt und bedeuten, dass die Verteilung auf die Ebenen automatisch erfolgt. Virtual Pool ist ein Pool von Daten, der Ressourcen aus verschiedenen Speicherstufen umfasst. So sieht das aus:

Um es vorweg zu nehmen: FAST VP verschiebt Daten nur innerhalb eines Pools und nicht zwischen mehreren Pools.
Aufgaben, die von FAST VP gelöst werden
Zunächst sprechen wir abstrakt. Wir haben einen Pool und einen Mechanismus, der Daten innerhalb dieses Pools umverteilen kann. Da unser Ziel die maximale Leistung ist, fragen wir uns: Welche Möglichkeiten gibt es, um dies zu erreichen? Es könnten mehrere Wege sein, und hier hat FAST VP dem Benutzer mehr zu bieten, als nur Storage-Tiering. So kann FAST VP die Leistung des Pools steigern:
- Verteilung von Daten auf verschiedene Festplattentypen und -ebenen
- Verteilung von Daten zwischen Festplatten desselben Typs
- Verteilung von Daten bei der Erweiterung des Pools
Bevor wir analysieren, wie diese Aufgaben gelöst werden, müssen wir einige notwendige Fakten über das Arbeiten von FAST VP kennen. FAST VP arbeitet mit Blöcken einer bestimmten Größe – 256 Megabyte. Dies ist der kleinste kontinuierliche „Stück“ Daten, der verschoben werden kann. In der Dokumentation wird es als Slice bezeichnet. Aus der Sicht von FAST VP bestehen alle RAID-Gruppen aus einer Anzahl solcher „Stücke“. Entsprechend wird die gesamte Ein- und Ausgabestatistik für diese Datenblöcke gesammelt. Warum wurde gerade diese Blockgröße gewählt und wird sie reduziert? Der Block ist groß genug, aber das ist ein Kompromiss zwischen der Granularität der Daten (kleinere Blockgröße – genauere Verteilung) und den vorhandenen Rechenressourcen: Bei den aktuellen strengen Einschränkungen des Arbeitsspeichers und der großen Anzahl an Blöcken könnten die Datenstatistiken zu viel Platz einnehmen, und die Anzahl der Berechnungen würde proportional zunehmen.
Wie FAST VP Daten im Pool platziert. Politiken
Um die Datenplatzierung im Pool mit aktiviertem FAST VP zu steuern, gibt es folgende Richtlinien:
- Höchste verfügbare Ebene
- Auto-Tier
- Zuerst hoch, dann Auto-Tier (Standard)
- Niedrigste verfügbare Ebene
Diese beeinflussen sowohl die anfängliche Platzierung des Blocks (Daten werden zum ersten Mal geschrieben) als auch die spätere Umverteilung. Sobald die Daten jedoch auf den Festplatten platziert sind, wird die Umverteilung nach Zeitplan oder manuell initiiert.
Höchste verfügbare Ebene versucht, einen neuen Block auf der leistungsstärksten Ebene zu platzieren. Wenn dort nicht genügend Platz vorhanden ist, wird er auf die nächste leistungsstärkere Ebene verschoben, jedoch können die Daten später auf eine leistungsstärkere Ebene verschoben werden (bei verfügbarem Platz oder indem andere Daten verdrängt werden). Auto-Tier platziert neue Daten auf verschiedenen Ebenen, abhängig von der Größe des verfügbaren Speicherplatzes, während die Umverteilung von der Nachfrage und dem freien Platz abhängt. Start High then Auto-Tier ist die Standardrichtlinie und wird ebenfalls empfohlen. Bei der anfänglichen Platzierung funktioniert sie wie die höchste verfügbare Ebene, danach erfolgt die Verschiebung der Daten basierend auf ihrer Nutzung. Die Richtlinie Niedrigste verfügbare Ebene strebt an, die Daten auf der am wenigsten leistungsstarken Ebene zu platzieren.
Die Datenmigration erfolgt mit niedriger Priorität, um die ordnungsgemäße Funktion des Speichersystems nicht zu stören. Es gibt jedoch eine Einstellung „Data relocation rate“, die die Priorität ändert. Hier gibt es eine Besonderheit: Nicht alle Datenblöcke haben die gleiche Umverteilungspriorität. Beispielsweise werden Blöcke, die als Metadaten gekennzeichnet sind, zuerst auf eine schnellere Ebene verschoben. Metadaten sind, um es so zu sagen, „Daten über Daten“, eine Art zusätzliche Information, die keine Benutzerdaten sind, aber deren Beschreibung enthält. Zum Beispiel Informationen im Dateisystem darüber, in welchem Block sich eine bestimmte Datei befindet. Das bedeutet, dass die Zugriffszeit auf Daten von der Zugriffszeit auf Metadaten abhängt. Da Metadaten in der Regel viel kleiner sind, wird erwartet, dass der Gewinn durch deren Verschiebung auf leistungsfähigere Festplatten größer ist.
Die Kriterien, die Fast VP in seiner Arbeit verwendet
Das Hauptkriterium für jedes Block, grob gesagt, ist das Merkmal "Nachfrage" der Daten, das von der Anzahl der Lese- und Schreiboperationen eines Datenfragment abhängt. Dieses Merkmal nennen wir "Temperatur". Es gibt gefragte (hot) Daten, die "heißer" sind als nicht gefragte. Sie wird regelmäßig berechnet, standardmäßig in einem Intervall von einer Stunde.
Die Funktion zur Berechnung der Temperatur hat folgende Eigenschaften:
- Bei fehlender Ein- und Ausgabe "kühlen" die Daten mit der Zeit ab.
- Bei weitgehend gleichbleibender Belastung über die Zeit steigt die Temperatur an und stabilisiert sich dann in einem bestimmten Bereich.
Anschließend werden die oben beschriebenen Richtlinien sowie der verfügbare Speicherplatz auf jedem Tier berücksichtigt. Zur Veranschaulichung zeige ich ein Bild aus der Dokumentation. Hier sind die Blöcke mit hoher, mittlerer und niedriger Temperatur rot, gelb und blau markiert.

Kommen wir zurück zu den Aufgaben. Also, wir können mit der Analyse beginnen, was getan wird, um die Aufgaben von FAST VP zu lösen.
A. Verteilung der Daten auf verschiedene Festplattentypen und -ebenen
Das ist im Grunde die Hauptaufgabe von FAST VP. Die anderen sind in gewissem Sinne davon abgeleitet. Je nach gewählter Richtlinie werden die Daten auf verschiedene Speicherebenen verteilt. Zunächst wird die Platzierungsrichtlinie berücksichtigt, gefolgt von der Temperatur der Blöcke und der Größe/Geschwindigkeit der RAID-Gruppen.
Für die Richtlinien Höchster/Niedrigster Verfügbarer Tier ist alles recht einfach. Bei den anderen beiden sieht die Sache anders aus. Die Daten werden auf verschiedenen Ebenen unter Berücksichtigung der Größe und Leistung der RAID-Gruppen verteilt: so, dass das Verhältnis der gesamten "Temperatur" der Blöcke zur "hypothetischen maximalen Leistung" jeder RAID-Gruppe ungefähr gleich ist. Auf diese Weise wird die Last mehr oder weniger gleichmäßig verteilt. Gefragtere Daten werden auf schnellere Medien verschoben, selten verwendete auf langsamere. Im Idealfall sollte die Verteilung etwa so aussehen:

B. Verteilung der Daten unter Festplatten desselben Typs
Erinnern Sie sich, zu Beginn habe ich geschrieben, dass Datenträger aus einem oder mehreren Werden Ebenen in einen Pool zusammengeführt? Im Fall einer einzigen Ebene gibt es auch Arbeit für FAST VP. Damit die Leistung einer Ebene maximal ist, ist es ratsam, die Daten gleichmäßig auf die Laufwerke zu verteilen. Dies ermöglicht (theoretisch) die maximale Anzahl von IOPS zu erzielen. Die Daten innerhalb einer RAID-Gruppe können als gleichmäßig auf die Laufwerke verteilt angesehen werden, aber das ist zwischen RAID-Gruppen nicht immer der Fall. Im Fall eines Ungleichgewichts wird FAST VP die Daten proportional zu ihrem Volumen und zur "vorausgesetzten Leistung" (in numerischer Form) zwischen den RAID-Gruppen verschieben. Zur Veranschaulichung zeige ich ein Schema für die Re-Balancierung zwischen drei RAID-Gruppen:

V. Datenverteilung bei der Erweiterung des Pools
Diese Aufgabe ist ein Spezialfall des vorherigen und wird ausgeführt, wenn eine RAID-Gruppe zum Pool hinzugefügt wird. Damit die neu hinzugefügte RAID-Gruppe nicht ungenutzt bleibt, werden einige Daten auf sie verschoben, was bedeutet, dass die Last auf alle RAID-Gruppen neu verteilt wird.
Verschleißausgleich von SSDs
Durch den Verschleißausgleich kann FAST VP die Lebensdauer von SSDs verlängern, obwohl diese Funktion nicht direkt mit Storage Tiering zusammenhängt. Da bereits Temperaturdaten vorliegen, werden auch die Anzahl der Schreibvorgänge berücksichtigt. Da wir Datenblöcke verschieben können, wäre es logisch, dass FAST VP auch dieses Problem löst.
Wenn die Anzahl der Schreibvorgänge in eine RAID-Gruppe deutlich die Anzahl der Schreibvorgänge in einer anderen übersteigt, wird FAST VP die Daten entsprechend der Anzahl der Schreibvorgänge neu verteilen. Einerseits wird dadurch die Last verringert und die Ressourcen einiger Laufwerke geschont, andererseits erhöht es die "Arbeit" für die weniger ausgelasteten Laufwerke, was die Gesamtleistung steigert.
Somit übernimmt FAST VP die traditionellen Aufgaben des Storage Tiering und geht darüber hinaus. All dies ermöglicht eine effiziente Speicherung von Daten im Unity Storage System.
Einige Ratschläge
- Vernachlässigen Sie nicht, die Dokumentation zu lesen. Es gibt Best Practices, und sie funktionieren ziemlich gut. Wenn man ihnen folgt, treten in der Regel keine ernsthaften Probleme auf. Die weiteren Ratschläge wiederholen oder ergänzen diese hauptsächlich.
- Wenn Sie FAST VP eingerichtet und aktiviert haben, lassen Sie es besser eingeschaltet. Es verteilt die Daten in der dafür vorgesehenen Zeit und nach und nach, anstatt einmal im Jahr zu sein und die Leistung anderer Aufgaben ernsthaft zu beeinträchtigen. In solchen Fällen kann die Neugruppierung der Daten lange dauern.
- Achten Sie sorgfältig auf die Wahl des Umzugsfensters. Es ist zwar offensichtlich, aber versuchen Sie, eine Zeit mit der geringsten Belastung für Unity zu wählen und räumen Sie ausreichend Zeit ein.
- Planen Sie die Erweiterung des Speichers rechtzeitig. Dies ist eine allgemeine Empfehlung, die auch für FAST VP wichtig ist. Wenn der Speicherplatz sehr gering ist, wird auch der Datentransfer verlangsamt oder kann unmöglich werden. Besonders, wenn Sie Punkt 2 ignoriert haben.
- Beim Erweitern des Pools mit aktiviertem FAST VP sollten Sie nicht mit den langsamsten Festplatten beginnen. Das heißt, entweder fügen wir alle geplanten RAID-Gruppen sofort hinzu oder wir fügen zuerst die schnellsten Festplatten hinzu. In diesem Fall wird die Neugruppierung der Daten auf neue "schnelle" Festplatten die Gesamtgeschwindigkeit des Pools erhöhen. Andernfalls, wenn Sie mit "langsamen" Festplatten beginnen, kann es zu einer unangenehmen Situation kommen. Zuerst findet der Transfer von Daten auf neue, relativ langsame Festplatten statt, und danach, bei der Hinzufügung schnellerer Festplatten, in umgekehrter Richtung. Hier gibt es Feinheiten, die mit verschiedenen FAST VP-Richtlinien verbunden sind, aber im Allgemeinen ist eine solche Situation möglich.
Wenn Sie sich für dieses Produkt interessieren, können Sie Unity kostenlos ausprobieren, indem Sie das Unity VSA virtuelle Appliance herunterladen.

Abschließend teile ich einige nützliche Links:
- Seite
- – eine kurze Beschreibung der Funktion
- , PDF-Format
Fazit
Ich möchte viel schreiben, aber ich verstehe, dass nicht alle Details für den Leser von Interesse sein werden. Zum Beispiel könnte ich ausführlicher über die Kriterien berichten, nach denen FAST VP Entscheidungen über den Datentransfer trifft, über die Prozesse der Analyse von Ein-/Ausgabe-Statistiken. Ebenso ist das Thema der Interaktion mit , und das würde einen eigenen Artikel erfordern. Man könnte sogar über die Entwicklung dieser Technologie spekulieren. Ich hoffe, es war nicht langweilig und ich habe Sie nicht ermüdet. Bis zum nächsten Mal!
Quelle: habr.com
