O que é virtualização e para que serve?

Introdução

A virtualização está presente tanto no desktop de um entusiasta pelo assunto quanto no ambiente de TI de uma infinidade de empresas das mais variadas áreas. Não se trata de "moda" ou mero capricho: graças a este conceito, é possível, entre outros benefícios, economizar com equipamentos e obter resultados de determinadas tarefas computacionais em menor tempo. Neste texto de introdução ao assunto, você saberá o que é máquina virtual, conhecerá as principais técnicas de virtualização existentes e descobrirá as suas principais vantagens.

Links diretos:

- O conceito de virtualização;
- Benefícios da virtualização;
- Como a virtualização funciona?;
- Virtualização total e paravirtualização;
- Process Virtual Machine;
- Operating System Virtual Machine;
- Hardware na virtualização;
- VMware;
- Microsoft;
- Xen;
- VirtualBox;
- Desvantagens da virtualização.


O conceito de virtualização

Apesar de ser uma ideia antiga - seu surgimento se deu na década de 1960, se propagando com mais força a partir de 1970 -, a virtualização é extremamente importante para o mundo cada vez mais "digital" de hoje. Podemos definir o conceito como soluções computacionais que permitem a execução de vários sistemas operacionais e seus respectivos softwares a partir de uma única máquina, seja ela um desktop convencional ou um potente servidor.

Sim, é como se você se deparasse com um ou mais computadores distintos dentro de um só. A diferença é que estas máquinas são virtuais: na prática, elas oferecem resultados como qualquer outro computador, mas existem apenas logicamente, não fisicamente.

Cada máquina virtual se traduz em um ambiente computacional completo: praticamente todos os recursos de seu sistema operacional podem ser utilizados, é possível conectá-las em rede, consegue-se instalar aplicativos, enfim.

Virtualização
Virtualização

Uma das razões para o surgimento da virtualização é que, anos atrás, na época em que os mainframes dominavam o cenário tecnológico e não havia computadores pessoais, por exemplo, não existia a praticidade de "adquirir, instalar e usar um software" - este era acompanhado de bibliotecas e outros recursos que o tornavam quase que exclusivos ao o computador para o qual foi desenvolvimento originalmente.

Desta forma, muitas vezes uma organização que implementava um novo sistema se via obrigada a adquirir um equipamento apenas para executá-lo, em vez de simplesmente aproveitar o maquinário existente, deixando toda a operação mais cara no final das contas.

A virtualização conseguiu resolver este problema: pode-se aproveitar um computador já existente para executar dois ou mais sistemas distintos, já que cada um roda dentro de sua própria máquina virtual. Evita-se, assim, gastos com novos equipamentos e aproveita-se os possíveis recursos ociosos do computador.

Nos dias de hoje, a virtualização permite, por exemplo, que uma empresa execute vários serviços a partir de um único servidor ou até mesmo que um usuário doméstico teste um sistema operacional em seu computador antes de efetivamente instalá-lo. Do ponto de vista corporativo, seu uso atual se destina a várias aplicações, como sistemas de ERP, serviços de computação nas nuvens, ferramentas de simulação, entre muitos outros.


Benefícios da virtualização

Você já conhece algumas das vantagens da virtualização, mas a sua utilização oferece vários outros benefícios. Os principais são abordados a seguir:

- Melhor aproveitamento da infraestrutura existente: ao executar vários serviços em um servidor ou conjunto de máquinas, por exemplo, pode-se aproveitar a capacidade de processamento destes equipamentos o mais próximo possível de sua totalidade;

- O parque de máquinas é menor: com o melhor aproveitamento dos recursos já existentes, a necessidade de aquisição de novos equipamentos diminui, assim como os consequentes gastos com instalação, espaço físico, refrigeração, manutenção, consumo de energia, entre outros. Imagine o impacto que esta vantagem pode ter em um data center, por exemplo;

Aproveitamento de capacidade: 
	uma máquina fazendo o papel de três
Aproveitamento de capacidade: uma máquina fazendo o papel de três

- Gerenciamento centralizado: dependendo da solução de virtualização utilizada, fica mais fácil monitorar os serviços em execução, já que o seu gerenciamento é feito de maneira centralizada;

- Implementação mais rápida: dependendo da aplicação, a virtualização pode permitir sua implementação mais rápida, uma vez que a infraestrutura já está instalada;

- Uso de sistemas legados: pode-se manter em uso um sistema legado, isto é, antigo, mas ainda essencial às atividades da companhia, bastando destinar a ele uma máquina virtual compatível com o seu ambiente;

- Diversidade de plataformas: pode-se ter uma grande diversidade de plataformas e, assim, realizar testes de desempenho de determinada aplicação em cada uma delas, por exemplo;

- Ambiente de testes: é possível avaliar um novo sistema ou uma atualização antes de efetivamente implementá-la, diminuindo significativamente os riscos inerentes a procedimentos do tipo;

- Segurança e confiabilidade: como cada máquina virtual funciona de maneira independente das outras, um problema que surgir em uma delas - como uma vulnerabilidade de segurança - não afetará as demais;

- Migração e ampliação mais fácil: mudar o serviço de ambiente de virtualização é uma tarefa que pode ser feita rapidamente, assim como a ampliação da infraestrutura.


Como a virtualização funciona?

Uma solução de virtualização é composta, essencialmente, por dois "protagonistas": o hospedeiro (host) e o hóspede ou convidado (guest). Podemos entender o hospedeiro como sendo o sistema operacional que é executado por uma máquina física. O hóspede, por sua vez, é o sistema virtualizado que deve ser executado pelo hospedeiro. A virtualização ocorre quando estes dois elementos existem.

A forma como hospedeiro e hóspedes trabalham varia conforme a solução. Em um método bastante comum há a figura do VMM (Virtual Machine Monitor - Monitor de Máquina Virtual), que também pode ser chamado de hypervisor: trata-se de uma espécie de plataforma implementada no hospedeiro que recebe os sistemas a serem virtualizados, controlando os seus recursos e mantendo-os "invisíveis" em relação aos outros.

Para que possa fazer o seu trabalho, o VMM tem um tratamento diferenciado: ele pode ser executado no "modo supervisor", enquanto que programas comuns (aplicativos) rodam no "modo usuário".

No "modo supervisor", o software pode requisitar instruções que lidam diretamente com certos recursos hardware, como funcionalidades específicas do processador. No "modo usuário", estes recursos mais críticos não podem ser acessados diretamente, cabendo ao sistema operacional, que trabalha em "modo supervisor", fazer uma espécie de intermediação quando necessário.

O VMM precisa ter acesso privilegiado porque cabe a ele alocar os recursos a serem utilizados por cada máquina virtual sob sua responsabilidade, assim como determinar a ordem pela qual cada solicitação destas será atendida.

O hóspede é executado em "modo usuário", mas como a máquina virtual possui um sistema operacional, qualquer requisição de instrução mais crítica solicitada por este é "interceptada" pelo hypervisor, que se encarrega de fornecê-la.

Virtual Machine Monitor
Virtual Machine Monitor

Virtualização total e paravirtualização

A virtualização por meio de Virtual Machine Monitor é comumemente dividida em duas técnicas: a virtualização total (full virtualization) e a paravirtualização (paravirtualization).

Na virtualização total, o sistema operacional do hóspede trabalha como se de fato houvesse uma máquina física inteiramente à sua disposição. Desta forma, o sistema não precisa sofrer nenhuma adaptação e trabalha como se não houvesse virtualização ali. O problema é que esta abordagem pode ter algumas limitações consideráveis.

Uma delas é o risco de algumas solicitações do hóspede não serem atendidas da maneira esperada. Isso acontece, por exemplo, quando o hypervisor não consegue lidar com determinada instrução privilegiada ou quando um recurso de hardware não pode ser plenamente acessado por não haver drivers (uma espécie de software que "ensina" o sistema operacional a lidar com um dispositivo) na virtualização capazes de garantir sua plena compatibilidade.

A paravirtualização surge como uma solução para problemas do tipo. Nela, o sistema operacional do hóspede roda em uma máquina virtual similar ao hardware físico, mas não equivalente.

Como este método, o hóspede é modificado para recorrer ao hypervisor quando necessitar de qualquer instrução privilegiada e não diretamente ao processador. Assim, o VMM não precisa interceptar estas solicitações e testá-las (tarefa que causa perda de desempenho), como acontece na virtualização total.

Além disso, a paravirtualização diminui expressivamente os problemas com compatibilidade de hardware porque o sistema operacional do hóspede acaba podendo utilizar drivers adequados - na virtualização total, os drives disponíveis são "genéricos", isto é, criados para suportar o máximo possível de dispositivos, mas sem considerar as particularidades de cada componente.

A principal desvantagem da paravirtualização é a necessidade de o sistema operacional ter que sofrer modificações para "saber" que está sendo virtualizado, podendo gerar custos com adaptação e atualização ou limitações referentes à migração para um novo conjunto de hardware, por exemplo.

Na virtualização total, vale relembrar, não há necessidade de alteração do sistema, mas o procedimento fica sujeita aos problemas mencionados no início deste tópico. Assim, a adoção de um modo ou outro depende de análises e testes que possam determinar qual é mais vantajoso para determinado serviço.


Outros métodos de virtualização

O VMM não é a única técnica de virtualização que existe. Para que possa atender às mais variadas necessidades, vários métodos foram (e são) desenvolvidos. Entre os demais, tem-se o Process Virtual Machine, o Operating System Virtual Machine e a virtualização assistida por hardware.

Process Virtual Machine (Máquina Virtual de Processo)

Neste método, a máquina virtual funciona como uma aplicação qualquer rodando dentro do sistema operacional. Um dos exemplos mais populares de máquinas virtuais do tipo é a linguagem de programação Java: nela, quando um programa é compilado, um código específico é gerado para ser executado por uma JVM (Java Virtual Machine - Máquina Virtual Java).

O Virtual Machine Monitor é uma camada de software diretamente ligada ao hardware, por isso, permanece ativo durante todo o tempo em que o computador permanecer ligado. No Process Virtual Machine, a máquina virtual é tratada como um processo, como o seu nome indica. Assim, assim quando a sua execução é concluída, o ambiente da máquina virtual deixa de existir.

Operating System Virtual Machine (Máquina Virtual de Sistema Operacional)

Você já sabe que um único computador pode suportar mais de uma máquina virtual, sem que uma saiba da existência da outra. O problema é que, muitas vezes, esta abordagem pode comprometer o desempenho. Uma das maneiras de lidar com este problema é o uso da técnica Operating System Virtual Machine (Máquina Virtual de Sistema Operacional).

Aqui, a máquina física recebe um sistema operacional, mas há a criação de vários ambientes virtuais sobre este. Cada um destes ambientes tem acesso a determinados recursos, como espaço em disco e quotas de processamento, mas compartilham do mesmo kernel (núcleo, isto é, a parte principal do sistema operacional). Normalmente, um ambiente não sabe da existência do outro.

Máquinas Virtuais de Sistema Operacional são bastante utilizadas, por exemplo, em empresas de hospedagem de sites: cada ambiente é oferecido a um cliente como se fosse um sistema exclusivo, quando, na verdade, o servidor está sendo compartilhado com vários outros usuários.

Hardware na virtualização

Até agora, lidamos com a virtualização como sendo uma variedade de técnicas baseadas em software. Mas o hardware também pode ter participação importante em soluções do tipo.

Empresas como Intel e AMD, as maiores fabricantes de processadores do mundo, desenvolveram (e desenvolvem) tecnologias que possibilitam aos seus chips um trabalho aprimorado em soluções de máquinas virtuais, especialmente no que diz respeito à virtualização total.

No caso da Intel, muitos de seus processadores atuais contam a tecnologia Intel Virtualization Technology (Intel VT), que consiste em um conjunto de instruções aplicadas ao chip especialmente para tratar de tarefas de virtualização. A AMD tem uma tecnologia equivalente (não há compatibilidade de uma com a outra), de nome AMD Virtualization (AMD-V).

Entre os recursos oferecidos por estas tecnologias está a capacidade de facilitar o trabalho de fazer com que o processador funcione como um conjunto de chips, um para cada máquina virtual em uso.


Algumas soluções de virtualização

Como a virtualização pode atender às mais distintas aplicações, há várias soluções do tipo no mercado, assim como diversas empresas especializadas no segundo. Eis algumas das mais conhecidas: VMware, Microsoft, Xen e VirtualBox.

VMware

A VMware é uma empresa de origem norte-americana especializada em virtualização. Seus produtos são bastante conhecidos no mercado e atendem a aplicações dos mais variados tamanho.

Um deles - o produto de entrada, por assim dizer - é o VMware Player, um software gratuito de virtualização que permite ao usuário doméstico criar uma máquina virtual para rodar outros sistemas operacionais no Windows ou no Linux. Assim, pode-se estudar um sistema, fazer testes de softwares, entre outros.

Ubuntu Linux no Windows 7 por meio do VMware Player
Ubuntu Linux no Windows 7 por meio do VMware Player

Outra solução bastante conhecida da empresa é o VMware Server, que também é gratuito, mas tem a proposta de atender ao segmento de servidores de pequeno e médio porte.

As soluções pagas da empresa, no entanto, são muito mais amplas em recursos, e podem atender desde servidores mais simples até grandes data centers.

Microsoft

A Microsoft também tem presença expressiva no mercado de virtualização, especialmente porque os seus softwares da categoria se integram facilmente aos seus sistemas operacionais - pelo menos na maioria das vezes.

Um deles é o gratuito Virtual PC, que permite ao usuário rodar em um computador com Windows versões antigas da plataforma ou mesmo outros sistemas operacionais, como distribuições Linux. Aqui, a ideia também é a de permitir ao usuário avaliar outros sistemas operacionais, realizar testes em softwares, enfim.

Mas o destaque mesmo fica por conta do Hyper-V, uma solução de virtualização que é integrada à linha de sistemas operacionais para servidores da empresa (como o Windows Server 2012), embora também funcione em determinadas versões para uso doméstico ou em escritórios (como o Windows 8).

Tendo como base o conceito de hypervisor, o Hyper-V consegue lidar com vários cenários de virtualização, inclusive aqueles de alto desempenho, podendo trabalhar, por exemplo, com data centers virtuais.

Entre os vários recursos do Hyper-V estão uma funcionalidade que permite passar máquinas virtuais de um servidor para outro (para que o primeiro seja reparado, por exemplo) e a capacidade de criar réplicas - é possível ter um número ilimitado de "cópias" de virtual machines para utilizá-las em testes ou cobrir imediatamente um serviço que ficou indisponível.


Xen

Xen é outro nome bastante forte quando o assunto é virtualização. Trata-se de uma solução baseada em VMM que teve seu desenvolvimento promovido pela Universidade de Cambridge, no Reino Unido. O projeto é compatível com várias plataformas e arquiteturas.

Disponibilizado como software livre, o Xen é gratuito e o seu código-fonte pode ser acessado por qualquer pessoa. Por isso, seu uso é bastante difundido no meio acadêmico e por entusiastas de sistemas Linux, por exemplo.

Em 2007, a XenSource, companhia que mantinha o projeto, foi comprada pela Citrix, outra grande empresa do segmento de virtualização. Assim, também é possível encontrar soluções pagas desta que levam o nome Xen.

VirtualBox

O VirtualBox é um projeto iniciado em 2007 por uma empresa alemã de nome Innotek, mas que hoje pertence à Oracle. Sua proposta é a de permitir ao usuário rodar um sistema operacional dentro do outro sem enfrentar complexidade.

Há versões do software para os principais sistemas operacionais do mercado, como Windows, OS X e distribuições Linux. A versão mais importante do VirtualBox tem código-fonte aberto e é gratuita, mas a Oracle disponibiliza edições para uso corporativo que exigem pagamento de licenças.


Desvantagens da virtualização

A infinidade de soluções e métodos disponíveis faz com que a virtualização atenda às mais variadas necessidades, como você já sabe, mas também não podemos entender o conceito como um "remédio milagroso" para todos os problemas de TI. Dependendo das circunstâncias, a virtualização também pode ter desvantagens. Eis algumas:

- Sobrecarga afeta a todas as máquinas virtuais: para começar, a quantidade de máquinas virtuais que um computador pode suportar não é ilimitada, razão pela qual é necessário encontrar um equilíbrio para evitar sobrecarga, do contrário, o desempenho de todas as máquinas virtuais será afetado;

- Segurança: se houver uma vulnerabilidade de segurança no VMM, por exemplo, todas as máquinas virtuais poderão ser afetadas pelo problema;

- Portabilidade: dependendo da solução em uso, migrar uma máquina virtual pode ser um problema. Um exemplo hipotético: quando um sistema utiliza instruções AMD-V, mas precisa ser transferido para uma máquina Intel;

- Contingência: em aplicações críticas, é importante ter um computador que possa atuar imediatamente no lugar da máquina principal (como um servidor), pois se esta parar de funcionar, todos os sistemas virtualizados que rodam nela também serão interrompidos;

- Desempenho: a virtualização pode não ter bom desempenho em todas as aplicações, por isso é importante avaliar muito bem a solução antes de sua efetiva implementação;

- Gastos: pode haver gastos não previstos com manutenção, mão-de-obra, treinamento, implementação e outros.


Finalizando

Apesar de se tratar de um conceito antigo - seu surgimento remete à década de 1960, como é informado no início do texto -, a virtualização tem ganhado grande destaque nos últimos anos e certamente terá seu espaço em soluções computacionais futuras.

Isso se deve ao fato de o poder de processamento do cenário atual ser elevado o suficiente para que determinadas aplicações possam aproveitar a capacidade ociosa dos computadores e também porque, com a informatização atingindo praticamente todos os setores da sociedade, há cada vez mais experiência na identificação das melhores soluções para cada necessidade.

Para quem busca mais detalhes sobre o assunto, basta consultar as referências utilizadas na elaboração deste texto:

Escrito por - Publicado em 25_08_2012 - Atualizado em 21_02_2013