TechNet Team Blog Austria

Informationen und News abseits der offiziellen TechNet vom TechNet Team Blog Austria

Virtual Server VHD Files vergrößern

Virtual Server VHD Files vergrößern

  • Comments 9
  • Likes

Jeder, der Virtual Server einsetzt kennt wahrscheinlich das Problem: Die Anforderungen wachsen und die virtualisierten Systeme werden irgendwann einmal zu klein. Windows Updates (WU) tragen ihren Teil dazu bei.

So ist es auch mir passiert. Vor etwa 2 Jahren habe ich begonnen, viele virtuelle Windows Server-Systeme für verschiedenste Zwecke und Funktionen anzulegen - damals mit einer 16GB großen Systempartition C: (ich war der naiven Meinung, dachte das genügt für alle Zeiten ;-), während die Daten (SQL Server Datenbanken, Webs etc.) immer auf einer eigenen Datenpartition D: liegen, Logs auf E: und so weiter.

Nun, die Zeit und WU sind gekommen, wo der Platz auf der Systempartition mit 16GB zu eng geworden ist. In meinem Fall konnte z.B. das Visual Studio 2005 Service Pack 1 für SQL-BI nicht mehr auf dem Rechner installiert werden, weil (hust) nur mehr 200MB frei waren.

Klar, zuerst wird einmal das Pagefile mit 2GB auf eine andere Platte verschoben. Dann folgen Systembereinigung, Entfernung alter Patches, Temp-Files und diverse auf C: gelagerte Installs. Hilft ... kurze Zeit. Nach ein paar Wochen stand ich vor demselben Problem. Diesmal hatte ich allerdings keinen Optimierungs-Spielraum mehr - es war einfach zu wenig Platz.

Also, wie schafft man neuen Festplatten-Platz? Nun hierzu gibt es eine ganze Reihe von Ansätzen und Lösungsmöglichkeiten. Ich wollte eine praktikable Lösung, die einfach und nach Möglichkeit kostenlos ist.

Ich habe sie nun gefunden! Da mir mein Lösungsweg sehr praktikabel erscheint, hier nun die step-by-step Anleitung.

Das Resizing

Zuerst das Tool VHD Resizer von vmToolkit  auf dem eigenen Rechner oder auf dem Virtual Server installieren (Vielen Dank übrigens an Peter Forster für den Tipp zum Tool!). VHD Resizer ist ein kostenloses Tool und kann VHD-Files vergrößern und verkleinern und den Datenträger-Typ ändern, also ein sehr hilfreiches Werkzeug für virtuelle Welten.

Nun wird das Tool gestartet, das VHD-Quellfile ausgewählt, das VHD-Zielfile eingetragen und dynamic oder fixed gewählt und die neue Zielgröße angegeben. Mit Resize wird der Vorgang gestartet.

In meinem Beispiel sieht das dann so aus: Im ersten Schritt wird die neue Festplatte mit der angegebenen Größe erzeugt:
vhd-resize-2 
Danach werden vom Tool die Sektoren in die neue VHD kopiert:
vhd-resize-3  
Dieser Vorgang dauert je nach Größe und Performance einige Minuten bis Stunden, auf meinem Server-System mit SATA Festplatten warens für die Verdoppelung der Festplatte von 16GB auf 32GB etwa 20 Minuten. Wenn der Vorgang abgeschlossen wurde, folgt der nächste Schritt.

VHD Resizer legt eine größere Festplatte an - belässt die Partitionen allerdings so, wie sie waren! Das Ändern der Partition muss der Administrator dann also selbst erledigen.

Das Partitionierungs-Tool

Um es gleich vorweg zu nehmen: Es ist natürlich nicht ganz so trivial wie ich dachte...

Es gibt ein Commandline-Tool diskpart.exe, welches Partitionen vergrößern und verkleinern kann. diskpart ist Bestandteil von Windows XP und Windows Server 2003 und natürlich auch ein einer erweiterten Form in Windows Vista enthalten. Siehe dazu auch "Verwenden von "Diskpart.exe" zum Erweitern eines Datenträgers unter Windows Server 2003, Windows XP und Windows 2000".

Die Systempartition neu partitionieren

Diskpart hat allerdings einige Einschränkungen. Das Erweitern funktioniert aber nicht für ... die Systempartition.

Wenn es sich nicht um die Systempartition handelt, kann diskpart einfach im Gastsystem selbst aufgerufen werden. (Murphy´s Law hat wieder zugeschlagen, denn in meinem Fall brauche ich das Ganze natürlich genau für die Systempartition.)

Mal schnell die grauen Zellen anstrengen - und das Internet durchsuchen. Die Lösung dafür ist genauso einfach wie zunächst unvermutet: Was hindert mich daran, die neue VHD in eine bestehende Windows Maschine hinzuzuhängen und dort diskpart auf dieses Volume auszuführen?

Also, gleich ausprobieren: Eine weitere Maschine auf meinem Virtual Server nehmen und dort in deren Configuration die Festplatte (bei mir als Disk 3 hinzufügen):

vhd-resize-5

Nun wird die "Hilfsmaschine" gestartet und mit RDP eine Verbindung dazu hergestellt.

Schauen wir gleich mal nach, wie das neue Volume aussieht: Manage Computer und Disk Management. Ahja, die logische Festplatte ist nun tatsächlich 32GB groß und die Partition 16GB. Es sind also noch 16GB zu "allozieren".

Jetzt wird ein Commandline-Prompt geöffnet und diskpart aufgerufen, danach list volume. Der folgende Screenshot zeigt recht übersichtlich die aktuelle Belegung und den Aufruf:

diskpart

list volume

vhd-resize-8

Nun das zu vergrößernde Volume erkennen und auswählen. In meinem Beispiel ist das Volume 0 (mein Drive E:).

select volume 0

Und jetzt kommts:

extend

Und das ausgewählte Volume wird sofort auf die verfügbare Größe erweitert! Ich war überrascht und sehr angetan, dass dieser Vorgang blitzschnell ausgeführt war. extend besitzt übrigens auch Parameter, u.a. size=n (in MB), um die neue Größe selbst anzugeben.

vhd-resize-9

Mit exit aus dem diskpart-Tool aussteigen und die Hilfsmaschine herunterfahren.
Danach wird im Virtual Server Webinterface das neue Volume wieder mit Remove und OK von der Hilfsmaschine in deren Configuration entfernt:

vhd-resize-10

Zu allerletzt wird noch in meinem RDP zur Virtual Server Maschine das neue VHD von MinniSystem32.vhd auf MinniSystem.vhd umbenannt. Ich empfehle die "alte" VHD aus Sicherheitsgründen immer aufzuheben, daher benenne ich sie ebenfalls auf MinniSystem16.vhd um.

vhd-resize-11

So, das wars. Nun die virtuelle Maschine neu starten und ausprobieren!

vhd-resize-12

Und es hat bestens funktioniert: Ich habe wieder 16GB freien Speicherplatz auf meiner Systempartition!

Jetzt können sie kommen, die neuen (Windows) Updates. ;-)

Beitrag von Toni Pohl

Comments
  • Hallo Zusammen,

    tja, schöner hätt' ich es auch nicht machen können. Vielen Dank für diese Anleitung. Um es gleich mehr zu verbreiten, hab ich das gleich mal gebloggt.

    http://www.virtualserver-community.de/Lists/Posts/Post.aspx?ID=67

    Schöne Grüße

    Peter Forster

  • Danke.

    Tolle und genaue Beschreibung.

  • Apropos Virtualisierung : Microsoft´s Mann für Virtualisierung Eric Traut befasste sich schon bei Connectix

  • Mit Vista als Guest hatte ich unter VirtualPC 2007 SP1 das Problem, dass die Partition nach dem resize und diskpart expand nicht mehr als Systempartition erkannt wurde und Vista den Start verweigerte.

    Dies war zwar schnell durch die automatische Reparatur der Boot-DVD zu beheben gewundert hat es mich allerdings dennoch.

  • Aloha!

    Danke fuer deine ausfuehrungen, hat wunderbar geholfen!

    anmerkung: das funktioniert auch mit dem neuen Hyper-V

    man kann sich dabei allerdings dieses tool sparen. einfach bei den einstellungen die entsprechende vhd auswählen, bearbeiten, erweitern. fertisch!

    der rest läuft dann so wie von dir beschrieben.

    2. vhd bei den einstellungen integrieren und dann expand.

    dauer: 5 minuten alles in allem

    danke!

  • Hatte soeben das gleiche Problem unter Hyper-V.

    Hat bestens funktioniert!

    Besten Dank!!!

    PEN

  • Danke für die gute und schnelle Anleitung, hat problemlos funktioniert unter Hyper-V.

    Eine kleine Hürde hielt das System dennoch bereit: Das Einbinden der Systemplatte in eine "fremde" VM wies der Startpartition keinen Laufwerksbuchstaben zu. Kein Problem, dachte ich, den braucht man ja auch nicht, da ich nur die Partition vergrößern möchte. Aber weit gefehlt: diskpart weigerte sich, mein Volume zu vergrößern. Fehlerausschrift "Volume x kann nicht vergrößert werden".

    Kurioser Weise wurde meine Partition allerdings auch nicht mit allen Daten angezeigt; es stand da die Größe, aber nix von Dateisystemtyp usw. (Ich weiß nicht, ob das in diesem Umfeld ein normales Verhalten ist, ich habe es jetzt auch noch nicht unter vergleichbaren Bedingungen an anderen Servern getestet).

    Abhilfe brachte letzten Endes das Zuweisen eines Laufwerksbuchstabens zu meiner fremden Systempartition. Damit ließ sich im Anschluss die Partition vergrößern, wohl deshalb, weil nun das System "wusste", dass hier ein NTFS am Werkeln ist.

    Der Laufwerksbuchstabe verursachte auch kein Problem in meinem richtigen System im Anschluss (was ich unter echten Hardwareservern zum Teil schon erlebt hatte).

  • Ist zwar schon lange her dieser Beitrag, aber er hat mir gerade sehr geholfen, vielen Dank!

  • ich habe eine kopie der vhd erstellt (da es mir zu gefährlich war eine andere konfiguration oder anderes betriebssystem an meine Firmensystempartition zu lassen).

    Mit dieser kopie habe ich dann die vm gestartet; habe in der datenträgerverwaltung die zu vergrössernde Partition mittels diskpart deaktiviert (inactive), die VM neu gestartet, per diskpart die zu vergrössernde Partition vergrössert (extend), und die Partition danach wieder aktiviert.

    Danach natürlich die Kopie der VHD entfernt.

    Vor allen diesen Ein und Umstellungen habe ich die Netzwerkarte in den Hyper-V einstellungen deaktiviert, da sonst ankommende mails über den exchange und anderer zwischenzeitlicher Datenverkehr verloren gegangen wären.

    Viele Dank für die Anleitung und den Tipps oben.

    Ich wäre sonst echt verzweifelt.

    Gruß

    Alain Hoffs

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment