Wie VMware EVC-Modus funktioniert: Komplettübersicht

Wenn Sie mit der Funktion vMotion vertraut sind, erinnern Sie sich wahrscheinlich daran, dass die empfohlene Praxis darin besteht, auf allen ESXi-Servern für die Live-Migration von VMs dieselben Prozessoren zu verwenden. Wenn Sie Server mit unterschiedlichen Prozessormodellen im Cluster verwenden möchten, ist es besser, Prozessoren derselben Generation bereitzustellen. Darüber hinaus besteht die strenge Anforderung darin, dass die Prozessoren vom gleichen Hersteller hergestellt werden müssen, wie zum Beispiel Intel oder AMD. Andernfalls treten wahrscheinlich Fehler bei der Verwendung von vMotion auf.

VMware hat ihre vSphere-Software hinsichtlich der Situationen entwickelt, die in der Produktionsumgebung auftreten können, einschließlich der Erweiterung eines Clusters durch das Hinzufügen neuer Server mit unterschiedlichen Prozessoren. Dies ist eine häufige Situation – stellen Sie sich vor, Sie haben einen Cluster mit 5 ESXi-Knoten, die Sie vor 3 Jahren gekauft haben, und Sie müssen zwei weitere Knoten hinzufügen, um mehr VMs für die Erfüllung Ihrer Geschäftsanforderungen auszuführen. Die Prozessoren, die Sie vor 3 Jahren gekauft haben, werden derzeit nicht mehr hergestellt und werden nicht mehr auf dem Markt verkauft; Sie können nur die Prozessoren der neuesten Familie kaufen. Es besteht kein Grund zur Sorge – Sie können High Availability-Cluster in vSphere verwenden, Knoten mit unterschiedlichen Prozessoren hinzufügen und vMotion für die Live-Migration virtueller Maschinen zwischen Hosts verwenden, die unterschiedliche Prozessoren haben. Dies ist auf die Funktion der verbesserten vMotion-Fähigkeit (EVC) zurückzuführen, die für Cluster in VMware vSphere aktiviert werden kann.

Arbeitsprinzip des VMware EVC-Modus

Jede neue Prozessorgeneration enthält neue Befehlssätze zusätzlich zu den Befehlssätzen, die für die vorherige Prozessorgeneration verfügbar sind. Neue Funktionen verbessern typischerweise die Leistung oder Sicherheit von laufenden Anwendungen. Zum Beispiel haben Prozessoren der SkyLake-Generation im Vergleich zu den Prozessoren der Haswell-Generation einen neuen Befehlssatz (SGX). Lassen Sie uns die Befehlssätze dieser beiden Prozessorgenerationen betrachten und ihre Details erkunden.

Befehlssätze für Haswell (2013):

x86-64, MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, VT-x, VT-d. TSX-Befehle sind aufgrund eines Fehlers bei Haswell-Prozessoren durch Mikrocode deaktiviert, außer bei Haswell-EX.

Befehlssätze für SkyLake (2017):

x86-64, MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, TSX, SGX, VT-x, VT-d.

Dies bedeutet, dass bei Auswahl des Haswell-Kompatibilitätsniveaus in den EVC-Einstellungen der SGX-Befehlssatz auf den Servern mit Skylake-Prozessoren deaktiviert (maskiert, genauer gesagt) werden muss und somit alle Prozessoren mit den gleichen Befehlssätzen arbeiten. Somit erhalten Sie eine homogene Umgebung, die für die VM-Migration durch Verwendung von vMotion übernommen wurde. Die einheitliche vMotion-Kompatibilität wird durch die Durchsetzung der gleichen CPUID-Befehlsbasis für alle VMs auf ESXi-Hosts ohne einheitliche Prozessoren bereitgestellt. CPUID kann als API für die CPU betrachtet werden.

Einerseits gehen die Vorteile des SGX-Befehlssatzes verloren, wenn der Haswell EVC-Modus aktiviert ist, andererseits wird die Leistung Ihres vorhandenen Clusters nicht reduziert, wenn Sie Hosts mit neueren Prozessoren zum Cluster hinzufügen. Wenn Sie ESXi-Hosts mit älteren Prozessoren zum bestehenden Cluster hinzufügen, können Sie in bestimmten Fällen eine Leistungsreduzierung feststellen.

Hinweis: SGX (Software Guard Extensions) ermöglicht es Ihnen, geschützte Code- und Datenschnipsel (auch als Enklaven bezeichnet) zu organisieren, um einen hohen Grad an Datensicherheit für Arbeitsanwendungen gegen Hackerangriffe zu gewährleisten. Entwickler, die SGX-Befehle für ihre Anwendungen verwenden, können die Anwendungen vor unberechtigtem Zugriff oder Änderung schützen, selbst wenn die Angreiferanwendung höhere Privilegien hat.

Hinweis: TSX (Transactional Synchronization Extensions) gewährleistet die Verschiebung der meisten laufenden Aufgaben zur Verteilung von Ressourcen zwischen Prozessorkernen auf die Hardwareebene (die CPU selbst). Ohne Unterstützung von TSX-Befehlen durch einen Prozessor erfolgt diese Verteilung auf Softwareebene durch ein Betriebssystem und Anwendungen. Wenn der TSX-Befehlssatz für Ihren Haswell-Prozessor über Mikrocode deaktiviert ist, müssen Sie möglicherweise die ältere (Ivy Bridge) Stufe für den EVC-Modus einstellen.

Im Allgemeinen müssen laufende VMs heruntergefahren und neu gestartet werden, um die geänderten EVC-Modus-Einstellungen anzuwenden. Wenn Sie vCenter 4.1 oder neuer verwenden, dürfen die VMs, die auf dem ESXi-Host mit dem ältesten Prozessor ausgeführt werden, möglicherweise nicht ausgeschaltet werden (Sie können sie im laufenden Zustand belassen). In diesem Fall muss der EVC-Modus dem Generation des ältesten Prozessors entsprechen. VMs, die auf ESXi-Hosts ausgeführt werden, die Prozessoren mit neueren CPU-Funktionen haben, müssen ausgeschaltet werden, bevor der EVC-Modus im gesamten Cluster aktiviert wird. Wenn der ESXi-Host aus einem Cluster ausgeschlossen ist, bleibt er weiterhin mit deaktiviertem EVC-Modus aktiv.

VMware vSphere-Version / CPU-Kompatibilität für EVC

Der erforderliche EVC-Modus hängt von den Prozessormodellen und der Version von vCenter Server ab. Der EVC-Modus auf der neuesten Version von vCenter Server unterstützt die neuesten Prozessoren. Wenn Sie Server mit Prozessoren der neuesten Generationen haben, erwägen Sie die Verwendung von vCenter der neuesten Versionen. In der folgenden Tabelle sehen Sie, welche Kombinationen von Intel-Prozessorgenerationen und vCenter-Versionen unterstützt werden, um die EVC-Cluster-Baseline für Ihre Umgebung zu bestimmen.

Der geeignetste EVC-Modus wird durch das Modell des ältesten Prozessors des ESXi-Servers innerhalb des Clusters bestimmt. Es ist technisch möglich, den älteren (niedrigeren) EVC-Modus als die Generation des ältesten Prozessors auszuwählen, aber im Allgemeinen gibt es keinen Grund, solche Einstellungen vorzunehmen. Ältere Versionen von ESXi und vSphere unterstützen neue Prozessoren, aber das maximale EVC-Baseline bleibt auf dem Niveau der älteren Prozessoren erhalten, die funktionell waren, als diese vSphere-Version veröffentlicht wurde und zu diesem Zeitpunkt als die neuesten verfügbaren Prozessoren betrachtet wurden.

Wenn Sie den EVC-Modus ändern, sollten Sie laufende VMs ausschalten und wieder einschalten, um die Einstellungen auf diese VMs anzuwenden; das Neustarten der VM reicht nicht aus.

VMware Kompatibilitätsleitfaden

Sie können die Kompatibilität Ihrer Prozessoren und den höchstmöglichen EVC-Modus für Ihren vCenter-Server auf der VMware-Website überprüfen. Um die Kompatibilität zu überprüfen, öffnen Sie die Seite des VMware Compatibility Guide, wählen Sie CPUserien im Dropdown-Menü (d. h. wonach suchen Sie), in der Liste Product Release Version wählen Sie Ihre ESXi-Version, in der Liste CPUserien halten Sie die Strg-Taste gedrückt und wählen Sie die Prozessoren aus, die auf Ihren ESXi-Hosts installiert sind (klicken Sie auf die linke Maustaste). Sobald Sie die erforderlichen Parameter ausgewählt haben, klicken Sie auf die Schaltfläche CPU/EVC-Matrix, um die Tabelle der verfügbaren EVC-Modi für Ihre ESXi-Server anzuzeigen. Im untenstehenden Beispiel wurden ESXi 6.5 (verwaltet von vCenter 6.5), Intel Xeon E3-1500-v5, Xeon E5-4600-v3 und Xeon Platinum 8100-Prozessoren ausgewählt. Die höchste EVC-Modusunterstützung für alle ausgewählten Prozessoren ist Intel Haswell-Generation.

Anforderungen

Für vMotion, um ordnungsgemäß zu funktionieren, nachdem der EVC-Modus aktiviert wurde, müssen die folgenden Anforderungen erfüllt sein:

  • Die Prozessoren aller ESXi-Hosts müssen ausschließlich Intel oder ausschließlich AMD sein.
  • Prozessorvirtualisierungsmerkmale wie Intel VT-x oder AMD-V müssen im UEFI/BIOS der ESXi-Hosts aktiviert sein.
  • ESXi-Hosts müssen von demselben vCenter Server verwaltet werden.
  • ESXi-Hosts müssen so konfiguriert sein, dass sie vMotion verwenden.Aktivieren und Konfigurieren von EVC

So aktivieren und konfigurieren Sie EVC

Nachdem Sie sich mit der Theorie vertraut gemacht haben, lassen Sie uns die Konfiguration des EVC-Modus in der Praxis überprüfen. Möglicherweise müssen Sie Ihre VM auf dem ESXi-Host ausschalten, dessen EVC-Stufe herabgestuft werden muss. Stellen Sie sicher, dass im UEFI/BIOS keine Prozessorfunktionen deaktiviert sind, um mögliche Probleme zu vermeiden.

Öffnen Sie den VMware vSphere Web Client in Ihrem Webbrowser, indem Sie die IP-Adresse Ihres vCenter-Servers in die Adressleiste des Browsers eingeben. Gehen Sie zu vCenter > Hosts und Clustern und wählen Sie jeden ESXi-Host aus, um die CPU-Konfiguration zu überprüfen. Im aktuellen Beispiel betrachten wir zwei Hosts, die ESXi 5.5 ausführen und zum Cluster hinzugefügt und von vCenter Server 5.5 verwaltet werden. Wie Sie auf dem untenstehenden Screenshot sehen können, ist das Prozessormodell des ersten ESXi-Hosts Intel Xeon E3110 und der Prozessor, der auf dem zweiten ESXi-Host installiert ist, Intel Xeon X3430.

Wenn ESXi-Hosts bereits zum Cluster hinzugefügt wurden, wählen Sie Ihren Cluster aus (temp-cluster in unserem Beispiel), klicken Sie auf die Registerkarte Verwalten, öffnen Sie dann die Registerkarte Einstellungen, wählen Sie Konfiguration > VMware EVC und klicken Sie auf die Schaltfläche Bearbeiten.

Bevor Sie den EVC-Modus in vCenter auswählen, öffnen Sie einen neuen Tab in Ihrem Webbrowser und öffnen Sie den VMware Compatibility Guide wie oben in diesem Blogbeitrag gezeigt. Im aktuellen Beispiel sollten wir ESXi 5.5, Intel Xeon 31xx Series und Intel Xeon 34xx Series auswählen. Nachdem Sie auf die Schaltfläche CPU/EVC Matrix geklickt haben, können Sie auf dem Screenshot sehen, dass Intel Penryn Generation in den EVC-Modus-Einstellungen ausgewählt werden sollte.

Gehen Sie zurück zum Tab Ihres Webbrowsers mit dem vSphere Web Client und öffnen Sie die EVC-Modus-Einstellungen für den Cluster. Klicken Sie auf EVC für Intel-Hosts aktivieren. Im Dropdown-Menü des VMware EVC-Modus sollten wir Intel Penryn Generation auswählen. Am unteren Rand des Fensters sollten Sie im Abschnitt Kompatibilität die Meldung Validierung erfolgreich sehen. Jetzt können Sie auf OK klicken, um die EVC-Modus-Einstellungen zu speichern.

Danach wird im Abschnitt VMware EVC die Information angezeigt, dass VMware EVC aktiviert ist. Klicken Sie auf Aktuelle CPUID-Details, um den Abschnitt mit Details zu Registern und Maskenwerten zu erweitern.

Der EVC-Modus kann auch während der Erstellung eines neuen Clusters aktiviert werden; VMware empfiehlt diese Möglichkeit als bewährte Praxis. Durch das Aktivieren des EVC-Modus bei der Erstellung eines neuen Clusters wird verhindert, dass Probleme im Zusammenhang mit dem Herunterfahren und Migrieren von eingeschalteten VMs im Cluster auftreten (wie Sie sich erinnern, muss eine VM normalerweise heruntergefahren und eingeschaltet werden, um die neuen EVC-Einstellungen anzuwenden).

CPUID-Maskierung

Neben dem globalen EVC-Modus, der auf alle VMs und ESXi-Hosts im gesamten Cluster angewendet wird, ermöglicht es vCenter Server, CPUID-Flags manuell für eine benutzerdefinierte VM zu konfigurieren. vCenter vergleicht die für die VM festgelegten CPUID-Parameter mit den verfügbaren CPUID-Parametern auf dem Ziel-ESXi-Host. Wenn diese Parameter übereinstimmen, ist eine VM-Migration mit vMotion möglich. Die CPUID-Maskierungsfunktion ist älter als die EVC-Modusfunktion.

Um CPUID-Masken für eine VM zu konfigurieren, führen Sie die folgenden Aktionen durch:

Wählen Sie die erforderliche VM aus, klicken Sie mit der rechten Maustaste auf die VM und wählen Sie „Einstellungen bearbeiten“. In dem geöffneten „Einstellungen bearbeiten“-Fenster öffnen Sie „Virtuelle Hardware > CPU“, wählen „CPUID-Maske“ und klicken auf „Erweitert“.

In dem „CPU-Identifikationsmaske“-Fenster wählen Sie den erforderlichen Registerstring aus und klicken auf den Wert, um die Maske auf Bit-Ebene zu bearbeiten. Klicken Sie auf die Schaltfläche „Legende“, um die Bedeutungen jedes Zeichens anzuzeigen, das für das Setzen der Maske verwendet wird.

Vorsicht! Bitte bearbeiten Sie die Masken nicht, bevor Sie sich mit der VMware Knowledge Base oder den VMware-Supportanweisungen vertraut gemacht haben. Das manuelle Bearbeiten der CPU-Kompatibilitätsmasken kann zu einer nicht unterstützten VM-Konfiguration führen. Beispielsweise können Windows-VMs mit einem BSOD-Fehler fehlschlagen.

Überprüfen der Konfiguration des EVC-Modus in PowerCLI

Sie können die Konfiguration des EVC-Modus für den gesamten Cluster und für benutzerdefinierte VMs in VMware PowerCLI überprüfen, indem Sie den Befehl verwenden:

Get-VM | Select Name,HardwareVersion,

@{Name=’VM_EVC_Mode‘;Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},

@{Name=’Cluster_Name‘;Expression={$_.VMHost.Parent}},

@{Name=’Cluster_EVC_Mode‘;Expression={$_.VMHost.Parent.EVCMode}} | ft

Sie können auch das maximal unterstützte EVC-Level für alle Hosts Ihres Clusters überprüfen, nachdem Sie den Befehl ausgeführt haben:

Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode

Pro-VM EVC-Modus

Der oben genannte EVC-Modus ist eine Clusteroption. VMware vSphere 6.7 bietet die Möglichkeit, einen pro-VM EVC-Modus festzulegen, der nützlich sein kann für die Migration von VMs zwischen verschiedenen Clustern oder vCenter-Servern und Ihnen mehr Granularität bietet. Ein pro-VM EVC-Modus wird als Attribut der virtuellen Maschineneinstellungen festgelegt und bietet mehr Flexibilität für das Verwalten von VMs, die mit vMotion migrieren müssen. Die VM-Hardwarekompatibilität muss Version 14 oder höher sein. Die Konfiguration des pro-VM EVC-Modus wird in der VMX-Konfigurationsdatei der VM als Zeilen gespeichert, die den String featMask.vm.cpuid enthalten. Wenn eine VM mit konfiguriertem pro-VM EVC-Modus migriert wird, wird ihre EVC-Konfiguration, die in der VMX-Datei gespeichert ist, mit der VM migriert. Die Einstellungen des pro-VM EVC-Modus können geändert werden, wenn eine VM ausgeschaltet ist (schalten Sie die VM aus und wieder ein, um die geänderten Einstellungen des pro-VM EVC-Modus anzuwenden).

Wenn Sie einen pro-VM EVC-Modus für eine VM aktivieren, die sich im Cluster befindet, in dem bereits der globale EVC-Modus konfiguriert ist, kann der pro-VM EVC-Modus gleich oder niedriger sein als der im gesamten Cluster festgelegte EVC-Modus. Somit ist es möglich, sowohl den globalen als auch den pro-VM EVC-Modus gleichzeitig zu konfigurieren. Nach dem Klonen einer VM werden die pro-VM EVC-Einstellungen mit der VM geklont.

Um den pro-VM EVC-Modus zu konfigurieren, öffnen Sie den VMware vSphere HTML5-Client, gehen Sie zu Hosts und Clustern, wählen Sie dann die erforderliche VM aus. Öffnen Sie den Konfigurieren-Tab, wählen Sie Mehr > VMware EVC und klicken Sie auf Bearbeiten.

So aktivieren Sie den EVC-Modus im Cluster ohne Ausfallzeiten

In einigen Fällen können Sie den EVC-Modus im gesamten Cluster ohne Ausfallzeiten aktivieren (normalerweise müssen VMs heruntergefahren und neu gestartet werden, um die EVC-Moduseinstellungen des Clusters anzuwenden). Dies ist möglich, wenn die folgenden Anforderungen erfüllt sind:

  • Laufende VMs befinden sich auf dem ESXi-Host mit dem ältesten Prozessor
  • Der EVC-Modus im Cluster ist so konfiguriert, dass die CPU-Befehlssätze der Generation des ältesten Prozessors entsprechen

Aktivieren des EVC-Modus für die vCenter-VM

Sie könnten auf die folgende Situation stoßen, die in VMware vSphere-Umgebungen üblich ist:

Der vCenter Server läuft als VM auf einem ESXi-Host, der zu einem Cluster hinzugefügt werden muss, für den der EVC-Modus aktiviert ist.

Das Problem ist, dass ein ESXi-Host mit laufenden VMs (einschließlich der VM, die vCenter ausführt) nach Aktivierung von EVC nicht dem Cluster hinzugefügt werden kann, bis alle VMs heruntergefahren sind. Andererseits wird die VM, die vCenter ausführt, benötigt, um den Cluster zu verwalten, und wir können die vCenter-VM nicht herunterfahren, weil sie gerade in Gebrauch ist. Dieses Problem ist besonders akut, wenn die vCenter-VM auf dem ESXi-Host mit einem neueren Prozessor läuft.

Hinweis: Es wird empfohlen, in diesem Fall einen Standard-vSwitch (keinen verteilten vSwitch) zu verwenden, um die VM, die vCenter ausführt, mit dem Netzwerk zu verbinden.

A possible solution. Consider the algorithm that can help you to resolve the issue for VMware vSphere 5.5:

  1. Verschieben Sie einen anderen ESXi-Server (der keine vCenter-VM ausführt) in den Cluster, wenn noch keine ESXi-Server im Cluster vorhanden sind. VMs auf dem ESXi-Server, der in den Cluster verschoben wird, müssen ausgeschaltet sein.
  2. Fahren Sie die VM, die vCenter Server ausführt, herunter. Stellen Sie eine Verbindung zum ESXi-Host her, auf dem die vCenter-VM liegt, indem Sie den VMware Host Client verwenden, um die VM zu deregistrieren, oder stellen Sie eine Verbindung mit einem SSH-Client her, um Dateien zu kopieren. Im VMware Host Client mit der rechten Maustaste auf die vCenter-VM klicken und Deregistrieren auswählen. Kopieren Sie manuell alle Dateien der vCenter-VM auf das mit dem ESXi-Server verbundene Datenspeicher, den Sie bereits in Schritt 1 in den Cluster verschoben haben. Wenn beide ESXi-Hosts eine NFS- oder iSCSI-gemeinsame Speicherung verwenden, müssen Sie die VM-Dateien nicht an einen anderen Speicherort kopieren.

Hinweis: Möglicherweise müssen Sie die MAC-Adresse für den virtuellen Netzwerkadapter der VM, die vCenter Server ausführt, manuell festlegen, bevor Sie die VM von einem ESXi-Host auf einen anderen verschieben.

  1. Registrieren Sie die vCenter-VM auf dem ESXi-Host, der in den Cluster verschoben wurde (verbinden Sie sich mit dem ESXi-Host mit dem VMware Host Client, öffnen Sie das Datastore, suchen Sie die Dateien der vCenter-VM, wählen Sie die VMX-Datei, klicken Sie mit der rechten Maustaste auf die Datei und klicken Sie auf VM registrieren). Führen Sie die vCenter-VM auf diesem ESXi-Host im Cluster aus. Melden Sie sich bei vCenter mit dem VMware vSphere Client an, um sicherzustellen, dass Sie Ihre vSphere-Umgebung mit vCenter verwalten können. Möglicherweise müssen Sie die Zulassungssteuerung vorübergehend deaktivieren.
  2. Verschieben Sie den Quell-ESXi-Host, auf dem die vCenter-VM ursprünglich gearbeitet hat, in den Cluster. Fahren Sie andere VMs auf diesem ESXi-Host gegebenenfalls herunter, bevor Sie den Host verschieben.

Abschluss

Die erweiterte vMotion-Funktion (EVC) ist eine nützliche Funktion von VMware vSphere, die Ihren Cluster skalierbar hält und es Ihnen ermöglicht, Knoten mit Prozessoren unterschiedlicher Generationen zum Cluster hinzuzufügen, um eine VM-Live-Migration zwischen ESXi-Hosts mit vMotion durchzuführen. Der EVC-Modus maskiert die Funktionen der Prozessoren neuerer Generationen, um eine einheitliche Basis zu schaffen, die den Funktionen der ältesten Prozessorgeneration entspricht, die von den ESXi-Hosts im Cluster verwendet wird. Dadurch entsteht eine homogene Umgebung, in der alle Prozessoren die gleichen Befehlssätze verwenden und laufende VMs mit vMotion migrieren können. Eine große Anzahl von VMware-Kunden, die Cluster verwenden, nutzen den EVC-Modus. Es wird empfohlen, den EVC-Modus in der Anfangsphase der Clustererstellung zu aktivieren, um mögliche Probleme im Zusammenhang mit dem Hinzufügen von ESXi-Hosts und der Migration laufender VMs, einschließlich der VM, die vCenter Server ausführt, zu vermeiden.

Unabhängig davon, ob Sie einen Cluster verwenden oder nicht, vergessen Sie nicht, VMware-VMs zu sichern. NAKIVO Backup & Replication ist eine schnelle, zuverlässige und erschwingliche Datensicherungslösung, die Ihre VMware-VMs schützen kann, selbst wenn sich diese VMs zwischen ESXi-Hosts in Clustern bewegen.

Source:
https://www.nakivo.com/blog/how-vmware-evc-mode-works-overview/