2015-02-03 3 views
17

VirtualBox ist in der Lage, .vdi Bilder zu komprimieren (die Größe zu reduzieren) aber es ist nicht möglich mit .vmdk Datenträger-Images. Aber wir können .vmdk Dateien komprimieren, wenn wir:Verkleinern Sie ein virtuelles VCDK-Diskettenbild

  1. lösen
  2. Konvertit .vdi
  3. compact
  4. konvertieren zurück zu .vmdk
  5. befestigen wieder auf den ursprünglichen vitual Maschine

So Ich habe versucht, mein VirtualBox-Bild mit diesem Skript zu verkleinern:

#/bin/bash 

VM_PATH=~/VirtualBox\ VMs 
cd "$VM_PATH" 
VM="$(ls ffnord-example_gc-gw0_* -d -1|head -n 1)" 
cd "$VM" 
VM_VDMK_NAME="$(ls *.vmdk -1|head -n 1)" 
VM_NAME="$VM_PATH/$VM/$VM_VDMK_NAME" 

echo reducing size of "$VM_NAME" 
ls -lah "$VM_NAME" 
set -x 
vboxmanage showvminfo "${VM}" 
vboxmanage storageattach "${VM}" --storagectl SATA --port 0 --device 0 --type hdd --medium none 
vboxmanage clonehd --format vdi "${VM_NAME}" /tmp/VM-disk.vdi 
vboxmanage closemedium disk "${VM_NAME}" --delete 
vboxmanage modifyhd /tmp/VM-disk.vdi --compact 
vboxmanage clonehd --format vmdk /tmp/VM-disk.vdi "${VM_NAME}" 
vboxmanage closemedium disk /tmp/VM-disk.vdi --delete 
vboxmanage storageattach "${VM}" --storagectl SATA --port 0 --device 0 --type hdd --medium 4/VMs/VM-disk1.vmdk 

Ich angepasst this script from crysol, aber es scheint, das funktioniert nicht auf Ubuntu? Die ersten vboxmanage storageattach beginnt mit einem Fehler sofort:

VBoxManage: error: Could not find a controller named 'SATA' 

Wenn ich versuche, "SATA Controller" statt:

vboxmanage storageattach "${VM}" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none 

ich diesen Fehler:

VBoxManage: error: No storage device attached to device slot 0 on port 0 of controller 'SATA Controller' 
VBoxManage: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component SessionMachine, interface IMachine, callee nsISupports 
VBoxManage: error: Context: "DetachDevice(Bstr(pszCtl).raw(), port, device)" at line 381 of file VBoxManageStorageController.cpp 

Wenn ich diese vboxmanage storageattach Zeilen auf Kommentar, Das Skript funktioniert einwandfrei, aber die resultierende VM hat die gleiche Größe wie zuvor und startet nicht mehr.

Dies ist der output of vboxmanage showvminfo "${VM}"

+1

Ist es möglicherweise als IDE-Controller und nicht als SATA-Controller an die VM angeschlossen? –

+1

An Ihre VM ist kein Speicher angeschlossen, der in der von Ihnen geposteten Ausgabe von "showvminfo" sichtbar ist. Daher sehen Sie diese Fehlermeldung. Ich vermute einen vorherigen, unvollständigen Durchlauf des Skripts, da der erste 'storageattach'-Befehl die VMDK-Datei von Ihrer VM-Konfiguration trennt: 'vboxmanage storageattach [...] --medium keine' – he1ix

Antwort

26

ich ein solution gefunden:

Zuerst innerhalb der VM füllen Sie alle freien Speicherplatz mit Nullen:

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill 

In Ihrem Host installieren vmware-vdiskmanager vom VMware Knowledge Base :

cd /tmp/ 
wget http://kb.vmware.com/selfservice/viewAttachment.do?attachID=1023856-vdiskmanager-linux.7.0.1.zip&documentID=1023856 
unp 1023856-vdiskmanager-linux-7.0.1.zip 
mv 1023856-vmware-vdiskmanager-linux.7.0.1 /usr/bin/vmware-vdiskmanager 
chmod +x /usr/bin/vmware-vdiskmanager 

Achten Sie darauf, dass Sie genügend freien Speicherplatz haben, bevor Sie beginnen, Sie müssen die MV-Größe während des Vorgangs verdoppeln.

Dann komprimieren es mit:

/usr/bin/vmware-vdiskmanager -k ~/VirtualBox\ VMs/<virtual disk.vmdk> 

Source

+0

Hier finden Sie vielleicht einen anderen Lösung [http://www.experts-exchange.com/Software/VMWare/A_12938-HOW-TO-Shrink-a-VMware-Virtual-Machine-Disk-VMDK-in-15-minutes.html](http:/ /www.experts-exchange.com/Software/VMWare/A_12938-HOW-TO-Shrink-a-VMware-Virtual-Machine-Disk-VMDK-in-15-minutes.html) –

+1

Gibt es einen vorgefertigten 'vmware-vdiskmanager 'für OSX? – Quanlong

+5

@QuanIm Abschnitt "Anhänge" am Ende des VMWare KB-Artikels, der mit rubo77 verknüpft ist, stehen 3 Versionen von vmware-vdiskmanager zur Verfügung. Der erste wird von Mac OS Finder als ausführbare Unix-Datei erkannt und läuft mindestens auf El Capitan, auf dem ich ihn getestet habe. – mike

3

ich nicht rubo77s Lösung über vmware-vdiskmanager Lösung erhalten könnte zu arbeiten, ich glaube, es Abhängigkeiten von VMware Workstation oder VMware Player hat, von denen keines Ich habe, ich fand die ausführbare Datei und es gab mir Fehler.

Ich konnte dies seinen Null-Befehl unter Verwendung lösen

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

dann .ova Werkzeug virtualboxes exportieren verwenden.

Dies führt dazu, dass die Eier den zerotierten Raum strippen/komprimieren. dann können Sie es erneut importieren.

Verwandte Themen