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

238

EufiqueisemespaçonaminhamáquinavirtualWinXP,queeusódei10GBdeespaçoparaquandoeucriei.Existeumamaneirafácildeaumentá-lopara,digamos,20GB?NãoconsigovernenhumaopçãoóbvianasconfiguraçõesdoVirtualBox.

Asugestãoabaixoapresentaesteerro

wim@wim-ubuntu:/media/data/winxp_vm$VBoxManagemodifyhdwim.vdi--resize20000VBoxManage:error:Cannotregistertheharddisk'/media/data/winxp_vm/wim.vdi'{46284957-2c09-4e70-8a49-bfbe0f7f681d}becauseaharddisk'/home/wim/VirtualBoxVMs/winxp_vm/wim.vdi'withUUID{46284957-2c09-4e70-8a49-bfbe0f7f681d}alreadyexistsVBoxManage:error:Details:codeNS_ERROR_INVALID_ARG(0x80070057),componentVirtualBox,interfaceIVirtualBox,calleensISupportsContext:"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:

Apropósito,dizFATAL:Couldnotreadfromthebootmedium!Systemhalted.

OvdideveserreconectadoàVMapósocomandoVBoxManage.Alémdisso,apartiçãoprecisaráserredimensionadadasjanelasWITHIN,porquevocêteráesteespaçovazio:

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

13 respostas

303

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
23

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
5

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
2

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
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

Você também pode fazer isso usando o menu VirtualBox:

Selecione File - > Virtual Media Manager ...

Uma janela será aberta:

Selecione seu disco e selecione Properties . Agora apenas mova o controle deslizante na parte inferior.

Depois de iniciar a máquina virtual, o Windows não reconhecerá o novo espaço.

Abra Computer Management (procure por ele no menu Iniciar), selecione Storage - > Disk Management no menu da esquerda. Selecione sua partição (provavelmente C :), clique com o botão direito nela e selecione Extend Volume ... . Agora basta clicar no assistente e pronto.

    
por lenooh 06.07.2018 / 14:36
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!
% bl0ck_qu0te%

No seu anfitrião:

  1. Abra uma janela de terminal.

    % bl0ck_qu0te%
  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
    
    % bl0ck_qu0te%
  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 Daniel Pelsmaeker 18.08.2017 / 15:53
0

Se a sua máquina host for windows, você poderá executar o seguinte comando para aumentar ou diminuir o tamanho do disco vdi na caixa virtual:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\your_user_name\VirtualBox VMs\Ubuntu18LTS\Ubuntu18LTS.vdi" --resize 20000

No comando acima, substitua your_user_name pelo usuário real do windows e 20000 é o tamanho do disco do MB.

    
por Manish Jangir 03.08.2018 / 09:50