Wie funktioniert das Zwischenspeichern von SSDs mithilfe von Hypervisor in der VMware-Cloud?

    VMware kündigte mit der Veröffentlichung von VMware vSphere 5.1 mehrere neue Projekte für die Speicherung von Daten virtueller Maschinen an, einschließlich der Möglichkeit, einen verteilten Cache auf SSD-Laufwerken auf lokalen Festplatten von ESXi-Servern zu verwenden. Diese Technologie hatte den Arbeitsnamen vFlash und befand sich in der Phase der technischen Vorschau. Später entwickelte sie sich zu einer voll ausgestatteten vSphere Flash Read Cache (vFRC) -Plattform VMware vSphere 5.5. Und dies ist ein ziemlich funktionierendes Werkzeug, das für Aufgaben auf verschiedenen Ebenen verwendet werden kann.

    Die VFRC-Technologie wurde entwickelt, um die Effizienz von Clientanwendungen zu steigern, die mit dem Festplattensubsystem interagieren, indem Lesedaten zwischengespeichert werden, und gleichzeitig die Leistung von Anwendungen, die aktiv Lesevorgänge ausführen, erheblich zu steigern.

    Der Flash-Lesecache funktioniert auf Hypervisor-Ebene und verbessert gleichzeitig die Leistung von virtuellen Maschinen, die das E / A-System häufig für Lesevorgänge verwenden. Zum Zwischenspeichern können PCIe-Flashkarten und lokal auf dem Host installierte SAS / SATA-SSDs verwendet werden. Geräte werden zu einem Flash-Pool zusammengefasst, aus dem VMDK-Festplatten virtueller Maschinen Speicherplatz für das Daten-Caching zugewiesen bekommen.
    Erinnern Sie sich daran, dass VMDK (Virtual Machine Disk) ein von VMware entwickeltes Dateiformat ist, das als Disk-Image in den virtuellen Maschinen verwendet werden kann.

    In Bezug auf die Leistung befindet sich der SSD-Cache zwischen RAM und normalen Festplatten.

    Übersicht über die VFRC-Architektur



    Übersicht über die VFRC-Architektur

    Die Architektur von vFRC sieht wie folgt aus:
    Wenn eine Leseanforderung bei einem VMDK-Laufwerk mit aktiviertem vFRC eintrifft, wird zunächst festgestellt, ob in vFlash erforderliche Daten vorhanden sind.

    • In diesem Fall empfängt die virtuelle Maschine Daten aus dem Cache. Dieses Ereignis wird als "Treffer" (vFRC-Treffer) bezeichnet.
    • Befinden sich die Daten nicht im Cache, liest ESXi sie von der VMDK-Festplatte und gibt sie an die Maschine weiter, während Daten in den Cache geschrieben werden. Dieses Ereignis wird als Miss (vFRC-Miss) bezeichnet. Wenn eine Schreibanforderung eintrifft, werden Daten auf die VMDK-Platte und asynchron in den Cache geschrieben.

    Was wird für vFRC benötigt?


    Um die vFRC-Funktionalität zu aktivieren, müssen folgende Bedingungen erfüllt sein:
    • Haben Sie einen konfigurierten Host mit mindestens einer SSD oder PCIe SSD.
    • Verwenden Sie vSphere 5.5 (vCenter 5.5 und ESXi 5.5).

    Wie schaltet sich vFRC ein?


    Nachdem Sie das Gerät mit ESXi physisch mit dem Server verbunden haben, müssen Sie es der vSphere Flash Infrastructure-Ebene hinzufügen. Dies können Sie in den Hosteinstellungen auf der Registerkarte Verwaltung virtueller Flash-Ressourcen vornehmen.

    Aktivieren von vFRC in den Hosteinstellungen

    Um vFRC in einer virtuellen Maschine zu aktivieren, wird das Element Virtual Flash Read Cache in den Festplatteneinstellungen verwendet, in denen Sie den zugewiesenen Speicherplatz für die Zwischenspeicherung und die Blockgröße angeben können. Die Blockgröße für vFRC sollte in Abhängigkeit davon ausgewählt werden, welche Blöcke die Anwendung Daten auf die Festplatte schreibt. Blockstatistiken für jedes Laufwerk können mit dem Dienstprogramm vscsiStats unter ESXi erfasst werden.

    Definieren von vFRC-Einstellungen

    Konfigurationsmerkmale


    Berücksichtigen Sie beim Konfigurieren des vSphere Flash-Lesecaches die folgenden Punkte:
    • VMware ESXi 5.5 in Enterprise Plus Edition muss auf dem Hostserver installiert sein.
    • Da VFRC nur über den vSphere Web Client konfiguriert und verwaltet wird, ist VMware vCenter Server erforderlich.
    • Die maximale Cache-Größe für eine virtuelle Festplatte beträgt 400 GB.
    • Die maximale Cache-Größe pro Host beträgt 2 TB.
    • Die maximale Größe einer virtuellen Festplatte beträgt 16 TB.
    • Die maximale Anzahl der für den Cache verwendeten SSDs beträgt 8.
    • Es ist erforderlich, die Hardwareversion der virtuellen Maschine auf Version 10 zu aktualisieren.
    • Sie müssen den Cache für jede virtuelle Festplatte manuell konfigurieren. Der Mindestwert beträgt 1 GB.

    vFRC in der Praxis in IT CITY


    Und ein bisschen aus eigener Erfahrung. Wie haben wir den SSD-Cache in der VMware-Cloud getestet und welche Fallstricke haben wir in der Praxis festgestellt?

    Bevor Sie Kunden eine Lösung anbieten, müssen Sie sicherstellen, dass sie voll funktionsfähig und funktionsfähig ist. Dies bedeutet, dass Sie testen und verstehen müssen, dass das Ergebnis vollständig mit den deklarierten Funktionen übereinstimmt und die Anforderungen des Kunden erfüllt. Und wenn es eine Neuheit gibt, die noch niemand getestet und implementiert hat, sollte sie mit besonderer Aufmerksamkeit getestet werden. Schließlich ist es für niemanden ein Geheimnis, dass es in allem Neuen versteckte Fehler, Käfer und andere unangenehme Kleinigkeiten geben kann.

    Sobald VMware die neue Möglichkeit der Verwendung von verteiltem Cache auf SSD-Laufwerken lokaler Festplatten von ESXi-Servern angekündigt hat, haben wir uns entschlossen, diese Funktionalität zu testen. Da sich diese Technologie vor der Veröffentlichung von vSphere 5.5 in der Tech Preview-Phase befand, wollte ich eine bereits entwickelte Lösung testen. Unsere Aufgabe war es, die vFRC-Leistung am gebauten Stand zu überprüfen.

    Zum Testen wurden SSDs an einen Dell PERC H710P RAID-Controller angeschlossen. Wir haben RAID-0-Gruppen entsprechend der Anzahl der SSD-Festplatten erstellt, in jeder Gruppe eine Festplatte.

    Zum Testen wurden SSDs an einen Dell PERC H710P RAID-Controller angeschlossen

    Da der Dell PERC H710P RAID-Controller keine Informationen über den physischen Medientyp bereitstellen kann, musste ich manuell feststellen, dass die mit ESXI verbundenen Laufwerke SSDs sind. Führen Sie dazu den Befehl esxcl aus:

    Ausführen des Befehls esxcli

    Nachdem der Befehl in den Geräteparametern ausgeführt wurde, wurde der Flag-Wert für „Is SSD“ in „True“ geändert:

    Ändern des Wertes des Flags „Is SSD“ in den Geräteeinstellungen

    Danach wurden die Geräte der vSphere Flash Infrastructure-Ebene hinzugefügt. Das aktuelle Verfahren wurde in den Hosteinstellungen mit der Option Virtual Flash Resource Management ausgeführt:

    Konfigurieren Sie vFRC in den Hostparametern

    Um den SSD-Cache zu testen, haben wir vorab einen Stand mit virtuellen Maschinen auf der Basis von Windows Server 2008 R2 x64 und zwei VMDK-Festplatten mit jeweils 100 GB für jede virtuelle Maschine vorbereitet:
    • VMDK1 unter dem Betriebssystem identifiziert,
    • VMDK2 - für Daten.

    Anschließend wurde in den Parametern der VMDK2-Festplatte von virtuellen Maschinen vFRC aktiviert, wodurch 100 GB für den Cache zugewiesen wurden, während die Blockgröße von 4 KB bestimmt wurde.

    Definieren von vFRC-Einstellungen

    Grundlegende Konfigurationsschritte abgeschlossen. Als nächstes bestand die Aufgabe darin, die Funktionalität der enthaltenen Funktionalität zu überprüfen. Beim Starten der virtuellen Maschinen lehnte man es jedoch einfach ab, statt des Begrüßungsfensters wurde ein „blauer Bildschirm“ mit den folgenden Inhalten angezeigt:

    "Bluescreen" beim Versuch, eine der virtuellen Maschinen zu starten

    Auf den anderen virtuellen Maschinen gab es keine offensichtlichen Probleme.
    Dann beschlossen wir, die geschärften Tools zur Überwachung des SSD-Cache zu verwenden und die Testergebnisse zu vergleichen. Zunächst startete eine der virtuellen Maschinen das FIO-Dienstprogramm, das die erforderliche Datenmenge auf der VMDK2-Festplatte generiert. Wie bereits erwähnt, wurden ihm nützliche Daten zugeteilt. Das FIO-Dienstprogramm kann in verschiedenen Modi arbeiten, wir waren an dem "Random Read" -Verfahren interessiert. Deshalb haben sie es im Rand-Read-Modus gestartet.
    Hinweis: Weitere Informationen zum FIO-Dienstprogramm finden Sie unter http://freecode.com/projects/fio .

    Das FIO-Dienstprogramm impliziert die Verwendung einer Jobdatei (oder einfacher einer Konfigurationsdatei), in die die zu testenden Parameter geschrieben werden. Das Dienstprogramm führt Lesevorgänge für zufällig generierte Daten von der VMDK2-Festplatte aus. In der Konfigurationsdatei zum Lesen ist die Größe des Leseblocks festgelegt (in unserem Fall 4 KB). Dann starteten sie die Zufallsleseoperation. Die Testzeit betrug 6 Stunden 46 Minuten.

    Ausführen des FIO-Dienstprogramms

    Ich war an der Frage interessiert: Haben die gelesenen Daten den Cache erreicht und wenn ja, wie hoch ist der Prozentsatz der Treffer?
    Um die Antwort zu finden, haben wir das Diagramm der Leistung der virtuellen Festplatte der Maschine über den vSphere WEB-Client verwendet.

    Leistungsdiagramm im vSphere WEB-Client

    Es war interessant, sich die folgenden Leistungsindikatoren anzusehen: die durchschnittliche Anzahl der Ausgabevorgänge pro Sekunde, die Leseverzögerung und einen Leistungsindikator, der Statistiken zur Cachenutzung liefert. Letzteres war etwas enttäuschend und zeigte einen sehr kleinen Prozentsatz der Daten, die in den Cache gelangen. Bei einer durchschnittlichen Anzahl von Ausgabevorgängen pro Sekunde (18.689.328) betrug der Wert für zwischengespeicherte Daten 4439.389, was nur 23% des Treffers entspricht. Nach diesem statistischen Szenario kann der Cache einfach als inaktiv betrachtet werden.

    Da das Standard-Tool nicht die erwarteten Ergebnisse zeigte, haben wir uns einem anderen Tool zugewandt: dem Befehl esxcli. Es funktioniert auch mit Statistiken für ein bestimmtes VMDK-Laufwerk mit aktivierter vFRC-Option. Wir haben den Befehl mit den folgenden Parametern ausgeführt:
    ~ # esxcli storage vflsh cache stats get

    Ausführen des Befehls esxcli

    In dieser Abbildung sehen Sie die Cachetrefferquote in Prozent. Es zeigt den sogenannten "Treffer" -VFRC-Treffer, dh den Prozentsatz der Daten aus dem Cache, der von der virtuellen Maschine verwendet wird. Das betreffende Team musste mehrmals gefahren werden, da die Ergebnisse beim nächsten Start völlig anders ausfielen. Für einen Wert hat der Cache überhaupt nicht funktioniert, wie im ersten Fall für andere, und ein Prozentsatz der Daten, die in den Cache gelangen, entspricht 96%.

    Sie haben nicht darüber nachgedacht, was empfangen wurde, sondern haben ein anderes Dienstprogramm verwendet: esxtop (mit dem interaktiven Befehl "u" ​​(u: Plattengerät)), um Statistiken zur Cache-Nutzung anzuzeigen. Entsprechend den auf dem Bildschirm angezeigten Informationen haben wir folgendes Ergebnis erhalten: Beim Lesen wurden die Daten direkt aus dem Cache extrahiert. Unter der Annahme, dass die durchschnittliche Anzahl der Ausgabeoperationen pro Sekunde 18.689.328 betrug und das Volumen der Operationen für Daten, die aus dem SSD-Cache gelesen wurden, 18.184,03 betrug, betrug der Prozentsatz der Daten, die in den Cache gelangen, ungefähr 97%.

    Verwenden des Dienstprogramms esxtop

    Die Testergebnisse entsprachen nicht vollständig unseren Erwartungen, und wir als wichtiger Dienstleister, ein VMware-Partner, wandten uns an unsere Kollegen auf der Anbieterseite, um Hilfe zu erhalten.

    VMware verfügt über umfangreiche Erfahrungen im Umgang mit Kunden und Partnern. Bei der Erkennung von Fehlern, Engpässen und anderen Problemen in Bezug auf die Funktionalität des Produkts bemühen sich die Entwickler, die erforderlichen Korrekturen vorzunehmen.

    Als Ergebnis wurde im Herbst 2014 VMware ESXi 5.5 Update 2 veröffentlicht, mit dem das beschriebene Problem auf dem Bluescreen einer virtuellen Maschine unter Windows Server 2008 R2 x64 behoben wird.

    Das veröffentlichte Update hat uns natürlich interessiert. Wir haben beschlossen, den Test auf der zuvor getesteten Test-Site mit aktiviertem vFRC zu installieren. Was ist das ergebnis Alle virtuellen Maschinen wurden als eine gestartet. In diesem Test setzen wir "+" und nähern uns den Indikatoren. Wie zu Beginn des Tests haben wir das FIO-Dienstprogramm im Rand-Read-Modus mit der zuvor verwendeten Konfigurationsdatei gestartet. Danach haben wir den Random-Read-Vorgang gestartet. Die Zähler zeigten größtenteils Arbeitsstatistiken und zeigten nur periodisch falsche Werte an. Das heißt, VMware ESXi 5.5 Update 2 hat das beschriebene Problem der Anzeige von vFRC-Statistiken nicht behoben. Trotz dieses Fehlers hat die vSphere Flash Read Cache-Technologie, wie die spätere Praxis gezeigt hat, diese Funktionalität verwendet.

    Nach den nächsten Tests gingen wir zur Einführung der SSD-Caching-Technologie auf Hosts in einer industriellen Umgebung über. Heute wurden an unseren Standorten mehrere Projekte mit vSphere Flash Read Cache erfolgreich für unsere Kunden implementiert, die besonders hohe Anforderungen an die Leistung stellen. Letztere wiederum freuen sich über die Ergebnisse der Beschleunigung der Arbeit ihrer Systeme und Anwendungen.
    Weitere Informationen zu Caching-Mechanismen finden Sie im Artikel „SSD-Caching in der VMware Cloud“ im ersten Blog zu Corporate IaaS .

    Jetzt auch beliebt: