5 de janeiro de 2011

PCs reais e virtuais


Com a afirmação no mercado dos processadores com dois ou mais núcleos, aumentam as possibilidades de explorar melhor este hardware tão poderoso antes presente só em servidores, afinal, para que ter um dual core se vamos apenas usar o Word ou acessar a Internet?

Um recurso bastante util e que se beneficia das configurações de hardware poderosas que temos disponíveis hoje é a virtualização, ou seja, a possibilidade de criar computadores virtuais dentro de um computador "real".

A virtualização não é novidade no PC SOHO - Small Office and Home Office - desde que o Linux começou a se popularizar, uma aplicação desde tipo meio que acompanhou seu desenvolvimento: o VMware é um dos melhores e mais famosos softwares de máquinas virtuais da atualidade e por algum tempo foi praticamente o único nos PCs.

Mas, acompanhando a popularização do Linux vieram processadores cada vez mais poderosos, começando com o Pentium 4 com tecnologia HT, passando pelos "dual core" como o Athlon 64 X2, Pentium D até os moderníssimos Core 2, Phenom e Core i. Um melhor aproveitamento destas plataformas permitiu que outros softwares do gênero e até soluções de hardware surgissem não só nos servidores mas também para estações de trabalho.

Como funciona?

O grande segredo de uma boa virtualização está na ligação entre o hardware real da máquina e o hardware virtual, e quando falamos de ligação entre hardware e software no PC, estamos falando de BIOS, "a alma do PC". É o BIOS que diferencia o hardware de um "IBM PC compatible" de outros computadores, isso porque à nível de hardware, todos os computadores seguem (mais ou menos) a mesma filosofia, seja ele um PC, um Macintosh, um Haldheld, um videogame e até mesmo um celular; tudo se baseia em um processador central e mais cinco sistemas de suporte à este: memória ROM, memória RAM, I/O, Clock e fonte de alimentação. Veja o diagrama:


Diagrama genérico de um sistema micro processado.

Em uma descrição rápida:
  • CPU
    ou processador é quem processa os dados e realiza os cálculos digitais;
  • ROM
    é onde está o boot, ou seja, o "pontapé" inicial do sistema e o firmware que dará as características fundamentas do sistema;
  • RAM
    é onde os softwares, dados fixos e variáveis que o processador está usando no momento ficam armazenados e podem ser modificados;
  • Clock
    é uma referência de tempo, um relógio que dá ritmo e sincronismo às operações do sistema;
  • I/O
    são as entradas e saídas de dados. É por onde o processador se comunica com o "resto do mundo";
  • Fonte de alimentação
    é quem fornece energia elétrica para os diversos blocos que compõem o sistema.
Na máquina virtual, o hardware já está presente, já que usaremos o hardware real do PC e os recursos que ele disponibiliza. Porém, precisaremos de um BIOS capaz de interpretar o hardware que será acessível pelo S.O. virtualizado e interligá-lo ao hardware real. É isso que o software de virtualização faz, cria um ambiente isolado e com seu próprio BIOS nos formatos de um BIOS de PC, que vai permitir instalar outro sistema operacional. Veja o diagrama em camadas abaixo:


Camadas de um sistema "simplificado" com virtualização.

Claro que esta é só uma das formas de se fazer a coisa que pode variar muito dependendo da plataforma e até do criador do software. Já a algum tempo os fabricantes de processadores vem introduzindo recursos, subsistemas e comandos adicionais nestes componentes, de forma a melhorar a capacidade de virtualização nos computadores, tanto de uso geral quanto de aplicações específicas como servidores.

Pra que serve?

Podemos imaginar o uso de máquinas virtuais em várias situações comuns:
  • Programadores em JAVA, C++, desenvolvedores Web, ou qualquer outra arquitetura que exija testes em várias plataformas;
  • Técnicos que precisam conhecer e estudar novos sistemas operacionais;
  • Testes de softwares que podem ser potencialmente perigosos para nosso computador;
  • Testar a eficácia de uma ferramenta de remoção, infectando previamente um sistema com um vírus;
  • Testes de softwares de redes e de comunicação entre vários sistemas diferentes;
  • ...
As possibilidades são muitas, imagine ter um PC que "roda" Windows 98, Windows XP, Windows Vista, diversas distribuições Linux, OpenBSD e outros S.O., sem que necessariamente você precise reiniciar o PC toda vez que quer trocar de S.O.

Como fazer?

Existem várias versões de softwares de virtualização, para aplicações diferentes e para diferentes sistemas operacionais. Os mais conhecidos são os da família VMware, mas outros produtores estão investindo alto para competir neste mercado em expansão como por exemplo a Microsoft, a Oracle e a Apple entre outros.

Para simplificar, vou dividir o "mundo" da virtualização no PC em possibilidades:

Servidores de máquinas virtuais
Como exemplos temos o VMware Server e o Microsoft Virtual Server 2005. Ambos são sistemas para servidores onde podemos instalar servidores virtuais, capazes de atender a vários usuários. O VMware Server tem versões para Linux e Windows, além de outras plataformas e foi liberado para download gratuito devido a concorrência do servidor virtual da Microsoft, também gratuito.

Mas estes sistemas são complicados de instalar e configurar e requerem hardwares muito poderosos além de softwares adicionais como é o caso do IIS, o servidor Web da Microsoft, que é requisito obrigatório tanto para o VMware quanto para o Microsoft Virtual Server 2005 quando instalados no Windows. Tem como ponto forte o desempenho nas aplicações, mas o desempenho gráfico é fraco, e chega a ser irritante mover o mouse na janela dos S.O. vitual.
Hypervisores
São aplicações para vistualização em maior escala. São instalados em sistemas que serão dedicados à virtualizar sistemas, funcionando como uma camada pré sistema operacional. Suas aplicações são bastante complexas, mas vem crescendo exponencialmente no mercado de virtualização corporativa. Praticamente todas as empresas citadas acima tem soluções hypervisor.
Máquinas virtuais para workstations
São mais fáceis de instalar e configurar que os Servers e apesar de mais limitados, permitem criar máquinas virtuais com várias configurações possíveis de memória, tamanho de HD, e alguns hardwares. Tem como pontos fortes o desempenho de aplicações de usuário, com isso tem um desempenho gráfico melhor que as versões Server, porém pode ser complicado testar sistemas servidores devido às limitações de configuração.

O VMware Virtual Desktop é sem dúvidas o melhor nessa categoria, tanto no Linux quanto no Windows, mas tem a desvantagem de ser pago e um tanto caro se for usado apenas para fazer testes. Outras soluções gratuitas e Open Source estão disponíveis, mas na maioria dos casos são para Linux como é o caso do Xen e o KVM.

A Microsoft vem fazendo um bom trabalho no Windows com o Microsoft Virtual PC. Da versão 2004 SP1 em diante, ele está bastante estável, muito fácil de instalar e configurar, além disso é gratuito e otimizado para instalações Windows, apesar de rodar Linux satisfatoriamente; permite rodar muito bem algumas distribuições como o Ubuntu o SUSE e o Mandriva.

Temos ainda o excelente VirtualBox que pulou de mãos algumas vezes, indo parar nas graças da Oracle que, apesar das desconfianças dos usuários, continua investindo no aplicativo, que já está na versão 4, gratuita para uso pessoal e dotada de muitos recursos interessantes.
Virtual players
São softwares de virtualização que praticamente não permitem configuração e também não é possível instalar o S.O. do zero. Temos então que conseguir uma máquina virtual já pronta e o player para usá-la. Bons exemplos são o VMware Player e o Cygwin, ambos gratuitos.
Emuladores e APIs
Apesar da confusão de alguns, emuladores não são máquinas virtuais, e sim implementações das API - Application Programming Interface ou Interface de Programação de Aplicativos - de outros sistemas operacionais que permitem executar aplicativos deste. O melhor exemplo é o Wine* que permite executar até aplicativos como o Office e alguns jogos para Windows no Linux. O Qemu é outro bom exemplo.

Já aviso que virtualização não se resume a isso. Tem muito mais a ser estudado e compreendido neste ramo da T.I. que só tem feito crescer nos últimos anos.

A seu tempo, voltarei a cada um desses e a outros "modelos" de virtualização, com explicações detalhadas e aplicações práticas.

Enquanto isso, se tiver dúvidas, comente!

________________________________________
* Adeptos mais "românticos" desta aplicação, talvez por vergonha de afirmar que seu objetivo é deixar o Linux "com cara" de Windows, não consideram-na um emulador. Até que me provem o contrário, ela funciona exatamente como qualquer emulador, então, tecnicamente, é um emulador.


Esta é uma edição revisada, ampliada e atualizada. A versão anterior não está mais disponível na Internet.

0 comentários neste post

Postar um comentário

Atenção comentarista!
  • Todos os comentários serão rigidamente moderados;
  • Identifique-se! Comentários anônimos não são recomendados;
  • Comentários com três ou mais links serão removidos;
  • Comentários escritos em miguxês ou excesso de gírias serão removidos;
  • Comentários escritos com predominância de maiúsculas serão removidos;
  • Por favor, prove que você é coerente, educado e bem informado: conheça o restante do site, saiba quem somos, sobre o que, para quem e como escrevemos antes de comentar futilidades;
  • Respeite as opiniões dos autores e dos outros comentaristas. Seja breve e sem ofensas;
  • Escreva comentários relevantes e que contribuam de alguma forma para o bem da humanidade;
  • Não seja um inútil social. Lembre-se que o mundo não gira ao seu redor.