mac - Reducir una imagen de disco vmdk Virtualbox
virtualbox windows 10 (3)
VirtualBox puede compactar (reducir el tamaño) de imágenes .vdi
pero no es posible con imágenes de disco .vmdk
. Pero podemos compactar archivos .vmdk
si:
- despegar
- convertir a
.vdi
- compacto
- convertir de nuevo a
.vmdk
- Acoplar de nuevo a la máquina original
Así que intenté reducir mi imagen de VirtualBox con este 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
Adapté este script de crysol pero parece que esto no está funcionando en Ubuntu. El primer vboxmanage storageattach
comienza con un error de inmediato:
VBoxManage: error: Could not find a controller named ''SATA''
Si intento "SATA Controller"
lugar:
vboxmanage storageattach "${VM}" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none
Me sale este error:
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 comento las líneas de vboxmanage storageattach
, el script funciona bien, pero la VM resultante es del mismo tamaño que antes y ya no arranca.
Esta es la salida de vboxmanage showvminfo "${VM}"
Encontré una solution :
Primero dentro de la VM llene todo el espacio libre con ceros:
cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill
En su host, instale vmware-vdiskmanager desde 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
Tenga cuidado, ya que tiene suficiente espacio libre en el disco antes de comenzar, necesita que el MV crezca hasta duplicarlo durante el proceso.
Luego comprímelo con:
/usr/bin/vmware-vdiskmanager -k ~/VirtualBox/ VMs/<virtual disk.vmdk>
No pude conseguir que la solución rubo77s por encima de vmware-vdiskmanager funcionara, creo que tiene dependencias en vmware workstation o vmware player, ninguno de los cuales tengo, encontré el ejecutable y me dio errores.
Pude resolver esto usando su comando cero
cat / dev / zero> zero.fill; sync; sleep 1; sync; rm -f zero.fill
luego usando virtualboxes exportar a la herramienta .ova.
esto resultará en que los óvulos eliminen / comprimen el espacio a cero. entonces usted puede volver a importarlo.
No tuve que instalar VMWare ni volver a convertir a VMDK, así que utilicé
Dentro del host:
sudo yum clean all
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY
cat /dev/null > ~/.bash_history && history -c && exit
Luego, después de que el invitado se apaga:
$ vboxmanage clonehd --format vdi centos-7-1-1.x86_64.vmdk newdisk.vdi
$ ls -lh
-rwx------+ 1 Chloe None 39G Mar 26 14:52 centos-7-1-1.x86_64.vmdk
-rwx------+ 1 Chloe None 22G Mar 26 15:01 newdisk.vdi
También permite la compactación posterior.
$ vboxmanage modifyhd newdisk.vdi --compact
Dentro de la GUI de VirtualBox, seleccioné "Elegir archivo de disco duro virtual" para seleccionar el nuevo archivo.