Resumen:
VBoxManage.exe modifyhd --resize
puede 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 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 el espacio libre se ha puesto a cero en el SO huésped primero.
modifyhd
solo 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, deberá clonar el último VDI de instantánea de la subcarpeta "Instantáneas".
Para más detalles ver sección 8.23. VBoxManage modifyhd en el manual.
La razón por la que todavía no se ha implementado la disminución del tamaño de disco lógico de un VDI es para evitar la corrupción de datos que podría ocurrir y que tendría máquinas virtuales no arrancables como resultado de ello. Por lo tanto, cuando --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 que el tamaño actual. En otras palabras, un disco de 40 GB solo puede redimensionarse a 41 GB o más que eso, no puede redimensionarse a 40 GB (eso es tonto) o 39 GB o menos.
Las versiones anteriores de VirtualBox creaban archivos VDI como variante de formato "fijo". 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, el mensaje de error "la operación para este formato aún no está implementada" significa que su archivo VDI usa la variante de formato "fijo". Para solucionar este problema, deberá clonar su archivo VDI con el clonehd
comando Para ver en qué variante de formato se encuentra su archivo VDI en este momento, puede usar el showhdinfo
comando.
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 dónde dice "valor predeterminado fijo"? Es por eso que escupe el error anterior cuando intenta cambiar su tamaño.
Clone el antiguo archivo VDI 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 ahora se ha clonado en un archivo nuevo. Dado que la configuración predeterminada en las nuevas versiones de VirtualBox es usar la variante de formato "dinámico", no tiene que definirlo explícitamente. Aunque, 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.
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 cómo ahora dice "defecto 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 la --compact
opción en el archivo VDI original en un intento de imponer la conversión a la variante de formato dinámico. Algo que leí en el foro VirtualBox, supuestamente hubiera funcionado con versiones anteriores, así que pensé que podría intentarlo. No funcionó).
Cambiar el tamaño del 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! No hay formato de tonterías no más. Solo recuerde cambiar el tamaño del disco nuevo y clonado, y no el original. Tenga en cuenta que el tamaño se expresa en MB. Creo que puede usar, por ejemplo 51200
, así como 50G
(o posiblemente "GB"). También existe la opción --resizebyte
que se puede usar para expresar el tamaño en bytes.
Mostrar información VDI sobre el disco clonado 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! Desde aquí, lo que debe hacer es agregar esta unidad clonada como su nuevo VDI para la VM. Lo haces dentro de VirtualBox. No voy a entrar en eso. Si ha podido leer y comprender esto hasta ahora, entonces 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á de inmediato el nuevo tamaño del disco clonado. Debe iniciar la VM con él y luego debe usar su herramienta de administración de particiones para expandir su 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