DestaqueGuias

Virtualização: Reduzir o espaço de discos dinâmicos

Introdução

Virtualização, em diversos mercados, é algo de muito útil.

Em servidores dá a possibilidade de utilizar melhor os recursos de uma máquina e ter ambientes distintos e separados na mesma máquina.

Em desktops pode ser útil para utilizar um sistema operativo de uma família diferente do sistema operativo que usamos, sem necessitar de usar dual boot, ou então para se fazer testes ou experiências, com uma ou mais máquinas, montando assim um cenário que está isolado da máquina real e que é descartável.

Quando se cria uma máquina virtual, normalmente tem-se duas hipóteses:

– Criar um disco virtual, que fica na forma de um ficheiro, e que seja estático, isto é, o ficheiro vai ter o tamanho total do espaço que atribuímos ao disco virtual.

– Criar um disco virtual, que fica na forma de um ficheiro, e que seja dinâmico, isto é, o ficheiro vai ocupando espaço consoante a informação que é escrita.

Os discos estáticos têm a vantagem de ter melhor performance, mas os discos dinâmicos dão a possibilidade de poupar espaço que não está a ser utilizado e de podermos dar mais espaço ao disco virtual que o realmente disponível no disco físico.

No entanto há um problema com os discos dinâmicos. Eles só são dinâmicos na parte de aumento de informação no disco virtual. Quando se apagam ficheiros, os discos virtuais não decrescem com esse apagar de informação.
Normalmente os produtos de virtualização têm uma ferramenta para compactar os discos virtuais, mas não é assim tão simples.

Os sistemas operativos, quando apagam informação, na verdade não a apagam do disco. Colocam apenas uma “nota” no sistema de ficheiros a informar que aqueles blocos deixam de ser visíveis.
Depois de apagados ficheiros, eles continuam lá e só desaparece a informação, quando o sistema de ficheiros volta a escrever informação nova nesses blocos.
É por esta razão que se consegue recuperar informação de ficheiros apagados, com alguns utilitários e também por isso que se deve correr uma ferramenta que realmente apague o disco, quando o vendemos ou é enviado para o lixo.

Devido a esta forma de funcionar dos sistemas de ficheiros, de nada serve compactar um disco virtual, sem antes correr uma ferramenta que coloque a zeros a parte do sistema de ficheiros que está marcada como para apagar.

Este guia vai explicar como colocar a zeros a informação apagada em máquinas virtuais Windows e Linux e em seguida o procedimento para reclamar o espaço que não estava a ser usado, diminuindo assim o tamanho do disco virtual.

Para este guia vou usar o Virtualbox, que é um produto de virtualização “Tipo 2”, isto é, corre em cima de um sistema operativo, que é grátis e que tem versões para Windows, Linux, OS X e Solaris.
No entanto, vou dar exemplos para outros produtos de virtualização.


Máquinas virtuais Windows

Como podem ver na imagem, tenho uma máquina virtual Windows 7, que está a ocupar 9,9 GB.
Esta máquina virtual é pouco usada, por isso não espero que o disco fique muito mais pequeno, mas como exemplo, serve.

A primeira coisa a fazer é ligar a máquina virtual, aceder ao disco e apagar os ficheiros que não nos interessam. Ficheiros de “setup” que já não precisamos, temporários, etc.

Em seguida, deve-se sempre correr um “defrag” ao disco. É bom para libertar algum espaço e para ter um disco virtual mais rápido.
Apesar de estar a usar Windows 7 e explicar para esta versão do Windows, os mesmo procedimentos aplicam-se a outras versões do Windows.
Em Windows 7, basta ir ao “Control Panel” e no “Search” escrever:

defrag

Vamos escolher o disco de Sistema e outros discos e partições que existam. Neste exemplo, só tenho uma partição e um disco, mas o procedimento é o mesmo para os discos restantes que tiverem.
Escolher a “drive” C: e carregar no botão:

Defragment disk

O “defrag” é um procedimento em que não há uma previsão do tempo.
Depende se o disco está ou não muito fragmentado, do espaço em disco e da velocidade de acesso ao disco.
No entanto podem verificar o que o Windows está a fazer no campo:

Progress

O “defrag” acaba, quando tiverem a data e hora no campo:

Last Run

Nessa altura, podem fechar a janela.

Em seguida temos que fazer o download de um utilitário que coloque o espaço vazio a zeros.
O utilitário que aconselho é o Sdelete da Sysinternal, visto que é simples de usar e grátis. Podem encontra-lo neste link.

Nota: Se forem utilizadores avançados ou administrador de sistemas, vejam os utilitários da Sysinternals da Microsoft. Salva o crescimento de cabelos brancos.

O download é um ficheiro zip que contém o utilitário e o “EULA”.
Podem extrair o zip para qualquer lugar. Eu escolhi colocar em:

C:\SDelete

Este programa é executado por linha de comando, por isso temos que aceder ao menu “Iniciar” e escrever:

cmd

E em seguidar carregar no “Enter”.

Dentro da linha de comandos, vamos executar o comando:

C:\SDelete\sdelete.exe -c c:\

Efectuar o mesmo comando, para outras partições ou discos que tenham.

Enquanto ele está a ser executado, têm um status do progresso com a percentagem.
Este procedimento também pode ser rápido ou não. Depende do tamanho do disco, informação nele colocada e velocidade de acesso ao disco.

Depois do “SDelete” completar a sua tarefa, podem fechar a linha de comandos, aceder ao menu iniciar e desligar a máquina virtual, carregando em:

Shut down

No caso do Virtualbox, na máquina física, temos um comando para compactar o disco.
O comando é sempre igual em qualquer plataforma. O comando é o seguinte

VBoxManage modifyhd "caminho para o local do ficheiro vdi" --compact

Mais uma vez, a velocidade da compactação depende da velocidade de acesso ao disco físico, do tamanho do disco virtual e da informação nele contida.
Têm um status com a percentagem, para verificar o tempo que está a correr.

Como podem ver, a imagem do disco virtual passou de 9,9 GB para 8,9 GB, o que é um ganho de 1 GB numa máquina virtual pouco utilizada.

 

Máquinas virtuais *nix

Neste caso, tenho uma máquina com Ubuntu Server Linux, que é relativamente recente, mas onde já passou bastante informação, mas agora tem poucos dados em disco.
Devido a este facto, o disco da máquina virtual tem 9 GB, mas espero recuperar todo o espaço que se encontra apagado.

Como podem ver na imagem, correndo o comando:

df -h

Dentro da máquina virtual, podemos ver que só tenho 1,1 GB ocupados.

Para colocarmos todo o espaço vazio a zeros, podemos correr o comando:

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

Para o objectivo que se pretende, este comando é quase um “hack”. Na verdade, existem programas que têm como objectivo colocar a zeros o espaço livre, como o “zerofree”, mas só funciona em sistemas de ficheiros da familia “Ext”, pode não haver nos repositórios de todas as distribuíções Linux e *nix e é preciso montar o sistema de ficheiros em modo “read only”.
Por isso, o comando que usei é um pouco um “hack”, mas funciona na perfeição.

O comando o que faz é escrever sem limite o ficheiro “zero.fill” com zeros. Como não tem limite, chega a um ponto em que não tem mais espaço e o comando dá essa mensagem (não se assustem).
Em seguida espera 1 segundo e apaga o ficheiro “zero.fill”.
Como o ficheiro era composto só com zeros, quando ele é apagado, o espaço livre fica marcado com zeros, que é o que se pretende.

Este comando pode demorar algum tempo. Depende do espaço livre e da velocidade de escrita em disco.

Em seguida é só desligar a máquina, com o comando:

shutdown -h now

Mais uma vez, como na máquina virtual Windows, voltamos à máquina real e corremos o comando:

VBoxManage modifyhd "caminho para o local do ficheiro vdi" --compact

E mais uma vez temos uma barra de progresso com a percentagem.
Como neste caso ele vai libertar mais espaço, demora um pouco mais.

No final, passamos de um disco de 9 GB, para 1,2 GB. Com isto libertei 7,8 GB de espaço no disco real.

 

Reduzir espaço noutras plataformas

De referir que, apesar da forma como se compacta um disco noutras plataformas ser diferente, tem que se colocar na mesma o espaço vazio a zeros. Sem isso não se vai ver grandes resultados.

VMware

Em VMware existem duas formas de reduzir espaço. Uma com a máquina ligada e outra com a máquina desligada.

Com a máquina ligada, basta ter o agente do VMware instalado (que é sempre aconselhado por questões de performance) e aceder ao tab “Shrink” e ao tab “Suported partitions”.
Nesse tab é só escolher os discos que se quer reduzir e carregar no botão “Prepare to shrink”.

Se a máquina estiver desligada, é correr em linha de comandos, o comando:

vmware-vdiskmanager -d "caminho para o local do ficheiro vmdk"

Que vai desfragmentar o disco virtual.

Em seguida correr o comando:

vmware-vdiskmanager -k "caminho para o local do ficheiro vmdk"

Para compactar o disco.

Virtual PC

No Virtual PC, com a máquina ligada, temos que aceder ao tab “CD” e opção “Capture ISO Image”.
Apontamos para o ficheiro que se encontra em:
“C:\Program Files\Microsoft Virtual PC\Virtual Machine Additions\Virtual Disk Precompactor.iso”

Aceder à drive de CDs e arrancar com o programa.

Quando acabar, desligar a máquina virtual e aceder à consola do Virtual PC. Na consola, aceder ao tab “File” e opção “Virtual Disk Wizard”.

No “Wizard”, escolher o disco virtual e escolher a opção “Compact it”.

Hyper-V

Nas opções da máquina virtual, aceder à configuração do disco e escolher o botão “Edit”.
Dentro do “Wizard”, escolher a opção “Compact”.

Em seguida, escolher novamente a opção “Compact”.

 

Conclusão

Não há propriamente uma conclusão. Este artigo serve mais para transmissão de conhecimentos.

Na verdade, é bom de saber para as pessoas que usam muitas máquinas virtuais e têm pouco espaço em disco.
O conceito de disco dinâmico na verdade não significa que o disco virtual tenha o mesmo espaço que a quantidade de informação contida no disco.
O mecanismo só funciona para aumentar e não para diminuir.
Para diminuir é preciso algumas acções e algum tempo, mas para quem tem pouco espaço para as máquinas virtuais que tem, é a única forma de poupar espaço.

Ter pouco espaço para máquinas virtuais até é algo que acontece nos dias de hoje, para quem compra SSDs, que apesar de muito rápidos, costumam ser curtos a nível de tamanho total.
Infelizmente, não é o meu caso e na verdade tenho mesmo um disco mecânico muito curto. Este artigo também serve para essas situações.

Artigos Relacionados

Botão Voltar ao Topo