it-swarm.com.de

VMware Workstation: So reduzieren Sie die maximale Größe von .vmdk

Ich habe eine 150-GB-Festplattendatei (.vmdk, nicht vorab zugewiesen), auf der meine virtuelle Maschine gespeichert ist.

Die Datei hat derzeit eine Größe von 20 GB, wächst jedoch täglich, obwohl ich im Gastdateisystem nichts Neues speichere.

Ich habe stundenlang nach einer Möglichkeit gesucht, die maximale Größe dieser Festplatte zu verringern , damit sie niemals 150 GB erreicht (möchte ich) Stellen Sie das Limit auf 30 GB ein und sehen Sie nach, was passiert, wenn VM diese Größe erreicht.

Was ich ausprobiert habe:

  • Konvertieren des Disk-Images mit VMware Converter → dies funktioniert nicht, das Tool ermöglicht nur das Erstellen einer vollständigen Kopie oder eines verknüpften Klons.
  • Erstellen einer neuen leeren virtuellen Maschine mit der gewünschten Größe, um die 20-GB-Daten auf die neue .vmdk-Datei zu kopieren. → Ich kann keine Möglichkeit finden, die Kopie durchzuführen oder die neue Festplatte sogar mit meiner vorhandenen VM zu verbinden Führen Sie den Kopiervorgang unter Verwendung des Gastbetriebssystems durch.
  • Überprüfen Sie in der .vmx-Datei, ob die maximale Größe nicht im Nur-Text-Format festgelegt wurde (dies ist nicht der Fall).

Obwohl diese Aufgabe technisch recht einfach zu sein scheint (es ist kein kompliziertes Verkleinern erforderlich, nur eine einfache Änderung der Größenbeschränkung), habe ich hier wirklich keine Ideen ...

Gibt es überhaupt eine Lösung?

27
Sébastien

Das übliche Verfahren zum Verringern der Größe einer .vmdk-Festplatte lautet:

  1. Defragmentieren Sie die Festplatte über den Gast, indem Sie einen Defragmentierungsmodus auswählen, der den leeren Speicherplatz am Ende der Festplatte konsolidiert. Für einen Windows-Gast sollten Sie den Papierkorb leeren und den Ruhezustand und die Paging-Funktion deaktivieren und sie nach Abschluss der Defragmentierung zurückgeben.

  2. Setzen Sie den gesamten nicht verwendeten Speicherplatz auf der Festplatte auf Null.
    Für Windows sdelete : sdelete -c.
    Für Linux: dd if=/dev/zero of=/mytempfile && rm -f /mytempfile.

  3. Verkleinern Sie den Datenträger (die Fertigstellung kann einige Zeit in Anspruch nehmen).
    VMware Workstation: Menü VM/Datenträger verwalten/bereinigen.
    Oder verwenden Sie: vmware-vdiskmanager.exe -k [VMDK PATH].
    für ESX: vmkfstools --punchzero [VMDK PATH].

Das Konvertieren der Festplatte von "anbaubar" in "vorab zugewiesen" könnte das Wachstum stoppen. Dies kann mithilfe von vmware-vdiskmanager mit dem Parameter -t erfolgen, dessen Werte wie folgt lauten:

0 : single growable virtual disk
1 : growable virtual disk split in 2Gb files
2 : single preallocated virtual disk
3 : preallocated virtual disk split in 2Gb files

Der folgende Befehl konvertiert die .vmdk-Datei von "anbaubar" in "vorab zugewiesen":

vmware-vdiskmanager -r current_disk_name.vmdk -t 3 new_disk_name.vmdk

Wenn Sie die Größe der Festplatte ändern möchten, sollten Sie dies tun, während sich die Festplatte noch im erweiterbaren Format befindet (Beispiele hier ).

Weitere Informationen finden Sie im Virtual Disk Manager-Benutzerhandbuch .

22
harrymc

Die Datei hat derzeit 20 GB, wächst aber täglich, obwohl ich im Gastdateisystem nichts Neues speichere.

Da das Betriebssystem und seine Anwendungsprogramme vorübergehend viel Speicherplatz für temporäre Dateien, Auslagerungsdateien, Ruhezustandsdateien und Konfigurationsdateien verwenden. Sobald sie abhängig von der Richtlinie des Betriebssystems gelöscht werden, werden beim nächsten Mal neue Sektoren auf der Festplatte verwendet. Die VM ordnen Speicherplatz für die virtuelle Festplatte von der realen Festplatte zu, wenn ein neuer Sektor auf der virtuellen Festplatte verwendet wird. Da der Sektor auf der virtuellen Festplatte vom Gastbetriebssystem immer nicht wiederverwendet wird, ist VM der Ansicht, dass es sich um eine Festplattennutzung handelt, und räumt der realen Festplatte Platz ein. Dies führt zu einem wachsenden Image der virtuellen Festplatte.

Es ist weniger wahrscheinlich, dass Ihr Fragentitel gelöst wird, da die Verwendung eines solchen Tools ohne Überprüfung des Bilds zu einer totalen Katastrophe führen kann. Sie können jedoch verhindern, dass das Image größer als 30 GB wird. Es gibt viele Wege, um das Ziel zu erreichen.

A. Verwenden Sie nur partitionierte 30 GB und belassen Sie den verbleibenden freien Speicherplatz. Wenn Sie bereits mehr Speicherplatz partitioniert haben, müssen Sie ihn verkleinern/löschen, eine neue Partition erstellen und dann mit Nullen sichern und wie von @harrymc beschrieben lochen. Da der Speicherplatz in einem nicht partitionierten Bereich niemals verwendet wird, wird die virtuelle Festplatte niemals größer als 30 GB.

B. Erstellen Sie einen Schnappschuss und stellen Sie ihn nach der Verwendung wieder her. Nach dem Erstellen des Schnappschusses VM werden die Daten in einer neuen Image-Datei gespeichert. Wenn Sie darauf zurückschreiben, ohne neue Schnappschüsse zu speichern oder zu erstellen, werden alle geänderten Daten gelöscht und somit Speicherplatz freigegeben.

C. Erstellen Sie ein neues virtuelles Laufwerk mit maximal 30 GB, fügen Sie es als neues Laufwerk zu Ihrer aktuellen virtuellen Maschine hinzu, und verschieben Sie alle Daten mithilfe eines Sicherungstools auf das neue virtuelle Laufwerk. Sie können ein Live-Linux für das Klonen verwenden.

Empfohlene Option ist A

6
totti

Dies funktioniert nur bei spärlichem VMDK (NICHT vorab zugewiesen) Vor dem Verkleinern ist eine Defragmentierung erforderlich, um sicherzustellen, dass der verwendete Speicherplatz zusammenhängend ist

Defragmentierung unter Windows

In einer virtuellen Windows-Maschine müssen Sie zuerst eine Festplattendefragmentierung in Windows ausführen. Durch die Defragmentierung in Windows wird sichergestellt, dass alle verwendeten Leerzeichen zusammenhängend sind. Sie können dann die Größe der virtuellen Festplatte reduzieren.

Verkleinern der virtuellen Festplatte

So verkleinern Sie die virtuelle Festplatte:

Öffnen Sie die Systemsteuerung/Toolbox von VMware Tools:

In Windows:

Doppelklicken Sie auf das VMware Tools-Symbol in der Taskleiste oder klicken Sie auf Start> Systemsteuerung> VMware Tools.

In Linux:

Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

vMware-Toolbox

Hinweis: In Workstation 9.x (Windows) und höher wird das Verkleinern beim Bereinigen der Festplatte automatisch durchgeführt. Daher wird diese Option aus dem VMware Tools Panel entfernt. Gehen Sie zu VM> Verwalten> Datenträger bereinigen. Dies ist in der Linux-Version von VMware Workstation 9.x und höher nicht verfügbar.

Klicken Sie auf die Registerkarte Verkleinern. Wählen Sie das Laufwerk aus, das Sie verkleinern möchten. Klicken Sie auf Zum Verkleinern vorbereiten und befolgen Sie die Anweisungen auf dem Bildschirm. Achtung: Fahren Sie weder Ihre virtuelle Maschine noch die Host-Maschine herunter, während die Festplatte verkleinert wird. Versuchen Sie auch nicht, den Vorgang abzubrechen. Das Unterbrechen dieses Vorgangs kann zu irreparablen Schäden an Ihrer virtuellen Festplatte führen und Sie können Ihre virtuelle Maschine möglicherweise nicht erneut starten.

Aus der VMWare-Wissensdatenbank

3
Jalal Mostafa

Stellen Sie die Größe der betroffenen Festplatte einfach von 150 GB auf 30 GB ein.

Sie müssen die Summe aller Partitionen auf weniger als 30 GB festlegen. Sie müssen die Größe der Partitionen nach und nach verkleinern. Es gibt eine Menge Dokumentation auf dieser Seite darüber, wie man Partitionen verkleinert, so dass ich dies hier nicht noch einmal wiederholen werde.

Warum haben Sie eine 150 GB (dünne Partition) erstellt, wenn Sie nicht über genügend Speicherplatz verfügten, um diese bei maximaler Größe zu unterstützen? Scheint so, als würde man nur um Ärger bitten.

2
mdpc

Die Antwort von @harrym ist ziemlich gut, aber sie beantwortet die Frage eigentlich nicht. Das OP möchte die maximale Größe reduzieren. Das Problem ist, dass der Hypervisor nicht weiß, wie viel von der angezeigten Größe (auch als maximale Größe bezeichnet) tatsächlich vom Betriebssystem verwendet wird. Die Komprimierung (vmware-vdiskmakager -k) gilt für ein erweiterbares vmdk. Es macht nichts auf vorbelegte.

Die Schritte zum Verkleinern der Festplatte sind:

  1. Ändern Sie die Größe der Partition auf der Festplatte über das Betriebssystem oder über eine geeignete Live-CD
  2. Ändern Sie die Größe des vmdk-Geräts, und wählen Sie die Begrenzung sorgfältig aus, um keinen verwendbaren Partitionsspeicherplatz zu beschneiden. Sie können immer etwas mehr Platz im Bild lassen, als es tatsächlich benötigt wird.

Der erste Schritt umfasst eine Prozedur innerhalb von VM und variiert mit dem Gastbetriebssystem. Der zweite Schritt könnte von den vmware-Befehlen unterstützt werden, aber ich habe keinen tiefgreifenden Weg gefunden, dies zu tun. Also der hackige Ansatz.

Hier ist eine nicht so schnelle (aufgrund des Verschiebens großer Datenmengen) und schmutzige Lösung, die den Trick gemacht hat. Der verfügbare Speicherplatz muss der maximalen Gerätegröße entsprechen.

WARNUNG: Denken Sie daran, wichtige Daten vor jeder Operation zu sichern !!

  1. Finden Sie eine Möglichkeit, die Größe der Gastpartition zu ändern und am Ende des Geräts nicht zugewiesenen Speicherplatz zu belassen. Zwei Beispiele:

    Vom Gastbetriebssystem: Windows 7

    1. Sie können die Online-Größenänderungsfunktion verwenden. Es ist eine gute Idee, die Festplatte zuerst aus dem Quest-Betriebssystem heraus zu defragmentieren.
    2. Führen Sie diskmgmt.msc aus, wählen Sie die Partition (das Volume) auf der Festplatte aus, deren Größe Sie ändern möchten, und klicken Sie mit der rechten Maustaste auf-> Volume verkleinern. Reduzieren Sie im angezeigten Dialogfeld die Größe gemäß Ihren Anforderungen. Beachten Sie, dass Sie möglicherweise nicht in der Lage sind, den größten Teil Ihres freien Speicherplatzes wiederherzustellen, da die Partition verwendet wird (wenn es sich um die Systemfestplatte handelt oder wenn sie stark fragmentiert ist). Bereitstellung von zusätzlichem freiem Speicherplatz.
    3. Jetzt wollen wir wissen, welche Partitionen den Plattensektor (oder das Byte) beenden. Angenommen, dies ist die einzige Partition auf dem Gerät. Wir nehmen die Größe des Volumes an, die auf meinem Computer angezeigt wird. Wählen Sie Festplatte aus. Klicken Sie mit der rechten Maustaste. Eigenschaften. Kapazität. Notieren Sie die Anzahl in Byte. (z. B. in meinem Beispiel 107371032576 für 99,9 GB). Fügen Sie aus Sicherheitsgründen einige hundert Megabyte hinzu (+204800) (z. B. 107371237376). Um sicherzustellen, dass keine fehlenden Elemente hinzugefügt werden müssen, können Sie das Dienstprogramm diskpart cmd line verwenden, um den Versatz der Partition vom Start des Geräts an zu ermitteln. Führen Sie dann diskpart aus: list disk, select disk id , list part, select part id , detail. Beispiel:

    DISKPART> Detailteil

    Partition 1

    Offset in Bytes: 1048576

    Stellen Sie sicher, dass Sie der Festplattengröße mindestens diese Zahl hinzufügen. Jetzt müssen wir die Bytes in Sektoren umwandeln, die durch 512 dividiert und aufgerundet werden (Obergrenze). Z.B. 209709448. Notieren Sie diese Nummer für Schritt 3.

    Über eine Live-CD: SystemResqueCD

    1. Alternativ können Sie eine Resque-CD verwenden ( SystemResqueCD ist mein Vorschlag), eine bootfähige ISO herunterladen, sie als virtuelles CD-ROM-Gerät auf Ihrer VM einbinden und booten von der CD (durch Drücken der Esc-Taste auf dem VMWare-Startbildschirm müssen Sie möglicherweise einige Male versuchen, da dies in Kürze angezeigt wird). Wenn Sie die Eingabeaufforderung startx erreichen, gelangen Sie hoffentlich zur grafischen Oberfläche.
    2. Starten Sie gparted auf dem Desktop des Systemresque (z. B. von einem Terminal aus). Suchen Sie die Partition, deren Größe geändert werden soll (diese muss sauber abgehängt werden, wenn Sie Zweifel an einem Scandisk des Gastbetriebssystems haben). Passen Sie die Größe an und planen Sie Ihren Platzbedarf sorgfältig.
    3. Wieder müssen wir den Endversatz in Sektoren (oder Bytes) der Partition finden. Öffnen Sie das Terminal und schreiben Sie das geteilte [ Gerät ], dann drucken Sie die Einheiten. Z.B.

Anzahl Anfang Ende Größe Typ Dateisystem Flags

1 2048s 113455103s 113453056s primärer ntfs-boot

Man beachte den Endsektor und füge 1 hinzu. 113455104. Notieren Sie diese Nummer für Schritt 3.

  1. Da der Hack auf vmdks mit einer einzelnen vorab zugewiesenen Datei (Typ 2) funktioniert (nicht auf mehreren Dateitypen ausprobiert), konvertieren wir zuerst die erweiterbare Datei in vorab zugewiesene. Wir benötigen vorübergehend eine Partition mit physischem Speicherplatz als maximale Größe des Geräts. (z. B. 150 GB).

    vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk

  2. Nun der schwierige Teil, für die vorab zugewiesene Festplatte sollten es 2 vmdks sein

    disk.vmdk disk-flat.vmdk

    ersteres ist nur KB lang, und letzteres enthält die Daten. Öffnen Sie die erste (disk.vmdk) , während die VMWare-Arbeitsstation ausgeschaltet ist , und verwenden Sie einen Texteditor (Notepad ++ ist mein Vorschlag). Finde die Linie

    RW 113455104 FLAT "Windows 7_x64-fl-flat.vmdk" 0

    Ja, Sie verstehen, das zweite Feld gibt die Anzahl der für das Gerät zugewiesenen Sektoren an. Als Validierung multiplizieren Sie mit 512 und ermitteln Sie die Größe in Bytes. Dividieren Sie dann durch 1073741824 (1024 ** 3), um die Größe in GB zu ermitteln. Dies sollte die Größe des vorherigen Geräts sein.

    Ersetzen Sie nun diese Nummer durch die notierte Nummer aus Schritt 1 und speichern Sie die Datei. WARNING: Ein Fehler hier und Sie könnten die tatsächlich im Dateisystem verwendeten Daten beschneiden. (Aber wir haben die Größe des fs am Anfang des Geräts geändert und richtige und sichere Berechnungen durchgeführt, oder?)

  3. Bisher wurden noch keine Daten berührt. Führen Sie diesen letzten Schritt aus, um die Ausdehnungen tatsächlich zu kürzen. Wir werden die Umbenennungsfunktionalität von vmware-vdiskmanager verwenden, um das VMDK mit seiner jetzt reduzierten Größe neu zu erstellen.

    vmware-vdiskmanager.exe -n destvmdk sourcevmdk

2
basos

Es gibt eine Möglichkeit, mit VMWare Converter eine neue VM und eine kleinere VMDK-Größe zu erstellen und dann die ursprüngliche VMDK in die umzuwandeln neu erstelltes, kleineres VMDK.

Shrink VMDK

Detaillierte Schritte hier .

Beachten Sie, dass Änderungen an der VMDK-Größe auch eine entsprechende Aktualisierung der Partitionstabelle erfordern.

2
hanxue

Führen Sie für ein VMware Linux-Gastbetriebssystem Folgendes aus:

Sudo vmware-toolbox-cmd disk shrinkonly

0
Tom Hale