Convertendo um disco pré-alocado do VMWare para um disco dinâmico.
Recentemente me incumbiram de uma tarefa de cuidar de alguns servidores virtuais de um cliente. O problema começou quando a diretoria decidiu que deveríamos redimensionar as máquinas virtuais para caberem em mais de um servidor, pois pretendiam reduzir o espaço ocupado no datacenter pelos servidores hospedeiros podendo assim passar de um rack inteiro para meio rack. Entretanto ninguém imaginou que as máquinas virtuais ocupassem quase que a totalidade do servidor hospedeiro. Ao acessar os equipamentos reparei que os discos das máquinas virtuais apesar de ocuparem muito espaço não estavam utilizando pouco mais de 10% do total, ou seja, um disco virtual de 80G estava com cerca de 8G utilizado realmente. A idéia que me passou pela cabeça é realizar um “shrink” do VMWare-Tools do equipamento e ir tomar um café e realizar outras tarefas, mas ao realizar o shrink percebi que não havia espaço suficiente no disco o que me forçou a tomar a seguinte atitude: copiar a máquina virtual para um disco externo.
Tomei essa atitude baseado nos seguintes eventos:
1 – O VMWare para realizar um “shrink” do disco precisa do dobro do espaço do disco virtual a ser copiado.;
2 – O disco virtual do equipamento que o “shrink” será executado tem 80G, o sistema utiliza 20G e o disco tem 120G;
Uma vez que o disco virtual e o arquivo vmx da máquina virtual foi copiado para o disco externo, conectei o mesmo a minha workstation pensando em realizar um “shrink offline”, antes de tudo desfragmentei o disco com o comando.
# vmware-vmdiskmanager -d “Windows 2003 Standard Primary.vmdk”
Após a desfragmentação utilizei o comando para realizar o “shrink offline”.
# vmware-vmdiskmanager -k “Windows 2003 Standard Primary.vmdk”
Após o longo período o vmware-vmdiskmanager me informou que o “shrink” havia sido realizado com sucesso, mas ao verificar o tamanho do arquivo do disco virtual percebi que o mesmo não havia realizado encolhido. Isso me deixou intrigado e resolvi rever a configuração da máquina virtual, foi quando percebi que o tipo do disco era pré-alocado fiquei chateado com a atitude do administrador anterior de ter criado discos pré-alocados para as máquinas virtuais e comigo mesmo por não ter verificado isso de imediato. Passada minha ligeira chateação resolvi transformar o disco pré-alocado da máquina virtual para um disco dinâmico ou, como informa o help do vmware-vmdiskmanager, growable (no pé da letra crescivel).
# vmware-vmdiskmanager -r “Windows 2003 Standard Primary.vmdk” -t 0 “Windows 2003 Standard Primary growable.vmdk”
Vou explicar melhor a sintaxe do comando acima.
O parâmetro -r do vmware-vmdiskmanager informa que o disco deve ser convertido e o parâmetro -t informa o tipo do disco. Existem 04 tipos de discos que o vmware pode criar/converter:
0 : Disco virtual dinâmico simples
1 : Disco virtual dinâmico repartido em arquivos de 2G
2 : Disco virtual pré-alocado
3 : Disco virtual pré-alocado repartido em arquivos de 2G
O tipo que utilizei foi o tipo 0 (Dinâmico simples) pois não gostaria de ter vários arquivos de 2G para ter que gerenciar e um pelo motivo que é muito mais simples gerenciar um único arquivo de disco virtual. Deve ser informado o arquivo de origem e o de destino, esse sempre precedido do tipo que deverá ser quando convertido.
Após a conversão do disco virtual fiquei com dois arquivos de disco virtual o original e o convertido, realizei o vmware-diskmanger -d para desfragmentar o disco convertido e depois o vmware -k para realizar o “shrink” do mesmo, funcionando dessa vez sem problemas.
# vmware-vmdiskmanager -d “Windows 2003 Standard Primary growable.vmdk”
# vmware-vmdiskmanager -k “Windows 2003 Standard Primary growable.vmdk”
Os comandos informados aqui também podem ser utilizados na versão windows do vmware server.