Drücke "Enter", um den Text zu überspringen.

Schlagwort: VM

CPU-Kompatibilität in Hyper-V-Cluster mittels PowerShell steuern

Zu einem bestehenden 2-Knoten S2D-Hyper-V-Failover-Cluster aus 2 exakt gleichen Hosts hatte ich vor kurzem einen dritten Knoten hinzugefügt. Es handelte sich hierbei um das selbe HP-Server-Modell. Bei den ersten Live-Migrationen traten jedoch Fehler auf und eine Analyse brachte zu Tage, dass die CPUs am dritten Knoten geringfügig andere sind.

Für dieses Problem gibt es im Allgemeinen das Feature „Processor compatibility“ in Hyper-V (Im Deutschen als „Prozessorkompatibilitätsmodus“ bezeichnet, in der GUI heisst es dann „Zu einem physischen Computer mit einer anderen Prozessorversion migrieren“ bzw. „Migrate to physical computer with a different processor version“). Dieses Feature kann man natürlich problemlos über die GUI ein- und ausschalten:

Allerdings ergeben sich hier schnell 2 Herausforderungen:

  • Das Feature lässt sich nur ändern, während die VM ausgeschaltet ist
  • In einem Cluster laufen schnell mal eine 2-stellige Anzahl VMs

Das kann man natürlich wie so vieles sehr elegant per PowerShell lösen, also habe ich dafür ein passendes Skript geschrieben. Dieses kann entweder zum ein- oder ausschalten des Features benutzt werden und iteriert dabei über einen Cluster und behandelt dabei dann alle VMs im Cluster, bei denen das Feature noch nicht korrekt eingestellt ist, in dem die VMs bei Bedarf zuerst gestoppt, das Feature gesetzt und dann falls vorher laufend die VM wieder startet. Am Ende wird dann noch der Gesamtzustand ausgegeben.

Das Skript findet ihr auf meinem GitHub Repo, siehe hier:

scripts/HyperV/EnableOrDisableCPUCompatibilityOnHyperVCluster.ps1 at master · HaikoHertes/scripts (github.com)

Damit kann man nun also entweder bei unterschiedlicher Hardware die CPU-Kompatibilität für alle VMs erhöhen oder, nachdem man z.B. die CPUs überall auf den selben Stand gebracht hat, das Feature wieder deaktivieren.

Schreibe einen Kommentar...

Neuer Löschen-Dialog für VMs in Azure

Seit einigen Tagen gibt es im Azure Portal einen neuen Dialog für das Löschen von Viruellen Maschinen. Dieser bietet nun endlich die Möglichkeit, beim Löschen der VM auch alle ihre „Anhängsel“ wie Disks, NICs und public IPs mit zu löschen:

Aus meiner Sicht ist das – vor allem für die Nutzer, die sich mit Masse auf das Portal abstützen – eine tolle Sache, um Leichen im System zu vermeiden. Was hier noch fehlt (vor allem für kleine Testumgebungen) wäre das Löschen von Backups, virtuellen Netzen und anderen Resourcen, aber es ist ein Anfang!

Schreibe einen Kommentar...

Azure Automation – Neue Runbooks für VMs

Vor einiger Zeit (muss mehrere Jahre her sein) habe ich ein paar Azure Automation PowerShell Runbooks auf GitHub und hier veröffentlich, um VMs Zeit- und Tag- gesteuert starten und stoppen zu können und um heruntergefahren, nicht-deallokierte VMs zu deallokieren. Diese basierten auf AzureRM PowerShell Cmdlets / Modulen und einer etwas komplizierten Herangehensweise. Ich habe die Runbooks nun massiv überarbeitet, so dass diese erstens das neuere Az Modul verwenden und auch vom Aufbau her wesentlich einfacher sind. U.a. verwenden die Runbooks jetzt lokale Deutsche Zeit und sind robuster bei der Schreibweise der Tags (Groß-/Kleinschreibung).

Ihr findet diese Runbooks wie immer in meinem GitHub Repo, konkret genau hier:

VMs starten und stoppen:

https://github.com/HaikoHertes/scripts/tree/master/Azure/Automation/Snoozing

VMs deallokieren:

https://github.com/HaikoHertes/scripts/tree/master/Azure/Automation/VmDeallocation

Viel Spaß damit!

Weitere Informationen zu Azure Automation und Runbooks:

Azure Quickstart – Create an Azure Automation account | Microsoft Docs
Create an Azure Automation Run As account | Microsoft Docs
Create a standalone Azure Automation account | Microsoft Docs
Create a PowerShell Workflow runbook in Azure Automation | Microsoft Docs

Schreibe einen Kommentar...

Azure Migrate YouTube Serie

Ich wollte euch an dieser Stelle gerne auf meine Mini-Serie zu Azure Migrate auf YouTube aufmerksam machen:

Im ersten Teil zeige ich euch, wie man das Azure Migrate Assessment einrichtet, um Kostenabschätzung, Sizing und co. zu bekommen.

Im zweiten Part zeige ich die Replikation, Testmigration und Migration von VMs.

Und im dritten Part geht es nochmal dediziert um das Assessment auf der Basis von ausschließlich CSV Daten.

Viel Spaß beim Ansehen!

Schreibe einen Kommentar...

Azure – RBAC Custom Role für das starten und stoppen von VMs

Weil es die Tage bei einem meiner Kunden wieder mal ein Thema war, möchte ich es hier nun mal im Detail beleuchten. Und zwar geht es um die Anforderung, Virtuelle Maschinen in Azure starten und stoppen zu können, ohne beispielsweise die VM löschen zu können oder ihre SKU zu verändern. Natürlich gibt es den „Virtual Machine Contributor“ als built-in Role, aber diese darf eben deutlich zu viel.

Wie geht man nun an das Thema heran? Zunächst muss man zwei Dinge in Erfahrung bringen:

  • Den Namen des Resource-Providers um den es geht
  • Die Operationen auf diesem Provider, die man erlauben oder verbieten möchte
2 Comments

Hyper-V & PowerShell – Kerberos Delegierung für LiveMigration für mehrere Server gegenseitig eintragen

Hinweis: Wer mehr zu diesem Thema wissen möchte, kann gerne meinen ausführlichen Artikel zu diesem Thema lesen!

Nichts neues, aber da es mir heute wieder über den Weg gelaufen ist: Wenn man mittels Hyper-V Manager eine VM von einem Host auf einen anderen live verschieben, dann gibt es im Wesentlichen zwei mögliche Protokolle: CredSSP und Kerberos.

kerberos1

CredSSP ist in der Anendung grundsätzlich einfach, hat aber einen entscheidenden Nachteil: Man muss interaktiv (!) an dem Host angemeldet sein, von dem man die VM (weg) verschieben will. Andernfalls bekommt man einen hübschen Fehler:

kerberos2kerberos3

Der Fehlertext lautet:

Fehler beim Herstellen einer Verbindung mit dem Host “DERHOSTNAME”: Die Anmeldeinformationen, die dem Paket übergeben wurden, wurden nicht erkannt. (0x8009030D).

Failed to establish a connection with host “THEHOSTNAME”: No credentials are available in the security package (0x8009030E)

Insbesondere auf Core-Servern bleibt hier also nur eine Möglichkeit: Man muss auf Kerberos umstellen! Dazu jedoch müssen sich die Server, zwischen denen man verschieben möchte, für das Protokoll “cifs” und “Microsoft Virtual System Migration Service” vertrauen.

Das könnte man jetzt im ActiveDirectory manuell konfigurieren – aber spätestens bei einer zweistelligen Anzahl an Hosts ist das eine sehr mühsame Klickerei. Also warum nicht PowerShell bemühen? Ich habe mir dazu schon vor einer ganzen Weile ein recht kurzes Skript geschrieben, was jeden der aufgeführten Host gegen jeden anderen berechtigt bzw. die Kerberos-Delegierung einrichtet.

Hier das Skript im Textlaut. Viel Spaß damit!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$Domain = 'domain.local'
 
# Actually not needed anymore, but who knows...
Import-Module ActiveDirectory
# Put the NetBIOS names of your hosts here
$HyperVHosts = "HOST1","HOST2","HOST3","HOST4","HOST5"
 
ForEach($Host1 in $HyperVHosts)
{
    ForEach($Host2 in $HyperVHosts)
    {
        If($Host1 -ne $Host2)
        {
            "Delegating from $Host1 to $Host2..."
            Get-ADComputer $Host1 | Set-ADObject -Add @{"msDS-AllowedToDelegateTo" = "Microsoft Virtual System Migration Service/$($Host2).$($Domain)", "cifs/$($Host2).$($Domain)", "Microsoft Virtual System Migration Service/$Host2", "cifs/$Host2"}
            Get-ADComputer $Host1 | Set-ADAccountControl -TrustedForDelegation:$false -TrustedToAuthForDelegation:$true
        }
    }
}

Download des Skriptes siehe hier:

https://github.com/HaikoHertes/scripts/blob/master/HyperV/SetTrustedForDelegationOnAllHyperVHosts.ps1


Schreibe einen Kommentar...

Hyper-V VMs werden angehalten, wenn der Speicherplatz knapp wird

Auch wenn die Tatsache selbst nicht neu ist möchte ich den folgenden Fakt etwas genauer beleuchten, da immer mehr Unternehmen Hyper-V für produktive Virtualisierungszwecke verwenden.

Eine Hyper-V VM wird vom System angehalten, wenn der Speicherplatz auf dem Laufwerk, welches von der VM für die virtuelle Festplatte verwendet wird, knapp wird. Dies geschieht in erster Linie nur dann, wenn die VM mit einer dynamisch wachsenden VHD oder VHDX arbeitet. Auf Grund eines Bugs waren aber bei früheren Hyper-V Versionen (2008 / 2008 R2) auch VMs mit statischen VHDs betroffen.

Das Anhalten der VM geschieht, um einen Absturz des Gastbetriebssystemes auf Grund von Speicherplatzmangel zu vermeiden (die VM “glaubt” noch reichlich Speicherplatz zu haben und versucht, diesen zu belegen, u.a. auch für die Auslagerungsdatei, in Wahrheit ist der Speicherplatz auf dem Datenträger bereits fast vollständig belegt).

Das Anhalten der VM wird dann mit dem Status “Angehalten – Kritisch” markiert (“Paused – Critical” auf englischen Systemen):

HVFreeSpace01

Insbesondere wenn viele VMs mit dynamisch wachsenden VHDs das selbe Plattensystem nutzen ist das Risiko, dass dies geschieht, relativ groß.

Glücklicherweise kündigt sich das bereits vorab an:

HVFreeSpace03

Im Ereignisprotokoll wird unterhalb von “Microsoft / Windows / Hyper-V-VMMS / Admin” ein Ereignis 16050 protokolliert, welches auf den zur Neige gehenden Speicherplatz hinweist.

Das Problem dabei: Dies geschieht erst, wenn der freie Speicherplatz unter 2GB fällt und benötigt auch einige Sekunden nach dem diese Grenze erreicht wurde, bis der Eintrag protokolliert wird.

Wenn der Speicherplatz dann noch knapper wird und eine oder mehrere VMs angehalten wurden wir dies ebenfalls vermerkt:

HVFreeSpace04

Hier wird im selben Protokoll das Ereignis 16060 vermerkt. Dieses weist nun also auch auf die Tatsache hin, dass eine VM angehalten wurde. Dies geschieht allerdings erst, wenn nur noch 200MB oder weniger zur Verfügung stehen!

HVFreeSpace02

(Hinweis: Die Screenshots stammen von einem Testsystem; Es wird ausdrücklich nicht empfohlen, Hyper-V Daten auf dem Betriebssystem-Laufwerk abzulegen!)

Wenn man mit Snapshots / Checkpoints arbeitet, dann sollte man noch beachten, dass die Daten nach dem Snapshot evtl. auf einem anderen Laufwerk abgelegt werden als vorher!

Mittels “Aufgabe an dieses Ereignis anfügen…” kann man z.B. ein Skript oder eine E-Mail auslösen, wenn die betreffenden Ereignisse eintreten:

HVFreeSpace05

(Dazu muss dann das betreffende Ereignis mittels Rechtsklick angeklickt werden, im Screenshot habe ich ein beliebiges anderes Ereignis gewählt)

Schreibe einen Kommentar...