Program VirtualBox może kompaktować (zmniejszać rozmiar) obrazów .vdi
, ale nie jest to możliwe z obrazami dysków .vmdk
. Ale możemy kompaktowy .vmdk
plików jeśli:Zmniejszenie obrazu dysku Virtualbox vmdk
- odłączyć
- przeliczyć
.vdi
- kompaktowy
- przekonwertować z powrotem do
.vmdk
- dołączyć ponownie do oryginalnego Vitual maszynie
So Próbowałem zmniejszyć obraz VirtualBox za pomocą tego skryptu:
#/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
Zaadaptowałem this script from crysol, ale wygląda na to, że to nie działa w systemie Ubuntu? Pierwsze vboxmanage storageattach
zaczyna się od błędu zaraz:
VBoxManage: error: Could not find a controller named 'SATA'
jeśli staram "SATA Controller"
zamiast:
vboxmanage storageattach "${VM}" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none
otrzymuję ten błąd:
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
Gdybym wykomentuj te vboxmanage storageattach
linie, skrypt działa dobrze, ale wynikowa maszyna wirtualna ma taki sam rozmiar jak poprzednio i już się nie uruchamia.
To output of vboxmanage showvminfo "${VM}"
Czy jest prawdopodobnie podłączony do VM jako kontroler IDE, a nie kontroler SATA? –
Twoja maszyna wirtualna nie ma dołączonego magazynu, co jest widoczne na opublikowanym wyjściu "showvminfo". Dlatego widzisz ten komunikat o błędzie. Podejrzewam, że poprzednia, niekompletna wersja skryptu, jako pierwsza komenda 'storageattach' odłącza plik VMDK od konfiguracji VM: ' vboxmanage storageattach [...] --medium none' – he1ix