¿Por qué no puedo cambiar el tamaño de un VDI dinámico con el comando modifyhd?

29

Veo aquí ¿Cómo puedo aumentar el tamaño del disco duro de la máquina virtual ?

Debería funcionar con un comando como

VBoxManage modifyhd xp.vdi --resize 2000

Cuando el VDI tiene un tamaño fijo, puede obtener este error:

~/VirtualBox VMs/xp$ VBoxManage modifyhd xp.vdi --resize 2000
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

La discusión y la solución a eso está aquí .

Pero obtengo ese error mientras mi VDI es dinámico

~/VirtualBox VMs/xp$ VBoxManage showhdinfo xp.vdi
UUID:           8880dc58-cd0c-4ffb-a583-f8dd50eda98e
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/cip/VirtualBox VMs/xp/xp.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       8192 MBytes
Size on disk:   4693 MBytes
In use by VMs:  xp (UUID: e2b70963-3c26-41cf-88f6-4e03ca721e2d)

¿Porqué es eso?

Comunidad
fuente
El mismo problema aquí con Ubuntu 16.04LTS y Dynamic VDI. muy extraño
Luckyrings

Respuestas:

26

Para usar VBoxManage modifyhdtenemos las siguientes advertencias:

  • Las unidades deben estar en formato .VDI o .VHD.
  • Las unidades deben estar en formato dinámico, no fijo (un disco fijo se puede convertir a dinámico creando un clon).
  • El tamaño de la unidad solo afectará el tamaño lógico , no el tamaño físico.
  • No es posible reducir una unidad a un tamaño igual o inferior a su tamaño físico.
  • Para reducir el tamaño físico , tenemos que llenar el espacio de disco no utilizado 0.
  • Es posible que deba desfragmentar un VDI de Windows antes de reducir su tamaño físico.

En el ejemplo anterior, se intentó cambiar el tamaño de un disco dinámico con un tamaño físico de 4693 MB a 2000 MB, lo que no es posible. De ahí el error.

Takkat
fuente
1
Me tropecé aquí también. que dolor.
nicolas
2
Para modificar unidades en formato fijo, siga la respuesta de @ ripper234
Sharun
revisa mi respuesta, tiene todos los detalles que necesitas y puedo certificar que funciona
Mauricio Gracia Gutierrez
Creé esta imagen hace más de dos años, hace mucho tiempo que había olvidado que era de tamaño fijo y no dinámico. Leerlo en tu respuesta me recordó. He pasado más de una hora tratando de resolver por qué no pude hacer esto: (... Gracias
Madivad
Gracias, esto ayudó. Para Linux, no olvide ejecutar el pvresizecomando para usar ese espacio para Linux
Maksim Luzik
24

Esta solución me funcionó:

  1. Apague la máquina
  2. Cree una nueva unidad a través de la interfaz de administrador con el tamaño que desee
  3. Use VBoxManage clonemedium con la --existingbandera

    VBoxManage clonemedium <source-guid> <destinatin-guid> --existing
    

Nota : Ahora el nuevo disco tendrá el espacio sobrante como no asignado, y deberá usar gparted para extender el tamaño al máximo.

No estoy seguro de por qué los chicos de VirtualBox no pudieron usar lo anterior para implementar esto en lugar de lanzar VBOX_E_NOT_SUPPORTED... al menos un enlace a esto :)

ripper234
fuente
1
¿Cómo podría asignar el exceso de espacio en las ventanas?
Ken
44
@Ken no estoy seguro si lo descubriste; Inicio -> Ejecutar -> diskmgmt.msc, haga clic derecho en C: (o cualquiera que sea la unidad principal) y elija extender.
Trent
2
Esto ayudó. No lo hice con GUID pero con el nombre del archivo de la unidad
Luckyrings
3
@ ripper234 Los tres pasos necesitan una explicación en profundidad, para personas como yo que no están muy seguras de lo que están haciendo. En 2) ¿estamos creando un nuevo disco fijo o qué? .vdi .vdmk ?? Por favor, dé un ejemplo adecuado, tal vez con un gráfico. También 3) ¿Qué está haciendo clonemedium en lugar de clonehd? ¿De dónde vienen las dos guías, en particular la de destino, que ya existe aunque estemos clonando? Gracias
mwarren
Gracias. Ahora, fui dirigido aquí como un usuario de Windows (aunque esto es askUbuntu), así que agregaré aquí que, en la versión de Windows de VBoxManage, debe poner las rutas a los discos duros virtuales, en lugar de la VM GUIDs.
Sean Burchett
4

Aquí está todo el proceso, intentaré ser lo más detallado posible

  1. Asegúrese de que la máquina que va a aumentar de tamaño esté en estado "Apagado" (no en "guardado" o en cualquier otro estado)

En mi caso, se trata de una máquina de 32 GB y la llamaremos SMALL VM

  1. Cree una nueva máquina virtual con el nuevo tamaño deseado

En mi caso , decidí hacer una nueva máquina virtual de 70 GB, mientras restauraba el contenido de la pequeña máquina dentro de esta nueva máquina virtual y me referiré a esto como la máquina virtual grande

  1. Ejecute el comando VBoxManage list hddso abra el Virtual Media Manager para obtener el GUID de la SMALL VM (origen) y también el GUID de la LARGE VM (destino)

Con esos GUID compila el siguiente comando

VBoxManage clonemedium SMALL_VM_GUID LARGE_VM_GUID --existente

En mi caso, ORIGIN - SMALL VM es: 39143127-42b6-478a-afb2-5e58f14218b

En mi caso, DESINATION - LARGE VM es: bb808b5b-b88c-49b2-a646-3414af906d84

Por supuesto, sus GUID serán diferentes a los míos

Asegúrese de no invertir los GUID, de lo contrario, la nueva máquina reemplazará el contenido de su máquina existente.

Después de asegurarse de que no mezcló el origen con el destino, ejecute este comando:

$ VBoxManage clonemedium 39143127-42b6-478a-afb2-5e58f14218b2 bb808b5b-b88c-49b2-a646-3414af906d84 --existente

0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100%

Medio de clonación creado en formato 'VDI'. UUID: bb808b5b-b88c-49b2-a646-3414af906d84

  1. Inicie la nueva máquina virtual LARGE que creó en el paso 2.

  2. Compruebe en la herramienta de la ventana Computer Managment que la máquina tiene más espacio sin usar / sin formato

  3. Si lo prefiere, puede ejecutar el "chkdsk" en la unidad C para asegurarse de que todo esté listo (esto podría llevarlo a dos reinicios en la máquina virtual LARGE )

  4. Usando gparted-live * .iso, "insértelo" en la nueva máquina virtual y reinícielo

  5. Arrancar en el entorno separado

  6. Haga crecer su partición y guarde los cambios

  7. "Expulsar" el gparted-live * .iso para arrancar nuevamente en Windows

  8. Compruebe en la herramienta de la ventana Administración de computadoras que la máquina ahora tiene una unidad C más grande para resolver sus problemas

Tuve las capturas de pantalla de este proceso, pero decidí no incluirlas, ya que hará que mi respuesta sea grande e intimidante para las personas que tienen "prisa" por obtener espacio libre en su máquina virtual de Windows

Mauricio Gracia Gutierrez
fuente
Gracias por la guia. En el paso 3, ¿de dónde obtiene los GUID? No estoy seguro de qué es un Virtual Media Manager.
A.Wan
3
No importa, que lo tengo desdeVBoxManage list hdds
A.Wan
@ A.Wan, este es el Virtual Media Manager - google.com.co/…
Mauricio Gracia Gutierrez