Sunteți pe pagina 1din 31



 
 


  
  



 !  #   !  %  &        & 

%
%'             (  #   )#    *%   )   + 
*% )
  &
'
  *% 
,  
'    &.&   & 
' &
 )    )   
/   
  
  &      0)  
    , '   )
 !         !  &
     1
     2/  &        
 !    )'      
     '&)
3   
( 
(     5
6) 
(#  *&  &  %7
  )
 !'  &
  !'&)   
     &
 8  ,&          1    2/      &  
& 




           !
 

"# "
%'          

) *
+,) - ./  0   1  23
 * 4567 
        ! 7 
 ) *
+
323 
     
8   
 !
  !

19!
1    
%'  
1    
%'2

40

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

4.1. Introduo
A virtualizao e o uso de mquinas virtuais se tornaram um assunto destaque no
mundo da tecnologia da informao (TI), apesar de no ser exatamente uma novidade. A
introduo da linguagem de programao Java nos anos 90 trouxe consigo a noo de
mquina virtual, mas sua origem mais antiga. O termo mquina virtual foi
introduzido na dcada de 60 como um conceito de sistemas operacionais para indicar
uma abstrao em software de um sistema computacional em hardware. J nos anos 70
era comum que cada computador (mainframe), mesmo de um nico fabricante, tivesse
seu prprio sistema operacional causando problemas de portabilidade e de sistemas
legados. Na poca, a soluo encontrada foi explorar a risca o conceito de mquina
virtual, ou seja, uma camada de software que oferece um ambiente completo similar ao
de uma mquina fsica que executa sobre um sistema computacional nativo. Uma
mquina virtual contm seu prprio sistema operacional, bibliotecas e aplicativos e
totalmente independente e isolada das demais. Essa abordagem foi usada com sucesso
pela IBM que, na linha de mainframes 370 e seus sucessores, oferecia uma mquina
virtual portada para cada uma das plataformas de hardware sobre a qual as aplicaes
executavam. Dessa forma era possvel executar, ou migrar, uma aplicao, de uma
plataforma a outra, desde que houvesse uma verso de mquina virtual para a
plataforma alvo.
Na dcada de 80, a medida que os computadores comearam a se tornar mais
comuns e terem seu hardware uniformizado, a quantidade de sistemas operacionais
convergiu para algumas poucas famlias (Unix, Macintosh e Microsoft), cada uma com
um pblico-alvo e um conjunto de aplicativos. Nesse contexto, o emprego de mquinas
virtuais perdeu importncia. Entretanto, o aumento do poder computacional dos atuais
processadores, a disseminao de sistemas distribudos e a onipresena das redes de
computadores causaram, por vrias razes, o ressurgimento da virtualizao.
At agora, a virtualizao foi apresentada como uma tcnica que permite a
execuo de mltiplos sistemas operacionais e de suas aplicaes em mquinas virtuais
sobre uma nica mquina fsica. Entretanto, o conceito de virtualizao mais amplo.
Segundo a EMA (Enterprise Management Association), virtualizao a tcnica que
mascara as caractersticas fsicas de um recurso computacional dos sistemas,
aplicaes ou usurios que os utilizam. Nesse contexto, encontramos a virtualizao na
implementao de desktops remotos, de discos virtuais, na computao em cluster e
mesmo em dados como, por exemplo, atravs do uso de XML, SQL, JMS, entre outros.
Ainda, a partir do momento que se define mquinas virtuais, surge, quase que
imediatamente, a necessidade de conect-las em rede. Todas as mquinas virtuais
existentes provm interfaces de redes virtuais idnticas as suas similares reais, isso ,
com endereos MAC e podem ser interligadas a equipamentos de interconexo de rede
reais, ou virtuais, como switches e roteadores. Outro ponto interessante de uma mquina
virtual que, por ela ser um ambiente isolado, o comprometimento de sua segurana
no afeta as demais. Inclusive, possvel ter polticas de segurana diferentes para cada
uma delas.
Com base no que foi mencionado at o momento, possvel imaginar que a
virtualizao oferece um potencial muito grande para criar e manter infra-estruturas de
rede. O objetivo deste trabalho fornecer os principais conceitos da virtualizao e de
suas formas de implementao. Atualmente existem vrias ferramentas que oferecem
suporte a virtualizao, tanto solues proprietrias, quanto em software livre. As mais

Virtualizaca o: Princpios Basicos e Aplicaco es

conhecidas so Xen. VMware, Microsoft VirtualPC 2007 e Virtualbox, e sero


apresentadas como estudos de caso. Conclui-se com a discusso de algumas aplicaes
tpicas da virtualizao em infra-estruturas de TI e processamento paralelo.

4.2. Fundamentao terica


Um computador um sistema de computao relativamente complexo devido
variedade de componentes de hardware e de software que o constitui e s interaes
entre eles. Entretanto, essa complexidade nunca foi um empecilho para o crescimento e
a evoluo dos computadores em geral devido ao seu projeto de forma hierrquica, com
diferentes nveis de abstrao e com interfaces bem definidas entre esses nveis. O uso
de nveis de abstrao e interfaces, tanto para os componentes de software, como para os
de hardware, permitiu que cada componente fosse visto como um subsistema
independente oferecendo servios para os demais. Os detalhes internos de
implementao de cada um deles no precisam ser conhecidos: basta conhecer as
interfaces e os servios oferecidos.
O princpio bsico o de dividir para conquistar, o que significa dividir o
sistema computacional em vrias camadas funcionais hierrquicas, cada uma com um
nvel de abstrao apropriado e provendo servios para a camada superior atravs de
uma interface bem definida. Uma camada n no enxerga os detalhes internos da camada
n-1, mas apenas as suas abstraes e interfaces. Por exemplo, possvel saber o qu um
processador capaz de executar analisando seu conjunto de instrues assembly sem
conhecer como ele internamente construdo. Isso permite que um compilador gere
cdigo compatvel para processadores de fabricantes diferentes, desde que eles ofeream
a mesma interface, isso , o mesmo conjunto de instrues com os mesmos cdigos de
mquina. Da mesma forma, programadores C no precisam estar cientes de detalhes do
hardware e do sistema operacional quando eles usam recursos padres da linguagem.
Entretanto, essa organizao cria uma dependncia entre as camadas em funo
das interfaces disponibilizadas, ou seja, obrigatrio respeitar uma interface para usar
os servios daquela camada. Uma soluo para eliminar essa dependncia seria mapear
uma interface para outra com a introduo de uma camada intermediria de adaptao.
Esse mapeamento a base da virtualizao e foi introduzido atravs do conceito de
isomorfismo [Popek e Goldberg, 1974]. O isomorfismo consiste em transformar o
estado de um sistema A em um estado equivalente em sistema B. Para uma seqncia s
de operaes que modificam o estado Ei em um estado Ej no sistema A, existe uma
seqncia s que executam uma transformao equivalente do estado Ei para o estado
Ej no sistema B. Apesar do isomorfismo tambm poder ser usado para explicar o que
abstrao, [Smith e Nair 2005] fazem uma diferenciao interessante entre abstrao e
virtualizao: enquanto uma abstrao esconde detalhes internos de um componente, a
virtualizao os apresenta ao exterior de uma forma diferente da real.
Um computador composto por duas grandes camadas, a de hardware e a de
software, que por sua vez so divididas em subcamadas. Para melhor compreender o
princpio de funcionamento da virtualizao, e os tipos de mquinas virtuais existentes,
preciso conhecer aspectos bsicos dessas duas camadas. Esses aspectos dizem respeito
a alguns conceitos bsicos de arquitetura de computadores e de sistemas operacionais,
os quais sero apresentados a seguir.
2. 1 Aspectos de arquitetura de computadores
Por arquitetura de computadores entende-se a descrio lgica e funcional dos
componentes que formam o hardware de um sistema computacional e suas interaes,

41

42

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

mas sem entrar em detalhes de como cada um desses componentes implementado


internamente. Segundo [Hennessy e Patterson 2007], a rea de arquitetura de
computadores engloba pelo menos trs grandes categorias:

Conjunto de instrues de mquina (Instruction Set Architecture - ISA): a


abstrao do processador atravs de seu conjunto de instrues de mquina
(assembly). Inclui, alm das instrues, os modos de endereamento
possveis e os registradores de mquina existentes.

Projeto do sistema: envolve os componentes externos ao processador como


barramentos, memria, controladores, arbitramento, subsistema de E/S e
suas interconexes. Trata ainda dos mecanismos de suporte necessrios a
multiprocessadores, por exemplo.

Microarquitetura: descrio de como so constitudas as unidades internas


de um processador e como elas so interligadas para implementar o
conjunto de instrues. Diz respeito a como um processador organizado
internamente.

Cada uma dessas categorias possui um nvel de abstrao que fornece um


conjunto de servios e uma interface. Apenas as duas primeiras categorias, conjunto de
instrues e projeto de sistema, so importantes no contexto deste captulo. A figura 4.1,
fornece uma viso esquemtica das diferentes camadas de abstrao encontradas em um
sistema computacional incluindo o sistema operacional e seus aplicativos.
O conjunto de instrues (ou ISA) a interface limtrofe entre o nvel de
abstrao de hardware e o de software. Essa interface composta por todos os cdigos
de mquina aceitos pelo processador e que correspondem, cada um, a uma instruo.
Tipicamente, um processador possui pelo menos dois modos de operao, noprivilegiado e privilegiado1. A interface ISA dividida em dois subconjuntos para
refletir cada um desses modos de operao. O primeiro formado por todas as
instrues de mquina que podem ser diretamente executadas por programas de usurio
e, por isso, constitui o que denomina de instrues de usurio ou user ISA. Os
programas de usurio executam em modo no-privilegiado. O segundo subconjunto,
formado pelas instrues de sistema (system ISA), constitudo por aquelas instrues
de mquina capazes de configurar o comportamento do prprio processador e de acessar
componentes de hardware diretamente, como as instrues de E/S. Essas instrues so
acessveis unicamente em modo privilegiado e, na prtica, so executadas
exclusivamente pelo ncleo do sistema operacional. A user ISA e a system ISA esto
assinaladas na figura 4.1 como interfaces 1 e 2, respectivamente.
Ao iniciar um sistema computacional, os primeiros passos realizados antes de se
passar o controle ao sistema operacional esto relacionados com a configurao do
processador e de seu hardware. Isso feito atravs da inicializao de estruturas internas
e de registradores de controle do processador como, por exemplo, vetor de interrupo
e a unidade de gerncia de memria (Memory Management Unit MMU), e das
controladoras dos dispositivos de hardware. Tipicamente, cada controladora possui
registradores internos que permitem sua configurao, leitura e escrita de dados e a
consulta de seu estado de operao. Esses registradores so vistos pelo processador
como uma srie de endereos especiais definidos no momento do projeto e constituem
uma interface entre o processador e os dispositivos de hardware. Na figura 4.1, essas
interfaces so assinaladas como 3, 4 e 5. As instrues de mquina que permitem
configurar o processador e acessar endereos especiais de E/S pertencem ao conjunto de
Tambm denominados, respectivamente, de modo usurio e modo sistema ou ainda modo
no-protegido e modo protegido.
1

Virtualizaca o: Princpios Basicos e Aplicaco es

instrues de sistema (system ISA). Note que, aps a inicializao, o sistema


operacional tem acesso ao hardware, ao sistema de memria, ao processador e aos
dispositivos de E/S atravs dessas instrues.

Figura 4.1 Arquitetura de computadores como um conjunto de camadas de


abstrao (adaptada de [Smith e Nair 2005])

4.2.2 Aspectos de sistemas operacionais


Qualquer pessoa que atualmente use um computador sabe que existe algo denominado
de sistema operacional que, de alguma forma, controla os diversos dispositivos que o
compe. A definio clssica para sistema operacional, encontrada em vrios livros, a
de uma camada de software inserida entre o hardware e as aplicaes que executam
tarefas para os usurios e cujo objetivo tornar a utilizao do computador, ao mesmo
tempo, mais eficiente e conveniente [Silberschatz, 2001].
A utilizao mais eficiente busca um maior retorno no investimento feito no
hardware. Maior eficincia significa mais trabalho obtido pelo mesmo hardware. Isso
obtido atravs da distribuio de seus recursos (espao em memria principal,
processador, espao em disco, etc) entre diferentes programas. Cada programa tem a
iluso de estar executando sozinho no computador quando na realidade ele est
compartilhando com os demais. Uma utilizao mais conveniente do computador
obtida, escondendo-se do usurio detalhes de hardware, em especial, dos perifricos de
entrada e sada. Tipicamente, isso feito atravs da criao de recursos de mais alto
nvel oferecido atravs de interfaces grficas. Por exemplo, os usurios usam espao em
disco atravs do conceito de arquivos. Arquivos no existem no hardware. Eles formam
um recurso criado a partir do que o hardware oferece. Isso um exemplo de
virtualizao de recursos.
O conceito fundamental em sistemas operacionais o de processo. Um processo
uma abstrao que representa um programa em execuo. Um processo representado
por um espao de endereamento lgico composto por regies de texto e de dados, uma
pilha e um heap (figura 4.2). A regio de texto contm o cdigo a ser executado. A
regio de dados mantm todas as variveis globais, inicializadas ou no. A pilha serve
para armazenar o endereo de retorno de uma chamada de funo, para passagem de
parmetros, alm de ser tambm a rea de memria onde so criadas as variveis locais.
Por fim, a regio de heap, que serve para a alocao dinmica de pores de memria.

43

44

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

Figura 4.2 A abstrao de processo em um sistema operacional

Cada processo um ambiente de execuo isolado dos demais processos que


executa sobre um processador lgico, isto , um processador virtual, vinculado a si no
momento da criao do processo2. Cabe ao ncleo do sistema operacional, atravs de
seu escalonador, alternar os diferentes processadores lgicos (virtuais) sobre um
processador fsico. A iluso de paralelismo criada pelo chaveamento rpido entre os
processos.
De uma forma simplificada, a execuo de um processo pode ser acompanhada
pela abstrao de dois registradores lgicos (virtuais): o contador de programa
(Program Counter - PC) e o apontador de pilha (Stack Pointer SP). O contador de
programa fornece, em um dado instante de tempo, um endereo da regio de texto onde
se encontra a instruo a ser executada. O apontador de pilha informa a regio onde
devem ser armazenados o endereo de retorno de uma chamada de funo, seus
parmetros e suas variveis locais. atravs do apontador de pilha que se l e escreve
nos parmetros de funo e nas variveis locais a funo. Cabe ao sistema operacional,
atravs de seu escalonador e do dispatcher, mapear os registradores lgicos PC e SP de
um processo para os registradores fsicos PC e SP e nicos do processador durante o
chaveamento de contexto3. A alternncia entre os diversos PC e SP lgicos, dos
diferentes processos, nos registradores PC e SP fsicos fornece a iluso de que vrios
processos esto executando simultaneamente (figura 4.2). Portanto, um processo nada
mais que um tipo de mquina virtual que executa um nico programa.
Outro princpio importante em sistemas operacionais a sua estruturao em
camadas hierrquicas, com seus diferentes nveis de abstraes e interfaces, de forma
similar ao que ocorre em nvel de hardware. Inicialmente, na seo anterior, foi visto
que um processo de usurio s pode empregar instrues no-privilegiadas (user ISA),
entretanto, em certas situaes, como para realizar E/S, os processos de usurio
Na realidade, os sistemas operacionais atuais possuem duas abstraes para unidade de
execuo: processos e threads. Porm, continua vlida a noo de um processador virtual por
unidade de execuo. Um estudo desses conceitos extrapola o escopo deste trabalho. O leitor
pode obter detalhes em [Silberschatz, 2001][Oliveira, Carissimi e Toscani, 2004].
3
O chaveamento de contexto mais complexo do que simplesmente agir sobre os registradores
SP e PC, pois envolve salvamento de estado de todos os registradores fsicos do processador e a
atualizao de vrias tabelas internas, mas para esta discusso, essa simplificao suficiente.

Virtualizaca o: Princpios Basicos e Aplicaco es

precisam executar instrues do modo privilegiado. Para permitir isso, sem violar o
princpio dos dois modos de operao, o sistema operacional disponibiliza aos
programas de usurio um conjunto de chamadas de sistema (system calls). As chamadas
de sistema possibilitam que os programas de usurios acessem de forma indireta e
controlada, atravs do sistema operacional, os recursos de hardware. Ao fazer isso, cabe
ao sistema operacional realizar todos os procedimentos necessrios para garantir que o
processo de usurio no comprometa o correto funcionamento do sistema. As chamadas
de sistema constituem, portanto, uma interface entre o processo de usurio e o sistema
operacional.
Como mencionado anteriormente, um dos objetivos de um sistema operacional
tornar mais conveniente o uso de um sistema computacional. Dentro desse contexto
surgem as bibliotecas de funes, as quais disponibilizam uma srie de funcionalidades
para simplificar a construo de programas. Por exemplo, a biblioteca de sockets prov
os mecanismos para o desenvolvimento de aplicaes em rede ou, ainda, a biblioteca
gtk que facilita a construo de interfaces grficas. Cada funo de biblioteca realiza um
determinado procedimento e identificada por um nome, parmetros e valor de retorno.
O conjunto de funes de uma biblioteca constitui o que denominado de interface
aplicativa ou apenas API, do ingls, Application Programming Interface. Algumas APIs
de bibliotecas apenas encapsulam chamadas de sistemas para apresent-las de uma
forma mais amigvel ao programador, enquanto outras podem ser mais complexas e
envolver vrias chamadas de sistema para realizar uma determinada funcionalidade.
Uma API definida para ser usada em conjunto com uma linguagem de
programao de alto nvel. Assim, por exemplo, um programador C utiliza em seu
cdigo fonte chamadas de funes de uma biblioteca com sintaxe e semntica do C. A
prpria biblioteca um programa escrito em uma linguagem de alto nvel que,
posteriormente, compilada e gera um cdigo objeto com a implementao de cada
funo que disponibiliza. O cdigo objeto de uma biblioteca, junto com o cdigo objeto
resultante da compilao de um programa fonte, forma o cdigo executvel.
Para que os programas de usurio e as bibliotecas possam executar sobre um
dado sistema operacional e processador (plataforma) preciso respeitar as chamadas de
sistema disponibilizadas e ter um cdigo binrio compatvel com o do processador. Isso
obtido atravs da compilao do programa e das bibliotecas para essa plataforma. O
produto final um cdigo executvel que contm os equivalentes binrios das
instrues de usurio (user ISA) e das chamadas de sistema (system calls). A juno
das verses binrias dessas duas interfaces denominada de interface binria da
aplicao, ou ABI (Application Binary Interface). Na prtica, o que um programa em
execuo enxerga de uma plataforma apenas a sua ABI (figura 4.3) e isso que ser
a base para a construo de mquinas virtuais. Vale ressaltar que todas as funes de
uma biblioteca so mapeadas ou para chamadas de sistema ou para instrues no
privilegiadas.

45

46

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

Figura 4.3 Interfaces genricas de um sistema de computao

4.2.3 O sistema operacional como uma mquina virtual


Um sistema operacional nada mais que um software que executa sobre um
determinado hardware com o objetivo de controlar seus recursos e oferecer um ambiente
de execuo para os programas aplicativos. Esse ambiente, definido no momento da
criao do processo, composto por um espao de endereamento contendo as
instrues do programa de usurio a serem executadas e por uma verso lgica (virtual)
dos registradores do processador real. Quando um processo posto em execuo pelo
escalonador do sistema operacional, os valores dos registradores lgicos so atribudos
aos registradores reais e assim o programa executado. Isso equivale a imaginar que
cada vez que um processo criado, o sistema operacional atribui a ele um processador
virtual.
Alm de virtualizar o processador, o sistema operacional oferece para os
processos de usurio uma abstrao dos recursos de hardware atravs do subsistema E/S
e do sistema de arquivos. Em um sistema Unix, por exemplo, o subsistema de E/S
classifica os dispositivos em orientados a bloco, orientados a caractere e rede. O acesso
a cada dispositivo feito atravs de chamadas de sistema como put, get, ioctl etc. O
sistema de arquivos, atravs de sua noo de diretrios e arquivos, como um usurio
enxerga todos os dispositivos de armazenamento de dados (discos, cdrom, pendrive, por
exemplo). O acesso ao sistema de arquivos feito atravs de comandos e chamadas de
sistema como cd, ls, mv, open, read, write, close, entre tantos outros. Portanto, o sistema
operacional oferece para os processos de usurio um ambiente de execuo que
basicamente uma mquina virtual completa (processador e dispositivos de E/S) cujo
acesso feito atravs das chamadas de sistema (a criao de processos tambm uma
chamada de sistema).
Na verdade, a mquina virtual disponibilizada para um processo de usurio pelo
ncleo do sistema operacional composta de duas partes. A primeira justamente uma
verso virtual da mquina real que o ncleo oferece atravs de chamadas de sistema e
das suas abstraes de dispositivos de E/S e do sistema de arquivos. A segunda o
processador fsico (real) visto pelas instrues de mquina que o processo executa (user
ISA). Essas duas partes, como visto na seo anterior, compem a interface binria de
aplicao (ABI). Analisando sob esse ponto de vista, possvel explicar o por qu, por
exemplo, de um aplicativo Windows no executar sobre um sistema operacional
GNU/Linux: a mquina virtual oferecida no a mesma que o aplicativo espera. Alm
disso, h o problema de compatibilidade de cdigo binrio devido as diferentes ISA. Por
exemplo, um programa compilado para um Intel x86 compatvel no tem como executar

Virtualizaca o: Princpios Basicos e Aplicaco es

sobre um powerpc. Note que tanto o ncleo do sistema operacional como o programa
aplicativo contm instrues binrias especficas a um processador.
4.2.4 Virtualizao
Em sua essncia, a virtualizao consiste em estender ou substituir um recurso, ou uma
interface, existente por um outro de modo a imitar um comportamento. Isso feito
atravs de uma camada de software responsvel por transformar aes de um sistema A
em aes equivalentes em um sistema B (isomorfismo). Dependendo de como e onde
essa transformao feita, possvel classificar os softwares de virtualizao em trs
grandes categorias [Rosemblum, 2004]:

Nvel de hardware: aquela em que a camada de virtualizao posta


diretamente sobre a mquina fsica e a apresenta s camadas superiores
como um hardware abstrato similar ao original. Corresponde definio
original de mquina virtual dos anos 60.

Nvel de sistema operacional: um mecanismo que permite a criao de


parties lgicas em uma plataforma de maneira que cada partio seja
vista como uma mquina isolada, mas que compartilham o mesmo sistema
operacional. Nesse caso, a camada de virtualizao se insere entre o sistema
operacional e as aplicaes. So exemplos desse tipo de abordagem o
FreeBSD Jails, Linux Vserver, OpenVZ e as zonas do Solaris.

Nvel de linguagens de programao: a camada de virtualizao um


programa de aplicao do sistema operacional. O objetivo definir uma
mquina abstrata sobre a qual executa uma aplicao desenvolvida em uma
linguagem de programao de alto nvel especfica. Essa a abordagem da
mquina virtual Java e da Microsoft Commom Language Infrastructure,
base do .Net.

Embora cada um desses tipos de virtualizao tenha um objetivo diferente, eles


possuem um conjunto comum de caractersticas desejveis. Primeira, oferecer
compatibilidade de software. Isso significa que todo software desenvolvido para uma
mquina virtual deve executar nela independente de onde ela esteja sendo usada. Para
isso acontecer, a mquina virtual deve mascarar as diferenas de software e de hardware
existentes. Esse requisito traduz a filosofia Java de write once, run anywhere.
Segunda, isolamento, um software em execuo em uma mquina virtual no deve ver,
afetar ou ser afetado por outro software em execuo em outra mquina virtual.
Terceira, encapsulamento, permitir a qualquer momento a captura do estado completo
do ambiente virtual parando a sua execuo (suspend). Isso de ser feito de forma a
possibilitar que, posteriormente, a execuo seja retomada a partir desse estado
(resume). Por fim, a camada de virtualizao deve ser projetada e implementada de
forma a no impactar em demasia o desempenho das aplicaes que executam sobre ela.
Isso representa uma relao custo-benefcio que diz respeito a como as mquinas
virtuais so implementadas. Esse assunto ser desenvolvido nas prximas sees.

4.3. Mquinas virtuais


Para melhor compreender o conceito de mquina virtual importante notar que existem
duas perspectivas diferentes a serem consideradas: a de um processo e a do ncleo do
sistema operacional. Sob o ponto de vista de um processo de usurio, uma mquina
consiste em um espao de endereamento lgico onde as instrues e dados do
programa residem. Os dispositivos de E/S existentes, e o tipo de acesso que se pode
fazer a eles, so aqueles definidos pelo ncleo do sistema operacional e disponibilizados

47

48

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

atravs das chamadas de sistema. A interface entre a aplicao e a mquina virtual


feita atravs do conjunto de instrues no-privilegiadas (user ISA) e pelas chamadas de
sistema (system calls). Com uma mquina virtual de processo, uma aplicao de usurio
tem a iluso de estar executando sozinha na mquina fsica.
J na perspectiva do ncleo do sistema operacional, uma mquina virtual um
ambiente completo que oferece suporte de execuo para vrias aplicaes (processos).
Cabe ao ncleo do sistema operacional gerenciar a utilizao dos recursos de hardware
como memria, acesso a dispositivos de E/S e mesmo o processador entre os vrios
processos. Alm disso, como visto anteriormente, o ncleo do sistema operacional ainda
oferece uma viso abstrata dos recursos de hardware como, por exemplo, os meios de
armazenamento atravs do sistema de arquivos. A interface entre o ncleo do sistema
operacional e o hardware fsico feita atravs do conjunto de instrues (ISA) do
processador. Diferentemente de um processo, que existe apenas enquanto est em
execuo, o ncleo do sistema operacional deve existir enquanto o sistema
computacional estiver ativo. Essa constatao leva a afirmao de que uma mquina
virtual de processo tem uma existncia temporria enquanto que a mquina virtual de
sistema perene.
Cada uma dessas perspectivas d origem a um tipo diferente de mquina virtual:
as mquinas virtuais de processo e de sistema, que veremos a seguir. Antes, porm,
alguns detalhes quanto terminologia. O processo ou sistema operacional que executa
sobre uma mquina virtual denominado de hspede ou convidado, enquanto que a
plataforma subjacente onde a mquina virtual executa denominada de hospedeiro ou
sistema nativo. A camada de virtualizao que implementa a mquina virtual
genericamente denominada de runtime (ou executivo) para as mquinas virtuais de
processo, e de monitor de mquina virtual (Virtual Machine Monitor VMM), ou
hipervisor (hypervisor), para as mquinas virtuais de sistema.
4.3.1 Mquina virtual de processo
Uma mquina virtual de processo aquela que fornece um ambiente de execuo para
uma nica aplicao de usurio atravs de uma ABI virtual (chamadas de sistema e user
ISA). Um ponto importante a destacar que um processo uma entidade efmera, ou
seja, ele existe apenas quando o programa est em execuo. Portanto, uma mquina
virtual de processo criada sob demanda e s existe enquanto o processo estiver
executando. Na figura 4.4, uma aplicao executa sobre um programa que implementa a
mquina virtual de processo (runtime ou executivo). A mquina virtual utiliza as
funcionalidades providas pelo sistema operacional como chamadas de sistema e
funes de biblioteca e pelo prprio processador atravs de instrues noprivilegiadas. A aplicao emprega apenas a interface (ABI) provida pelo ambiente
(mquina) virtual.

Virtualizaca o: Princpios Basicos e Aplicaco es

Figura 4.4 Mquina virtual de processo

Um desafio importante na concepo de mquinas virtuais de processo quando


a aplicao hspede possui um cdigo binrio para um processador diferente daquele
sobre o qual a mquina virtual executa, o hospedeiro. Por exemplo, uma aplicao
compilada para Intel 32 que se deseja executar sobre um processador sparc. Existem
vrias maneiras de resolver esse problema, a mais direta atravs da interpretao. Um
interpretador um programa que realiza um ciclo de busca de instruo, decodificao e
emulao dessa instruo para o sistema hospedeiro. Um exemplo tpico dessa
abordagem a linguagem de programao Java e de sua mquina virtual (Java Virtual
Machine -JVM). A JVM uma mquina virtual de processo que possui um cdigo
binrio especfico, os bytecodes, para os quais uma aplicao Java compilada. Ao se
lanar uma aplicao Java, na verdade, se est executando a mquina virtual Java
passando como parmetro um arquivo binrio bytecode. A mquina virtual Java ento
interpreta, bytecode a bytecode, transformado-os em aes e instrues equivalentes da
mquina real subjacente (hospedeiro). A principal vantagem desse mtodo a
portabilidade, mas o processo de interpretao pode ser bastante oneroso em termos de
desempenho.
A traduo binria dinmica surge como uma soluo para melhorar o
desempenho da interpretao feita nas mquinas virtuais de processo. Nesse caso,
blocos de instrues da aplicao hspede so traduzidos em blocos de instrues do
sistema hospedeiro, o que j pode levar a alguma otimizao em relao a se fazer
instruo por instruo. Alm disso, os blocos traduzidos podem ser armazenados em
uma cache interna e posteriormente reaproveitados amortizando assim o custo da
traduo. Essa tcnica denominada de compilao Just-In-Time (JIT).
3.2 Mquina virtual de sistema
Uma abordagem alternativa para a camada de virtualizao a definio de uma
mquina virtual de sistema. Aqui a mquina virtual oferece um ambiente de execuo
completo onde podem coexistir um sistema operacional e vrios processos,
possivelmente de diferentes usurios. Dessa forma, uma nica plataforma de hardware
pode executar mltiplos sistemas operacionais hspedes, um em cada mquina virtual,
simultaneamente. esse tipo de abordagem que permite a consolidao de servidores
que ser apresentada na figura 4.6.
Existem duas formas bsicas de implementao de mquinas virtuais de sistema
ou hipervisores [Goldberg, 1973] [IBM, 2008]. Os hipervisores tipo I, ou nativos, so
aqueles que executam diretamente sobre o hardware de uma mquina real e as mquinas
virtuais so postas sobre ele (figura 4.5a). A funo bsica de um hipervisor nativo
compartilhar os recursos de hardware (processador, memria, meios de armazenamento
e dispositivos de E/S) entre as diferentes mquinas virtuais de forma que cada uma delas
tenha a iluso de que esses recursos so privativos a ela. Esse tipo de hipervisor

49

50

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

corresponde ao originalmente implementado nos sistemas IBM no incio da dcada de


70. Atualmente, o Xen e o VMware ESX Server so exemplos de hipervisores que
adotam essa abordagem.
Os hipervisores tipo II, ou hspedes, so caracterizados por executar sobre um
sistema operacional nativo como se fossem um processo deste (figura 4.5b). Nesse caso,
o que o hipervisor oferece uma camada de virtualizao composta por um sistema
operacional hspede, possivelmente diferente do sistema operacional nativo, e por um
hardware virtual criado sobre os recursos de hardware oferecidos pelo sistema
operacional nativo. So exemplos dessa abordagem o Vmware Player, VirtualBox e o
MS VirtualPC 2007.
Um outro aspecto a ser considerado nos hipervisores em relao ao qu
realmente virtualizado. Uma possibilidade fornecer uma ABI (chamadas de sistema e
user ISA) completamente diferente daquela do sistema nativo (figura 4.6a). Nesse caso,
o hipervisor hspede precisa emular todas as instrues executadas o que representa um
custo no desempenho. Entretanto, essa estratgia permite que um sistema operacional
e suas aplicaes executem em plataformas diferentes daquelas para os quais ele foi
concebido. Um exemplo dessa abordagem o VMware Fusion que oferece um ambiente
Windows para o sistema operacional MacOS X.

Figura 4.5 Mquina virtual de processo: hipervisores tipos I e II

Figura 4.6 Diferentes vises da virtualizao

Virtualizaca o: Princpios Basicos e Aplicaco es

A segunda possibilidade considera que a mquina virtual (hipervisor) fornea


um conjunto de instrues no-privilegiadas (user ISA) idntico ao do sistema nativo
sobre o qual executa (figura 4.6b). Nesse caso, no necessrio emular um conjunto de
instrues a partir de outro. A virtualizao, nesse caso, se reduz s chamadas de
sistema e os recursos de hardware (discos, memria, etc) que compem a mquina
virtual. Esse o caso, por exemplo, do VMwarePlayer, do VirtualBox e VirtualPC
quando executam sobre um sistema operacional Windows e em processadores Intel IA32 e oferecem aplicao final um sistema operacional GNU/Linux.

4.4. Virtualizao total e paravirtualizao


A implementao das mquinas virtuais no to simples como possa aparentar em um
primeiro momento. Alm da preocupao direta com desempenho, existe o problema de
como os recursos fsicos da mquina so compartilhados entre o sistema nativo e o
sistema hspede sem que um interfira em outro, a comear pelo prprio processador. O
problema fundamental consiste no que fazer quando o sistema hspede executa
instrues privilegiadas (System ISA), j que essas, por uma questo de proteo do
sistema, so exclusivas ao sistema nativo (hospedeiro). A ao a ser tomada, depende de
recursos oferecidos pela arquitetura do processador (hardware).
Em 1974, [Popek e Goldberg, 1974], classificaram o conjunto de instrues de
um processador em trs grupos: (1) privilegiadas, que se executadas por um programa
em modo usurio causam excees (trap); (2) sensveis de controle, que permitem a
alterao de recursos do sistema; e (3) sensveis comportamentais, cujo resultado ou
comportamento dependem da configurao de recursos como, por exemplo, contedo de
registradores internos ou modos de execuo do processador. Com base nessa
classificao, Popek e Goldberg, propuseram o seguinte teorema: um monitor de uma
mquina virtual pode ser implementado de forma adequada sempre que as instrues
sensveis de controle e sensveis comportamentais forem um subconjunto das instrues
privilegiadas. Na prtica, isso se traduz no fato que qualquer instruo que possa afetar
o comportamento do sistema deve ser monitorada e tratada adequadamente.
Para melhor compreender esse problema que envolve o conjunto de instrues e
a virtualizao interessante analisar a arquitetura x86. A arquitetura x86 prov quatro
modos de operao para o processador, identificados de 0 a 3, denominados de anis de
proteo (rings) ou CPL (Current Privilege Level). Nos sistemas operacionais
convencionais (Microsoft Windows e UNIXes), para esse tipo de arquitetura, apenas
dois modos so usados. O ring 0, que detm os maiores privilgios de execuo, usado
pelo sistema operacional, e o ring 3, de menor privilgio empregado pelos processos
de usurio. Se um processo de usurio tentar executar uma instruo privilegiada
ocorrer uma exceo (trap) que dever ser tratada adequadamente. Entretanto, a
arquitetura x86, em especial o Pentium, possui dezessete instrues sensveis que so
no privilegiadas [Robin, 2000], ou seja, programas em modo usurio podem afetar o
funcionamento do processador sem gerar traps.
Entretanto, a virtualizao possvel mesmo em processadores que no seguem
a restrio enunciada no teorema de Popek e Goldberg, mas ao custo de um pior
desempenho. A virtualizao nessas arquiteturas feita tratando as instrues sensveis
de acordo com duas estratgias: virtualizao total e paravirtualizao.
A virtualizao total consiste em prover uma rplica (virtual) do hardware
subjacente de tal forma que o sistema operacional e as aplicaes possam executar como
se estivessem diretamente sobre o hardware original (figura 4.7). A grande vantagem

51

52

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

que o sistema operacional hspede no precisa ser modificado para executar sobre o
monitor de mquina virtual (VMM) ou hipervisor.

Figura 4.7 Virtualizao total

No entanto, a virtualizao total tem alguns inconvenientes. Primeiro, por no


ser modificado, todas instrues executadas pelo sistema hspede devem ser testadas na
mquina virtual para saber se elas so sensveis ou no, o que representa um custo de
processamento. As instrues sensveis devem ser interceptadas e emuladas no
hospedeiro para evitar que a mquina virtual altere o comportamento do sistema nativo.
Essa interceptao e emulao podem ser onerosas se o processador nativo no possuir
suporte em hardware para virtualizao. Atento a isso, os fabricantes de processadores,
Intel e AMD, desenvolveram extenses para arquitetura x86 para prover mecanismos
que facilitassem essa tarefa. A Intel apresenta suas extenses para as arquiteturas x86 de
32 e 64 bits sob o nome IVT (Intel Virtualization Technology), ao passo que a AMD
oferece esse suporte apenas para suas arquiteturas de 64 bits. A extenso da AMD
denominada de AMD-V, AMD-Virtualization. As solues da Intel e da AMD foram
desenvolvidas independentemente uma da outra e, embora sirvam para o mesmo
propsito, so incompatveis.
O segundo inconveniente da virtualizao total a dificuldade em se
implementar uma mquina virtual que imite o comportamento exato de cada tipo de
dispositivo, dada a diversidade de dispositivos existentes que compem um
computador. A soluo consiste em prover a mquina virtual com suporte a um
conjunto genrico de dispositivos. Tipicamente, cada mquina virtual possui um teclado
e mouse do tipo PS/2, unidades de disquete, controladores IDE, cdrom ATAPI, portas
seriais e paralelas, suporte USB, uma placa grfica padro e as placas de redes mais
comuns em ambientes PC. Sendo assim, pode-se ter uma subutilizao de um recurso de
hardware real.
Por fim, a implementaao de uma mquina virtual de processo deve contornar
alguns problemas tcnicos relativos a implementao da gerncia de memria. Por
exemplo, o Linux e o Windows implementam memria virtual atravs de paginao. H
toda uma gerncia de alocao, liberao e controle de acesso s pginas que devem ser
respeitadas. A questo que se apresenta : deve a mquina virtual pr-alocar uma

Virtualizaca o: Princpios Basicos e Aplicaco es

quantidade de pginas do sistema nativo e emular sobre elas um espao de


endereamento fsico para o sistema hspede ou pode-se usar diretamente a gerncia do
sistema nativo (hospedeiro)? Grosso modo, necessrio converter o espao de
endereamento do sistema hspede para o do sistema nativo disputando recursos com
outros eventuais sistemas hspedes. Tecnicamente no h maiores empecilhos em se
fazer isso, porm, esse tratamento tambm representa uma queda de desempenho.
A estratgia de paravirtualizao (figura 4.8) aparece como uma abordagem
alternativa para contornar os problemas de desempenho da virtualizao total. Nessa
abordagem, o sistema hspede deve ser modificado para chamar4 a mquina virtual
sempre que for executar uma instruo ou ao considerada sensvel. Na prtica isso
traduz pela necessidade de alterar todas as instrues de sistema (system ISA) do
hspede por chamadas a mquina virtual para que ela interprete e emule essas aes de
forma adequada. Isso a principal desvantagem da paravirtualizao. A vantagem que
as instrues de usurio (user ISA) no precisam ser alteradas e podem ser executadas
diretamente sobre o processador nativo. Ao preservar o user ISA, todas as aplicaes
que foram desenvolvidas para o sistema hspede podem ser executadas sem alteraes.
Note que, nesse caso, se considera que tanto o sistema hspede quanto o hospedeiro
(sistema nativo) so compilados para a mesma plataforma.

Figura 4.8 Paravirtualizao

Uma outra vantagem da paravirtualizao que ela prov aos sistemas hspedes
acessos aos recursos de hardware a partir dos drivers instalados no prprio hipervisor.
Dessa forma, os sistemas hspedes podem usar os recursos reais da mquina e no
apenas dispositivos genricos como era o caso na virtualizao total. Ainda, a mquina
virtual apenas gerencia o compartilhamento do hardware e monitora as reas de
memria e de disco alocadas para cada um dos sistemas hspedes. Em decorrncia dessa
gerncia, a mquina virtual pode informar ao sistema operacional hspede qual a rea de
memria fsica que est alocada para ele. Assim, a gerncia de memria do hspede
capaz de traduzir diretamente as pginas virtuais em quadros fsicos, sem necessitar de
uma etapa adicional de converso.

O termo normalmente usado hypercall, ou seja, a substituio da chamada de uma instruo


sensvel pela chamada a um tratador de interrupo de software (trap) com os parmetros
adequados.

53

54

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

4.5. Ferramentas de virtualizao: exemplos


A virtualizao se tornou a grande revoluo da rea de TI nesses ltimos anos, basta
ver o crescimento do volume de investimento das empresas nesse sentido e o
crescimento das empresas que oferecem solues de virtualizao. Atualmente, existem
disponveis vrias solues de virtualizao. Para ter uma idia dessa quantidade,
consulte a wikipedia, ou o google, fazendo uma busca por virtualization.
Basicamente, existem solues comerciais, gratuitas, em software livre, integradas a
sistemas operacionais, etc. Seria invivel, e fora do escopo deste captulo, tecer
comentrios sobre todas elas, por isso optou-se por apresentar apenas o Xen, VMware,
Virtual PC 2007 e VirtualBox, por serem as mais comuns.

4.5.1 Xen
O Xen (www.xensource.com) um monitor de mquina virtual (hipervisor) em software
livre, licenciado nos termos da GNU General Public Licence (GPL), para arquiteturas
x86, que permite vrios sistemas operacionais hspedes serem executados em um
mesmo sistema hospedeiro. A primeira verso do Xen de outubro de 2003 e,
originalmente empregava a estratgia de paravirtualizao, ou seja, era necessrio
modificar o sistema operacional hspede para torn-lo consciente da existncia do
hipervisor. Essa deciso se justificava por questes de desempenho, mas limitou o
emprego do Xen aos sistemas Unix, principalmente aqueles com filosofia de cdigo
aberto. A partir da verso 3, o Xen passou a oferecer virtualizao total, ou seja, permite
o uso de sistemas operacionais no modificados, como os da famlia Microsoft
Windows. Entretanto, isso s possvel se o processador oferecer suporte em hardware
(Intel VT ou AMD-V) para virtualizao.
A arquitetura do Xen um pouco diferente daquela apresentada na seo 4.4. Os
dois principais conceitos do Xen so domnios e hipervisor. Os domnios so as
mquinas virtuais do Xen e so de dois tipos: privilegiada (domnio 0) ou noprivilegiada (domnio U). O hipervisor tem por funo controlar os recursos de
comunicao, de memria e de processamento das mquinas virtuais, e no possui
drivers de dispositivos. O hipervisor Xen, considerando suas caractersticas, no capaz
de suportar nenhum tipo de interao com sistemas hspedes. Por isso, necessrio que
exista um sistema inicial para ser invocado pelo hipervisor. Esse sistema inicial o
domnio 0. As outras mquinas virtuais s podem ser executadas depois que ele for
iniciado. As mquinas virtuais de domnio U so criadas, iniciadas e terminadas atravs
do domnio 0. O domnio 0 uma mquina virtual nica que executa um ncleo Linux
modificado e que possui privilgios especiais para acessar os recursos fsicos de entrada
e sada e interagir com as demais mquinas virtuais (domnios U). O domnio 0, por ser
um sistema operacional modificado, possui os drivers de dispositivos da mquina fsica
e dois drivers especiais para tratar as requisies de acesso rede e ao disco efetuados
pelas mquinas virtuais dos domnios U.
Para oferecer suporte tanto para a paravirtualizao como para a virtualizao
total, o Xen distingue os domnios U entre paravirtualizados (domnios U-PV) e
virtualizados (domnios U-HVM, de Hosted Virtual Machines). Os domnios U-PV tm
conscincia de que no tem acesso direto ao hardware e reconhecem a existncia de
outras mquinas virtuais. Os domnios U-HVM no tm essa conscincia, nem
reconhecem a existncia de outras mquinas virtuais. Na prtica, isso se traduz no fato
de que os domnios U-PV possuem drivers especficos para acesso rede e ao disco
para interagirem com as suas contra-partidas no domnio 0. J as mquinas dos
domnios U-HVM no possuem esses drivers (no foram modificados) e iniciam como

Virtualizaca o: Princpios Basicos e Aplicaco es

um sistema convencional procurando executar a BIOS. O Xen virtual firmware simula a


existncia da BIOS fazendo todos os procedimentos esperados durante o boot normal de
um ambiente PC compatvel. O compartilhamento do disco e as requisies de rede de
um domnio U-HVM so feitos atravs de um daemon Qemu vinculado a cada instncia
U-HMV (O QEMU um emulador em software de cdigo livre). O hardware disponvel
para as mquinas virtuais do domnio U-HVM so aquelas oferecidas pelo QEMU.
4.5.2 VMware Player
A VMware player (www.vmware.com) um monitor de mquina virtual que segue a
estratgia de virtualizao total. Na realidade, por questes de desempenho, o VMware
Player no executa completamente em espao de usurio, pois instalado um driver de
dispositivo especfico, (VMDriver) que permite que as mquinas virtuais acessem os
drivers de dispositivo do sistema hspede. Por exemplo, o VMDriver pe a placa de
rede em modo promscuo e cria uma bridge ethernet virtual que recebe todos os quadros
ethernet e os reencaminha para o sistema hspede ou para a mquina virtual
especificada. Essa implementao tambm oferece NAT (Network Address
Translation), de tal forma que cada interface virtual tem seu prprio endereo IP. A
gerncia de memria tambm feita de forma hbrida. Cada instncia do VMware
recebe uma rea de memria do sistema operacional nativo e a gerencia diretamente.
A mquina virtual VMware Player disponvel gratuitamente para os sistemas
operacionais nativos Windows e Linux e existe uma verso comercial (VMware Fusion)
para o sistema operacional MacOS X. O objetivo permitir que usurios tenham
contato com a virtualizao. A VMware, a partir de seu site, distribui uma srie de
imagens de sistemas operacionais, denominadas de appliances, que contemplam
diferentes distribuies linux e Windows Server 2003. A VMware Player no permite
que um sistema operacional hspede seja criado na mquina virtual a partir de zero.
Para que isso seja possvel, dentro das opes oferecidas pela VMware, necessrio
uma outra verso, VMware Workstation, que paga.
Na realidade, a VMware oferece uma infra-estrutura de virtualizao completa
com produtos abrangendo desde desktops a data centers organizados em trs categorias:
gesto e automatizao, infra-estrutura virtual e virtualizao de plataformas. Cada
categoria possui um conjunto de produtos especficos. Os produtos de gesto e
automatizao tm por objetivo principal, como seu prprio nome induz, permitir de
uma forma automatizada e centralizada a gerncia de todos os recursos da infraestrutura virtual permitindo a monitorao do sistema, auxiliando na converso de
sistemas fsicos em virtuais, na recuperao de desastres, entre outros.
Os produtos de infra-estrutura virtual auxiliam a monitorao e alocao de
recursos entre as mquinas virtuais de forma a atender requisitos e regras de negcios.
Eles fornecem solues para alta-disponibilidade, backup, migrao de mquinas
virtuais e atualizao de verses de softwares.
Por fim, os produtos de virtualizao de plataformas, ou seja, aqueles destinados
a criar mquinas virtuais. Essa categoria composta vrios produtos onde se destacam,
alm dos produtos mencionados anteriormente, o VMware ESX Server 3; o VMware
ESX Server 3i; o VMware Virtual SMP; o VMware VMFS e VMware Server, que
auxiliam a criao de data centers virtuais, explorao de mais de um processador por
mquina virtual e a criao de sistemas de arquivos.

55

56

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

4.5.3 Virtual PC 2007


Atenta ao movimento da virtualizao, a Microsoft oferece uma gama de produtos para
esse tipo de tecnologia. Esses produtos exploram o conceito da virtualizao, na sua
forma mais ampla, para oferecer solues que sejam integradas e apropriadas infraestrutura de TI que se encontra hoje em dia. Basicamente:

Virtualizao de aplicaes: tambm denominada de SoftGrid, cujo objetivo


fornecer aplicaes por demanda. Isso implica que se um determinado
desktop necessita executar uma aplicao e a mesma no est disponvel
nele, o sistema executar automaticamente a busca, instalao e configurao
da aplicao.
Virtualizao de apresentao: essa ferramenta separa e isola as tarefas de
tratamento grfico (visualizao) e de E/S, permitindo que uma determinada
aplicao seja executada em uma mquina, mas utilize recursos grficos e de
E/S de outra.
Gerenciamento da virtualizao: System Center Virtual Machine Manager
um ambiente de gerenciamento que facilita as tarefas de configurao e de
monitorao de um ambiente virtual. atravs dele que se realiza a administrao das contas de usurios e seus privilgios.
Virtualizao de desktops (Virtual PC): permite a criao de mquinas
virtuais em um sistema hospedeiro Microsoft Windows, cada uma com seu
prprio sistema operacional. Basicamente destina-se quelas aplicaes onde
necessrio executar software legado, criar ambientes de testes, realizar
treinamentos, etc.
Virtualizao de servidores: a soluo que permite criar mquinas virtuais
em servidores. Nessas mquinas, questes ligadas segurana, tolerncia a
falhas, confiabilidade, disponibilidade se tornam importantes. Portanto, a
soluo de virtualizao de servidores, denominada de Hyper-V (ou viridian)
foi projetada para enderear esses requisitos.

Dentre esses produtos, o que se enquadra na discusso desta seo o virtual


PC 2007 para virtualizao de desktops (www.microsoft.com/Windows/virtualpc). O
Virtual PC 2007 uma mquina virtual para famlia Windows que pode ser configurada
para executar qualquer outro sistema operacional. A estratgia adotada a da
virtualizao total.
Segundo a Microsoft, o principal objetivo do Virtual PC o desenvolvimento e
teste de software para mltiplas plataformas. Dentro desse princpio, o Virtual PC
oferece mecanismos para interconectar logicamente as diferentes mquinas virtuais.
Cada mquina virtual tem seu prprio endereo MAC e endereo IP. Alm disso, o
Virtual PC oferece um servidor de DHCP, um servidor NAT e switches virtuais. Dessa
forma, possvel construir cenrios de rede usando mquinas virtuais. O virtual PC
2007 disponvel para download, assim como um white paper que ensina a configurar
as mquinas virtuais e um ambiente de rede. Um ponto interessante a comentar em
relao gratuidade do Virtual PC que, na FAQ do Virtual PC, a Microsoft alega que
o que tem valor agregado no a mquina virtual em si, mas sim os ambientes de
gerenciamento. Uma diferena que o Virtual PC 2007 tem em relao ao VMware a
possibilidade de se definir mquinas virtuais e instalar o seu prprio sistema
operacional. importante salientar que mesmo em uma mquina virtual as restries de
licenas so aplicadas.

Virtualizaca o: Princpios Basicos e Aplicaco es

4.5.4 VirtualBox
O VirtualBox (www.virtualbox.org) um monitor de mquina virtual que adota a
abordagem de virtualizao total. O VirtualBox parte integrante de sua soluo de
virtualizao da Sun Microsystems, o Sun xVM.
Existem duas verses do VirtualBox: uma verso em software livre, sob os
termos da GPL (GNU General Public Licence) denominada de VirtualBox OSE (Open
Source Edition) e outra comercial (verso full). A diferena bsica entre elas o suporte
que a verso comercial oferece para RDP (Remot Desktop Protocol), para USB e para iSCSI (mecanismo de acesso a discos SCSI remotos). O VirtualBox executa sobre
sistemas operacionais Microsoft Windows, Linux, Macintosh e OpenSolaris permitindo
vrios sistemas hspedes, entre eles, os mais comuns, Microsoft Windows (NT, 2000,
XP, Vista e Server 2003), GNU/Linux e OpenBSD, entre outros.
A virtualizao feita pelo VirtualBox executa todas as instrues de usurio
(user ISA) nativamente no processador. Isso, claro, se houver compatibilidade binria
entre o sistema hspede e o hospedeiro. As instrues de sistema (system ISA) so
interceptadas e emuladas no hospedeiro. Essa emulao feita com o auxlio da tcnica
de traduo binria dinmica.
Ainda, o VirtualBox emula um disco virtual com um arquivo em um formato
especfico, o Virtual Disk Image, mas possui a capacidade de ler e escrever imagens de
discos virtuais VMware (Virtual Machine Disk Format VMDK). Isso possibilita que o
VirtualBox possa ser inicializado a partir de uma imagem definida e criada por
ferramentas da VMware. Outra caracterstica interessante no VirtualBox o fato da
permitir a montagem de imagens ISO. Assim, possvel, por exemplo, usar uma
imagem de uma distribuio linux sem ter que queimar um CD/DVD

4.6. Exemplos de Emprego da Virtualizao


Como j comentado anteriormente, as mquinas virtuais oferecem um ambiente
completo, cada uma contendo seu prprio sistema operacional, bibliotecas e aplicativos
de uma forma totalmente auto-contida e independente. Essa caracterstica pode ser
explorada de forma a trazer uma srie de benefcios para diferentes infra-estruturas de
computao. As aplicaes tpicas de mquinas virtuais so a consolidao ou
virtualizao de servidores, virtualizao de desktops e segurana (honeypots). O
emprego da virtualizao em ambientes de processamento paralelo e distribudo um
exemplo de uso dessas aplicaes tpicas, mas em um outro contexto. Nesta seo
iremos elaborar um pouco mais cada uma dessas aplicaes.
4.6.1 Virtualizao de servidores
Hoje em dia muito difcil imaginar um sistema computacional que no seja conectado
em rede. Na prtica, essa conectividade faz com que os administradores de rede sejam
responsveis por manter um conjunto grande e heterogneo (hardware e/ou softwares
distintos) de servidores, cada um executando uma aplicao diferente que pode ser
acessada por clientes tambm heterogneos.
comum encontrarmos em infra-estruturas de rede uma filosofia um servidor
por servio por motivos que variam desde a heterogeneidade de clientes segurana.
Normalmente, a carga de processamento de um servidor no explora todo o poder
computacional disponibilizado pelo processador. H um desperdcio de ciclos de
processamento e, por conseqncia, de investimento. Nessa situao, pode-se imaginar
cada servio executando em uma mquina virtual individual, com seu prprio sistema

57

58

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

operacional, mas sobre um mesmo hardware fsico, proporcionando um uso eficiente do


poder de processamento disponvel. Isso o que se denomina de consolidao de
servidores. O princpio bsico o melhor aproveitamento de recursos: ao invs de haver
n servidores com percentual de utilizao de x possvel ter um nico servidor com um
percentual de uso de aproximadamente n.x (n.x < 100). A consolidao de servidores
contribui para a diminuio de mquinas fsicas, o que auxilia na reduo de custos de
infra-estrutura como espao, energia eltrica, cabeamento, refrigerao, suporte e
manuteno de vrios sistemas.
Inicialmente, vamos discutir o caso de pequenas e mdias organizaes e seus
servidores. Nesse contexto, comum que os servidores sejam mquinas ultrapassadas e
intocveis. Afinal, se os servios executados no excedem a capacidade dessas
mquinas, por que investir em equipamentos novos? Alm disso, atualizar mquinas
implica em mexer em sistemas que, bem ou mal, esto funcionando. Entretanto, essa
situao traz um risco inerente: um hardware est sujeito a falhas, principalmente os
discos, e, muitas vezes, para equipamentos ultrapassados, os contratos de manuteno
no so mais vlidos e as peas de reposio simplesmente inexistem. uma questo de
tempo ter um problema (grave) de indisponibilidade de servios.
Para esses casos, uma soluo possvel adquirir apenas um nico equipamento
novo e instalar nele tantas mquinas virtuais quanto servios houver. claro que se
deve dimensionar a capacidade total de processamento desse novo servidor em relao
carga de servios que ele receber. A vantagem trocar um parque de mquinas
ultrapassadas e, eventualmente, subutilizadas, por uma mquina mais nova e bem
utilizada. Os servios que executam nas mquinas mais antigas podem ser migrados, um
a um, para uma mquina virtual na nova mquina, facilitando o processo de transio.
Dependendo da soluo de virtualizao escolhida, existem ferramentas que auxiliam
nessa migrao. A notar, ainda, que cada mquina virtual tem seu prprio sistema
operacional, portanto, possvel pr em um nico equipamento todos os servios, ou
aplicaes, que executam em diferentes sistemas operacionais. Futuramente, se for
necessrio uma nova atualizao de hardware, basta parar as mquinas virtuais, fazer
uma imagem delas e as inicializar novamente, sem necessitar reinstalar e configurar
softwares especficos.
Um segundo caso a analisar so os data centers, onde as vantagens discutidas
anteriormente tomam uma envergadura maior. Por sua prpria natureza, em um data
center comum haver diferentes sistemas operacionais e, eventualmente, mais de uma
verso de um mesmo sistema operacional devido a necessidades especficas de produtos
que seus clientes executam. Sem virtualizao, cada sistema operacional (e verso)
precisaria de um hardware dedicado. Isso representa um custo de instalao,
manuteno, refrigerao, energia e suporte tcnico para administr-los. J com a
virtualizao, um nico hardware, dimensionado adequadamente, pode manter vrios
sistemas operacionais de forma mais econmica.
Os procedimentos de migrao e de tolerncia a falhas so importantes em data
center. A migrao pode ser usada no momento de atualizar parques de mquinas
movendo um servio de uma mquina para outra enquanto a troca feita. A migrao
ainda til como mecanismo de balanceamento de carga, pois permite mover servios
de uma mquina a outra at que a carga do sistema seja homognea. Isso evita que
certos sistemas fiquem sobrecarregados enquanto outros esto ociosos.

Virtualizaca o: Princpios Basicos e Aplicaco es

4.6.2 Virtualizao de desktops


A virtualizao tambm traz uma srie de benefcios quando empregada em desktops.
Inicialmente, a virtualizao oferece uma forma simples para testar novas configuraes
ou executar programas que foram feitos para sistemas operacionais diferentes do nativo.
Dessa forma, um usurio que deseja testar um software, ou abrir um programa, que no
foi desenvolvido para seu sistema operacional pode lanar mo desse recurso. H uma
srie de ferramentas para o uso de virtualizao em desktops, onde entre elas, se
destacam os produtos da VMmare e o Virtual PC por serem de fcil instalao e uso.
Os projetistas de software so um tipo de usurio que podem se beneficiar ao
executar programas de diferentes sistemas operacionais em uma nica mquina fsica.
As mquinas virtuais permitem isso de maneira bastante simples, o que interessante
em fases de desenvolvimento e depurao de software. Um outro ponto, vinculado
depurao de sistemas, a facilidade que as mquinas virtuais tm de registrar uma
espcie de instantneo (snapshot) de seu estado quando finalizadas. Isso permite que
uma anlise seja parada em qualquer instante e retomada mais tarde a partir do mesmo
ponto.
Outra utilizao interessante da virtualizao de desktops em laboratrios de
treinamento e de ensino, como aqueles encontrados em universidades. Para algumas
disciplinas necessrio ter ambientes com diferentes sistemas operacionais. Apesar de
ser possvel, e comum, se configurar um PC compatvel com mltiplos boots, essa
soluo nem sempre a mais adequada. Primeiro, dependendo dos sistemas
operacionais, questes prticas afetam a ordem de instalao e de configurao dos
diversos sistemas. Segundo, e talvez mais importante, comum haver cursos e
treinamentos onde o participante necessita ter acessos administrativos. Nesses casos,
mesmo mudando as senhas de administrador (root) a cada sesso, h a possibilidade de
se corromper o sistema operacional pela instalao de rootkits, backdoors, sniffers de
teclado, e todo um conjunto de malwares, alm de ser possvel, por exemplo, montar a
partio dedicada a um outro sistema operacional e provocar danos. Nesse caso, as
mquinas virtuais so bem apropriadas: o participante de uma disciplina pode usar um
ambiente virtual para fazer todos os experimentos e, por rodar de forma confinada em
um processo, suas aes como administrador no afetam o sistema nativo. Ao finalizar o
processo (mquina virtual) no h nenhum vestgio permanente do que foi feito. Um
detalhe, havendo necessidade de preservar arquivos de uma aula a outra, as mquinas
virtuais oferecem formas de comunicao (ftp, telnet, scp, etc) e armazenamento (usb)
que possibilitam a cpia e o salvamento de arquivos.
4.6.3 Honeypots
De uma forma simplista, honeypot consiste em se colocar intencionalmente mquinas
na Internet de forma que elas sejam atacadas por crackers. O intuito monitorar as
atividades desses, se precaver de ataques e tornar mais fcil a investigao de
incidncias de ataques e de sua recuperao. O problema com honeypots que,
dependendo do tipo de ao sofrida, pode haver o comprometimento da mquina
(sistema operacional). Nesses casos, a soluo passa por reinstalar o sistema. Outra
caracterstica do uso de honeypots que eles normalmente so compostos por mquinas
destinadas a essa finalidade e que so postas em segmentos de redes especficos, o que
aumenta os investimentos tanto em nvel de hardware como de suporte de administrao
de rede.
A virtualizao surge como uma opo interessante para se implementar
honeypots por vrias razes. Primeiro, o comprometimento de um sistema operacional

59

60

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

resolvido apenas com a remoo da mquina virtual e a instanciao de uma nova


mquina virtual. Uma segunda razo que, em um mesmo hardware fsico, possvel
instalar vrias mquinas virtuais, cada uma com um sistema operacional diferente, o que
permite aumentar o nmero de mquinas iscas. Por fim, com o uso de softwares de
emulao de equipamentos de rede, pode-se definir uma infra-estrutura de rede virtual,
com firewalls, proxies, roteadores etc, em uma nica mquina. Note que isso no
imprescindvel, pois as ferramentas de virtualizao oferecem normalmente suporte a
interfaces de redes virtuais, com endereos MAC e IP distintos, e a VLANs, o que
permite interconectar as mquinas virtuais em equipamentos de interconexo fsicos
sem maiores problemas.
Uma outra situao, associada com a idia de honeypot, a possibilidade de se
executar softwares de origens no confiveis em um ambiente onde os prejuzos so
minimizados. Isso interessante para abrir arquivos attachment suspeitos ou verificar
malwares. Vale a pena salientar que as ferramentas tradicionais existentes para
honeypots podem ser utilizadas sem restries alguma em ambientes virtualizados, pois
elas so aplicaes para um sistema operacional. Uma boa referncia para ferramentas
de honeypots www.honeyclient.org.
4.6.4

Processamento Paralelo e Distribudo

Uma caracterstica importante das mquinas virtuais a sua capacidade de oferecer um


ambiente computacional completo, isso , sistema operacional, bibliotecas, arquivos de
configuraes e aplicaes em uma imagem (tipo especial de arquivo). Uma mquina
virtual pode ento ser vista como um aplicativo que recebe como parmetro um arquivo
de imagem. Isso se traduz na possibilidade de se definir um ambiente de trabalho e criar
uma espcie de pacote de distribuio a ser instalado e usado em qualquer mquina.
Outro aspecto muito interessante das mquinas virtuais a sua capacidade de
isolamento, ou seja, o que acontece no interior de uma mquina virtual no afeta o
sistema nativo, nem outras mquinas virtuais. Alm disso, uma mquina virtual pode ser
parada em qualquer momento preservando seu estado atual o qual pode ser recuperado
posteriormente. Esses aspectos fornecem perspectivas interessantes para o uso da
virtualizao em ambientes de processamento paralelo e distribudo que sero vistos a
seguir.
Infra-estrutura de processamento paralelo: J h muito tempo clusters e grids se
tornaram uma infra-estrutura para processamento paralelo e distribudo por fornecerem
um poder computacional semelhante ou superior ao de supercomputadores com um
custo significativamente mais baixo. Grosso modo, ambos podem ser vistos como um
conjunto de mquinas independentes interconectadas em rede e destinadas a execuo
de uma aplicao paralela. Uma diferena fundamental entre esses dois sistemas o fato
de que os clusters pertencem a um mesmo domnio administrativo ao passo que um grid
formado por vrios deles. Por domnio administrativo entende-se uma organizao que
responsvel por gerenciar e manter os recursos de um ambiente de rede. Isso implica
em instalao de sistemas operacionais e softwares (bibliotecas, aplicativos etc),
configurao, manuteno das mquinas e cadastro de usurios. Existem dois
problemas essenciais com clusters e grids: a grande quantidade de mquinas que podem
constituir um ou outro e que devem ser corretamente instaladas, configuradas e
mantidas; e a segurana que atinge principalmente os grids j que envolve vrios
domnios administrativos. Inicialmente, vamos considerar o caso de clusters.
Um cluster pode ser formado por centenas de mquinas. impraticvel executar
tarefas administrativas nessa quantidade de mquinas de forma manual, portanto muitos

Virtualizaca o: Princpios Basicos e Aplicaco es

esforos foram feitos no sentido de automatizar as tarefas de instalao, configurao e


manuteno de sistemas baseados em cluster. Talvez o mais significativo deles tenha
sido o Oscar [OSCAR 2008]. A questo de segurana de certa forma minimizada j
que um cluster tipicamente formado por uma mquina frontal (front-end) conectada a
duas redes: uma rede acessvel a partir do exterior e uma rede interna formada pelos ns
de processamento. Para lanar uma aplicao, um usurio se autentica na mquina
frontal e a partir dela dispara a execuo de sua aplicao. Assim relativamente fcil
gerenciar a segurana j que basicamente garantir acesso seguro ao front-end aos
usurios com conta nesse ambiente.
No entanto, os clusters tm duas limitaes inerentes a sua construo. Primeira,
em um ambiente de cluster todas as mquinas possuem um mesmo sistema operacional.
Segunda, eventualmente, devido velocidade do mercado de computadores, no se
consegue aumentar, de forma homognea, o nmero de mquinas de um cluster
construdo no passado por no se encontrar mais exatamente o mesmo tipo de hardware.
Tem-se ento um problema de heterogeneidade que pode ter impactos em relao ao
conjunto de software instalado. Um cluster, quanto mais homogneo for, melhor sua
manuteno.
Nesse ponto, a virtualizao surge como uma soluo com uma srie de
vantagens. A primeira delas a capacidade de fazer com que o cluster seja visto como
um conjunto de mquinas virtuais. Sendo assim, a homogeneidade do sistema dada
pelo fato de que as mquinas virtuais so instanciadas a partir de uma mesma imagem
independente do hardware e do sistema operacional sobre as quais executam. Segundo,
um cluster, como visto anteriormente, fisicamente formado por um front-end e por um
conjunto de ns de clculo. Isso pode representar um desperdcio de investimento
dependendo da taxa de utilizao do cluster e de seus ns. Porque ento no cri-los e
dimension-los a medida do necessrio, por demanda? Por fim, a instalao,
configurao e manuteno de um cluster so feitas a partir de uma nica imagem, a
qual posteriormente usada em todos os ns. Considerando essas facilidades foram
desenvolvidos alguns projetos voltados a clusters usando a virtualizao como, por
exemplo, o OSCAR-V [Valle et al, 2007] e Cluster on Demand (COD) [Emeneker et
al. 2006]. O primeiro uma verso estendida de seu predecessor OSCAR que adiciona a
capacidade de criar e gerenciar mquinas virtuais sobre um cluster fsico. No segundo, a
criao de um cluster feita por demanda, inicialmente localizando quais mquinas
fsicas (recursos) esto disponveis. Na seqncia, feita a instanciao de uma mquina
virtual sobre cada um deles e a criao de um contexto. O contexto pode ser visto, por
exemplo, como a configurao da quantidade de ns disponveis para se lanar uma
aplicao MPI.
Um grid computacional pode ser visto, de certa forma, como a extenso natural
de um cluster. Os grids estendem a noo de mquina virtual para aquela de uma
organizao virtual que permite o compartilhamento de recursos (processamento,
memria, discos, dados etc) entre sistemas que esto geograficamente dispersos. Uma
organizao virtual pode ser vista como uma coleo de usurios e recursos, construda
sobre um conjunto de integrantes de diferentes administrativos e controlada por regras
de compartilhamento. Em um grid os problemas de instalao, configurao e
manuteno de um grande parque de mquinas apresentam um fator de complexidade
adicional por atravessar domnios administrativos e implicar em regras e restries de
segurana diferentes. Para sintetizar essa questo, imagine a reao de um administrador
de redes de uma organizao ao receber o pedido, de um usurio que ele nunca ouviu
falar, de que preciso instalar uma biblioteca no sistema para seu software executar?

61

62

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

A idia fundamental da computao em grid que para lanar uma aplicao um


usurio descreve os recursos necessrios. A partir disso, os recursos so localizados e
alocados e, finalmente, a aplicao lanada. Entretanto, isso no simples assim.
Primeiro, nem sempre fcil se obter um ambiente adequado para se executar uma dada
aplicao. Alm de encontrar os recursos mais apropriados necessrio, muitas vezes,
negociar o seu uso. Existem vrios fatores que afetam os critrios de escolha de
recursos, por exemplo, sites diferentes oferecem diferentes requisitos de qualidade de
servio ou, ainda, necessidade de realizar experimentos sazonais exigindo picos de
processamento. Na prtica, o problema maior no so os recursos, pois relativamente
fcil uma organizao possuir um determinado nmero de mquinas ou de cores. As
questes principais so: como instalar e manter os pacotes de softwares necessrios?
Como conciliar os conflitos entre usurios e as restries de segurana do site? Como
coordenar o escalonamento de aplicaes?
 
             
   
       
         

  !!"#$  % 


       
  
       &' ()
 & &   
(    

   $*       
        +,  -         
        '          .    
  
&  &
        $/   . )  
      &0   (  
$
1 2   
  
  
&  2 
  
- 
 & )   
/ $1 2 / 3 

!!4#   '  
'  
5  
$  6      /       2   &            
     2       (       & )        & 
5&     &'     +(,  
      $  1      '    /        2  
 
  $7  
'  ' / 8  (
        9:;<+     
,
      

5   $7
 /  .  
 2    & & )       ( 
 
  '  
$%  =
  3 
3  !!4# 3:%%'
 !!?#$
Balanceamento de carga e tolerncia a falhas: Como mencionado anteriormente um
dos aspectos interessantes das mquinas virtuais que elas encapsulam um ambiente
computacional completo em qualquer instante de tempo. Essa caracterstica permite que
se suspenda a execuo de uma mquina virtual e que se preserve o seu estado atual de
execuo criando uma espcie de fotografia instantnea do ambiente. Esse estado
pode ser posteriormente restaurado permitindo que a execuo da mquina virtual siga a
partir do ponto em que ela havia sido suspensa. Em uma infra-estrutura de rede, essa
facilidade permite que uma mquina virtual seja parada, transferida para outra mquina
fsica, e reiniciada, o que particularmente til para se fazer a manuteno ou upgrade
em uma mquina fsica sem causar a indisponibilidade de servios. Isso o que se
denomina de migrao. A migrao pode ser empregada como um mecanismo de base
para balanceamento de carga e de tolerncia a falhas, que so extremamente teis em
processamento paralelo.

Virtualizaca o: Princpios Basicos e Aplicaco es

Na prtica, o encapsulamento feito por uma mquina virtual guarda muitas


similaridades com um mecanismo de checkpointing/restart. Ele permite que uma
mquina virtual seja suspensa por um tempo indeterminado e que se retome a execuo
exatamente no ponto em que a suspenso foi feita. Se a suspenso e a retomada forem
feitas em mquinas diferentes, tem-se a migrao. Se o checkpoint de uma aplicao
executando sobre uma ou mais mquinas virtuais feito regularmente possvel
preservar estados conhecidos e coerentes dessa aplicao. Isso particularmente
interessante para aplicaes que executam durante muito tempo ou em ambientes em
que os recursos podem ser tornar indisponveis, como o caso de grids. Nessa situao,
em caso de pane ou indisponibilidade de recursos, possvel retomar a execuo a partir
do ltimo checkpoint realizado com sucesso, evitando a perda do processamento
executado.
No entanto, apesar de conceitualmente simples, essa abordagem traz consigo
alguns desafios. Primeiro, em cluster e grids, h o problema de que uma aplicao
executa em ns distintos que se comunicam, na grande maioria das vezes, atravs de
conexes TCP. A mudana de um endereo IP e das portas usadas na conexo fazem
com que a mesma seja quebrada. O segundo desafio relacionado com o tamanho da
imagem. Dependendo da aplicao que est sendo executada, e do ambiente necessrio
para tal, comum uma imagem ocupar centenas de megabytes a alguns gigabytes. Nesse
caso, para migrar uma aplicao de um n a outro, necessrio realizar uma
transferncia de imagem via rede onde a latncia e a banda passante se tornam fatores
importantes.
O problema da troca do endereo IP relativamente simples de ser contornado
atravs do uso de tcnicas como IPMobile, VPN e NAT para definir uma rede virtual
com endereos IP independentes do endereo IP da mquina hospedeira. Portanto, a
aplicao executa sempre usando o mesmo IP (virtual). J o tamanho da imagem um
pouco mais delicado de ser tratado e duas abordagens so utilizadas: reduzir o tempo de
transferncia da imagem pela rede ou decidir se a vale a pena ou no realizar uma
migrao.
Uma primeira abordagem para reduzir o tempo de transferncia a utilizao de
um sistema de arquivos distribudos [Kozuch, Satyanarayanan 2002]. Nesse esquema,
todas as mquinas compartilham um mesmo sistema de arquivos via rede, mas a
mquina alvo faz a leitura do arquivo imagem de forma incremental, por demanda, e em
background. Assim, no necessrio esperar a transferncia ser concluda para iniciar a
execuo da mquina virtual. Nesse trabalho, h ainda a sugesto de eventualmente
reaproveitar pores da imagem que j estejam na mquina alvo. Isso vlido para
qualquer tipo de arquivo no interior da imagem que seja read-only. Uma variao da
abordagem anterior proposta no projeto Stanford Collective [Sapuntzakis et al, 2002].
Nesse trabalho, foi feita uma srie de otimizaes para reduzir a quantidade de dados a
serem transferidos de uma mquina a outra atravs de tcnicas como compactao,
reaproveitamento de blocos de disco etc.

63

64

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

Uma vez que h condies para migrar mquinas virtuais de forma eficaz
possvel usar a migrao como um mecanismo de base para executar balanceamento de
carga. Assim, um sistema pode ficar monitorando a carga das diversas mquinas e ao
detectar a ociosidade de uma em relao outra possvel deslocar carga de
processamento de uma mquina a outra. Entretanto, necessrio que o custo de
migrao (checkpointing, transferncia e restart) sejam menos onerosos que o que se
espera ganhar com a migrao. Tambm vale a pena ressaltar que a granularidade da
migrao de uma mquina virtual completa, portanto, migrar uma mquina virtual de
uma mquina fsica para outra s se justifica se a mquina sobrecarregada estiver
executando mais de uma mquina virtual ou se a mquina ociosa tiver uma capacidade
de processamento muito superior. Em [Righi et al., 2008] proposto um modelo de
custo para dimensionar a viabilidade de uma migrao. Ainda, em [Veiga et al, 2007]
apresentado o custo de migrao de mquinas virtuais em um trabalho baseado no Xen.

4.7. Consideraes finais


At o presente momento a virtualizao foi colocada como uma soluo para vrios
problemas, no entanto, ela tambm apresenta alguns inconvenientes quando a aspectos
de segurana, gerenciamento e desempenho.
Inicialmente, o hipervisor uma camada de software e, como tal, est sujeito a
vulnerabilidades. Segundo Neil MacDonald, especialista de segurana da Gartner, hoje
em dia, as mquinas virtuais so menos seguras que as mquinas fsicas justamente por
causa do hipervisor. Mas h muita controvrsia nesse campo. Alm disso, h a questo
da disponibilidade de servios que ocorre com o comprometimento, lgico ou fisico, da
mquina fsica que hospeda vrios servidores virtuais, j que todos seriam afetados
simultaneamente. verdade que as solues corporativas, como o ESX Server e o Citrix
Enterprise, permitem toda uma monitorao dos sistemas, replicao, migrao e
backup dos sistemas virtualizados, que diminuem o tempo de recuperao em caso de
problemas, mas algo a ser avaliado. Um outro argumento freqentemente empregado
em favor da disponibilidade que um pool de mquinas virtuais similar a um rack
com vrios servidores fsicos, com a vantagem de ter uma flexibilidade e uma
portabilidade maior que estes ltimos.
O segundo aspecto diz respeito ao gerenciamento das mquinas virtuais. Os
ambientes virtuais necessitam serem criados, monitorados, configurados, mantidos e
salvos. Existem produtos, como os brevemente citados na seo 4.5, que integram essas
solues, porm ainda h espao para melhorias. Em especial, h o aspecto de
gerenciamento relacionado com a segurana que ainda deficiente nas atuais solues:
a correlao de eventos e aes feitas como root em ambientes virtuais.
Por fim, mas no menos importante, a questo desempenho que pode ser
formulada de duas formas. Primeira, qual o custo de processamento introduzido pela
camada de virtualizao? Segunda, quantas mquinas virtuais so possveis sem
comprometer uma qualidade de servio (escalabilidade)? Para responder esses
questionamentos, vrios estudos foram feitos e se encontram disponveis na Internet,
porm, muitos deles so especficos a uma determinada situao ou soluo.
Atento a essa necessidade, e como forma de sistematizar e fornecer uma
metodologia padro para avaliar o desempenho de mquinas virtuais, foi criado um
comit especial: o SPEC Virtualization Commitee (www.spec.org/specVirtualization). O
objetivo desse comit desenvolver benchmarks para avaliar o desempenho da
virtualizao em servidores e prover mecanismos para comparar o comportamento
desses quando executando muitos hipervisores. No momento da redao deste trabalho5,
5

Fevereiro de 2009.

Virtualizaca o: Princpios Basicos e Aplicaco es

a liberao para primeira verso de benchmark estava prevista para o primeiro semestre
de 2009.
Enquanto no h um benchmark especfico para avaliar a virtualizao, os
estudos feitos at agora costumam empregar benchmarks existentes que simulam cargas
de processamento, de entrada e sada, e de trfego na rede. A partir de uma avaliao
feita pela VMware [VMware 2008a] e posteriormente questionado e reconduzido pela
Xen Source [XenSource2008a], se popularizaram os benchmarks SPECcpu2000, focado
em aplicaes computaes intensivas; o Passmark, que gera uma carga de trabalho
para testar os principais subsistemas que compem um sistema operacional; o NetPerf,
para avaliar o desempenho no envio e recepo de dados via rede; o SPECjbb2005 que
representa um servidor e sua carga; e a compilao do pacote SPECcpu2000 INT. Os
resultados obtidos pela VMware e XenSource apontaram para uma queda de
desempenho, em geral, entre 2% e 10%, com algumas situaes impondo perdas
maiores. Cabe ressaltar que esses resultados foram obtidos usando benchmarks
genricos destinados a outras finalidades. Em [Charo, 2008] apresentado um outro
estudo sobre o desempenho do Xen.

8 Concluses
Virtualizao o conceito que fornece a abstrao de um recurso computacional
qualquer mascarando suas caractersticas fsicas dos usurios e aplicaes que os
utilizam. No entanto, a forma mais conhecida de virtualizao so as mquinas virtuais.
Cada mquina virtual, por si s, um ambiente de execuo isolado e independente das
demais. Com isso, cada mquina virtual pode ter seu prprio sistema operacional,
aplicativos e servios de rede (Internet). O sistema operacional do hspede pode ser
diferente daquele utilizado pelo hospedeiro. A virtualizao no um conceito recente,
remonta a dcada de 60, e existem vrias tcnicas para implement-la, onde se destacam
as mquinas virtuais de processo e o monitor de mquina virtual.
Uma mquina virtual implementada considerando dois pontos de vistas
diferentes: a de um processo e a do ncleo do sistema operacional. Uma mquina virtual
de processo fornece um ambiente de execuo para uma nica aplicao atravs de uma
interface virtual (ABI) a qual mapeada para uma interface real composta pelas
chamadas de sistema e pelo conjunto de instrues no-privilegiadas (user ISA). Na
prtica, isso pode ser visto como um processo (a aplicao) executando dentro de outro
processo (a mquina virtual). Uma mquina virtual de processo s existe enquanto a
aplicao estiver em execuo. Uma mquina virtual de sistema, tambm denominada
de VMM (Virtual Monitor Machine) ou hipervisor, aquela que oferece um ambiente
de execuo completo onde coexiste um sistema operacional e vrias aplicaes. Ao
contrrio das mquinas virtuais de processo, as mquinas virtuais de sistema esto ativas
at serem explicitamente paradas. H dois tipos de hipervisores: nativos (tipo I) e
hspedes (tipo II). Os hipervisores nativos so uma camada de software posta entre o
hardware fsico da mquina e as mquinas virtuais executam sobre eles. J os
hipervisores hspedes (tipo II) executam sobre o sistema operacional como se fossem
um processo deste. H ainda, duas tcnicas usadas nos hipervisores: virtualizao total e
paravirtualizao. A diferena essencial se o sistema operacional hspede precisa ser
modificado (paravirtualizao) ou no (virtualizao total) para executar sobre o
hipervisor.
Assim como j aconteceu no passado com a multiprogramao, o projeto dos
processadores mais recentes tem considerado mecanismos em hardware para dar suporte
a virtualizao. o caso dos fabricantes AMD e Intel que desenvolveram extenses para
a arquitetura x86 suportar virtualizao, respectivamente, AMD-Virtualization (AMDV, codinome Pacfica) e Intel Virtualization Technology (IVT, condinome Vanderpool).

65

66

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

7 antagens da virtualizao so:

Isolamento de dados e de processamento permitindo que uma mesma


mquina fsica execute vrias mquinas virtuais sem que elas interfiram
umas nas outras e no prprio sistema nativo.
Capacidade de instalar de maneira rpida e uniforme, independente de
plataforma, um mesmo ambiente computacional (sistema operacional,
biblioteca e aplicaes). Isso permite se ter um ambiente capaz de ser
executado em qualquer lugar.
As mquinas fsicas no precisam ter um mesmo hardware para executar
uma mesma mquina virtual. Essa caracterstica uma forma de contornar
questes de heterogeneidade. Portanto, as mquinas virtuais so uma forma
de se manter ambientes homogneos sobre hardwares heterogneos.
Possibilidade de integrar facilmente mecanismos de migrao e de
balanceamento de carga atravs da facilidade de se executar a suspenso e a
sua retomada (mecanismo suspend/resume). Essa mesma facilidade pode ser
usada como base para tolerncia a falhas atravs de mecanismos de
checkpoint/restart.

Essas vantagens fazem da virtualizao uma ferramenta interessante para ser


usada em infra-estruturas de TI e, em ambientes de processamento paralelo, na
implementao de clusters e grids.1=  
5 & )    
@A
            (        .  

    B 0 &=   - (
 
$%  
5  '   (   
      
       
  -     
                        
  
   ' +   ,$
/     

  
   +*7C, 
5
 '  
      
  
 
 
'        ' $  . 
         
      
 D .F   0 &=$
/  - 
 (      
( (&=$
Em ambientes de grids, a virtualizao encontra um nicho natural, pois um grid
nada mais que a definio de um grande sistema virtual. Nesse contexto a
virtualizao auxilia na resoluo de problemas relacionados com a segurana e
tolerncia a falhas. Primeiro, a partir do instante que uma mquina virtual uma
imagem que pode ser instanciada e executada sobre um sistema operacional nativo sem
interferir em seu funcionamento, muito das restries e cuidados atuais de compartilhar
recursos so minimizados. A nica exigncia que se faz que a mquina alvo tenha
instalado a mquina virtual. Em grid a volatilidade dos recursos algo problemtico por
representar a perda de computao feita at um momento e para contornar esse
problema normalmente so empregados mecanismos de tolerncia a falhas. As
mquinas virtuais, com sua facilidade de suspend/resume auxiliam na implementao de
tais mecanismos.
Por fim, a virtualizao uma ferramenta muito poderosa e que oferece uma
gama de oportunidades, mas ainda existem vrios pontos a serem melhores tratados,
como as questes de gerenciamento, segurana e de desempenho. Para reforar essa
afirmao uma citao interessante da Microsoft (em seu site technet): o valor de
mercado da virtualizao no est na pilha necessria para implement-la, isso , no

Virtualizaca o: Princpios Basicos e Aplicaco es

conjunto sistema operacional mais o hipervisor, mas sim no desenvolvimento de


sistemas de gerenciamento para ambientes virtuais.

4.9. Referncias
Adamic, A. L. Zipf, Power-laws and Pareto a ranking tutorial. Information Dynamics Lab, HP Labs. (http://www.hpl.hp.com/research/idl/papers/ranking), acesso
fevereiro 2008.
Adams, K.; Agesen, O. A comparaison of software and hardware techniques for x86
virtualization, ASPLOS06, San Jose, California, USA. 2006.
Baratz, A.; Virtual Machines shootout: VMWare vs. Virtual PC, Ars Technica.
August, 2004 (http://arstechnica.com/reviews/apps/vm.ars) Acesso novembro 2007.
Barham, P.; Dragovic, B.; Fraser, K.; Hand, S.; Harris, T.; Ho, A.; Neugebauer, R.;
Pratt, I.; Warfield, A. Xen and the Art of Visualization. In. Proc. 19th ACM Symp.
On Operating System Principles (SOSP03), 2003.
Breslau, L.; Cao, P.; Fan, L. ; Philips, G. And Shenker, S. Web Caching and Zipf-like
Distributions: Evidence and Implications. INFOCOM, 1999, pp. 126-134.
Calheiros, R.; Storch, M.; Alexandre, E; De Rose, C; e Breda, M. Applying Virtualization and System Management in a Cluster to Implement an Automated Emulation
Testbed for Grid Applications. 20th International Symposium on Computer Architecture and High Performance Computing. SBAC-PAD 2008, 29 de outubro a 1 de
novembro 2008, Campo Grande, Brasil.
Charo, A; Santos, R. Anlise Comparativa de Desempenho do Hipervisor Xen:
paravirtualizao versus virtualizao total. WSCAD 2008, 29 de outubro a 1 de
novembro 2008, Campo Grande, Brasil.
EMA, Entreprise Management Solutions. (http://www.emscorporation.com). Acesso
maro de 2008.
Emeneker, W.; Jackson, D.; Butikofer, J.; Stanzione, D.; Dynamic virtual clustering
with Xen and Moab. Lecture Notes in Computer Sciences: International Symposium
on Parallel and Distributed Processing and Application (ISPA). Workshops. Italy. pp.
440-451. 2006.
Globus. Globus Toolkit. Disponvel em (http://www.globus.org). Acesso em out. 2008.
Goldberg, R.P. Architecture of Virtual Machines. In Proceedings of Workshop on
Virtual Computer. Systems.Cambridge, MA, USA. pp 74-112, 1973.
Goldberg, R.P. Survey of virtual machine research. IEEE Computer, pp. 34-35, june
1974.
Henessy, J.L.; Patterson, D.A. Computer Architecture: A quantitative approach. 4th
edition. Morgan Kauffman Publishers, 2007.
IBM Corporation. IBM Systems Virtualization Version 2 release 1 (2005). Disponvel
em
http://public.boulder,ibm.com/infocenter/eserver/v1r2/topic/eicay/eicay.pdf,
acesso outubro 2008.
Jain, R. Art of Computer Systems Performance Analysis. John Willey. 1991.
Keahey, K.; Foster, I.; Freeman, T.; Zhang, X.; Virtual Workspaces: Achieving quality
of service and quality of life on the grid. Scientific Programming, 13 (4):256-276,
2005.

67

68

ERAD 2009 Caxias do Sul, 17 a 20 de marco de 2009

Kozuck, H.; Satyanarayanan, M.; Internet Suspend/Resume. Proc. 4th IEEE Workshop on Mobile Systems and Applications. Junho. 2002.
LinuxServer (http://linux-vserver.org). Acesso em maro de 2008.
Microsoft. Microsoft Virtual PC (http://www.microsoft.com/Windows/virtualpc),
acesso novembro 2007.
Microsoft. Microsoft Virtual Server
Neiger, G.; Santoni, A. et alli Intel Virtualization Technology: Hardware Support for
Efficient Processor Virtualization, Intel Technology Journal, v. 10, pp. 166-179,
2006.
Oliveira, R..; Carissimi, A.; Toscani, A.; Sistemas Operacionais. Editora Sagra-Luzzato,
3a edio, 2004.
OSCAR. Open Source Cluster Application Resources. Disponvel
(http://svn.oscar.openclustergroup.org/trac/oscar/wiki), acesso outubro 2008.

em

Popek, G.; Goldberg, R. Formal requirements for virtualizable 3rd generation architectures. Communications of the ACM, v.17, n.7, pp. 412-421, 1974.
Righi, R.R.; Pilla, L.; Carissimi, A.; Navaux, P.O.A. Controlling Process Reassignment in BSP Applications. 20th International Symposium on Computer Architecture
and High Performance Computing. SBAC-PAD 2008, 29 de outubro a 1 de
novembro 2008, Campo Grande, Brasil.
Robin, J.S.; Irvine, C.E. Analysis of the Intel Pentiums Ability to Support a Secure
Virtual Machine Monitor. Proc. 9th USENIX Security Simposium, 2000.
Rose, R. Survey of Virtualization Techniques. (http://www.robertwrose.com). Acesso
em fevereiro 2008.
Rosemblum, M. The reincarnation of virtual machines. Queue Focus ACM Press,
pp 34-40, 2004.
Sapuntzakis, C.P.; Chandra, R.; Pfaff, B.; Chow, J.; Lam, M.S; Rosemblum, M.; Optimizing the Migration of Virtual Computers. Proc. 5th Symp. On Operating Systems
Design and Implementation. Dezembro, 2002.
Silberchatz, A.; Galvin, P; Sistemas Operacionais. (1a edio). Campus, Rio de Janeiro,
2001.
Singh, A.An introduction to virtualization(http://www.kernelthread.com/publications)
Acesso fevereiro 2008.
Smith, J.E, Nair, R. The architecture of virtual machines. IEEE Computer, v.38, n.5,
pp. 32-38, 2005.
Uhgli, R.; Neiger, G. et alli Intel Virtualization Technology. Computer Journal, v.38,
pp. 48-56. 2005.
Ung, D.; Cifuentes, C. Machine-adaptable dynamic binary translation. ACM SIGPLAN
Notices, ACM Press New York, NY, USA, vol. 35, 7, july 2000, pp 41-51.
Valle, G.; Naughton, T.; Scott, S.L.; System management software for virtual environments. Proceedings of ACM International Conference on Computing Frontiers,
Ischia, Italy, 2007.
Veiga, M.;Righi, R.R.; Maillard, N.; Navaux, P.O.A: Impacto da Migrao de Mquinas
Virtuais de Xen na Execuo de Programas MPI. In VIII Workshop emSistemas
Computacionais de Alto Desempenho. pp. 45-52. 2007

Virtualizaca o: Princpios Basicos e Aplicaco es

Virtual Workspace Project Virtual Workspace Project (http://workspace.globus.org).


Acesso outubro 2008.
Virtuoso, Northwestern University. Virtuoso: resource management and prediction for
distributed
computing
using
virtual
machines.
Disponvel
em
http://www.csm.ornl.gov/harness . Acessado em outubro 2008.
VMWare (2008a) A Performance Comparison of Hypervisors (http://www.vmware.com). Acesso janeiro 2008.
VMWare (2008b) VMWare virtual networking concepts (http://www.vmware.com)
Acesso fevereiro 2008.
VMWare (2008c), VMWare (http://www.vmware.com)
Wikipedia. Comparaison of virtual machines Wikipedia, The Free Encyclopedia,
Acesso novembro 2007.
Xen Source (2008a), A Performance Comparaison of Commercial Hypervisors (http:/
blogs.xensources.com/rogerk/wp-content/uploads/2007/03/hypervisor_performance_comparaison_1_0_5_with_esx-data.pdf). Acesso fevereiro 2008.
Xen Source (2008b), Xen Source (http://www.xensource.com). Acesso fevereiro 2008.

69

S-ar putea să vă placă și