Como aumentar o tamanho do disco rígido da máquina virtual?

225

Eu fiquei sem espaço na minha máquina virtual WinXP, que eu só dei 10 GB de espaço para quando eu criei. Existe uma maneira fácil de aumentá-lo para, digamos, 20 GB? Não consigo ver nenhuma opção óbvia nas configurações do VirtualBox.

A sugestão abaixo apresenta este erro

wim@wim-ubuntu:/media/data/winxp_vm$ VBoxManage modifyhd wim.vdi --resize 20000
VBoxManage: error: Cannot register the hard disk '/media/data/winxp_vm/wim.vdi' {46284957-2c09-4e70-8a49-bfbe0f7f681d} because a hard disk '/home/wim/VirtualBox VMs/winxp_vm/wim.vdi' with UUID {46284957-2c09-4e70-8a49-bfbe0f7f681d} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp

Remover o arquivo .vdi do VirtualBox antes de chamar o comando VBoxManage e adicioná-lo novamente foi bem-sucedido. Mas agora não consigo inicializar a máquina virtual, recebo essa tela preocupante:

A propósito, diz FATAL: Could not read from the boot medium! System halted.

O vdi deve ser reconectado à VM após o comando VBoxManage. Além disso, a partição precisará ser redimensionada das janelas WITHIN, porque você terá este espaço vazio:

Consegui redimensionar a partição facilmente usando um pouco de freeware chamado EASEUS Partition Master 9.1.0 Home Edition .

    
por wim 18.12.2011 / 12:51

11 respostas

284

Abra um terminal e navegue até a pasta com a imagem de disco do VirtualBox e use o seguinte comando:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

substituindo YOUR_HARD_DISK e SIZE_IN_MB pelo nome da sua imagem e tamanho desejado. sudo pode ser necessário em algumas máquinas ou você pode encontrar um erro. Esta resposta e uma explicação mais completa são aqui, no webupd8 . Agradecemos a Andrew por postar esta resposta.

Após o redimensionamento, o espaço extra no disco rígido virtual precisa ser particionado e formatado para que o convidado possa usá-lo. Isso pode ser feito com o gparted, inicializando o convidado de um ISO ao vivo. Também podemos redimensionar a partição existente usando o gparted. Para isso, podemos precisar desabilitar /swap e criar uma nova partição swap.

    
por Tom Brossman 18.12.2011 / 13:07
20

O seguinte funcionou para mim:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

No entanto, eu entendo como a quilometragem pode variar :-) No que diz respeito ao redimensionamento da partição, no Windows 7, eu consegui redimensionar na tela que você mostrou clicando com o botão direito no C: dirija no painel inferior e selecione o volume de extensão.

    
por Richard Povinelli 15.04.2012 / 13:53
17

Wim, acho que você precisará cancelar o registro do Vbox primeiro. File, Media Manager, clique em você hdd e cancele o registro. Então tente novamente.

    
por tiempjuuh 19.12.2011 / 12:40
7

Após redimensionar e não conseguir visualizar o redimensionamento em minha máquina guest com Windows XP, tive que

  1. clonar
  2. redimensione com "VboxManage modifyhd winxppro \ Clone.vdi --resize 30720" e tudo funcionou

Eu vi em outros fóruns que os snapshots podem interferir no redimensionamento e não conseguir remover todos os snapshots por erros diferentes que recebi, a única solução encontrada para mim foi cloná-lo para remover os snapshots e redimensioná-lo, e tudo funcionou . Para redimensionar janelas externas, um CD de inicialização do gparted que possa ser encontrado aqui pode ajudar

    
por Philippe Gachoud 28.05.2013 / 13:11
4

Eu tive o mesmo problema em que movi um disco e substituí o original por um link simbólico. Isso funciona OK depois, mas você tem problemas com o comando 'modifyhd', já que aparentemente canoniza o caminho para o arquivo vdi ao trabalhar com ele. Isso faz parecer que você está tentando adicionar um novo disco com o mesmo UUID, mas em um caminho diferente - ou algo assim.

Houve dois problemas:

  1. O disco teve que ser removido da VM que o usou, mas também "da lista de hdds do VirtualBox". Isso foi corrigido com o comando 'closemedium', que remove da lista.

  2. O disco a ser redimensionado era um "disco fixo" em vez de "dinâmico", e somente os discos dinâmicos podem ser redimensionados. Isso foi corrigido com um comando 'clone' (o clone é dinâmico) e, em seguida, redimensione o disco resultante.

Este é o meu log de como foi feito. Notar que eu sou não a qualquer momento executando como root , exceto quando eu fizer o redimensionamento da partição e do sistema de arquivos.

REMOVER A ASSOCIAÇÃO AO DISCO DA VM.

PROBLEMA AINDA PERSISTAS:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
VBoxManage: error: Cannot register the hard disk '/datadisk/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' {6cd99209-e4db-4178-a6c2-53f9581b1fad} because a hard disk '/home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' with UUID {6cd99209-e4db-4178-a6c2-53f9581b1fad} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp

Ah, o disco ainda está "no sistema":

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID:        ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State:       locked write
Type:        normal
Usage:       TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)

UUID:        6cd99209-e4db-4178-a6c2-53f9581b1fad
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi
State:       created
Type:        normal

Remover / excluir o disco da lista de discos do VirtualBox ("closemedium"):

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage closemedium disk 6cd99209-e4db-4178-a6c2-53f9581b1fad
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID:        ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State:       locked write
Type:        normal
Usage:       TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)

Tente redimensionar novamente:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

DAMN, "tamanho fixo" NÃO FUNCIONA! 'clonehd' para o resgate, pois isso deixa um disco clonado 'dinamicamente alocado':

virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage clonehd TestInception\ 64\ bit.vdi TestInception\ 64\ bit-cloned.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 8e237500-173b-401a-9e63-9e64da110da9

FAÇA AGORA O RESIZE (instantanious):

virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd --resize 8192 TestInception\ 64\ bit-cloned.vdi 
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

ENTÃO ANEXAR A ALGUM VM, PARA REDUZIR. Isso é feito como root. Assume que você tem apenas uma partição e possivelmente troca.

# fdisk /dev/sdb  # <- The extra disk, just attached to be resized
// The procedure looks like this:
// m - print help
// p - print table
// d ... - delete partition (delete both if you have root and swap)
// n - new partition (create root/first partition starting on exact same sector as before, typically 2048, but ends on last, or last minus swap)
//  ... n.. (.. then add the swap partition. Calculate how many sectors using original table)
// t - change type of partition (swap partition, if any, to 82 - not 83 which is "normal Linux").
// w - write partition table (write out, with the resized partition)

# e2fsck -f /dev/sdb1

e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 99918/122160 files (0.3% non-contiguous), 471032/487936 blocks

# resize2fs /dev/sdb1

resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/sdb1 to 1965824 (4k) blocks.
The filesystem on /dev/sdb1 is now 1965824 blocks long.
    
por stolsvik 09.04.2013 / 14:01
1

Uma maneira certa é fazer o mesmo que mudar para um disco rígido maior que não está sendo executado em uma VM. Primeiro use o programa ccleaner ou similar no XP para limpar todos os arquivos inúteis que puder. Em seguida, crie um HDD virtual secundário com o tamanho desejado. Inicialize com o clonezilla ISO em sua unidade ODD virtual e clone junto com a opção 'redimensionar para novo tamanho da partição' selecionada. Em seguida, defina o novo Virtual HDD como primário e não o exclua até que ele funcione.

    
por xyzzyman 19.12.2011 / 15:03
1

Recebi o mesmo erro até usar o sudo para executar o comando, e depois trabalhei perfeito, ainda preciso ter a partição crescendo a partir do convidado para usar espaço adicional.

    
por JJinCO 01.02.2012 / 10:34
1

Na verdade, parece que modifyhd sozinho não faz bem a você em alguns casos. Na verdade, eu expandi meu WinXP vdi clonando a imagem após a expansão.

Aqui está o guia passo-a-passo completo que funcionou para mim algumas semanas atrás: link

    
por 0x61696f 01.05.2012 / 21:25
1

Certifique-se de ter efetuado login como usuário com permissões de gravação no arquivo de imagem de disco. Então corra

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB  

Trabalhei para mim na primeira vez que perguntei

    
por tindase 27.03.2012 / 00:53
1

Isso funcionou para mim com o Virtualbox 5.2.6 instalado no Ubuntu 16.04 Host Machine e no Windows 10 Guest: Abra o Virtualbox Manager, clique em Global Tools (canto superior direito) e escolha o Virtual Media Manager. Clique na guia Disco rígido e selecione seu sistema operacional convidado. Na parte inferior da caixa, clique na guia Atributos. Na parte inferior você pode ver o tamanho do disco virtual, e com o controle deslizante você pode aumentar o tamanho ao seu gosto. (Você só pode aumentar, não diminuir o tamanho com esse método). Clique em Aplicar. Inicie seu sistema operacional Windows Guest, abra o Gerenciamento do Computador, clique com o botão direito do mouse em C: Drive e selecione Estender volume para estender o sistema de arquivos com a parte não alocada.

Isso é tudo que eu tive que fazer, funciona perfeitamente para mim.

    
por Judex 24.01.2018 / 18:55
0

Aqui está uma maneira de redimensionar o seu disco VirtualBox, independentemente de se tratar de um formato fixo ou disco de formato dinâmico. Especificamente, isso evita esse erro:

Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!
  

⚠️ Faça o backup do disco virtual. Você nunca sabe o que pode dar errado.

No seu anfitrião:

  1. Abra uma janela de terminal.

      

    No Windows: Abra o prompt de comando cmd .

  2. Vá para o diretório com o disco virtual que você deseja redimensionar. Por exemplo:

    cd "My VMs"
    
  3. Crie um novo disco do VirtualBox com o nome de arquivo, tamanho (em megabytes) e formato desejados ( Standard (dinâmico) ou Fixed ). Por exemplo, para criar um disco de formato fixo de 50 GB chamado MyNewDisk.vdi :

    VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    
      

    Se VBoxManage não for reconhecido como um comando, especifique o caminho completo para ele. Pode ser encontrado no diretório de instalação do VirtualBox. No Windows, o comando acima se tornaria:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    
  4. Copie o disco original para o novo disco.

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
    
  5. O redimensionamento está pronto! Você pode verificar as propriedades do novo disco se quiser:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
    
  6. Altere a máquina virtual para usar o novo disco.

Em seguida, no seu sistema operacional convidado, você precisa redimensionar as partições para usar o espaço recém-disponível.

    
por Virtlink 18.08.2017 / 15:53