Como posso reduzir um disco VDI dinamicamente crescente do VirtualBox?

32

Meus discos virtuais (VDI) em crescimento dinâmico de várias instalações do Ubuntu no Virtual Box estão realmente "crescendo" de fato.

A exclusão de arquivos na máquina virtual não libera o espaço que meu arquivo VDI tirou do espaço do disco rígido do host.

Como faço para reduzir esses arquivos para dar espaço de disco rígido não utilizado ao host?

    
por Takkat 07.04.2014 / 19:45

2 respostas

31

Um arquivo de disco rígido virtual Virtual Box em crescimento dinâmico é capaz de aumentar a demanda da máquina virtual até o tamanho máximo definido na configuração deste arquivo. No entanto, ele não libera o espaço dos arquivos excluídos no sistema operacional convidado.

Caso o disco tenha crescido demais, podemos compactá-lo novamente, desde que o espaço não utilizado seja preenchido com zeros e a unidade esteja no formato VDI.

Para um sistema de arquivos ext2 para ext4, isso pode ser feito a partir do guest do Ubuntu com o utilitário de linha de comando zerofree * .

zerofree /dev/sdxX

Isso precisa que a unidade não esteja em uso e seja desmontada . Portanto, podemos ter que vinculá-lo temporariamente a outra VM que criamos para essa finalidade, ou precisamos inicializar um ambiente ao vivo do Ubuntu nessa VM.

Substitua /dev/sdxX pela partição formatada para ext2, ext3 ou ext4 em questão.

Em mais de uma partição, eu tenho que repetir zerofree para cada partição. Lembre-se de que, ao preencher zeros, o arquivo virtual aumentará temporariamente até seu tamanho máximo.

Uma vez que todo o espaço em disco não utilizado é preenchido com zeros, então reduzimos o drive com

VBoxManage modifyhd <name>.vdi --compact

Isso diminuirá consideravelmente o tamanho do arquivo do nosso arquivo VDI.

* Em um convidado do Windows, podemos substituir o espaço não utilizado pelo utilitário sdelete .

    
por Takkat 07.04.2014 / 19:45
1

Aqui estão algumas maneiras alternativas de zerar o espaço livre em disco (que pode ser a parte mais demorada). Depois disso, você ainda terá que executar VBoxManage modifyhd <disk> --compact para compactar o arquivo de disco real.

Este comando pode zerar o disco enquanto estiver desmontado:
apt-get install zerofree
zerofree -v /dev/sdxN

Aqui está um exemplo de como fazer com que o dd imprima periodicamente a saída:
dd if=/dev/zero of=temp-file-on-disk bs=20M

# run this to get the process ID of the dd command
pgrep -l '^dd$'
# then put the process ID on the command line to "kill -USR1"
# this will tell dd to print the current status (in another terminal)
kill -USR1 $(pgrep -l '^dd$' | awk '{print }')

Aqui está um programa dd -like que imprime automaticamente a saída periodicamente:
apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M
    
por chronospoon 09.01.2015 / 19:46