Grundlegende Elemente der Flash Virtualization Platform (FVP), Teil 2. Verwenden Ihrer eigenen Plattform oder Ihres eigenen Dateisystems

Eines der Themen, die ich mit Satyam und Murali Vilayannur diskutierte, war das Dateisystem, das zum Speichern von Daten auf Flash-Geräten verwendet wird. Die folgenden bemerkenswerten Fakten sollten beachtet werden: Satyam hat VMFS3 erstellt, Murali war der führende Entwickler von VMFS5. Unter diesem Gesichtspunkt erscheint die Verwendung von VMFS offensichtlich. Die große Überraschung für mich war jedoch die Tatsache, dass wir für Flash-Geräte kein VMFS verwenden. Eine noch größere Überraschung war, dass wir das Dateisystem überhaupt nicht verwenden.

Warum nicht VMFS?
Dateisysteme bieten Funktionen, die nicht erforderlich sind und manchmal sogar im Widerspruch zu den Anforderungen der Plattform stehen, die aktive E / A-Vorgänge auf Flash-Geräten verarbeitet. Eines der größten Probleme bei der Verwendung eines VMFS-ähnlichen Dateisystems auf einem Flash-Gerät besteht darin, dass es für SAN-Speichersysteme und deren Datenverwaltungsmodelle optimiert ist. Satyam schrieb darüber einen Artikel für ACM, während er in VMware arbeitete. Dies macht das Dateisystem leider zu einem ungeeigneten Werkzeug für FVP-Aufgaben.

Direct-Address-Dateisysteme überlasten Flash-Geräte, verkürzen ihre Lebensdauer, verarbeiten willkürliche E / A-Vorgänge nicht optimal, testen ihre (oft sehr fragilen) Garbage-Collection-Algorithmen auf Stärke, und ihre Objekte (Dateien und Verzeichnisse) sind weniger geeignet für Ebene der virtuellen Maschine und Management der Servicequalität, was für FVP-Aufgaben äußerst wichtig ist. Im nächsten Abschnitt wird das Problem der Datenverwaltung auf Flash-Geräten detailliert beschrieben. Vorerst jedoch eine kurze Schlussfolgerung: Wenn Ihr Flash-Gerät für Sie teuer ist, legen Sie kein Dateisystem mit direkter Adressierung an.

Dateisysteme bieten auch Funktionen, die die Anforderungen von FVP bei weitem übertreffen. Zum Beispiel Festplattensperren. VMFS verfügt über einen erweiterten Distributed Locking Manager, der den Zugriff verschiedener ESXi-Hosts auf Festplatten steuert. FVP verwaltet die lokalen Festplatten des Hosts und erfordert keine Sperren für andere Hosts. Dadurch wird der Manager für verteilte Sperren völlig überflüssig. Gleiches gilt für POSIX-Kompatibilität und verteilte Transaktionen. Usw.

Low-Level-Blitzfunktionen
Hier ist ein Beispiel dafür, wie sich das Schreiben auf Flash-Geräte grundlegend von Aufzeichnungen auf Festplatten unterscheidet. Flash kann vorhandene Daten nicht überschreiben. Daten im Flash-Speicher können nur auf eine leere Seite geschrieben werden. Ein Merkmal des Flash-Speichers ist, dass die Aufzeichnung seitenweise und das Löschen nur blockweise erfolgen kann. Was ist eine Seite und was ist ein Block? Flash speichert Daten in Zellen. Zellen werden zu Seiten zusammengefasst (4 KB); Seiten sind in Blöcke gruppiert. Die meisten Hersteller kombinieren 128 Seiten zu einem Block. Wenn Sie die Seite löschen möchten, müssen Sie den gesamten Block löschen. Alle notwendigen Daten von anderen Seiten sollten woanders gespeichert werden. Es ist allgemein bekannt, dass Flash-Geräte eine begrenzte Anzahl von Schreib- und Löschzyklen aufweisen.

Folglich kann ein zufälliger E / A-Schreibvorgang eine größere Auswirkung haben, als Sie dachten. Das Problem ist, dass die meisten Dateisysteme in den 80er und 90er Jahren entwickelt wurden und seitdem nicht weiterentwickelt wurden. Dateisysteme berücksichtigen nicht die Leistungseinbußen, die sie bei Flash-Geräten verursachen, wenn Low-Level-Vorgänge für Festplatten ausgeführt werden. Die meisten Hersteller von Flash-Geräten implementieren verschiedene Mechanismen, um den fortschreitenden Leistungsabfall zu berücksichtigen. Mit Hilfe mehrerer Schemata untersuchen wir diese Mechanismen und finden heraus, warum Fragmentierung einen solchen Effekt auf Flash-Geräte hat.

Verschleißmanagement
Der Einfachheit halber habe ich beschlossen, 9 Seiten in einem Block statt 128 Seiten pro Block anzuzeigen.

Beginnen wir mit dem Verschleißmanagement. In diesem Beispiel hat die Anwendung die Daten bereits erstellt und in Block 1 auf den Seiten A, B und C aufgezeichnet (Schritt 1). Es kommen neue Daten an (Schritt 2), die auf die Seiten D, E und F geschrieben werden. Die Anwendung aktualisiert die vorherigen Daten (AC), und anstatt die vorherigen Seiten zu verwenden, verwendet das Flash-Gerät weiterhin die neuen Seiten. Diese neuen Daten sind mit A-1, B-1 und C-1 bezeichnet. Eine möglichst gleichmäßige Verteilung der Aufzeichnungen wird als Verschleißmanagement bezeichnet. Alte Seiten werden jetzt als abgelaufen markiert.

Speicherbereinigung und mehrfache Einreise
In diesem Beispiel ist Block A voll. Was passiert, wenn der für die Aufzeichnung verfügbare Speicherplatz erschöpft ist und neue Daten eingehen?

Flash kopiert die aktuellen Daten in leere Zellen. Die tatsächlichen Daten im Block werden gelesen und in einen anderen Block geschrieben. Überfällige Daten verbleiben auf den Seiten und werden zusammen mit den übrigen Blockseiten gelöscht. Dieser Vorgang wird als "Speicherbereinigung" bezeichnet.

Garbage Collection ist in Ordnung, aber die mehrfache Eingabe, die während des Vorgangs erfolgt, führt zu erheblichen Schäden an Flash-Geräten. Um 3 Seiten aufzunehmen, muss das Flash-Gerät 6 Seiten lesen und die 6 Seiten an eine andere Stelle schreiben, bevor es neue Daten schreiben kann. Und vergessen Sie nicht den Löschzyklus. Angenommen, in einem Szenario, in dem die Festplatte voll ist, werden die Daten (vorübergehend) verschoben, bevor neue Daten aufgezeichnet werden. In meinem Diagramm habe ich Block B für diese Option hinzugefügt. Um dies in einer realen Situation (bei Verwendung des Dateisystems) zu tun, müssen Sie überschüssigen Speicherplatz zuweisen, der vom Controller-Flash reserviert wird.

Um dies in einer realen Situation (bei Verwendung des Dateisystems) zu tun, müssen Sie überschüssigen Speicherplatz zuweisen, der vom Controller-Flash reserviert wird

Übermaß an Platz
Die Flash-Kapazität kann für Prozesse reserviert werden, die von einem Flash-Controller verwaltet werden. Dies kann sowohl vom Hersteller des Blitzgeräts als auch vom Benutzer durchgeführt werden. Wenn Sie beispielsweise einen 160-GB-Flash-PCIe-Beschleuniger kaufen, erhalten Sie tatsächlich eine 192-GB-Karte. Dem Benutzer stehen 160 GB zur Verfügung, und 32 GB sind zusätzlich für Vorgänge auf Flash-Ebene auf Controller-Ebene reserviert, z. B. für Garbage Collection, Fehlerkorrektur und Controller-Firmware. Wenn Sie ein nicht-industrielles SSD-Laufwerk kaufen, erhalten Sie normalerweise ein wenig reservierten Speicherplatz. Wenn Sie dieses Flash-Gerät in einem Dateisystem formatieren, sollten Sie diese Funktionen kennen und möglicherweise zusätzlichen Speicherplatz außerhalb der verfügbaren Kapazität reservieren. Derzeit gibt es keine standardisierten Skalierungsempfehlungen. Sie müssen daher Entscheidungen auf der Grundlage Ihrer eigenen Erfahrung treffen. Im schlimmsten Fall haben Sie eine fragmentierte Festplatte und die SSD muss ständig Daten übertragen, um neue zu schreiben. Stellen Sie sich die spielenden Kinder vor, nur das Bewegungsmuster ist etwas komplizierter.

Überprüfung der Datenverwaltung auf Flash-Geräten
Die Ingenieure von PernixData haben ein neues Format für die Verwaltung von Daten auf Flash-Geräten für FVP entwickelt. Details werden in den folgenden Artikeln und nun ein paar grundlegenden Punkten offenbart.

Optimiert für Flash
Das Format ist so konzipiert, dass temporäre E / A-Daten mit möglichst wenigen Metadaten gespeichert werden und mit einem Flash-Gerät mit der für dieses Gerät maximal verfügbaren Leistung gearbeitet wird. Es konvertiert zufällige Einträge in aufeinanderfolgende, um die höhere Flash-Leistung im sequentiellen Schreibmodus zu nutzen. Dies reduziert die Anzahl der redundanten Datenüberschreibungen und Löschzyklen. Der Algorithmus enthält keine vererbten Einschränkungen von Dateisystemen, wie z. B. große Blockgrößen, Verzeichnisse, Dateien, lange Transaktionen, Sperrenmanager usw.

Dynamisch geteilte Kapazität zwischen virtuellen Maschinen
Vielen Dank tiefe Integration Mit VMkernel kann FVP Datenblöcke verfolgen und feststellen, ob die virtuelle Maschine liest oder schreibt. Unabhängig von der Verfolgung solcher Vorgänge kann die Plattform Lese- und Schreibpuffer im für die virtuelle Maschine zugewiesenen Speicher skalieren. FVP kann einen beliebigen Satz virtueller Maschinendaten im Cache speichern oder aus dem Cache löschen. Im Gegensatz dazu ist die Datenbereinigungsrichtlinie auf dem herkömmlichen Dateisystem für ein Flash-Gerät suboptimal und führt seitdem zu mehreren Überschreibungen Das Dateisystem kann nur Daten an das Ende der Datei schreiben oder auch Blöcke am Ende löschen.

Dies bedeutet auch, dass Sie nicht für jede virtuelle Maschine eine statische Cachespeicherkonfiguration zuweisen müssen, wie dies bei Verwendung eines Dateisystems mit direkter Adressierung der Fall wäre. Es war eine großartige Entscheidung für uns; Die Benutzererfahrung mit dem Produkt sollte so intuitiv wie möglich sein.

Ich zitiere unseren Produktmanager Bala: "Die Eleganz des Produkts besteht meiner Meinung nach darin, dass es grundlegende Aufgaben ausführt, ohne dass der Benutzer neue oder ungewöhnliche Aktionen ausführen muss."

Für die tägliche Arbeit ist dies hervorragend: Sie müssen den Cache nicht für jede virtuelle Maschine vorskalieren. Dies bedeutet, dass Sie die zukünftige Verwendung von Flash nicht kennen und vorhersagen müssen - FVP wird alles für Sie tun. Die fehlende Zuweisung fester Ressourcen führt dazu, dass entladene virtuelle Maschinen den Flash-Speicher nicht ausreichend nutzen und bei aktiven virtuellen Maschinen mit unzureichender Größe des Flash-Caches redundante Blockbereinigungszyklen auftreten. Dies minimiert das Problem der Mehrfachaufzeichnung und sorgt für maximale Leistung und Zuverlässigkeit der Flash-Geräte.

Originalartikel .

Seit 2016 hat sich FVP aus dem Verkauf zurückgezogen.

Warum nicht VMFS?
Was ist eine Seite und was ist ein Block?
Was passiert, wenn der für die Aufzeichnung verfügbare Speicherplatz erschöpft ist und neue Daten eingehen?