Rss

  • youtube
  • linkedin
  • google

Como diminuir o tamanho de discos virtuais VMDK – parte 1

Onde trabalho temos alguns servidores de bancos de dados PostgreSQL em diversas máquinas virtuais rodando em um servidor VMWare. Até aí tudo bem, não fosse um detalhe que estava me incomodando. Todos eles usando versões antigas como 8.1 e 8.2, enquanto a versão atual é a 9.3.
Procurei saber e descobri que há versão 9.3 para o Centos 6.5 que é o que estamos usando para os novos servidores e resolvi então unificar os três servidores em um só.

Se você que leu até aqui e pensou “Unificar servidores?? Que buro! dá zero pra ele!” saiba que isso foi pensado e para nossa realidade é uma solução adequada.

Dito isso e com o dilema resolvido, parti para criar uma VM usando o Vagrant.

O Vagrant é uma excelente ferramenta de auxilio a nós DevOps. Com o uso dele podemos criar máquinas que podem ser facilmente compartilhadas entre os membros de uma equipe. Não vou entrar em detalhes de seu uso, apenas informar que utilizei uma Box de Centos 6.5 básica.

Até aqui estava tudo indo muito bem. Configurei a VM toda e instalei os softwares que iria utilizar, incluindo o PostgreSQL 9.3.

Quando fui migrar a base de produção é que começaram alguns problemas. O diretório do PGDATA, que é onde o PostgreSQL armazena os dados das tabelas, estava com mais de 40 GB. Fazer um dumpall e um restore on-the-fly não era uma opção e resolvi extrair o banco inteiro para posteriormente restaurar na VM.

Essa parte deu tudo certo. A restauração foi bem sucedida (após alguns perrengues, claro) e o servidor já estava funcionando.

Para minha surpresa, havia neste servidor muitas tabelas que eram backup de outras da mesma base ou que foram criadas para testes e o tamanho real da base seria bem menor se eu as excluísse. Foi o que fiz. Removi diversas tabelas, eliminei algumas outras coisas e o tamanho da base caiu para cerca de 20% do tamanho anterior. Além do mais, com o arquivo de dump comprimido, mais esse mesmo arquivo descompactado, o uso de espaço cresceu muito. Após apagar esses arquivos, não havia mais do que 8 GB dos 200 GB reservados do disco dedicado para o PostgreSQL. Como sabemos, o virtualizador é capaz de gerenciar o disco de forma que ele só cresça caso o espaço reservado seja efetivamente ocupado e como isso aconteceu, o disco Virtual já havia crescido para 70 GB.

Disco Com partição dedicada para Dados do PostgreSQL

Disco Secundário da Máquina Virtual com as bases de dados do SGBD PostgreSQL

Seria um problema transferir esse tamanho todo com segurança para alguma mídia ou via Rede e além de que precisávamos manter os espaços em disco o mais reduzido possível até migrar outros servidores, devido a limitações da máquina física. Como a maior parte desse VMDK era espaço em branco, tinha de haver uma forma de reduzir seu tamanho.
Se o tipo do disco fosse VDI, o aplicativo VBoxManage daria conta do recado, fazendo a compactação do espaço em branco ao final da partição, mas esse disco é do tipo VMDK por ser o mais compatível entre Virtualizadores diferentes.

O único jeito que sabia ser possível era clonando o disco. Como o cara do Linux aqui na empresa havia questionado sobre a estrutura de partições eu resolvi também que alteraria a estrutura (e o tamanho) do disco para o formato desejado e então resolvi clonar a instalação também.

Disco Primário da VM

Disco Primário da Máquina Virtual com os arquivos do Sistema Operacional Centos 6.5

Segue a receita que utilizei.

Primeiro eu iria reduzir o tamanho do disco usado pelo banco de dados. O primeiro passo é criar o disco que será o clone.

NOTA: No caso da máquina que eu estava usando, só havia uma controladora IDE. Então há a necessidade de adicionar outra controladora caso queira adicionar os dois discos de uma só vez. Vou seguir incluindo apenas um disco de cada vez ligada ao IDE Secundário Slave pois acredito que a maioria dos casos se enquadraria neste.

A figura abaixo mostra o botão de Adicionar Disco Rígido.

Inserindo novo Disco na VM

VirtualBox: Configurando Máquina Virtual – Adicionando novo Disco VMDK

Após clicar nele será requisitado escolher se deseja criar um novo ou carregar um já existente. No nosso caso devemos escolher Criar novo disco.

VirtualBox - Tipo de Disco a ser Adicionado na VM

O próximo passo é definir qual tipo de alocamento desejado. Escolha Dinamicamente alocado. Mais a frente explicarei as vantagens dessa escolha.

Selecionando o tipo de alocação

Selecionando o tipo de alocação

Depois, será perguntado sobre o tipo de arquivo do disco rígido a ser criado. No nosso caso, estamos sempre falando de VMDK, portanto escolha esta opção.

NOTA: Usar o tipo VDI cria arquivos menores e mais compatíveis com o VirtualBox, porém ele não é legível pelo VMWare, por exemplo. Como no meu caso o destino será um servidor de VMWare, é importante escolher o formato mais compatível com ele, que na lista abaixo é o VMDK.

Seleção de opção para arquivo de disco rígido VMDK

Escolhendo o tipo de arquivo de disco rígido

Defina o nome e o tamanho do disco. Como estamos falando de clonagem e redução de tamanho físico, tenha em mente de que o tamanho deve ser no mínimo maior que a quantidade de dados reais no disco a ser clonado. Não se preocupe em criar um disco muito grande e não haver espaço real no seu computador. Como escolhemos alocação dinâmica no item anterior, o espaço será alocado dinamicamente, ou seja, o disco só cresce quando há dados efetivamente ocupando espaço.

Virtual Box - Nome e tamanho do arquivo de disco rígido

Definindo tamanho físico virtual do disco e seu nome

Pronto! O Nosso disco alvo está criado e será exibido como na imagem abaixo. Repare nos tamanhos informados. Um disco VMDK recém criado e vazio terá cerca de 25 MB (um VDI apenas 2 MB).

Novo disco criado

Novo disco criado

 

Ir para a parte 2 deste tutorial

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.