É verdade que quando criamos um disco rígido virtual dinamicamente alocado no VirtualBox, ele cresce à medida em que arquivos são gravados. No entanto, seu tamanho não diminui à medida em que excluímos arquivos. Veja agora como é possível reduzir discos rígidos desse tipo no VirtualBox.
Primeiro, é necessário executar um utilitário na máquina virtual (guest), que vai transformar todo o espaço livre em bits zero no disco rígido virtual. Se sua máquina virtual roda Linux, esse utilitário é o zerofree, se roda Windows, há o SDelete.
A página na qual descobri o zerofree recomenda reiniciar o Linux (da máquina virtual) no modo de recuperação (safe mode ou recovery mode) para executar o zerofree. Pra simplificar a vida, eu prefiro inicializar a máquina virtual utilizando um LiveCD.
Se você tiver um LiveCD do Ubuntu, o zerofree pode ser instalado nele via:
1
# apt-get install zerofree
O openSUSE também possui o zerofree nos repositórios oficiais da distribuição:
1
# zypper in zerofree
Se for usar o LiveCD de outra distribuição, pesquise na Internet como obter o zerofree para a sua distribuição.
Se você não souber identificar o disco rígido, o utilitário fdisk pode dar uma pista:
1
# fdisk -l
No meu caso, vou compactar o /dev/sda1.
Montamos o disco rígido como somente leitura em uma pasta temporária e executamos o zerofree nele:
1
2
3
# mkdir /mnt/tmp
# mount -o ro /dev/sda1 /mnt/tmp
# zerofree /dev/sda1
Se sua máquina virtual roda Windows, você deve baixar o SDelete, abrir o Prompt de Comando, ir até a pasta onde o SDelete foi baixado e executar o comando:
1
> sdelete -c C:/
Onde C é a letra da unidade cujo espaço livre deseja-se converter em bits zero.
Após executar o zerofree ou o SDelete, devemos voltar à máquina real (host) e executar o utilitário do VirtualBox que vai de fato compactar o disco rígido virtual, reduzindo seu tamanho fisicamente.
Se sua máquina real roda Linux:
1
$ VBoxManage modifyhd /caminho/para/o/hd/virtual.vdi --compact
Se sua máquina real roda Windows, provavelmente você terá que ir até a pasta do VirtualBox para executar o comando:
1
2
> cd "C:\Program Files\Oracle\VirtualBox"
> VBoxManage modifyhd "C:\caminho\para\o\hd\virtual.vdi" --compact
Foi assim que hoje consegui reduzir um disco rígido virtual de 6,5GB para 5GB. Foi uma redução pequena, mas isso varia de um caso para outro. O autor desse post no Make Tech Easier conseguiu uma redução de 45% no espaço que o disco rígido virtual ocupava (de 10GB para 5,5GB).
Abraço a todos e até mais!
Referências
-
[Shrinking a Dynamic VirtualBox Disk Image The Linux Daily](http://www.thelinuxdaily.com/2010/02/shrinking-a-dynamic-virtualbox-disk-image/) - How To Shrink Your Virtualbox VM And Free Up Space For Your Hard Disk – Make Tech Easier