VirtualBox - Reduzindo tamanho de discos rígidos virtuais

Publicado por Antônio Vinícius Menezes Medeiros em 22/01/2014

[ Hits: 14.575 ]

Blog: http://www.vinyanalista.com.br/

 


VirtualBox - Reduzindo tamanho de discos rígidos virtuais



É 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 GNU/Linux, esse utilitário é o zerofree. Se roda Windows, há o SDelete.

A página na qual descobri o zerofree, recomenda reiniciar o GNU/Linux (da máquina virtual) no modo de recuperação (Safe Mode ou Recovery Mode) para executar o zerofree. Para simplificar a vida, eu prefiro inicializar a máquina virtual utilizando um Live-CD.

Se você tiver um Live-CD do Ubuntu, o zerofree pode ser instalado nele, via:

# apt-get install zerofree

O openSUSE também possui o zerofree nos repositórios oficiais da distribuição:

# zypper in zerofree

Se for usar o Live-CD de outra distribuição, pesquise na Internet sobre 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:

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

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

> 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 GNU/Linux:

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:

> 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,5 GB para 5 GB. 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 10 GB para 5,5 GB).

Abraço a todos e até mais!

Referências:
Essa dica foi publicada originalmente no meu blog.

Antônio Vinícius.

Outras dicas deste autor

Reduzindo o tamanho dos executáveis gerados pelo Lazarus (via IDE)

Instalação de drivers proprietários no Kubuntu

Resolvendo problemas de autenticidade de pacotes

Ícones na Área de Trabalho do KDE 4

Restaurando o GRUB após a instalação de outro sistema operacional

Leitura recomendada

Personalizando a página do Google

Destravando o Firefox e Thunderbird

Verificando tamanho de arquivos

Usando o ed

Resolvendo o problema de segmentation fault no XMMS

  

Comentários
[1] Comentário enviado por removido em 29/01/2014 - 17:16h

Valeu cara, muito útil. Eu costumava fazer isso com frequência no VMWare, mas em vez do programa que vc citou eu usava o seguinte comando na vm-guest:

# cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

Creio que deve funcionar também para o VBox, nunca testei.

Abraço.

[2] Comentário enviado por alemartinsale em 01/07/2014 - 17:32h

Usei o #cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill ao invés do zerofree, mas o comando final #VBoxManage modifyhd /caminho/do/hd/vm.vdi --compact igual ao seu $ VBoxManage modifyhd /caminho/para/o/hd/virtual.vdi --compact ...... em uma máquina que inicialmente tinha 4.2GB, cresceu com o zero.fill até 7.8GB e com o último comando reduziu para 7.2GB.......

Até postei a dúvida no fórum
http://www.vivaolinux.com.br/topico/Virtual-Box-1/Diminuir-volume-dinamico-VBox

Não sei o que deu errado..... mas também não entendi a parte de você subir a vm em modo de recuperação e instalar o zerofree pelo cd....

Por favor, me ajudem!! =]

Valeuu

[3] Comentário enviado por Evalmek em 26/04/2016 - 00:22h

Utilizando o comando sdelete -c c: não reduziu o tamanho ao final do processo,mas utilizando -z o processo funcionou normalmente:
sdelete -z c:

[4] Comentário enviado por tayronetalles em 21/06/2017 - 10:48h

O processo de limpeza demora em torno de quantos minutos?



Contribuir com comentário