Solución:
Resumen:
VBoxManage.exe modifyhd --resize
puede aumentar (pero no disminuir) el tamaño lógico de la imagen del disco (el tamaño que ve el sistema operativo invitado).VBoxManage.exe modifyhd inputfile.vdi --compact
puede disminuir el tamaño de la imagen del disco físico (el tamaño del archivo de imagen en el disco como lo ve el sistema operativo host). Sin embargo, esto no cambia el tamaño del disco lógico. Tenga en cuenta que esto solo funciona si primero se ha puesto a cero el espacio libre en el sistema operativo invitado.modifyhd
sólo funciona con la variante de formato dinámico (“imagen asignada dinámicamente”).modifyhd
solo funciona con formatos de imagen VDI y VHD.- Si está utilizando instantáneas, tendrá que clonar la última instantánea VDI de la subcarpeta “Instantáneas”.
Para obtener más información, consulte la sección 8.23. VBoxManage modifiedhd en el manual.
La razón por la que aún no se ha implementado la reducción del tamaño del disco lógico de un VDI es para evitar la corrupción de datos que podría ocurrir y, como resultado, tendría máquinas virtuales que no se pueden arrancar. Por lo tanto, cuando el --resize
se utiliza la opción, el nuevo tamaño del disco debe ser mayor que el tamaño actual. No se permite que sea menor o igual al tamaño actual. En otras palabras, un disco de 40 GB solo se puede cambiar de tamaño a 41 GB o más, no se puede cambiar a 40 GB (eso es simplemente tonto) o 39 GB o menos que eso.
Las versiones anteriores de VirtualBox creaban archivos VDI como una variante de formato “fija”. La nueva configuración predeterminada ahora es crear variantes de formato “dinámico” cuando se crean nuevos archivos VDI (imagen de disco virtual). (Supongo que este es el caso desde la introducción de la variante de formato dinámico, cualquiera que sea la versión que se introdujo).
Entonces, lo que significa el mensaje de error “la operación para este formato aún no está implementada” es que su archivo VDI usa la variante de formato “fija”. Para solucionar este problema, tendrá que clonar su archivo VDI utilizando el clonehd
mando. Para ver en qué variante de formato se encuentra su archivo VDI en este momento, puede usar el showhdinfo
mando.
Ejemplo de trabajo
Muestra información de VDI sobre el disco actual.
Comando de entrada: vboxmanage.exe showhdinfo pathinputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNameVirtualBox VMssg2_win7_x64_labsg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity: 40960 MBytes
Size on disk: 40962 MBytes
In use by VMs: sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)
C:Program FilesOracleVirtualBox>
¿Ves donde dice “predeterminado fijo”? Es por eso que escupe el error anterior cuando intenta cambiar su tamaño.
Clone el archivo VDI antiguo en un archivo VDI nuevo.
Comando de entrada: vboxmanage.exe clonehd pathinputfile.vdi pathoutputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe clonehd "%userprofile%virtual
box vmssg2_win7_x64_labsg2_win7_x64_lab.vdi" "%userprofile%virtualbox vmssg2
_win7_x64_labsg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c
C:Program FilesOracleVirtualBox>
¡Voilà! El archivo antiguo ahora se ha clonado en un archivo nuevo. Dado que la configuración predeterminada en las nuevas versiones de VirtualBox es utilizar la variante de formato “dinámico”, no es necesario definirlo explícitamente. Sin embargo, si está trabajando con una versión anterior de VirtualBox, es posible que desee establecer la opción en “dinámica” (si está disponible) para garantizar una mejor compatibilidad y / o flexibilidad con futuras versiones de VirtualBox.
Muestra información de VDI sobre el disco clonado.
Comando de entrada: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
¿Ves cómo ahora dice “predeterminado dinámico”? ¡Que agradable!
(En la nota al margen! La razón por la que dice 7806 MB como tamaño físico aquí es porque había usado el --compact
en el archivo VDI original en un intento de forzar la conversión a la variante de formato dinámico. Solo algo que leí en el foro de VirtualBox, supuestamente habría funcionado con versiones anteriores, así que pensé que también podría intentarlo. No funcionó.)
Cambiando el tamaño del disco clonado.
Comando de entrada: vboxmanage.exe modifyhd pathinputfile.vdi --resize 51200
C:Program FilesOracleVirtualBox>VBoxManage.exe modifyhd "%userprofile%virtua
lbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:Program FilesOracleVirtualBox>
¡Éxito! No más tonterías de formato. Solo recuerde cambiar el tamaño del disco nuevo clonado y no del original. Tenga en cuenta que el tamaño se expresa en MB. Creo que puedes usar eg 51200
al igual que 50G
(o posiblemente “GB”). También existe la opción --resizebyte
que se puede utilizar para expresar el tamaño en bytes.
Muestra información de VDI sobre el disco de clonación redimensionado.
Comando de entrada: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
¡Eso es todo! Desde aquí, lo que debe hacer es agregar esta unidad clonada como su nueva VDI para la máquina virtual. Haces eso dentro de VirtualBox. No entraré en eso. Si ha podido leer y comprender esto hasta ahora, probablemente no necesite más orientación. Puede eliminar el antiguo archivo “fijo” o dejarlo como copia de seguridad. Asegúrese de probar el nuevo archivo VDI antes de eliminar el archivo fuente original.
¡Nota! No verá inmediatamente el nuevo tamaño del disco clonado. Tienes que arrancar la VM con él, y luego tienes que usar tu herramienta de administración de particiones para expandir tu partición para llenar el disco virtual (o crear más particiones). Para Windows, simplemente ejecute diskmgmt.msc
y podrá expandir la partición allí.
Capturas de pantalla
Referencia
- foros.virtualbox.org – VBoxManage modificarhd –resize == VBOX_E_NOT_SUPPORTED
- foros.virtualbox.org – 8.23. VBoxManage modificarhd
- www.virtualbox.org – 8.23. VBoxManage modificarhd
- SU – Cambiar el tamaño de la partición de Windows 7 que se ejecuta en VirtualBox con almacenamiento asignado dinámicamente
Aquí hay un proceso bastante simple que me funcionó para cambiar el tamaño de un disco de tamaño fijo de VirtualBox (v. 4.3.16) a un disco dinámico de 60GB en mi Mac (OS X 10.9.4) con Linux (Ubuntu 14.04) ejecutándose como sistema operativo invitado:
En Terminal en Mac, ingrese el CD en el directorio con el archivo VDI y escriba lo siguiente:
VBoxManage showhdinfo mydisk.vdi
VBoxManage clonehd mydisk.vdi mydiskClone.vdi
VBoxManage modifyhd mydiskClone.vdi --resize 61440
VBoxManage showhdinfo mydiskClone.vdi
En la sección de almacenamiento de la aplicación VirtualBox, agregue mydiskClone.vdi como un segundo HD, luego inicie la VM normalmente.
En el shell del sistema operativo invitado, escriba:
sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk
Reinicie el invitado. Cuando vuelva a aparecer, vaya al shell nuevamente y escriba:
sudo resize2fs /dev/sdb1
Apague el sistema operativo invitado.
En la sección de almacenamiento de la aplicación VirtualBox nuevamente, configure mydiskClone.vdi como el disco de arranque. Luego, inicie el sistema operativo invitado y verifique el nuevo tamaño del disco usando las propiedades de “Computadora” en el explorador de archivos.
OK, entonces lo hice realidad sin clonación.
Tenía un archivo VDI de 100 GB (formato fijo) con Ubuntu. Funcionando bien. Quería liberar algo de espacio en el host reduciendo la máquina virtual.
Pasos:
- Limpiar
Archivos no deseados eliminados. 45GB gratis. Solo necesito 30GB para liberarme.
- Reparar el sistema operativo invitado
Solo tengo una partición, por lo que no puedo hacer nada desde el interior de Ubuntu invitado. Montó Ubuntu Live en la VM y arrancó desde ella.
Usó gparted
para reducir la partición a 70 GB. Creó una nueva partición en el espacio no utilizado en ext4
.
- Limpia el espacio libre
El espacio libre en la nueva partición (30 GB).
Siguió esta guía: Reduzca el disco duro virtual en Ubuntu como sistema operativo invitado y host usando zerofree
Mi nueva partición fue /dev/sda3
.
$ sudo apt-get install zerofree
$ sudo init 1
...
# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3
-
Compactar el VDI
VBoxManage modifiedhd “ubuntu.vdi” compacto
Tomó un tiempo, ¡pero funcionó!
Sección de Reseñas y Valoraciones
Si te sientes incitado, puedes dejar un post acerca de qué te ha impresionado de este escrito.