Por que não consigo redimensionar um VDI dinâmico com o comando modifyhd?


29

Vejo aqui Como faço para aumentar o tamanho do disco rígido da máquina virtual .

Deve funcionar com um comando como

VBoxManage modifyhd xp.vdi --resize 2000

Quando o VDI tem um tamanho fixo, você pode obter este erro:

~/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!

A discussão e a solução para isso estão aqui .

Mas eu recebo esse erro enquanto meu VDI é 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)

Por que é que?


mesmo problema aqui com o Ubuntu 16.04LTS e vdi dinâmico. muito estranho #
Luckyrings

Respostas:


26

Para usar VBoxManage modifyhd, temos as seguintes advertências:

  • As unidades precisam estar no formato .VDI ou .VHD.
  • As unidades devem estar no formato dinâmico, não fixo (um disco fixo pode ser convertido em dinâmico criando um clone).
  • O tamanho da unidade afetará apenas o tamanho lógico , não o tamanho físico.
  • Reduzir uma unidade para igual ou abaixo do seu tamanho físico não é possível.
  • Para reduzir o tamanho físico , precisamos preencher o espaço não utilizado na unidade 0.
  • Um VDI do Windows pode precisar ser desfragmentado antes de diminuir seu tamanho físico.

No exemplo acima, tentou-se redimensionar um disco dinâmico com um tamanho físico de 4693 MB a 2000 MB, o que não é possível. Daí o erro.


1
Eu também tropecei aqui. que dor.
24616 nicolas # 9:

2
Para modificar unidades em formato fixo, siga a resposta por @ ripper234
Sharun 12/12/16

veja a minha resposta tem todos os detalhes que você precisa e posso atestar que ele funciona
Mauricio Gracia Gutierrez

Eu criei essa imagem há mais de dois anos, há muito que esqueci que era de tamanho fixo e não dinâmico. Lê-lo na sua resposta me lembrou. Passei mais de uma hora tentando
entender

Obrigado, isso ajudou. Para linux, não se esqueça de executar o pvresizecomando para colocar esse espaço em uso para linux
Maksim Luzik

24

Esta solução alternativa funcionou para mim:

  1. Desligar a máquina
  2. Crie uma nova unidade através da interface administrativa com o tamanho desejado
  3. Use o clonemedium do VBoxManage com o --existingsinalizador

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

Nota : Agora o novo disco terá o espaço em excesso como não alocado e você precisará usar o gparted para estender o tamanho ao máximo.

Não sei por que os caras do VirtualBox não poderiam usar o acima para implementar isso em vez de jogar VBOX_E_NOT_SUPPORTED... pelo menos link para isso :)


1
Como eu poderia alocar o excesso de espaço no Windows?
Ken

4
@ Ken não tem certeza se você descobriu; Iniciar -> Executar -> diskmgmt.msc, clique com o botão direito do mouse em C: (ou seja qual for a unidade principal) e escolha estender.
Trent

2
isso ajudou. Eu não fiz com GUID mas com filename unidade
Luckyrings

3
@ ripper234 Os três passos precisam de uma explicação detalhada - para pessoas como eu que não têm muita certeza do que estão fazendo. Em 2) estamos criando um novo disco fixo ou o quê? .vdi .vdmk ?? Por favor, dê um exemplo adequado, talvez com um gráfico. Também 3) O que o clonemedium está fazendo em oposição ao clonehd? De onde vêm os dois guias - em particular o de destino - ele já existe mesmo quando estamos clonando? Graças
mwarren

Obrigado. Agora, fui direcionado aqui como usuário do Windows (mesmo que seja o Ubuntu), então adicionarei aqui que, na versão Windows do VBoxManage, você deve colocar os caminhos para os discos rígidos virtuais, em vez da VM GUIDs.
Sean Burchett

4

Aqui está todo o processo, tentarei ser o mais detalhado possível

  1. Verifique se a máquina que você vai aumentar de tamanho está no estado "Desligar" (não no estado "salvo" ou em qualquer outro estado)

No meu caso, é uma máquina de 32 GB e a chamará de SMALL VM

  1. Crie uma nova máquina virtual com o novo tamanho desejado

No meu caso , decidi criar uma nova máquina virtual de 70 GB, enquanto restaurava o conteúdo da pequena máquina dentro desta nova VM e vou me referir a ela como a VM GRANDE

  1. Execute o comando VBoxManage list hddsou abra o Virtual Media Manager para obter o GUID da SMALL VM (origem) e também o GUID da LARGE VM (destino)

Com esses GUIDs, crie o seguinte comando

Clonemedium do VBoxManage SMALL_VM_GUID LARGE_VM_GUID - existente

No meu caso, ORIGIN - SMALL VM é: 39143127-42b6-478a-afb2-5e58f14218b

No meu caso, DESINATION - LARGE VM é: bb808b5b-b88c-49b2-a646-3414af906d84

É claro que seus GUIDs serão diferentes dos meus

Certifique-se de não inverter os GUIDs, caso contrário, a nova máquina substituirá o conteúdo da sua máquina existente !!!!

Depois de verificar se você não combinou origem com destino, execute este comando:

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

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

Meio de clone criado no formato 'VDI'. UUID: bb808b5b-b88c-49b2-a646-3414af906d84

  1. Inicie a nova LARGE VM que você criou na etapa 2.

  2. Verifique na ferramenta da janela Gerenciamento do computador se a máquina possui mais tamanho de espaço não utilizado / não formatado

  3. Se preferir, você pode executar o "chkdsk" na unidade C para garantir que tudo esteja pronto (isso pode levar a duas reinicializações na LARGE VM )

  4. Usando o gparted-live * .iso, "insira-o" na nova máquina virtual e reinicie-o

  5. Inicialize no ambiente gparted

  6. Aumente sua partição e salve as alterações

  7. "Ejete" o gparted-live * .iso para inicializar novamente no Windows

  8. Verifique na ferramenta da janela Gerenciamento do computador se a máquina agora possui uma unidade C maior para resolver seus problemas de spece

Eu tinha as capturas de tela desse processo, mas decidi não incluí-las, pois isso tornaria minha resposta grande e intimidadora para as pessoas que estão "com pressa" para obter espaço livre em sua máquina virtual Windows


Obrigado pelo guia. Na etapa 3, de onde você obtém os GUIDs? Não tenho certeza do que é um Virtual Media Manager.
A.Wan

3
Não importa, acho que peguei deVBoxManage list hdds
A.Wan

@ A.Este é o Virtual Media Manager - google.com.co/…
Mauricio Gracia Gutierrez
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.