Sempre que preciso criar uma nova vm no virtualbox, eu perco algum tempo na tela de criação de disco.
São sempre as mesmas perguntas:
- “Quanto de espaço vou precisar nessa vm ?”
- “O que vai rodar nela ?”
- “E se eu não criar um disco com espaço suficiente ?”
Depois de perder alguns minutos e finalmente decidir o tamanho do disco, eu prossigo com a criação e instalação da nova VM.
É bem comum se criar VM Windows por exemplo com apenas 10GB de disco. E se você precisar instalar alguns programas pesados ? Será mesmo um problema quando sua máquina virtual fica sem espaço em disco ? Bom, com esse tutorial a resposta é não.
Nos passos abaixo, explicarei com detalhes como aumentar o tamanho do seu disco virtual (.vdi):
[Post escrito e testado baseado no VirtualBox 3.2.6]
1º passo: Criar um novo disco com um espaço maior.
Para isso, abra o gerenciador de disco virtual ou o virtual disk manager e crie um novo disco.
Para os exemplos a seguir, eu criei o disco novoDisco30GB.vdi
2º passo: Escolher a máquina virtual com o disco a ser modificado
Ao decidir qual vm terá seu disco alterado, certifique-se que ela está desligada e entre nas configurações da VM. Vá até a categoria storage ou armazenamento:

O objetivo é fazer com que a vm fique com 2 discos. No meu exemplo utilizei a controladora SATA. Mas funciona da mesma forma para que utiliza controladora IDE. Basta colocar o segundo disco como IDE Primary Slave.
3º passo: Fazer o download da imagem .iso do Gparted live cd
Acesse a url: http://sourceforge.net/projects/gparted/ e baixe a ultima versão da imagem .iso
O Gparted é um editor de partição gratuito, que vamos usar para redimensionar as partições conforme desejarmos.
4º passo: Adicionar o liveCD Gparted na maquina virtual
Adicione o .iso na sua vm de forma que fique assim:

Para quem usa controlador IDE, basta adicionar na posição IDE Secondary Master.
Certifique-se também que a ordem de boot da sua VM está com o CD-Rom antes do HD:

5º passo: Iniciar a VM pelo LiveCD do GParted
Ligue a VM e inicie escolhendo a opção do GParted:
Ele irá oferecer alguma opções de formato do teclado e linguagem. Você pode ir pelas configuraões padrões apertando “ENTER” em todas as opções oferecidas até chegar na tela do sistema:

6º passo: Verificar os nomes dos discos
Assim que o GParted iniciar, o programa já deve vir aberto. Se não estiver em execução, você pode inicar o GParted pelo icone na área de trabalho.
Depois disso, você precisa anotar os nomes dos discos:
Então, no próximo passo nós iremos copiar todo o conteúdo do disco /dev/sda (20 GB) para o /dev/sdb (30 GB).
7º passo: Transferindo os dados de um disco para o outro
Antes de fazer a cópia, certifique-se de ter fechado o programa do GParted. Agora abra o terminal, clicando no icone na área de trabalho.
Agora, basta rodar o comando:
sudo dd if=/dev/sda of=/dev/sdb
Atenção: Tenha certeza que está fazendo a cópia certa. if é o caminho do disco de origem, neste caso o sda que é o de 20GB. E of é o caminho do disco de destino, neste caso o sdb que é o de 30GB.
Dependendo do tamanho do disco, esse processo pode demorar um pouco. Para testar o meu exemplo, levou cerca de 22 minutos para transferir todo o hd de 20GB para o de 30GB.
8º passo: Redimensionar a partição do novo disco
Feito o passo anterior, feche o terminal e reinicie a vm, abrindo pelo liveCD do GParted novamente. Essa reinicialização não é obrigatória, mas serve para evitar problemas no novo disco, já que por algum motivo o GParted fica reclamando de que nao consegue ler os dados da nova partição.
Bom, depois de reiniciar, vamos redimensionar o novo HD.
Se for uma VM windows, basta clicar com o botão direito sobre o /dev/sdb1 e clicar em redimensionar / resize e arrastar a partição até preencher todo o espaço disponível:

Depois disso basta apertar em aplicar e pular para o próximo passo…
No meu caso, estou redimensionando em um HD com linux, então entre a partição do sistema e o espaço disponível tem a partição do swap.

Para poder redimensionar o disco, você precisa remover o “swap” que está em nosso caminho.

Depois de deletar o swap, clique com o botão direito e depois em redimensionar / resize para chegar na tela abaixo:

Arraste o tamanho do disco até o limite desejado. Lembre-se de deixar um pouco de espaço para recriar o swap novamente. Geralmente o swap é criado com o dobro do tamanho da memória da máquina.

Depois de aumentar a partição primária, crie no espaço que sobrou uma partição estendida, onde iremos definir o novo swap.

Criado a partição estendida, crie dentro dela uma partição lógica com o file-system “linux swap”


Pronto. Terminamos de redimensionar o disco.

Agora basta aplicar as modificações e esperar um pouco.
Feito isso, já podemos desligar a vm.
9º passo: Ligar a VM com o novo disco
Remova o disco antigo da vm, remova o cd de boot e depois ligue a vm com o novo disco !

10º passo: Agora, basta aproveitar a sua VM com um disco maior

11º passo (Passo necessário no Ubuntu): Trocando o uuid do disco do swap.
Em alguns linux, com o ubuntu, ele grava em um arquivo o uuid (id do disco) que o sistema usa.
Como fizemos algumas modificaçoes nas partições, esses ids mudaram. Então precisamos editar o arquivo que fica em /etc/fstab como mostra a figura abaixo:

Com o comando: ls -la /dev/disk/by-uuid/ você pode listar os novos ids e a onde eles estão montados.
No caso da imagem acima, basta atualizar o arquivo fstab com o uuid do disco em sda1 e depois em sda5.
Reinicie a VM e estará tudo funcionando corretamente 😉
==========================================
IMPORTANTE: Em 22/12/2010 foi lançado a versão 4 do virtualbox. Umas das principais modificações foi o suporte ao redimensionamento do disco. Em breve escreverei um novo post falando sobre essa funcionalidade.
Eu só publiquei essa matéria pois estava como rascunho a muito, muito tempo. E além do mais, nem todo mundo atualiza a versão do virtualbox, então pode ser útil para alguém… 😉
==========================================
[Post escrito e testado baseado no VirtualBox 3.2.6]