Microsoft

Host Resource Protection: VM-Ressourcenverbrauch in Hyper-V 2016 begrenzen

Hyper-V 2016 enthält die neue Funktion Host Resource Protection. Damit kann die Ressourcennutzung virtueller Maschinen pro Host eingeschränkt werden.

Einer der größten Vorteile der Server-Virtualisierung liegt im Einsparpotenzial bei den Hardwarekosten. Statt jedem einzelnen Workload einen gesonderten physischen Server zu spendieren, werden die physischen Hardwareressourcen eines Servers auf mehrere virtuelle Workloads aufgeteilt.

Dieses Teilen von Ressourcen funktioniert großartig, solange solche Ressourcen gleichförmig in Anspruch genommen werden. Ein übermäßiger Ressourcenverbrauch hingegen kann sich nachteilig auf gleich mehrere Workloads auf einmal auswirken. Mit einem neuen Feature in Windows Server 2016 Hyper-V gehört dieses Problem jetzt der Vergangenheit an.

Ressourcensteuerung auf Hypervisor-Ebene

Theoretisch sollte eine einzelne virtuelle Maschine (VM) niemals so exzessiv Hardwareressourcen in Anspruch nehmen können, dass sich der Ressourcenverbrauch dieser VM störend auf andere VMs auswirkt, die auf demselben Host ausgeführt werden. Schließlich gibt es ein ganzes Bündel von Hypervisor-Techniken, deren einzige Aufgabe die Vermeidung eines ausufernden Ressourcenverbrauchs ist.

Zum Beispiel kann das Feature Storage QoS (Quality of Service) dafür verwendet werden, die Nutzung des Storage I/O zu begrenzen. Vergleichbar kann auch die dynamische Speichernutzung begrenzt werden, so dass eine VM niemals mehr als einen vordefinierten Grenzwert an Speicher nutzen kann.

Obwohl also die Ressourcensteuerungen auf Hypervisor-Ebene bereits dafür Sorge tragen sollten, dass VMs nicht zu viele Ressourcen in Anspruch nehmen, gibt es in der Realität verschiedene Situationen, in denen eine VM so viele Ressourcen anzapfen kann, dass dies Auswirkungen auf andere VMs hat. Zum Beispiel könnte ein Administrator schlicht vergessen haben, einige der verfügbaren Steuerungsinstrumente auch einzusetzen.

In ähnlicher Weise könnte eine Fehlkonfiguration auf VM-Ebene zu einer ungesunden Konkurrenz um Ressourcen führen. Man stelle sich zum Beispiel vor, dass ein Administrator die Obergrenze der Speichernutzung einer VM auf 4.000 MB setzen möchte, versehentlich aber eine Null mehr eingibt und damit der VM nahezu 40 GB RAM zubilligt.

Natürlich bedeutet die Vernachlässigung oder versehentliche Fehlkonfiguration einer Ressourceneinstellung auf VM-Ebene nicht notwendigerweise, dass sich die VM auch tatsächlich störend bemerkbar machen wird. Aber was würde wohl passieren, wenn diese Maschine eine schlecht ausgeführte Anwendung beherbergen würde, die sämtliche verfügbaren Ressourcen der virtuellen Maschine verbraucht? Wie würde sich so eine VM wohl im Fall eines DoS-Angriffs (Denial of Service) verhalten?

Host Resource Protection in Hyper-V 2016

Während der Entwicklung von Windows Server 2016 Hyper-V kam Microsoft an den Punkt, an dem man bemerkte, dass die exzessive Ressourcennutzung eine Beeinträchtigung anderer virtueller Maschinen des gleichen Hosts darstellen könnte und hierfür bessere Schutzmechanismen benötigt werden. Solche Mechanismen sind in Public-Cloud-Umgebungen wie Microsoft Azure genauso wichtig wie in Private oder Hybrid Clouds, in denen der Cloud-Anbieter kaum eine Kontrolle darüber hat, was innerhalb einer virtuellen Maschine geschieht.

Microsofts Antwort auf dieses Problem ist ein neues Feature namens Host Resource Protection oder Host-Ressourcenschutz. Das Feature Host Resource Protection wurde entworfen, um einer VM die Möglichkeit zu nehmen, die Leistung anderer virtueller Maschinen zu beeinträchtigen.

Gegenwärtig konzentriert sich die Host Resource Protection auf virtuelle CPUs (vCPUs). Entdeckt der Hypervisor, dass eine bestimmte VM exzessive CPU-Tätigkeiten entwickelt, so wird er dieser VM weniger CPU-Ressourcen zuweisen und damit sicherstellen, dass andere VMs auf demselben Host auch weiterhin mit ausreichenden CPU-Kapazitäten versorgt werden können.

Auch wenn der Host-Ressourcenschutz derzeit vor allem ein CPU-zentriertes Feature darstellt, erscheint es naheliegend – insbesondere mit Blick auf Microsofts Tradition der Feature-Erweiterungen von Hyper-V –, dass diese Funktion in Kürze auch auf andere Ressourcentypen ausgeweitet wird.

PowerShell Cmdlets der Host Resource Protection

Die Funktion Host-Ressourcenschutz ist standardmäßig deaktiviert, kann aber über die Windows PowerShell aktiviert werden, indem das Cmdlet Set-VMProcessor eingesetzt wird:

Set-VMProcessor -EnableHostResourceProtection $True

Muss die Host Resource Protection deaktiviert werden, so kann dies über den folgenden Befehl erreicht werden:

Set-VMProcessor -EnableHostResourceProtection $False

Sollte jemandem jetzt das Cmdlet Set-VMProcessor bekannt vorkommen, so liegt das vermutlich daran, dass es dieses Cmdlet auch schon in früheren Versionen von Hyper-V gab. Auch wenn die Unterstützung von Host Resource Protection neu in Windows Server 2016 ist, hat das Cmdlet Set-VMProcessor schon seit längerer Zeit das Herunterregeln von CPU-Ressourcen einzelner VMs ermöglicht. Das Cmdlet kann eingesetzt werden, um einer VM eine spezifische Anzahl virtueller Prozessoren zuzuweisen und kann eine maximale CPU-Nutzungsgrenze ebenso festlegen wie einen CPU-Reservewert oder eine relative Gewichtung.

Weitere Artikel zu Hyper-V 2016:

Discrete Device Assignment in Hyper-V 2016.

Container-Virtualisierung in Hyper-V 2016.

Neue Linux-Funktionen in Windows Server 2016.

Die Neuerungen des Hyper-V Manager 2016.

Kostenloses E-Handbook: Failover-Clustering mit Hyper-V 2016.

Als Beispiel nehmen wir an, dass ein Administrator einer VM namens DemoVM zwei vCPUs zuweisen möchte. Um die Dinge ein wenig interessanter zu machen, nehmen wir weiter an, dass der Administrator die Nutzung auf 50 Prozent kappen möchte, mit einem Reservewert von 10 Prozent und einer relativen Gewichtung von 100. Der Befehl hierfür würde folgendermaßen aussehen:

Set-VMProcessor DemoVM -Count 2 -Reserve 10 -Maximum 50 -RelativeWeight 100

Übrigens können diese Werte auch über den Hyper-V Manager angewendet werden. Der wesentliche Unterschied zwischen dieser Technik und der Aktivierung der Host Resource Protection liegt darin, dass die Host Resource Protection auf den Host angewendet wird, und nicht auf eine virtuelle Maschine, und dass dafür keine granulare CPU-Konfiguration erforderlich ist.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+ und Facebook!

Artikel wurde zuletzt im Dezember 2016 aktualisiert

Erfahren Sie mehr über Containervirtualisierung

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close