• Home
  • Management

Die Migration von Maschinen per “Shared Nothing Live Migration” oder “Storage Migration” per PowerShell

Diesen Artikel könnten wir eigentlich auch unter “wie verlängere ich das Leben meiner Maus, weil ich weniger klicke” führen :) Ich musste heute morgen einige VMs von Host A auf Host B verschieben, danach mussten die Daten der VMs von einer SMB 3.0-Freigabe wieder auf das lokale System umgezogen werden. All dies hätte ich auch manuell per GUI machen können, da ich allerdings immer mehr Freund von kleinen, aber effizienten PowerShell-Befehlen bin, habe ich die Sache kurz per PowerShell gelöst. Den ersten Teil dieses kleinen Beitrags habe ich ja schon bei Facebook gepostet, da sich die Sache allerdings noch weiter fortgesetzt hat hier das Ganze in Blog-Form :)

Zum Verständnis der Befehle und der Nutzung hier eine kurze Erklärung der Situation:

Wir haben einen Server, der zu Wartungszwecken heruntergefahren werden musste, da der RAM erhöht wurde. Das System ist der einzige Host, der nicht im Failover Cluster-Verbund läuft. Ich habe im ersten Schritt alle Daten der VMs auf eine Freigabe verschoben. Danach habe ich eine Livemigration der VM durchgeführt auf einen anderen Knoten, der die VMs temporär betreibt. Nach dem Wartungsvorgang habe ich die VMs wieder zurück auf den eigentlichen Host verschoben. Nachdem die VMs wieder dort liefen, habe ich die Daten der VMs dann im letzten Schritt zurück von der Freigabe auf die lokalen Festplatten verschoben. Die Eingabe erfolgt jeweils dort, wo die VMs gerade läuft (nicht dort, wo die Daten liegen).

Die Storage-Migration auf die SMB 3.0-Freigabe
$VMName = Read-Host "Geben Sie den Namen der VM ein"
Move-VMStorage “$VMName” –DestinationStoragePath "\\Server\Freigabe\$VMName\"
Die Livemigration der VMs auf einen anderen Knoten
Move-VM "VM-Name" "Ziel-Host"
Die Livemigration zurück auf den ursprünglichen Knoten
Move-VM "VM-Name" "Ziel-Host"
Die erneute Storage-Migration der Daten von der SMB 3.0-Freigabe auf die lokalen Festplatten
$VMName = Read-Host "Geben Sie den Namen der VM ein"
Move-VMStorage “$VMName” –DestinationStoragePath "D:\Virtuelle Maschinen\$VMName\"

Wenn man die Befehle noch weiter ausarbeiten würde, könnte man auch mit einem Befehl alle VMs auf einem Host gleichzeitig verschieben. Die Verschiebung aller VMs gemeinsam würde man durch den folgenden Befehl erreichen:

Get-VM | Move-VM -DestinationHost "Ziel-Host"

Um alle VMs gleichzeitig in jeweils einen eigenen Ordner zu verschieben habe ich aktuell noch keinen Befehl, ich vermute man muss die Namen der VMs auslesen und dann jeweils einen eigenen Befehl starten, in dem der jeweilige Name dann auch als Zielpfad angelegt wird. Falls hier jemand eine Lösung hat wäre es super, wenn er diese in den Kommentaren posten würde. Eine Verschiebung aller VMs in einen einzelnen Ordner lässt sich wie folgt realisieren:

Get-VM | Move-VMStorage –DestinationStoragePath "D:\Virtuelle Maschinen\"

Viel Spaß beim Verschieben

Jan Kappen
 

Jan Kappen ist ausgebildeter Fachinformatiker in der Richtung Systemintegration. Er hat seine Ausbildung im Sommer 2008 abgeschlossen und arbeitete bis August 2018 bei der Rachfahl IT-Solutions GmbH & Co. KG. Seit September 2018 arbeitet er als Senior Netzwerk- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland. Jan Kappen ist unter anderen MCITP Server Administrator, Enterprise Administrator und Enterprise Messaging Administrator 2010 sowie MCTS für System Center Virtual Machine Manager 2008, Windows Server 2008 Active Directory, Windows Server Virtualization und Windows Server 2008 Network Infrastructure. Seit 2015 wird Jan Kappen im Bereich "File System Storage" bzw. "Cloud & Datacenter Management" für seine Expertise und seine Community-Arbeit mit dem MVP Award von Microsoft ausgezeichnet.

Comments are closed