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:
- détacher
- convertir
.vdi
- compact
- convertir retour à
.vmdk
- 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èrestorageattach
commande détache le fichier VMDK de votre configuration de la VM:vboxmanage storageattach [...] --medium none
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé un solution:
D'abord à l'intérieur de la VM remplir tout l'espace libre avec des zéros:
Dans votre Hôte, installez vmware-vdiskmanager de la Base De Connaissances De VMware:
Prenez soin de vous, que vous disposez d'assez d'espace disque avant de commencer, vous avez besoin de la MV pousse à doubler de taille au cours du processus.
Puis le compresser avec:
Source
Je ne pouvais pas obtenir rubo77s solution ci-dessus vmware-vdiskmanager solution de travail, je crois qu'il a des dépendances sur vmware workstation ou vmware player, ni de qui que j'ai, je n'ai trouver le fichier exécutable et il m'a donné des erreurs.
J'ai été en mesure de résoudre ce problème en utilisant son zéro de commande
puis à l'aide de virtualboxes l'exportation .ova outil.
cela se traduira dans les ovules de décapage/compression de la mise à zéro de l'espace.
ensuite, vous pouvez ré-importer.
Je n'ai pas besoin d'installer VMWare, ni de convertir retour à VMDK j'ai donc utilisé
https://scotch.io/tutorials/how-to-create-a-vagrant-base-box-from-an-existing-one#toc-make-the-box-as-small-as-possible
L'intérieur de l'hôte:
Puis après que le client est à l'arrêt:
Il permet également de compactage plus tard
À l'intérieur de VirtualBox GUI, je choisis "Choisir un Fichier de Disque Dur Virtuel" pour sélectionner le nouveau fichier.