VirtualBox è in grado di compattare (ridurre le dimensioni) delle immagini .vdi
ma non è possibile con le immagini del disco .vmdk
. Ma siamo in grado di compattare .vmdk
file se:Riduci un'immagine del disco Virtualbox vmdk
- stacchiamo
- convertito al
.vdi
- compatta
- riconvertire
.vmdk
- allegare di nuovo alla macchina vitual originale
Così Ho provato a ridurre la mia immagine VirtualBox con questo script:
#/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
Ho adattato this script from crysol ma sembra che questo non funzioni su Ubuntu? I primi vboxmanage storageattach
inizia con un errore subito:
VBoxManage: error: Could not find a controller named 'SATA'
se provo "SATA Controller"
invece:
vboxmanage storageattach "${VM}" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none
ottengo questo errore:
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
Se commento fuori quelle vboxmanage storageattach
linee, lo script funziona bene, ma la VM risultante ha le stesse dimensioni di prima e non si avvia più.
Questa è la output of vboxmanage showvminfo "${VM}"
È probabilmente collegato alla VM come controller IDE anziché come controller SATA? –
La VM non ha alcuna memoria collegata, che è visibile nell'output 'showvminfo' che hai postato. Pertanto, stai vedendo questo messaggio di errore. Sto sospettando una precedente esecuzione incompleta dello script, poiché il primo comando 'storageattach' stacca il file VMDK dalla configurazione della macchina virtuale: ' vboxmanage storageattach [...] --medium none' – he1ix