Réduire un vmdk Virtualbox de l'image du disque

VirtualBox est capable de compact (réduire la taille) de .vdi des images, mais il n'est pas possible avec .vmdk des images de disque. Mais nous pouvons compact .vmdk fichiers si nous:

  1. détacher
  2. convertir .vdi
  3. compact
  4. convertir retour à .vmdk
  5. joindre de nouveau à l'original virtuel de la machine

J'ai donc essayé de rétrécir mon VirtualBox image avec ce 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

J'ai adapté ce script à partir de crysol mais il semble que cela ne fonctionne pas sur Ubuntu? La première vboxmanage storageattach commence avec une erreur tout de suite:

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

Si j'essaie "SATA Controller" à la place:

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

J'obtiens cette erreur:

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

Si j'en commentaire ceux vboxmanage storageattach lignes, le script fonctionne très bien, mais la VM est de la même taille qu'avant et il ne boot plus.

C'est le sortie de vboxmanage showvminfo "${VM}"

  • Est-il éventuellement attachés à la machine virtuelle comme un contrôleur IDE plutôt que d'un contrôleur SATA?
  • Votre VM n'ont pas de stockage ci-joint, qui est visible dans la showvminfo de sortie que vous avez posté. Donc, vous voyez apparaître ce message d'erreur. Je suis soupçonnant un précédent, incomplètes exécution du script, comme la première storageattach commande détache le fichier VMDK de votre configuration de la VM: vboxmanage storageattach [...] --medium none
InformationsquelleAutor rubo77 | 2015-02-03