Resumen:
VBoxManage.exe modifyhd --resize
pueden aumentar (pero no disminuir) el tamaño lógico de la imagen del disco (el tamaño visto por el SO huésped).
VBoxManage.exe modifyhd inputfile.vdi --compact
puede disminuir el tamaño físico de la imagen de disco (el tamaño del archivo de imagen en el disco visto por el SO huésped). Sin embargo, esto no cambia el tamaño del disco lógico. Tenga en cuenta que esto sólo funciona si el espacio libre ha sido puesto a cero en el SO huésped primero.
modifyhd
sólo funciona con la variante de formato dinámico (“imagen asignada dinámicamente”).
modifyhd
sólo funciona con los formatos de imagen VDI y VHD.
- Si está utilizando instantáneas tendrá que clonar la última instantánea VDI de la subcarpeta “Snapshots”.
Para más detalles vea la sección 8.23. VBoxManage modifyhd en el manual.
La razón por la que no se ha implementado todavía la disminución del tamaño del disco lógico de una VDI es para evitar la corrupción de datos que podría ocurrir y que tendría VMs no arrancables como resultado de ello. Por lo tanto, cuando se utiliza la opción --resize
, 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 sólo puede ser redimensionado a 41 GB o más, no puede ser redimensionado a 40 GB (eso es una tontería) o a 39 GB o menos.
Las versiones antiguas de VirtualBox creaban los archivos VDI como variante de formato “fijo”. La nueva configuración por defecto es ahora crear variantes de formato “dinámico” cuando se crean nuevos archivos VDI (imagen de disco virtual). (Supongo que esto es así desde la introducción de la variante de formato dinámica, sea cual sea la versión en la que se introdujo).
Así que lo que significa el mensaje de error “la operación para este formato no está implementada todavía” es que su archivo VDI utiliza la variante de formato “fijo”. Para evitar este problema tendrá que clonar su archivo VDI utilizando el comando clonehd
. Para ver en qué variante de formato se encuentra su archivo VDI en este momento, puede utilizar el comando showhdinfo
.
Ejemplo de trabajo
Mostrar información VDI sobre el disco actual.
Comando de entrada: vboxmanage.exe showhdinfo path\inputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_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 Files\Oracle\VirtualBox>
¿Ves donde dice “fixed default”? Por eso escupe el error de arriba cuando intentas cambiar el tamaño.
Clonar el archivo VDI antiguo a un nuevo archivo VDI.
Comando de entrada: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_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 Files\Oracle\VirtualBox>
¡Voilà! El archivo antiguo ha sido clonado en un nuevo archivo. Como la configuración por defecto en las nuevas versiones de VirtualBox es utilizar la variante de formato “dinámico”, no es necesario definirlo explícitamente. Aunque, si está trabajando con una versión antigua de VirtualBox, entonces podría querer establecer la opción “dinámica” (si está disponible) para asegurar una mejor compatibilidad y/o flexibilidad con futuras versiones de VirtualBox.
Mostrar información VDI sobre el disco clonado.
Comando de entrada: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
¿Ves como ahora dice “dynamic default”? Qué bien.
(¡Aparte! La razón por la que aquí dice 7806 MB como tamaño físico es porque había utilizado la opción --compact
en el archivo VDI original en un intento de forzar la conversión a la variante de formato dinámico. Es algo que leí en el foro de VirtualBox, supuestamente habría funcionado con versiones anteriores, así que pensé que podría probarlo. No funcionó.)
Redimensionando el disco clonado.
Comando de entrada: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:\Program Files\Oracle\VirtualBox>
¡Éxito! Ya no hay que dar formato. Sólo recuerda cambiar el tamaño del nuevo disco clonado, y no del original. Ten en cuenta que el tamaño se expresa en MB. Creo que puedes usar, por ejemplo, 51200
así como 50G
(o posiblemente “GB”). También existe la opción --resizebyte
que se puede utilizar para expresar el tamaño en bytes.
Mostrar información VDI sobre el disco clónico redimensionado.
Comando de entrada: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
¡Eso es todo! A partir de aquí lo que tienes que hacer es añadir este disco clonado como tu nueva VDI para la VM. Eso se hace dentro de VirtualBox. No voy a entrar en eso. Si has sido capaz de leer y entender esto hasta ahora, entonces probablemente no necesites más orientación. Puedes eliminar el antiguo archivo “arreglado”, o dejarlo como copia de seguridad. Asegúrese de probar el nuevo archivo VDI antes de borrar el archivo original.
¡Nota! No verás inmediatamente el nuevo tamaño del disco clonado. Tienes que arrancar la VM con él, y luego tienes que usar tu herramienta de gestión de particiones para expandir tu partición para llenar el disco virtual (o crear más particiones). En el caso de Windows, sólo tienes que ejecutar diskmgmt.msc
y podrás ampliar la partición ahí.
Capturas de pantalla
Referencia