
Heute betrachten wir die Metriken des Speichersystems in vSphere. Speicherprobleme sind die häufigste Ursache für eine langsame Leistung virtueller Maschinen. Während beim CPU- und RAM-Problembehebungsverfahren in der Regel auf Hypervisorebene gearbeitet wird, kann es bei Festplattenproblemen notwendig sein, auch das Datenübertragungsnetzwerk und das Speicher-Array zu untersuchen.
Ich werde das Thema am Beispiel des Blockzugriffs auf Speicher-Arrays erläutern, obwohl die Zähler bei Datei-Zugriffen ähnlich sind.
Ein wenig Theorie
Wenn es um die Leistung des Speichersystems virtueller Maschinen geht, fällt der Fokus gewöhnlich auf drei miteinander verbundene Parameter:
- Anzahl der Eingangs-/Ausgangsvorgänge pro Sekunde (Input/Output Operations Per Second, IOPS);
- Durchsatz (Throughput);
- Latenz von Eingangs-/Ausgangsvorgängen (Latency).
Anzahl der IOPS ist normalerweise wichtig für zufällige Lasten (random): Zugriff auf Blöcke auf der Festplatte, die an verschiedenen Orten gespeichert sind. Beispiele für solche Lasten sind Datenbanken, Geschäftsapplikationen (ERP, CRM) usw.
Durchsatz wichtig für sequenzielle Lasten: Zugang zu aufeinanderfolgenden Blöcken. Beispielsweise können solch eine Last von Dateiservern (aber nicht immer) und Überwachungssystemen erzeugt werden.
Die Bandbreite steht in Bezug zur Anzahl der Eingabe-/Ausgabeoperationen wie folgt:
Durchsatz = IOPS * Blockgröße, wobei Blockgröße die Größe des Blocks ist.
Die Blockgröße ist eine ziemlich wichtige Kennzahl. Moderne Versionen von ESXi unterstützen Blöcke mit einer Größe von bis zu 32.767 KB. Wenn der Block noch größer ist, wird er in mehrere Teile zerlegt. Nicht alle Speicherlösungen können mit solch großen Blöcken effizient arbeiten, weshalb es in den erweiterten Einstellungen von ESXi eine Option für DiskMaxIOSize gibt. Mit dieser kann die maximale Blockgröße, die vom Hypervisor verarbeitet wird, reduziert werden (mehr dazu ). Ich empfehle, vor einer Änderung dieses Parameters den Hersteller der Speicherlösung zu konsultieren oder zumindest die Änderungen in einer Testumgebung auszuprobieren.
Eine große Blockgröße kann sich negativ auf die Leistung des Speichersystems auswirken. Selbst wenn die Anzahl der IOPS und der Datenübertragungsrate relativ gering ist, können bei einer großen Blockgröße hohe Latenzen auftreten. Daher sollten Sie auf diesen Parameter achten.
Latenz ist der interessanteste Leistungsparameter. Die Latenz von Ein-/Ausgabeoperationen für eine virtuelle Maschine setzt sich zusammen aus:
- der Latenz innerhalb des Hypervisors (KAVG, Durchschnittliche Kernel-MilliSekunden/Lesen);
- der Latenz, die durch das Netzwerk und das Speichersystem verursacht wird (DAVG, Durchschnittliche Treiber-MilliSekunden/Befehl).
Die Gesamtlatenz, die im Gastsystem sichtbar ist (GAVG, Durchschnittliche Gast-MilliSekunden/Befehl), ist die Summe aus KAVG und DAVG.
GAVG und DAVG werden gemessen, während KAVG berechnet wird: GAVG–DAVG.

Lassen Sie uns näher auf KAVGeingehen. Im Normalbetrieb sollte KAVG gegen null tendieren oder zumindest deutlich kleiner als DAVG sein. Der einzige mir bekannte Fall, in dem KAVG erwartungsgemäß hoch ist, ist eine IOPS-Beschränkung auf der VM-Festplatte. In diesem Fall wird KAVG steigen, wenn der Grenzwert überschritten wird.
Der bedeutendste Bestandteil von KAVG ist QAVG – die Zeit in der Warteschlange für die Verarbeitung innerhalb des Hypervisors. Die anderen Bestandteile von KAVG sind vernachlässigbar klein.
Die Warteschlange im Festplattentreiber und die Warteschlangen zu LUNs haben eine feste Größe. Für stark beanspruchte Umgebungen kann es nützlich sein, diese Größe zu erhöhen. Es wird beschrieben, wie die Warteschlangen im Treiber des Adapters erhöht werden können (gleichzeitig wird auch die Warteschlange zu LUNs erhöht). Diese Einstellung funktioniert, wenn nur eine VM mit der LUN arbeitet, was selten der Fall ist. Wenn mehrere VMs auf der LUN sind, muss auch der Parameter Disk.SchedNumReqOutstanding (Anleitung ). Durch die Erhöhung der Warteschlange reduzieren Sie entsprechend QAVG und KAVG.
Aber nochmals, lesen Sie zuerst die Dokumentation des HBA-Anbieters und testen Sie die Änderungen in einer Laborumgebung.
Die Größe der Warteschlange zu einer LUN kann durch die Aktivierung des SIOC (Storage I/O Control) beeinflusst werden. Dieser sorgt für einen gleichmäßigen Zugriff auf die LUN von allen Servern im Cluster, indem die Warteschlange zur LUN auf den Servern dynamisch angepasst wird. Das bedeutet, wenn auf einem der Hosts eine VM läuft, die unverhältnismäßig viel Leistung benötigt (noisy neighbor VM), reduziert SIOC die Länge der Warteschlange zur LUN auf diesem Host (DQLEN). Mehr dazu .
Jetzt sind wir mit KAVG durch, nun ein wenig über DAVG. Es ist ganz einfach: DAVG ist die Verzögerung, die durch die externe Umgebung (Datenübertragungsnetzwerk und Speicher) verursacht wird. In jedem modernen und auch nicht so modernen Speicher gibt es Leistungszähler. Um Probleme mit DAVG zu analysieren, lohnt es sich, einen Blick darauf zu werfen. Wenn alles von Seiten des ESXi und des Speichers in Ordnung ist, überprüfen Sie das Datenübertragungsnetzwerk.
Um Leistungseinbußen zu vermeiden, wählen Sie die richtige Path Selection Policy (PSP) für Ihren Speicher. Fast alle modernen Speicher unterstützen die PSP Round-Robin (mit ALUA, Asymmetric Logical Unit Access, oder ohne). Diese Richtlinie ermöglicht die Nutzung aller verfügbaren Pfade zum Speicher. Bei ALUA werden nur die Pfade zum Controller verwendet, der das LUN besitzt. Für nicht alle Speicher auf ESXi gibt es Standardrichtlinien, die die Round-Robin-Politik festlegen. Wenn es keine entsprechenden Regeln für Ihren Speicher gibt, verwenden Sie das Plugin des Speicheranbieters, das die entsprechende Regel auf allen Hosts im Cluster erstellt, oder erstellen Sie die Regel selbst. Weitere Details .
Einige Hersteller von Speichersystemen empfehlen auch, die Anzahl der IOPS von dem Standardwert 1000 auf 1 zu ändern. In unserer Erfahrung hat dies dazu geführt, dass wir eine bessere Leistung aus dem Speichersystem herausholen konnten und die Zeit für Failover im Falle eines Ausfalls oder bei Updates der Controller erheblich verkürzt wurde. Überprüfen Sie die Empfehlungen des Anbieters, und wenn es keine Einwände gibt, versuchen Sie, diesen Parameter zu ändern. Weitere Details .
Hauptleistungsindikatoren des Speichersystems der virtuellen Maschine
Die Leistungsindikatoren des Speichersystems in vCenter sind in den Abschnitten Datastore, Disk, Virtual Disk zusammengefasst:

Im Abschnitt Datastore finden Sie Metriken zu den vSphere-Speichersystemen (Datastores), auf denen die VM-Daten gespeichert sind. Hier finden Sie die Standardindikatoren für:
- IOPS (Durchschnittliche Lese-/Schreibanforderungen pro Sekunde),
- Durchsatz (Lese-/Schreibrate),
- Latenzen (Lese-/Schreib-/höchste Latenz).
Die Bezeichnungen der Zähler sind im Allgemeinen klar. Ich möchte nochmals darauf hinweisen, dass hier die Statistik nicht für eine bestimmte VM (oder einen bestimmten VM-Disk) gilt, sondern insgesamt für den gesamten Datastore. Meiner Meinung nach ist es einfacher, diese Statistik in ESXTOP zu betrachten, zumindest weil der minimale Messzeitraum dort 2 Sekunden beträgt.
Im Abschnitt Disk Hier befinden sich Metriken zu Blockgeräten, die von VMs verwendet werden. Es gibt Zähler für IOPS, wie Summation (Anzahl der Ein-/Ausgabeoperationen über den Messzeitraum) und mehrere Zähler, die sich auf den Blockzugriff beziehen (Commands aborted, Bus resets). Diese Informationen sind, meiner Meinung nach, ebenfalls einfacher in ESXTOP einzusehen.
Abschnitt Virtueller Disk ist der nützlichste Bereich, wenn es darum geht, Leistungsprobleme im Speichersystem der VM zu identifizieren. Hier kann die Leistung für jede virtuelle Festplatte eingesehen werden. Diese Informationen sind entscheidend, um festzustellen, ob ein Problem bei einer bestimmten virtuellen Maschine vorliegt. Neben den Standardzählern für Ein-/Ausgabeoperationen, Lese-/Schreibvolumen und Latenzen gibt es in diesem Abschnitt nützliche Zähler, die die Blockgröße anzeigen: Größe der Lese-/Schreibanforderungen.
Im Bild unten sehen Sie das Diagramm der VM-Disk-Leistung, in dem die Anzahl der IOPS, Latenzen und die Blockgröße angezeigt werden.

Die Leistungskennzahlen können auch für den gesamten Datenspeicher angezeigt werden, wenn SIOC aktiviert ist. Hier sind grundlegende Informationen zu der durchschnittlichen Latenz und den IOPS dargestellt. Diese Informationen sind standardmäßig nur in Echtzeit verfügbar.

ESXTOP
ESXTOP bietet mehrere Bildschirme, auf denen Informationen über das gesamte Host-Datensystem, einzelne virtuelle Maschinen und deren Festplatten angezeigt werden.
Beginnen wir mit den Informationen zu den virtuellen Maschinen. Der Bildschirm 'Disk VM' wird mit der Taste 'v' aufgerufen:

NVDISK – dies ist die Anzahl der VM-Disk. Um Informationen zu jeder Disk zu sehen, drücken Sie 'e' und geben Sie die GID der interessierenden VM ein.
Die Werte der anderen Parameter auf diesem Bildschirm sind aus ihren Bezeichnungen ersichtlich.
Ein weiterer nützlicher Bildschirm zur Fehlersuche ist der Disk-Adapter. Er wird mit der Taste 'd' aufgerufen (die Felder A, B, C, D, E, G sind im Bild unten ausgewählt):

NPTH – die Anzahl der Pfade zu den LUNs, die von diesem Adapter sichtbar sind. Um Informationen zu jedem Pfad am Adapter zu erhalten, drücken Sie 'e' und geben Sie den Namen des Adapters ein.

AQLEN – die maximale Warteschlangenlänge am Adapter.
Auf diesem Bildschirm sind auch die Latenzzähler aufgeführt, die ich zuvor erwähnt habe: KAVG/cmd, GAVG/cmd, DAVG/cmd, QAVG/cmd.
Auf dem Bildschirm für das Disk-Gerät, das mit der Taste "u" aufgerufen wird, finden Sie Informationen zu einzelnen Blockgeräten – LUNs (in der Abbildung unten sind die Felder A, B, F, G, I ausgewählt). Hier können Sie den Zustand der Warteschlange für die LUNs einsehen.

DQLEN – die Größe der Warteschlange für das Blockgerät.
ACTV – die Anzahl der I/O-Befehle im ESXi-Kernel.
QUED – die Anzahl der I/O-Befehle in der Warteschlange.
%USD – ACTV / DQLEN × 100%.
LOAD – (ACTV + QUED) / DQLEN.
Wenn %USD hoch ist, sollten Sie in Erwägung ziehen, die Warteschlange zu vergrößern. Je mehr Befehle in der Warteschlange sind, desto höher sind QAVG und folglich KAVG.
Auf dem Bildschirm für das Disk-Gerät können Sie auch überprüfen, ob VAAI (vStorage API for Array Integration) auf dem SAN aktiv ist. Dazu müssen Sie die Felder A und O auswählen.
Der VAAI-Mechanismus ermöglicht es, einen Teil der Arbeit vom Hypervisor direkt auf das SAN zu verlagern, z.B. Zeroing, Blockkopien oder Locking.
![]()
Wie in der obigen Abbildung zu sehen ist, funktioniert VAAI auf diesem SAN: Die Zero- und ATS-Primitiven werden aktiv genutzt.
Tipps zur Optimierung des Disk-Subsystems auf ESXi
- Achten Sie auf die Blockgröße.
- Stellen Sie die optimale Warteschlangenlänge auf dem HBA ein.
- Vergessen Sie nicht, SIOC auf den Datastores zu aktivieren.
- Wählen Sie den PSP gemäß den Empfehlungen des Speicherherstellers.
- Stellen Sie sicher, dass VAAI aktiv ist.
Nützliche Artikel zu diesem Thema:
Quelle: habr.com
