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 dieses Datenträgers zu reduzieren , damit er niemals 150 GB erreicht. (Ich möchte das Limit auf 30 GB setzen und sehen, was passiert, wenn die 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 VM zu kopieren das Gastbetriebssystem).
- Ü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?
virtual-machine
vmware-workstation
Sébastien
quelle
quelle
Antworten:
Das übliche Verfahren zum Verringern der Größe einer .vmdk-Festplatte lautet:
Defragmentieren Sie die Festplatte über den Gast, indem Sie einen Defragmentierungsmodus auswählen, der den leeren Speicherplatz am Ende der Festplatte konsolidiert. Bei einem Windows-Gast sollten Sie den Papierkorb leeren, den Ruhezustand und das Paging deaktivieren und nach Abschluss der Defragmentierung zurückgeben.
Setzen Sie den gesamten nicht verwendeten Speicherplatz auf der Festplatte auf Null.
Für Windows - Anwendung sdelete :
sdelete -c
.Für Linux:
dd if=/dev/zero of=/mytempfile && rm -f /mytempfile
.Verkleinern Sie den Datenträger (die Fertigstellung kann einige Zeit in Anspruch nehmen).
VMware Workstation: Menü VM / Verwalten / Bereinigen von Festplatten.
Oder benutzen
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 mit dem
-t
Parameter vmware-vdiskmanager durchgeführt werden, dessen Werte wie folgt lauten:Der folgende Befehl konvertiert die .vmdk-Datei von "anbaubar" in "vorab zugewiesen":
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 .
quelle
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 weist der virtuellen Festplatte Speicherplatz 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 die VM der Ansicht, dass sie eine Festplattennutzung aufweist und Speicherplatz auf der realen Festplatte zur Verfügung stellt. 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 Snapshot und stellen Sie ihn nach der Verwendung wieder her. Nach dem Erstellen von Snapshot-VMs 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
quelle
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 ausreichend Speicherplatz für die Unterstützung bei maximaler Größe verfügten? Scheint so, als würde man nur um Ärger bitten.
quelle
vdiskmanager.exe -k [VMDK PATH]
wie in einer anderen Antwort vorgeschlagen, verkleinert das Laufwerk nicht.Es gibt eine Möglichkeit, mit VMWare Converter eine neue VM mit kleinerer VMDK-Größe zu erstellen und anschließend die ursprüngliche VMDK in die neu erstellte, kleinere VMDK zu konvertieren.
Detaillierte Schritte hier .
Beachten Sie, dass Änderungen an der VMDK-Größe auch eine entsprechende Aktualisierung der Partitionstabelle erfordern .
quelle
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
Aus der VMWare Knowledge Base
quelle
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:
Der erste Schritt umfasst eine Prozedur innerhalb der VM und hängt vom Gastbetriebssystem ab. 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. Wir benötigen Speicherplatz, der der maximalen Gerätegröße entspricht .
WARNUNG: Denken Sie daran, wichtige Daten vor jeder Operation zu sichern!
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
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). ZB 209709448. Notieren Sie diese Nummer für Schritt 3.
Über eine Live-CD: SystemResqueCD
Notieren Sie den Endsektor und fügen Sie 1 hinzu. Beispiel: 113455104. Notieren Sie diese Nummer für Schritt 3.
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. (zB 150 GB).
vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk
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 , mit einem 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 eins und speichern Sie die Datei. WARNUNG : Ein Fehler hier könnte dazu führen, dass die tatsächlich im Dateisystem verwendeten Daten gelöscht werden. (Aber wir haben die fs am Anfang des Geräts geändert und richtige und sichere Berechnungen durchgeführt, oder?)
Bisher wurden noch keine Daten berührt. Führen Sie diesen letzten Schritt aus, um die Verlängerungen 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
quelle
Führen Sie für ein VMware Linux-Gastbetriebssystem Folgendes aus:
sudo vmware-toolbox-cmd disk shrinkonly
quelle