22 de out de 2007

Virtualizar ou não virtualizar?

Estamos vendo uma nova grande onda na área de TI. Quer dizer, a onda é nova na era x86, mas a tecnologia em sí já existe desde os anos 1960 quando era utilizada em mainframes. O artigo que escrevo agora refere-se à recente utilização de máquinas virtuais na arquitetura x86.

Para quem está chegando agora, virtualizar significa disponibilizar os recursos de um computador físico (processador, armazenamento, memória RAM, interfaces de rede e outros) para sistemas operacionais distintos. Isto significa instalar vários sistemas em uma mesma máquina, cada um independente dos outros e com acesso "direto" ao hardware.


A essência da Virtualização: N servidores virtuais x 1 servidor físico


O compartilhamento de recursos

Há algumas ferramentas no mercado maduras o suficiente para realizar virtualizações: as nativas, como VMWare Server e Microsoft Virtual PC, e as chamadas "paravirtualiações", como o XEN do GNU/Linux - mas não quero me envolver na melhor escolha ou brigas ideológias, e sim discutir os reais benefícios da virtualização.

Estive no Symposia 2007, um evento mundial realizado pela VMWare com presença das grandes empresas de hardware (HP, IBM, Unisys, EMC entre outras) e pode-se dizer que todas estão apostando alto em virtualização. E com razão: pode-se aumentar brutalmente a eficiência, desempenho e disponibilidade, e ao mesmo tempo melhorar o custo benefínio. Quem não gostaria de conseguir tudo isso ao mesmo tempo?

Agora chegamos no dilema de todos os "tarados" por tecnologia: apreciamos a beleza das inovações por sí só, mas é necessário que se levante a aplicabilidade para os negócios. O downside de se conseguir todas as vantagens da virtualização é o alto custo inicial: servidores com alto processamento e memória RAM são necessários, assim como uma SAN para armazenar os dados. A real eficiência só aparece quando a razão Máquinas Virtuais x Servidores reais é alta (não há razão em construir toda uma estrutura para colocar apenas duas máquinas virtuais, por exemplo).

Portanto, em uma grande corporação, onde existe a real necessidade e orçamento para a implementação total, é fácil comprovar, implementar e pagar uma solução completa de virtualização com clusters e movimentação de máquinas virtuais entre servidores. Mas e nas pequenas e médias empresas? A virtualização ainda pode ser eficiente?

Tomemos como exemplo uma empresa com um servidor Linux defasado, sem atualização alguma e sem servidor de backup, e um outro servidor que tenha Windows instalado. Realizar uma atualização do sistema operacional Linux é uma tarefa necessária porém muito arriscada, pois dependeria somente de backups realizados em fitas DAT, e nesse ponto uma máquina virtual se mostraria útil. Há vários softwares de virtualização gratuitos e sólidos - caso do VMWare Server (o ESX é a solução paga da VMware) e da solução Microsoft, que deixou de ser cobrada. Instalar um servidor Linux virtual de backup em cima do servidor físico Windows é uma tarefa bastante trivial, e traz a segurança da redundância para a realização da atualização . É uma precaução extra muito mais simples que montar um computador somente para ser o backup e que pode reduzir muitas dores de cabeça no caminho.

Outra utilidade da virtualização em pequenas empresas é na criação de ambientes de teste. Estou trabalhando para encontrar a melhor forma de integração de sistemas Linux com o Active Directory, e criei algumas máquinas virtuais para realização de testes - brincar com NIS e Winbind podem trazer sérios danos ao SO, risco que poucos estariam dispostos a correr em servidores de produção.

Realizei testes comparativos para testar a performance da máquina virtual. Não foi o teste mais
correto devido às diferenças de hardware, porém serve para ter um parâmetro. O ambiente foi o seguinte:

1) Servidor Linux , Kernel 2.2, Dual Xeon 700Mhz, 2Gb RAM
2) Servidor Windows 2003 com VMWare Server instalado, single Intel Xeon Quad-Core 1.6Ghz, 2Gb RAM e Máquina Virtual Debian Linux Etch com 256MB de RAM alocados.

Com os dois servidores isolados, executo um processo do sistema que utiliza muito o processador. Todos os meses o processo é executado no servidor Linux e demora cerca de 45 minutos. Quando executado no servidor virtual, a "surpresa": o tempo não chegou a 15 minutos. Apesar da disparidade do hardware eu me ví realmente surpreso pois pensava que a máquina virtual perderia desempenho somente por ser virtual. Pura ignorância.

Pretendo executar testes mais precisos, como performance de discos e memória, mas desde já posso afirmar que a virtualização é uma boa saída inclusive para pequenos ambientes onde o investimento em TI não é alto, podendo tornar a vida dos administradores mais segura e eficiente.