none
dynamische VHDs zu groß konfiguriert - nun verkleinern? RRS feed

  • Frage

  • Hi,

    ich habe ein Hyper-V Cluster mit zwei Nodes.
    Im Cluster laufen gerade 25 Maschinen und bei einigen wurden die VHDs zu groß gewählt.

    Bspw. gibt es einen Sharepoint-Server bei dem die Daten VHD 1.5TB dynamisch erstellt wurde. Das SAN hat jedoch physisch garnicht so viel Platz und ich möchte diese VHD nun verkleinern. Die 1.5TB werden auch nie genutzt werden (z. Zt. 100MB!).

    Im SCVMM kann ich dynamische VHDs ja nur feste konvertieren, VHDs komprimieren oder vergrößern.

    Meine Idee war, die VM herunterzufahren, die VHD im Host anhängen, den Inhalt auf eine vorher neu erstellte, kleinere VHD zu kopieren und die neue VHD gegen die alte zu ersetzen.
    Wäre das möglich oder gibt es eine andere Vorgehensweise?


    Viele Grüße Oliver
    Mittwoch, 10. November 2010 07:51

Antworten

  • Hi,

    mach es mit dem vhdresizer - was natürlich auch noch geht ist, eine neue VHD zu erstellen, die Dateninhalte zu kopieren und danach die Platte als aktiv zu markieren sowie mit einem Boot-Record auszustatten. Habe ich erst vor kurzem bei einem Kunden mit Server 2003 gemacht - das geht perfekt.


    Peter Forster | MVP Virtual Machine | Austria | http://www.base-it.at
    Donnerstag, 11. November 2010 15:23

Alle Antworten

  • Danke!
    Auf der VHD befindet sich nur eine Partition. Daher kann ich auch den vhdresizer nehmen oder?
    Oder ist DISKPART mittlerweile die elegantere Lösung?


    Viele Grüße Oliver
    Mittwoch, 10. November 2010 11:08
  • Moin,

    zum verkleinern der dynamischen Festplatte musst du den Gast ausschalten. Danach kannst du über Aktionen den festplatte beliebig verkleinern.

    ich hoffe das Hilft!?

     

    Grüße

    Donnerstag, 11. November 2010 14:17
  • Hi,

    also das musst du einen anderen Hyper-V Manager haben als ich ?!?
    Es gibt nur die Option Erweitern, Komprimieren oder Konvertieren...

    Wo soll das gehen?


    Viele Grüße Oliver
    Donnerstag, 11. November 2010 15:08
  • zum verkleinern der dynamischen Festplatte musst du den Gast ausschalten. Danach kannst du über Aktionen den festplatte beliebig verkleinern.


    Das kann nicht helfen - der Komprimierungsvorgang der hier angeboten wird kann nur die physische größe einer dynamisch expandierenden Festplatte verringern - nicht jedoch die maximal konfigurierte Größe einer Festplatte. Das musst du dir so vorstellen:

    Du kaufst ein Buch - das belegt Platz in einem Regal. Dann kaufst du ein weiteres Buch, das belegt wieder Platz im Regal. Nun entfernst du ein Buch wieder. Das Regal bleibt aber gleich groß. Damit du das Regal kleiner bekommst, musst du einen Teil des Regals entfernen. Das macht der Komprimierungsvorgang für dynamische Festplatten.


    Peter Forster | MVP Virtual Machine | Austria | http://www.base-it.at
    Donnerstag, 11. November 2010 15:13
  • Hi,

    mach es mit dem vhdresizer - was natürlich auch noch geht ist, eine neue VHD zu erstellen, die Dateninhalte zu kopieren und danach die Platte als aktiv zu markieren sowie mit einem Boot-Record auszustatten. Habe ich erst vor kurzem bei einem Kunden mit Server 2003 gemacht - das geht perfekt.


    Peter Forster | MVP Virtual Machine | Austria | http://www.base-it.at
    Donnerstag, 11. November 2010 15:23
  • oder du "komprimierst" die VHD.

    Hab dazu was gefunden wobei alle Nulldaten gelöscht werden. Natürlich offline. Und die original VHD vorher sichern.

     

    1. Konsole Hyper-V Manager

    2. Im fensterabschnitt Aktionen unter Servernamen auf Datenträger bearbeiten um den Assistenten zum bearbeiten der VHD zu starten

    3. durchklickern und deine VHD zum verkleinern suchen.

    4. auf der Seite Aktionen die Otion Komprimieren aussuchen

    5. Abschliessen und fertig stellen des Assistenten.

     

    Donnerstag, 11. November 2010 15:38
  • Hi,

    genau, mit komprimieren funktioniert das nicht.
    Ich habe das mit dem vhdresizer versucht, bei einem Testserver auf dem WSUS läuft.
    Der hat zwei VHDs, eine für das System, eine für Daten und SQL-Server.

    Wenn ich nun die Daten-VHD mit vhdresizer verkleinere und diese gegen die vorhandene DatenVHD austausche, habe ich folgenden Effekt.

    WSUS findet keine DB mehr. Die neue VHD ist zwar da, aber sie zeigt mir trotzdem noch die alte Größe an. Ich habe dann versucht einmal die VHD zu vergrößern, indem ich einfach Daten kopiert habe.
    Irgendwann habe ich nur noch E/A-Fehler beim kopieren bekommen und es dann alles wieder zurückgebaut.
    Keine Ahnung warum das passiert... ?!?


    Viele Grüße Oliver
    Donnerstag, 11. November 2010 15:52
  • nur als Idee, NTBackup, bzw. der Nachfolger bei Server2008. Macht der nicht ein Backup als VHD, und zwar in der Nettogröße, und die VHD kann man doch bestimmt weiter verwenden, bzw. neu einbinden.

     

    Donnerstag, 11. November 2010 18:11
  • Hallo.

    Leider nein. VHDs von der Windows Sicherung sind erst mal nicht bootfähig. Soll man zwar über den Umweg DVD-Boot und wieder bootfähig machen können. Gelungen ist mir das allerdings noch nicht. Damit fällt das mal für die System-Partition aus.

    Die VHDs aus der Sicherung durch die übergeordnete Partition, sprich durch den Host, sind wie die Originale.

    Ich habe hier eine Anleitung wie das gehen soll. Gemacht habe ich es aber noch nicht.

    __________

    Heute kam wieder eine Anfrage an, die mich veranlasst hat, nicht direkt die Antwort zu schreiben, sondern erst kurz zu recherchieren und etwas zu testen…

    Die Frage: Ich habe eine VHD variabler Grüße mit 100 GB erzeugt, die jetzt physisch auf 30 GB angewachsen. Nun wollte ich die VHD in eine VHD mit fester Grüße umwandeln. Leider wird diese dann aber 100 GB groß. Aus Gründen des Platzbedarf möchte ich sie aber nur maximal 70 GB groß haben. Wie geht das?

    Der Charme von VHDs mit variabler Größe ist ja, dass sie nur den Platz für die enthaltenen Daten benötigen. Je nach Plattform haben VHDs mit fester Größe aber Vorteile bei der Performance. Unter Hyper-V mit dem Server 2008 R2 hat sich die Leistungsfähigkeit der dynamischen Platten aber derart verbessert, dass dies kein Grund mehr sein sollte.

    Wichtig ist aber das Szenario VHD Boot – beim Start des Rechners aus der VHD wird die VHD immer auf die maximale Größe erweitert (Sparse Files). So ist sichergestellt, dass der physische Platz nicht ausgeht, was das OS nicht erwarten würde.

    Was ist also zu tun?

    Mit dem Hyper-V Manager kann man zwar VHDs erweitern, aber nicht verkleinern. Das bringt uns dann zu einem zwei Jahre alten Tools, dem VHD Resizer. Er wurde damals schon im Virtual PC Blog von Ben Armstrong erwähnt…

    Zur Funktionsweise: Der VHD Resizer kopiert den Inhalt der VHD blockweise in eine neue VHD. Der Vorteil hierbei ist, dass die originale VHD erst einmal erhalten bleibt. Diese Methode ist auch die einzige, die ein Verkleinern erlaubt. Prinzipiell ließe sich dieser Vorgang auch mit anderen Werkzeugen bewerkstelligen, wichtig ist nur, dass man die Inhalte und Strukturen 1:1 kopiert. Man darf nicht vergessen, dass gerade bei VHDs mit modernen Betriebssystemen auch die “Volume ID” eines Volumes nicht verändert werden sollte. Deswegen ist die blockweise Kopie des “Container Inhalt” keine schlechte Idee.

    Ein Problem muss aber getrennt, ja nach Operation auch vorher, gelöst werden: Das Anpassen der Inhalte der VHD, also der Partitionen bzw. Volumes. Die VHD ist nur der Container – die Partition/Volume ist der Inhalt. Der Container kann daher nie kleiner werden als der Inhalt!

    Jetzt schlägt die Stunde der Liebhaber der Kommandozeile!

    Voraussetzung ist, dass die VHD in einer anderen Betriebssysteminstanz verfügbar ist. Das geht per Hyper-V oder bei Windows 7 (oder dem Server) ebenfalls von der Kommandozeile mit diskpart:

    diskpart

    select vdisk file=<Pfad zur VHD Datei>
    attach vdisk

    Sinnvoll ist es die Partition defragmentiert zu haben, sonst wird vermutlich zuviel verteilter Platz belegt. Danach verkleinern wir das Volume:

    select volume <Volume Nr>
    shrink [desired=<Größe in MB>]

    Ohne die Angabe der Megabytes um die verkleinert werden soll, wird maximal möglich verkleinert.

    Jetzt müssen wir die VHD nur noch wieder freigeben, damit sie dann per VHD Resizer verkleinert werden kann:

    select vdisk file=<Pfad zur VHD Datei>
    detach vdisk

    exit

    Eine Eigenart ist mir beim VHD Resizer aufgefallen: Die Zielgröße muss immer etwas größer als die minimale Größe sein, damit er loslegen will.

    Wer eine VHD vergrößern will, muss analog im Nachgang noch Partition/Volume vergrößern. Auch dafür liefert diskpart die benötigten Befehle:

    expand vdisk erweitert eine VHD
    extend erweitert eine Partition oder ein Volume

     

    Dienstag, 16. November 2010 22:32