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
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.
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
- 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
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.
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.
Nenhum comentário:
Postar um comentário