Virtualização
Fabiano Muchalski – [email protected]
Rodolfo Bertelli Cavalcante – [email protected]
Resumo:
Neste artigo é apresentado o tema virtualização, abordando as máquinas virtuais,
terminologias, definições e características. Também são explicados os tipos, limites, vantagens e
desvantagens da virtualização.
Palavras-chave: Virtualização, máquinas virtuais, emulação, virtualização completa, paravirtualização.
1 Introdução
3 Terminologia
Virtualização segundo a EMA (Enterprise
Management Association) é a técnica que
“mascara” as características físicas de um recurso
computacional dos usuários, das aplicações ou dos
sistemas que os utilizam.
A
virtualização
em uma
definição
generalizada é um processo que permite a
execução de múltiplos sistemas operacionais e de
suas aplicações em máquinas virtuais sobre uma
máquina física. Mas também encontramos a
virtualização na implementação de desktops
remotos, de discos virtuais, na computação em
cluster e mesmo em dados como, por exemplo,
por meio do uso de SQL, entre outros.
(OLIVEIRA, CARISSIMI, TOSCANI, 2010).
O processo ou sistema operacional que
executa sobre uma máquina virtual é denominado
de hóspede ou convidado, enquanto a plataforma
subjacente onde a máquina virtual executa é
denominada hospedeiro ou sistema nativo. A
camada de virtualização que implementa a
máquina virtual é genericamente denominada de
runtime (ou executivo) para as máquinas virtuais
de processo, e de VMM (monitor de máquina
virtual), ou hipervisor (hypervisor), para as
máquinas virtuais de sistema. (OLIVEIRA,
CARISSIMI, TOSCANI, 2010).
2 Máquinas Virtuais
Conceitualmente um sistema de computação é
formado por camadas. O hardware é o nível mais
baixo em todos os sistemas. O kernel executando
no próximo nível utiliza instruções de hardware
para criar um conjunto de chamadas ao sistema
para uso por camadas externas. Os programas de
sistema acima do kernel, portanto, são capazes de
usar as chamadas ao sistema ou as instruções de
hardware. Os programas de sistema, por sua vez,
tratam o hardware e as chamadas ao sistema como
se ambos estivessem no mesmo nível.
Alguns sistemas levam esses esquemas a um
passo adiante, permitindo que os programas de
sistema sejam chamados facilmente pelos
programas aplicativos. Os programas aplicativos
podem visualizar tudo abaixo deles na hierarquia
como se os últimos fossem parte da máquina
propriamente dita. Essa abordagem em camadas é
levada ao conceito de máquina virtual.
Usando as técnicas de escalonamento de CPU
e de memória virtual um sistema operacional pode
criar a ilusão de que um processo tem o seu
próprio processador com sua própria memória
virtual. (SILVERSCHATZ, GALVIN, GAGNE,
2000).
4 Definições e Características
Os primeiros conceitos que se deve ter em
sobre virtualização são de instruções privilegiadas
e não privilegiadas.
As instruções não privilegiadas são aquelas
que não modificam a alocação ou o estado de
recursos compartilhados por vários processos
simultâneos, tais como processadores, memória
principal e registradores especiais. Em oposição a
essas
instruções,
temos
as
instruções
privilegiadas, que podem alterar o estado e a
alocação desses recursos.
Um computador pode operar em dois modos
distintos, o modo de usuário, no qual as
aplicações normalmente são executadas e não é
possível executar instruções privilegiadas, ou o
modo de supervisor, que tem controle total sobre
a CPU, podendo executar tanto as instruções não
privilegiadas como as privilegiadas. O sistema
operacional é executado neste modo.
Uma máquina na qual é feita a virtualização
pode contar com apenas um SO hospedeiro sendo
executado por vez e diversos SOs hóspedes.
O VMM é responsável pela virtualização e
controle dos recursos compartilhados pelas
máquinas virtuais, tais como, processadores,
dispositivos de entrada e saída, memória..
Também é função do VMM escalonar qual
máquina virtual vai executar a cada momento. O
VMM é executado no modo de supervisor e as
máquinas virtuais são executadas em modo de
usuário, assim, quando estas tentam executar uma
instrução privilegiada, é gerada uma interrupção e
o VMM se encarrega de emular a execução desta
instrução. (MENEZES, MATTOS, 2008).
4.1 Máquina Virtual de Processo
É aquela que fornece um ambiente de
execução para apenas uma aplicação por meio de
uma ABI virtual. A máquina virtual de processo é
criada sobre demanda e só existe quando o
processo esta sendo executado.
A linguagem de programação Java e sua
máquina virtual JVM (Java Virtual Machine) é um
bom exemplo dessa concepção, a JVM é uma
máquina virtual de processo que possui código
binário específico, os bytecodes, para os quais
uma aplicação Java é compilada. (OLIVEIRA,
CARISSIMI, TOSCANI, 2010).
4.2 Máquina Virtual de Sistema
Oferece um ambiente de execução completo
onde pode coexistir um sistema operacional e
vários processos. Uma máquina física pode
executar
múltiplos
sistemas
operacionais
hóspedes, um em cada máquina virtual.
Existem dois tipos de implementação de
máquinas virtuais de sistema: hipervisores do tipo
I e do tipo II (Goldberg, 1973; IBM Corporation,
2005).
4.2.1 Hipervisores tipo I ou nativo
Os hipervisores tipo I, ou nativos, são aqueles
que executam diretamente sobre o hardware de
uma máquina real e as máquinas virtuais são
postas sobre ele. Sua função básica é compartilhar
os recursos de hardware de uma máquina real
entre as diferentes máquinas virtuais de forma que
cada uma delas tenha a ilusão de que esses
recursos são privativos a ela. Exemplo: Xen e
VMware. (OLIVEIRA, CARISSIMI, TOSCANI,
2010).
A figura abaixo mostra as camadas desse tipo
de máquina virtual:
Aplicação
Aplicação
SO1
SO2
Hipervisor (VMM)
Hardware
4.2.2 Hipervisores tipo II ou hóspedes
Hipervisores tipo II, ou hóspedes, são
caracterizados por executar sobre um sistema
operacional nativo como se fosse um processo
deste. Nesse caso, o que o hipervisor oferece é
uma camada de virtualização composta por um
sistema operacional hóspede, possivelmente
diferente do sistema operacional nativo, e por um
hardware virtual criado sobre os recursos de
hardware oferecidos pelo sistema operacional
nativo. Exemplo: VMware Player, VirtualBox e o
MS VirtualPC. (OLIVEIRA, CARISSIMI,
TOSCANI, 2010).
A figura abaixo mostra as camadas desse tipo
de máquina virtual:
Aplicação
Aplicação
SO1
SO2
Sistema operacional
Hardware
5 Técnicas de Virtualização e
Emulação
As técnicas mais utilizadas para virtualização
atualmente são a paravirtualização e virtualização
total (completa).
Um problema nas implementações das
máquinas virtuais está no que fazer quando um
sistema hóspede executa instruções privilegiadas,
sendo estas exclusivas do sistema nativo.
Em 1974, Popek e Goldberg classificaram o
conjunto de instruções de um processador em três
grupos:
Privilegiadas, que se executadas por um
programa em modo usuário causam exceções;
Sensíveis de controle, que permitem a
alteração de recursos do sistema;
Sensíveis comportamentais, cujo resultado ou
comportamento depende da configuração de
recursos.
Popek e Goldberg, então propuseram o
seguinte teorema: Um monitor de uma máquina
virtual pode ser implementado de forma adequada
sempre
que
as
instruções
sensíveis
comportamentais forem um subconjunto das
instruções privilegiadas.
A virtualização é possível mesmo em
processadores que não seguem a restrição acima,
mas ao custo de um pior desempenho.
(OLIVEIRA, CARISSIMI, TOSCANI, 2010).
5.1 Virtualização Completa
Virtualização completa consiste em prover
uma réplica (virtual) do hardware subjacente de
tal forma que o sistema operacional e as
aplicações possam executar como se tivesse
executando diretamente sobre o hardware, a
grande vantagem é que o sistema operacional
hóspede não precisa ser modificado para executar
sobre o monitor de máquina virtual ou hipervisor.
Porém todas as instruções executadas pelo
sistema hóspede devem ser testadas na máquina
virtual para saber se elas são sensíveis ou não, o
que representa um custo de processamento.
O segundo inconveniente de virtualização
completa é a dificuldade em se implementar uma
máquina virtual que imite o comportamento exato
de cada tipo de dispositivo, dada a grande
diversidade de dispositivos existentes.
Por fim, a implementação de uma máquina
virtual de processo deve contornar alguns
problemas técnicos relativos à implementação da
gerência de memória. Há toda uma gerência de
alocação, liberação e controle de acesso às páginas
que devem ser respeitadas. É necessário
“converter” o espaço de endereçamento do sistema
hóspede para o do sistema nativo disputando
recursos com outros eventuais sistemas hóspedes,
porém, esse tratamento também representa uma
queda de desempenho. (OLIVEIRA, CARISSIMI,
TOSCANI, 2010).
A figura abaixo mostra a representação da
virtualização completa:
Ap. 1
Ap. n
Ap. 1
Ap. n
Sistema
Sistema
Operacional 1
Operacional 2
(original)
(original)
VMM (Virtual Machine Monitor)
Hardware
5.2 Paravirtualização
A paravirtualização é uma abordagem
alternativa para contornar os problemas de
desempenho da virtualização total. A vantagem é
que as instruções de usuário (user ISA) não
precisam ser alteradas e podem ser executadas
diretamente sobre o processador nativo. Ao
preservar o user ISA, todas as aplicações que
foram desenvolvidas para o sistema hóspede
podem ser executadas sem alterações.
Outra vantagem da paravirtualização é que ela
provê aos sistemas hóspedes acessos aos recursos
de hardware a partir dos drivers instalados no
próprio hipervisor. Dessa forma, os sistemas
hóspedes podem usar os recursos reais da máquina
e não apenas dispositivos genéricos como era o
caso na virtualização total. A máquina virtual
apenas gerencia o compartilhamento do hardware
e monitora as áreas de memória e de disco
alocadas para cada um dos sistemas hóspedes.
Assim, a máquina virtual pode informar ao
sistema operacional hóspede qual a área de
memória física que está alocada para ele e com
isso, a gerência de memória do hóspede é capaz de
traduzir diretamente as páginas virtuais em
quadros físicos, sem necessitar de uma etapa
adicional
de
conversão.
(OLIVEIRA,
CARISSIMI, TOSCANI, 2010).
A figura abaixo mostra a representação da
paravirtualização:
Ap. 1
Ap. n
Ap. 1
Ap. n
Sistema
Sistema
Operacional 1
Operacional 2
(modificado)
(modificado)
VMM (Virtual Machine Monitor)
Hardware
6 Vantagens e Desvantagens
Existem diversas vantagens na virtualização,
a seguir serão citadas as principais:
Segurança: Usando máquinas virtuais, pode
ser definido qual é o melhor ambiente para
executar cada serviço e assim, a vulnerabilidade
de um serviço não prejudica os demais.
Confiança e disponibilidade: A falha de um
software não prejudica os demais serviços.
Custo: A redução de custos é possível de ser
alcançada com a consolidação de pequenos
servidores em outros mais poderosos. Essa
redução pode variar de 29% a 64%.
Adaptação às diferentes cargas de trabalho:
Variações na carga de trabalho podem ser tratadas
facilmente.
Balanceamento de carga: Toda a máquina
virtual está encapsulada no VMM, facilitando
trocar a máquina virtual de plataforma, a fim de
aumentar o seu desempenho.
Suporte a aplicações legadas: Quando uma
empresa decide migrar para um novo Sistema
Operacional é possível manter o sistema
operacional antigo sendo executado em uma
máquina virtual, o que reduz os custos com a
migração.
A virtualização também pode ser útil para
aplicações que são executadas em hardware
legado, que está sujeito a falhas e tem altos custos
de manutenção, assim, é possível executar essas
aplicações em hardwares mais novos, com custo
de manutenção mais baixo e maior confiabilidade.
Por outro lado, existem as desvantagens da
virtualização, sendo as principais:
Segurança: Segundo Neil MacDonald,
especialista de segurança da Gartner, hoje em dia,
as máquinas virtuais são menos seguras que as
máquinas físicas justamente por causa do VMM,
pois se o sistema operacional hospedeiro tiver
alguma vulnerabilidade, todas as máquinas
virtuais que estão hospedadas nessa máquina
física estão vulneráveis.
Gerenciamento: Os ambientes virtuais
necessitam ser instanciados, monitorados,
configurados e salvos, gerando uma necessidade
de grande investimento. O VMWare é a
plataforma mais flexível e fácil de usar, mas ainda
apresenta falhas que comprometem a segurança.
Desempenho: a introdução de uma camada
extra de software entre o sistema operacional e o
hardware gera um custo de processamento
superior ao que se teria sem a virtualização.
Também não se sabe quantas máquinas virtuais
podem ser executadas por processador, sem que
haja o prejuízo da qualidade de serviço.
(MENEZES, MATTOS, 2008).
7 Ferramentas de Virtualização
Existem no mercado algumas ferramentas
para realizar virtualização, abaixo são listadas as
principais.
7.1 VMware Player
• Objetivo de permitir que usuários tenham
contato com a virtualização.
• A estratégia adotada é de virtualização total.
• Instala um driver específico chamado
(VMDriver) que permite que as máquinas virtuais
acessem os drivers de dispositivo do sistema
hóspede.
• Disponível gratuitamente para os sistemas
operacionais Windows e Linux com versão
comercial (VMware Fusion) para o MacOS X.
• A VMware Player não permite que um
sistema operacional hóspede seja criado na
máquina virtual a partir de zero. (OLIVEIRA,
CARISSIMI, TOSCANI, 2010).
7.2 Virtual PC 2007
• Desenvolvida
pela
Microsoft
para
desenvolvimento e teste de software para
múltiplas plataformas;
• A estratégia adotada é de virtualização total;
• Pode ser configurada para executar qualquer
outro sistema operacional;
• Uma diferença que o Virtual PC 2007 tem em
relação ao VMware é a possibilidade de se definir
máquinas virtuais e instalar o seu próprio sistema
operacional.
(OLIVEIRA,
CARISSIMI,
TOSCANI, 2010).
7.3 Xen
Por usar Paravirtualização e ser uma
ferramenta OpenSource, o Xen, do ponto de vista
de eficiência, é apontado por muitos autores
([VILLANUSTRE, 2005], [JONES, 2006] e
[XEN]) como sendo a melhor escolha para
virtualização, fazendo com que seus sistemas
Guests executem com desempenho de mais de
95% do desempenho da máquina host.
O Xen é executado diretamente acima do
hardware e abaixo do sistema operacional, não
podendo ser instalado em um sistema Windows
como se fosse um aplicativo.
Como ele precisa alterar o kernel dos sistemas
Guests há um empecilho relativo a licenças em
sistemas proprietários de código fechado. Para
estes sistemas a virtualização só é possível se
houver suporte do hardware. (GONÇALVES,
JUNIOR).
8 Conclusão
A utilização de máquinas virtuais está se
tornando uma alternativa para vários sistemas de
computação pelas vantagens em custos e
portabilidade.
A crise econômica mundial ocorrida nos
últimos anos tem influenciado nesse crescimento
levando-se em conta a economia que a
virtualização pode representar na questão de
custos, pois uma única máquina real pode
executar o trabalho de várias máquinas quando
utilizado a máquina virtual. A economia vem
tanto na diminuição de novos hardwares quanto
no barateamento dos custos de energia. A
diminuição de servidores diminui o investimento
em quantidade de técnicos necessários para
administrar esses servidores, e esses podem
ocupar mais seu tempo com melhorias nos
serviços e prevenção de indisponibilidade..
Além da justificava econômica para o
crescimento do uso da virtualização podemos
levar em consideração ao novo conceito de T.I.
verde, pois como já mencionado, o menor uso de
máquinas reais gera menos consumo de energia
elétrica e menos lixos eletrônicos.
Mas claro que também existe o lado negativo,
como por exemplo, a queima de um componente
eletrônico pode ocorrer sem a previsão do
administrador e isso pode resultar em uma
indisponibilidade
de
vários
serviços
simultaneamente. É verdade que com todo o
sistema de monitoração dos sistemas, replicação,
migração de backup dos sistemas virtualizados, o
tempo de recuperação em casos de falhas
diminuem, mas é algo a ser avaliado.
9 Referências
1. Rômulo Silva de Oliveira, Alexandre da Silva
Carissimi e Simão Sirineo Toscani. Sistemas
Operacionais, Série livros didáticos informática
UFRGS. Bookman, Porto Alegre, 2010
2. Abraham Silverschatz, Peter Galvin e Greg
Gagne. Sistemas Operacionais, Conceitos e
Aplicações. Campus, 2000
3. Diogo Menezes Ferrazani Mattos. Artigo:
Virtualização: VMWare e Xen. 2008
4. Danilo Brandão Gonçalves e José Cláudio Vahl
Junior. White Paper, Virtualização.
Download

Artigo - Virtualização