Virtuelle Festplatten in Hyper-V vergrößern mit PowerShell

Auch ich möchte mich zunächst bei Frank bedanken, mich auf FrankysWeb mit eigenen Beiträgen beteiligen zu dürfen. Da ich mich beruflich sehr viel mit Hyper-V Servern beschäftigen darf, möchte ich mein Wissen hier gerne teilen und einige Artikel dazu schreiben. Beginnen möchte ich mit einer Anleitung, wie Du virtuelle Festplatten in Hyper-V Server vergrößern, bzw. erweitern kannst.

Unterschiede bei virtuellen Festplatten

Bevor die Vergrößerung durchgeführt wird, solltest Du Dir die Einstellungen der virtuellen Maschine aufrufen. Dort kontrollierst Du, ob die betreffende Festplatte per IDE-Controller oder SCSI-Controller angebunden ist. Hier entscheidet sich nämlich, ob die Erweiterung im laufenden Betrieb möglich ist, oder ob Du die VM zunächst herunterfahren musst.

Während virtuelle IDE-Festplatten sich nicht im laufenden Betrieb verwalten lassen, stehen Dir bei SCSI-Festplatten die meisten Operationen auch während der Ausführung zur Verfügung (zumindest ab Windows Server 2012R2, bzw. Windows 8.1). Ob es sich beim Format der Festplatte um eine VHD- oder eine VHDX-Datei handelt oder ob die VM als 1. Generation oder 2. Generation angelegt wurde, spielt dabei keine Rolle.

Virtuelle Festplatte vergrößern

Das Vergrößern einer virtuellen Festplatte lässt sich entweder über den Hyper-V Manager erledigen oder (schneller) über die PowerShell. Im Hyper-V Manager musst Du Dir die betreffende Festplatte in den Einstellungen der VM heraussuchen und startest dann mittels der Option „Bearbeiten“ den Assistenten für die Bearbeitung virtueller Festplatten. Dieser führt Dich dann durch die weiteren Schritte.

Virtuelle Festplatten in Hyper-V vergrößern
Über den Hyper-V Manager lässt sich ein Assistent für die Erweiterung von virtuellen Datenträgern aufrufen. Schneller geht´s aber per PowerShell.

Wer das Ganze, wie ich, lieber über die PowerShell umsetzen möchte, dem genügt der folgende kurze Befehl: Resize-VHD <Pfad zur VHD> -SizeByte <Größe>
z.B.: Resize-VHD „D:\HyperV\Test-SRV\Virtual Hard Disks\Test-SRV-Disk0.vhdx“ -SizeBytes 60GB

Resize-VHD | Virtuelle Festplatte vergößern | Hyper-V
Mit Resize-VHD lässt sich die Größe von VHD-Dateien verwalten.

Nachdem dieser Befehl abgesetzt wurde, wird die (maximale) Größe der VHD-Datei auf die angegebene Größe erweitert. Wichtig: Es muss die neue Gesamtgröße des virtuellen Datenträgers angegeben werden (nicht die zu erweiternde Größe). Der Vorgang dauert nur wenige Sekunden.

Festplatte in der virtuellen Maschine erweitern

Nachdem Du die Größe der VHD(X)-Datei der virtuellen Maschine erweitert hast, musst Du den neuen, zusätzlichen Speicherplatz natürlich noch dem Betriebssystem zur Verfügung stellen. Sofern Du eine Windows Server Version mit Desktopdarstellung installiert hast, kannst Du das über die Datenträgerverwaltung erledigen. Solltest Du eine Core-Installation haben oder einfach die PowerShell bevorzugen, musst Du zunächst herausfinden, um welchen Datenträger und welche Partition es sich handelt. Hierfür rufst Du mit Get-Partition | ft DriveLetter, DiskNumber, PartitionNumber eine Liste der im System konfigurierten Partitionen ab.

Anschließend kannst Du mit Resize-Partition die Größe der Partition anpassen. Um die Partition auf die maximale Größe zu erweitern, lesen wir dabei noch mit Get-PartitionSupportedSize die größtmögliche Kapazität aus. Der komplette Befehl lautet letztlich:

Resize-Partition -DiskNumber x -PartitionNumber y (Get-PartitionSupportedSize -DiskNumber x -PartitionNumber y).SizeMax.

In meinem Beispiel möchte ich die Partition mit dem Laufwerksbuchstaben E auf die größtmögliche Kapazität erweitern.
Dies erreiche ich mit:

Resize-Partition -DiskNumber 1 -PartitionNumber 2 (Get-PartitionSupportedSize -DiskNumber 1 -PartitionNumber 2).SizeMax
Partitionen per PowerShell erweitern
Erweitern einer Partition mittels PowerShell auf den maximalen Wert.

Direkt nach der Ausführung dieses Befehls, wird die Partition erweitert und der zuvor definierte zusätzliche Speicherplatz steht dem Betriebssystem zur Verfügung.

6 thoughts on “Virtuelle Festplatten in Hyper-V vergrößern mit PowerShell”

  1. Hi,

    das lässt sich hierfür genauso nutzen. Du musst aber zunächst das Volume in der VM auf die neue Größe verringern. Das dürfte der wesentlich schwierigere, bzw. aufwändigere Teil sein. Anschließend kannst Du die fixe Disk mit diesem Befehl verkleinern.

    Resize-VHD -ToMinimumSize

    oder

    Resize-VHD -SizeByte

    Reply
  2. Hallo Tom

    in diesem Fall würde ich darauf tippen, dass die virtuelle Festplatte nicht „dynamisch erweiterbar“ (also mit Thin-Provisioning) angelegt wurde, sondern mit fester Größe (Thick Provisioning).

    In diesem Fall erweitert er die Festplatte zunächst um den gewünschten Speicherplatz, beschreibt aber dann den neuen Speicherplatz einmal komplett mit Nullen, bevor er diesen freigibt. Das dauert dann leider seine Zeit.

    Viele Grüße René

    Reply
  3. Hallo René
    Schön das du nun auch da bist!
    Guter Beitrag!

    Ich habe eine Frage:
    Exchange 2010/Hyper-V-Cluster/Server2008/3Par

    Erweiterung:
    Vorher Offline(wegen 2008)
    Mit Hyper-V-Manger erweitern
    Dabei schlafen einem die Füße ein, das dauert ewig! Keine Ahnung warum.
    ( 100gb ca 10 min.. )
    Geht das per Powershell schneller?

    LG Tom

    Reply

Leave a Comment