In diesem Tutorial beschreibe ich, wie mithilfe der PowerCLI die RAM-Größe einer virtuellen Maschine (VM) bearbeitet werden kann. Diese Methode lässt sich auch anwenden, um mehrere VMs in einem Arbeitsablauf zu bearbeiten. Dies bietet sich z.B. immer dann an, wenn so viele VMs betroffen sind, dass der Aufwand der manuellen Bearbeitung im vSphere-Client zu groß erscheint.
Die Idee hierzu stammt ursprünglich aus dem Artikel PowerShell Friday: Adding Memory with PowerCLI von Anne Jan Elsinga aus dem Jahr 2015.
Zielstellung
Es soll die Größe des Arbeitsspeichers von zunächst einer und anschließend mehrerer VMs bearbeitet werden. Dabei wird gezeigt, wie RAM im laufenden Betrieb erhöht und bei ausgeschalteten VMs reduziert werden kann.
Voraussetzungen
Eine funktionsfähige Installation der VMware PowerCLI und die Möglichkeit den vCenter Server über diese ansprechen zu können, ist Voraussetzung, um diesem Tutorial zu folgen.
Um den RAM einer VM im laufenden Zustand erhöhen zu können, muss die Option Memory Hot Plug der betreffenden VM aktiviert sein.
Anmeldung am vCenter
Zu Beginn verbindet man sich zu der vCenter-Instanz, deren VMs man bearbeiten möchte. Das Kommando hat folgenden Aufbau:
Connect-VIServer [-Server] <String[]> [-Protocol {http | https}] [-User <String>]
Beispiel:
Connect-VIServer -Server vcsa.beispiel.de -Protocol https -User alice@vsphere.local
Beispiel 1: RAM einer einzelnen VM erhöhen
Dieses Beispiel ist direkt dem Artikel PowerShell Friday: Adding Memory with PowerCLI entnommen.
Der Befehl ist ein Einzeiler:
Get-VM -Name MeineVM | Set-VM -MemoryGB 2
Werte kleiner GB werden dezimal spezifiziert:
Get-VM -Name MeineVM |Set-VM -MemoryGB 0.75
Beispiel 2: RAM mehrerer VMs erhöhen
Angenommen in meiner Umgebung existieren mehrere VMs, die nach dem Muster VM-Test- benannt sind, deren RAM auf 24 GB erhöht werden soll.
Zuerst kann man sich die gewünschte Zielgruppe anzeigen lassen:
PS C:\Users\joerg> Get-VM | Where-Object {$_ | Select-String -pattern "VM-Test-\d"} | Sort
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
VM-Test-01 PoweredOn 4 16.000
VM-Test-02 PoweredOn 4 16.000
VM-Test-03 PoweredOn 4 16.000
VM-Test-04 PoweredOn 4 16.000
VM-Test-05 PoweredOn 4 16.000
VM-Test-07 PoweredOn 4 16.000
VM-Test-08 PoweredOn 4 16.000
VM-Test-09 PoweredOn 4 16.000
VM-Test-10 PoweredOn 4 16.000
VM-Test-11 PoweredOn 4 16.000
VM-Test-12 PoweredOn 4 16.000
VM-Test-13 PoweredOn 4 16.000
VM-Test-14 PoweredOn 4 16.000
VM-Test-15 PoweredOn 4 16.000
VM-Test-17 PoweredOn 4 16.000
VM-Test-18 PoweredOn 4 16.000
Der Platzhalter ‚\d‘ steht dabei für beliebige Dezimalzahl.
Der RAM kann nun wie folgt auf jeweils 24 GB erhöht werden:
PS C:\Users\joerg> Get-VM | Where-Object {$_ | Select-String -pattern "VM-Test-\d"} | Set-VM -MemoryGB 24
Confirmation
Proceed to configure the following parameters of the virtual machine with name 'VM-Test-01'?
New MemoryMB: 24765MB
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): A
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
VM-Test-01 PoweredOn 4 24.000
VM-Test-02 PoweredOn 4 24.000
VM-Test-03 PoweredOn 4 24.000
VM-Test-04 PoweredOn 4 24.000
VM-Test-05 PoweredOn 4 24.000
VM-Test-07 PoweredOn 4 24.000
VM-Test-08 PoweredOn 4 24.000
VM-Test-09 PoweredOn 4 24.000
VM-Test-10 PoweredOn 4 24.000
VM-Test-11 PoweredOn 4 24.000
VM-Test-12 PoweredOn 4 24.000
VM-Test-13 PoweredOn 4 24.000
VM-Test-14 PoweredOn 4 24.000
VM-Test-15 PoweredOn 4 24.000
VM-Test-17 PoweredOn 4 24.000
VM-Test-18 PoweredOn 4 24.000
Beispiel 3: RAM einer VM reduzieren
Auch dieses Beispiel ist direkt dem Artikel PowerShell Friday: Adding Memory with PowerCLI entnommen.
Die betroffene VM muss dazu ausgeschaltet werden:
Get-VM -Name MeineVM | Shutdown-VMGuest|Set-VM -MemoryGB 0.25
Zusammenfassung
Mit der PowerCLI ist es möglich sich wiederholende Tätigkeiten abarbeiten zu lassen. Dies spart Zeit und Nerven.
Mir hat der Tipp von Anne Jan Elsinga sehr geholfen, weshalb ich die Methode hier für mich, euch und die Nachwelt dokumentiert habe.