Você está na página 1de 35

Captulo

4
Virtualizao: da teoria a solues
Alexandre Carissimi
Instituto de Informtica
Universidade Federal do Rio Grande do Sul (UFRGS)
Caixa Postal 15064 CEP 91501-970 Porto Alegre RS - Brasil

Abstract
Virtualization is a technique which allows a computer system to be partitioned on
multiples isolated execution environments similar to a single physical computer. Such
environments are called virtual machines (VM). Each VM can be configured on an
independent way having its own operating system, applications, Internet services and
network parameters. It is possible to interconnect virtual machines as if they were a
physical one. Some virtualization tools offer virtual network support like switches and
routers. Firewalls and VPN can be also used among VMs. This work presents
virtualizations techniques, its implementations issues and its use on IT infrastructures.
We discuss the different virtualizations approaches, hardware support, tools,
advantages and disadvantages on using virtualization as a business strategy.
Resumo
Virtualizao a tcnica que permite particionar um nico sistema computacional em
vrios outros denominados de mquinas virtuais. Cada mquina virtual oferece um
ambiente completo muito similar a uma mquina fsica. Com isso, cada mquina virtual
pode ter seu prprio sistema operacional, aplicativos e servios de rede (Internet).
possvel ainda interconectar (virtualmente) cada uma dessas mquinas atravs de
interfaces de redes, switches, roteadores e firewalls virtuais, alm do uso j bastante
difundido de VPN (Virtual Private Networks). objetivo deste minicurso fornecer os
conceitos bsicos para compreender no que consiste a virtualizao, suas formas de
implementao, compromissos e vantagens para uma infra-estrutura de TI.

174

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.1. Introduo
A virtualizao um assunto que tem sido atualmente destaque no mundo da tecnologia
da informao (TI), apesar de no ser exatamente uma novidade. A introduo da
linguagem de programao Java trouxe consigo a noo de mquina virtual, mas a
origem das mquinas virtuais remonta ao incio dos anos 70. Nessa poca, era comum
que cada computador (mainframe), mesmo de um nico fabricante, tivesse seu prprio
sistema operacional, e isso se tornou uma das principais razes para o aparecimento das
mquinas virtuais: permitir que software legado executasse nos caros mainframes. Na
prtica, o software no inclua apenas a aplicao, mas sim todo o ambiente operacional
sobre o qual ele executava. Essa abordagem foi usada com sucesso pela IBM que, na
linha de mainframes 370 e seus sucessores, oferecia uma mquina virtual, portada para
vrias de suas plataformas, sobre a qual as aplicaes executavam. Dessa forma era
possvel executar, ou migrar, uma aplicao de uma plataforma para outra desde que
houvesse uma verso de mquina virtual para a plataforma alvo. Uma mquina virtual
nada mais que uma camada de software que oferece um ambiente completo muito
similar a uma mquina fsica. Com isso, cada mquina virtual pode ter seu prprio
sistema operacional, bibliotecas e aplicativos.
medida que os computadores comearam a se tornar mais comuns, 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, a virtualizao deixava de ser um problema importante. No entanto, 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.
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
sistemas sejam responsveis por manter um conjunto grande e heterogneo de
servidores, cada um executando uma aplicao diferente, que podem ser acessadas por
clientes tambm heterogneos. comum encontrarmos em infra-estruturas de rede uma
filosofia um servidor por servio por razes que variam desde suporte a
heterogeneidade dos clientes segurana. Normalmente, nesse contexto, a carga de
processamento de um servidor no explora todo o potencial disponibilizado pelo
processador. H um desperdcio de ciclos de processamento e, por conseqncia, de
investimento. A virtualizao surge como uma opo para contornar esse problema.
Inicialmente, a virtualizao pode auxiliar a se trabalhar em um ambiente onde
haja uma diversidade de plataformas de software (sistemas operacionais) sem ter um
aumento no nmero de plataformas de hardware (mquinas fsicas). Assim, cada
aplicao pode executar em uma mquina virtual prpria, possivelmente incluindo suas
bibliotecas e seu sistema operacional que, por sua vez, executam em uma plataforma de
hardware comum. Em outras palavras, isso no deixar de ser um retorno situao de
executar software herdado em um sistema diferente daquele para o qual ele foi
projetado. Assim, a virtualizao proporciona um alto grau de portabilidade e de
flexibilidade permitindo que vrias aplicaes, de sistemas operacionais diferentes,
executem em um mesmo hardware. Ao se executar mltiplas instncias de mquinas

Livro Texto dos Minicursos

175

virtuais em um mesmo hardware, tambm se est proporcionando um uso eficiente de


seu poder de processamento. Essa situao comumente denominada de consolidao
de servidores e especialmente interessante em data centers devido a heterogeneidade
de plataformas inerente ao prprio negcio. Alm disso, em data centers, a diminuio
de mquinas fsicas implica na reduo de custos de infra-estrutura fsica como espao,
energia eltrica, cabeamento, refrigerao, suporte e manuteno a vrios sistemas.
A flexibilidade e a portabilidade das mquinas virtuais tambm tornam
interessante o uso da virtualizao em desktops. possvel imaginar, por exemplo, o
desenvolvimento de produtos de software destinados a vrios sistemas operacionais sem
ter a necessidade de uma plataforma fsica para desenvolver e testar cada um deles.
Assim, as mquinas virtuais em desktops podem ser usadas para se definir ambientes
experimentais sem comprometer o sistema operacional original da mquina, ou ainda,
para compor plataformas distribudas como clusters e grades computacionais.
Nos ltimos anos, dada a importncia e a gama de aplicaes em que a
virtualizao pode ser empregada, houve um investimento macio nesta tecnologia por
parte de fabricantes de processadores e no desenvolvimento de produtos de software. Os
processadores mais recentes da Intel e da AMD contam no seu projeto com mecanismos
e solues de hardware especialmente destinados a dar suporte a virtualizao.
As mquinas virtuais, por emularem um ambiente computacional sobre outro
impem algumas restries de implementao e de desempenho. aqui que entra o
desenvolvimento dos produtos de software para a virtualizao. Basicamente, as
mquinas virtuais podem ser implementadas como uma aplicao de um sistema
operacional e executarem em modo usurio, ou serem uma camada de software
posicionada entre o hardware da mquina e o sistema operacional. A primeira opo o
que se denomina de mquina virtual de processo e a segunda de monitor de mquina
virtual ou hypervisor [Smith e Nair, 2005]. Ainda, um monitor de mquina virtual pode
prover virtualizao total ou para-virtualizao, dependendo se, respectivamente, o
sistema operacional que executa na mquina virtual deve ou no ser adaptado para tal.
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 a suas similares reais, isso ,
possuem endereos MAC e podem ser interligadas em equipamentos de interconexo de
redes, como switches e roteadores. Tipicamente, isso feito colocando a interface de
rede fsica em modo promscuo e multiplexando seu uso entre as diferentes interfaces
virtuais. Um passo adiante fornecer toda uma infra-estrutura virtual de rede, criando
processos (daemons) que emulam switches e roteadores, ou incluindo esse tipo de
suporte na prpria infra-estrutura de virtualizao.
Com base no que foi mencionado at o momento possvel imaginar que a
virtualizao oferece uma gama bastante grande de aplicaes. O objetivo deste trabalho
apresentar os principais conceitos da virtualizao, discutir aspectos relacionados com
sua utilizao e mostrar as principais ferramentas existentes para sua implantao. Para
atingir esse objetivo este trabalho organizado em oito sees incluindo esta
introduo.

176

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Inicialmente, a seo 4.2, fornece uma viso geral no que consiste a virtualizao
e faz uma reviso de conceitos bsicos de sistemas operacionais necessrios para uma
melhor compreenso da virtualizao e de sua implementao. A seo 4.3, por sua vez,
apresenta a virtualizao sob o ponto de vista de redes de computadores abordando seu
uso na implantao de servios Internet e na definio da infra-estrutura de rede.
Atualmente existem vrias ferramentas que oferecem suporte a virtualizao, tanto
solues proprietrias quanto em software livre, as mais comuns, VMware, Xen e
Microsoft, so apresentadas na seo 4.4. A seo 4.5 ilustra o emprego da
virtualizao atravs de estudos de casos, para isso foram selecionadas trs aplicaes
significativas: consolidao de servidores, virtualizao em desktops e a definio de
honeypots. A adoo da virtualizao em uma infra-estrutura de TI deve ser feita
considerando uma srie de aspectos, pois ela afeta sobremaneira como novos servios
podem ser agregados infra-estrutura de rede, na aquisio de novos equipamentos e
muda a filosofia de administrao de sistemas. O objetivo da seo 4.6 discutir alguns
desses aspectos de forma a orientar o leitor sobre os principais pontos a serem avaliados
quando da anlise sobre adotar a virtualizao. A seo 4.7 complementa essa anlise
abordando aspectos como segurana, gerenciamento e desempenho de mquinas
virtuais. Por fim, a seo 4.8, que apresenta a concluso deste trabalho.

4.2. Virtualizao
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. Genericamente, isso
denominado de virtualizao de recursos.
Um conceito importante em sistemas operacionais de processo. Um processo
uma abstrao que representa um programa em execuo. 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 processo. Cabe
ao ncleo do sistema operacional, atravs de seu escalonador, alternar os diferentes
processadores lgicos (virtuais) sobre um processador fsico. A iluso de paralelismo

Livro Texto dos Minicursos

177

criada pelo chaveamento rpido entre os processos. Na realidade, os sistemas


operacionais atuais possuem duas abstraes para unidade de execuo: processos e
threads. Entretanto, continua vlida a noo de um processador virtual por unidade de
execuo. Um estudo desses conceitos extrapola o escopo deste trabalho e o leitor mais
interessado pode obter mais detalhes em [Silberschatz, 2001][Oliveira, Carissimi e
Toscani, 2004].

Figura 4.1 Princpio bsico de mquinas virtuais

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
ilustrado genericamente na figura 4.1. Por exemplo, sobre o hardware do sistema
computacional A posto uma camada de software, o sistema operacional X, que fornece
a iluso de uma mquina virtual B para as aplicaes do sistema operacional X. No
entanto, uma dessas aplicaes pode ser a implementao de uma mquina virtual C
que, por sua vez, oferece um ambiente de execuo para aplicaes escritas para a
mquina virtual C. Um exemplo prtico disso, a mquina virtual java (JVM Java
Virtual Machine) que permite que aplicaes Java executem um ambiente virtual a JVM
implementado para o sistema operacional GNU/Linux ou para o Windows.
4.2.1 Conceitos bsicos
Para entender o que uma mquina virtual, interessante relembrar alguns aspectos
fundamentais de sistemas operacionais. Um conceito importante em sistemas
operacionais o de processo. Um processo uma abstrao que representa um programa
em execuo. O processo representado por um espao de endereamento lgico
composto por regies de texto, dados, pilha e heap (figura 4.2). A regio de texto onde
residem as instrues do programa a serem executadas. A regio de dados mantm todas
as variveis globais, inicializadas ou no.A pilha serve para armazenar o endereo de
retorno de chamadas de funo, para a passagem de parmetros, alm de ser tambm a
rea onde so armazenadas as variveis locais de uma funo. Por fim, a regio de heap
que serve para a alocao dinmica de pores de memria.

178

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

A execuo de um processo acompanhada por dois registradores lgicos


(virtuais): contador de programa (Program Counter - PC) e o apontador de pilha (Stack
Pointer SP). O contador de programa indica a instruo a ser executada e o apontador
de pilha onde devem ser armazenados o endereo de retorno de uma chamada de funo,
seus parmetros e suas variveis locais. Cabe ao sistema operacional, atravs de seu
escalonador e do dispatcher, mapear os registradores lgicos PC e SP para os
registradores fsicos PC e SP e nicos do processador. Isso o que se denomina de
chaveamento de contexto1. 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.

Figura 4.2 A abstrao de processo em um sistema operacional

Outro princpio importante em sistemas operacionais a sua estruturao em


camadas hierrquicas com diferentes nveis de abstraes e interfaces. Um computador
um sistema de computao relativamente complexo devido variedade de
componentes de hardware e de software que o constitui e a sua interao. 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
1

O chaveamento de contexto mais complexo do que simplesmente agir sobre o PC e o SP, pois envolve
o salvamento de estado de todos os registradores fsicos do processador e a atualizao de uma srie de
tabelas internas do sistema operacional, mas para esta discusso, essa viso simplificada suficiente.

Livro Texto dos Minicursos

179

oferecidos. Tipicamente, um sistema de computao oferece trs tipos de interfaces:


instrues de mquina (privilegiadas); instrues de mquina (no privilegiadas) e
chamadas de sistema; e interface aplicativa de programao. A figura 4.3 ilustra essas
interfaces.

Figura 4.3 Interfaces genricas de um sistema de computao

O elemento central de um computador seu processador. Cada processador tem


um conjunto de instrues de mquina (ISA Instruction Set Architecture) que pode
seguir um determinado padro. Por exemplo, Intel e AMD, fabricam processadores que
implementam um mesmo padro ISA, o Intel IA-32 (x86). Os projetistas de software
compilam seu programas para obter cdigos binrios para um determinado ISA.
Portanto, o conjunto de instrues (ISA) uma interface entre o hardware e o software.
Na realidade, as instrues de mquina so ainda divididas em dois grupos:
privilegiadas e no-privilegiadas. Na prtica, isso cria uma diviso nesse nvel de
interface que permite que apenas alguns programas, os com privilgios especiais, como
o sistema operacional, possam executar todas as instrues, entre elas, as de
manipulao de recursos de hardware, como entrada e sada e interrupes. Os
programas de usurios executam apenas as instrues no-privilegiadas.
A segunda interface composta pelas instrues de mquina no-privilegiadas e
pelas chamadas de sistema, como as oferecidas por um sistema operacional. Essa
interface possibilita que um programa de usurio execute instrues no-privilegiadas
diretamente no processador, mas no permite o acesso aos recursos de hardware
(instrues privilegiadas). As chamadas de sistema so uma forma de permitir que os
programas de usurios acessem de forma indireta, e controlada, os recursos de hardware.
Atravs delas, os programas de usurio executam, aps ter sido garantido a
autenticidade e a validade da operao, operaes de acesso a recursos de hardware
(tipicamente E/S).
A terceira interface consiste nas chamadas a funes de biblioteca que, em geral,
so denominadas de interface aplicativa de programao (API Application Program
Interface). comum que as chamadas de sistema sejam ocultadas por uma API.

180

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Considerando essas interfaces, a implementao de mquinas virtuais pode ser


feita de dois modos. Primeiro, possvel fazer um programa de aplicao que fornea
um ambiente de execuo para outras aplicaes. Esse ambiente pode possuir um
conjunto de instrues abstratas que so interpretadas para gerar as instrues de
mquinas no-privilegiadas, as chamadas de sistema e de API de bibliotecas que
correspondem ao abstrata desejada. o caso da mquina virtual java (JVM).
possvel ainda que esse programa de aplicao emule chamadas de sistemas de outro
sistema operacional, como ocorre quando se executa Linux em sistemas Windows com
a ferramenta VMware player. Esse tipo de virtualizao o que se denomina de
mquina virtual de processo (figura 4.4a) [Smith e Nair, 2005].
Uma abordagem alternativa fornecer uma camada de software entre o hardware
e o sistema operacional protegendo o acesso direto deste aos recursos fsicos da
mquina. Essa camada oferece como interface ao sistema operacional um conjunto de
instrues de mquina que pode ser o mesmo do processador fsico, ou um outro. O
ponto importante que essa interface deve estar disponvel sempre que o computador
estiver ligado e que ela possa ser usada simultaneamente por diferentes programas. O
resultado final que possvel ter diversos sistemas operacionais (programas) executando
independentemente na mesma plataforma. Genericamente, essa mquina virtual
referenciada como monitor de mquina virtual (Virtual Machine Monitor VMM),
tambm conhecido como hypervisor, ou ainda, mquina virtual de sistema (figura 4.4b)
[Smith e Nair, 2005].

Figura 4.4 Tipos de mquinas virtuais e sua relao com sistemas hspede e
hospedeiro.

Um ponto importante a destacar que um processo uma entidade efmera, ou


seja, ele existe apenas quando um programa est em execuo. Portanto, uma mquina
virtual de processo s existe enquanto este estiver executando. J o monitor de mquina
virtual (hypervisor) est presente sempre que o computador estiver ligado. O processo
ou sistema que executa sobre uma mquina virtual denominado de hspede, enquanto
o ambiente sobre o qual ele executa chamado de hospedeiro. A figura 4.4 resume, de
forma esquemtica, as diferenas entre o uma mquina virtual de processo e monitor de
mquina virtual e suas relaes com sistema hspede e sistema hospedeiro.

Livro Texto dos Minicursos

181

Na figura 4.4a, uma aplicao executa sobre um programa que implementa uma
mquina virtual de processo (s vezes tambm chamado de runtime ou executivo).
Nesse caso, a mquina virtual utiliza as funcionalidades providas pelo sistema
operacional como chamadas de sistemas e funes de biblioteca e pelo prprio
processador atravs de instrues no-privilegiadas. A aplicao emprega apenas a
interface provida pelo ambiente (mquina) virtual. No outro caso, figura 4.4b, a
aplicao executa usando as chamadas de sistemas e funes de bibliotecas providas por
um sistema operacional, assim como as instrues no-privilegiadas oferecidas pelo
monitor de mquina virtual. Ressalta-se que, nesse caso, o prprio sistema operacional
executa as instrues oferecidas pelo monitor de mquina virtual, as quais podem ser as
mesmas ou no do hardware (processador) subjacente.
4.2.2 Suporte de hardware para virtualizao
Na seo anterior foi apresentado, sob o ponto de vista de software, no que consiste a
idia da virtualizao. No entanto, da mesma forma que ocorre na implementao de
sistemas operacionais convencionais, necessrio que o hardware do processador
proveja mecanismos bsicos que auxiliem o software na execuo de tarefas
consideradas essenciais.
Em 1974, Popek e Goldberg [Popek e Goldberg, 1974], introduziram trs
propriedades necessrias para que um sistema computacional oferecesse de forma
eficiente suporte a virtualizao:

Eficincia: todas instrues de mquina que no comprometem o


funcionamento do sistema devem ser executadas diretamente no hardware
sem interveno da mquina virtual.

Controle de recursos: uma mquina virtual deve ter controle completo sobre
os recursos virtualizados sendo estritamente proibido que um programa
executando sobre a mquina virtual os acesse diretamente.

Equivalncia: um programa executando sobre uma mquina virtual deve


exibir um comportamento idntico quele apresentado caso a mquina virtual
no existisse e o programa acessasse diretamente uma mquina fsica
equivalente. Duas excees so consideradas. Primeira, eventualmente,
algumas instrues podem ter seu tempo de execuo aumentado. Segunda,
pode haver problemas de conflito de acesso a recursos, os quais devem ser
resolvidos de forma apropriada.

Essas propriedades se traduziram na classificao do conjunto de instrues de


mquina de um processador (ISA) em trs grupos e em dois teoremas. As instrues de
mquina so divididas em: privilegiadas, que se executadas por um programa em modo
usurio causam excees (trap); sensveis de controle, que permitem a alterao de
recursos do sistema; e sensveis comportamentais, cujo resultado ou comportamento
dependem da configurao de recursos como, por exemplo, contedo de registradores
internos ou modos de execuo do processador.

182

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

O primeiro teorema diz que um monitor de mquina virtual (VMM) pode ser
implementado se as instrues sensveis de controle e comportamentais forem um
subconjunto das instrues privilegiadas. Isso se traduz no fato que qualquer instruo
que possa afetar o funcionamento da VMM deve passar por seu controle. O segundo
teorema diz respeito a possibilidade de uma VMM executar uma instncia de si mesma.
Para melhor compreender os problemas relacionados com o processador e a
virtualizao interessante analisar a arquitetura x86.
A arquitetura x86 prov quatro modos de operao para o processador,
denominados de anis de proteo (rings) ou CPL (Current Privilege Level),
identificados de 0 a 3. 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 no privilegiadas [Robin e Irvine, 2000] que so sensveis,
ou seja, o teorema 1 violado.
Na prtica, a condio do teorema 1 suficiente, mas no necessria, pois
possvel implementar mquinas virtuais para arquiteturas que no o respeitam pagandose o custo em desempenho. A virtualizao nessas arquiteturas feita tratando de forma
apropriada as instrues consideradas como sensveis. Duas tcnicas so normalmente
usadas. Primeira, as instrues sensveis so identificadas em tempo de execuo e
geram um desvio para a VMM trat-las adequadamente. Segunda, o programa a ser
executado na VMM modificado para que as instrues sensveis sejam substitudas
para chamadas a VMM. Essa tcnica conhecida como para-virtualizao (seo 4.2.3).
Entretanto, os fabricantes de processadores, AMD e Intel, desenvolveram
extenses para a arquitetura x86 para suportarem a virtualizao. As extenses da AMD,
denominada de AMD-V (AMD-Virtualization), codinome Pacfica, se aplica s
arquiteturas x86 de 64 bits como o Athon, Turion, Phenom e as linhas mais recentes. A
Intel apresenta suas extenses para as arquiteturas x86 de 32 e 64 bits. Essas extenses
so conhecidas por IVT (Intel Virtualization Technology) ou pelo seu codinome,
Vanderpool. As solues da AMD e da Intel foram desenvolvidas independentemente
uma da outra e so incompatveis, embora sirvam para o mesmo propsito. A AMD
implementa funes especiais no processador que so executadas por um hypervisor e
que podem controlar, em seu nome, se determinados acessos de um sistema hspede so
permitidos. A Intel introduziu mecanismos similares (virtual machines extensions) que
complementam a idia do conceito de anis de proteo com dois novos modos: root e
no-root. Esses modos so controlados pelo hypervisor (que executa em modo root) e
que pode transferir a execuo de um sistema operacional hspede para o modo noroot no qual instrues do anel zero so executadas sem risco para o sistema.

Livro Texto dos Minicursos

183

Por fim, uma conseqncia importante dessa discusso de suporte de hardware


que os softwares que implementam tcnicas de virtualizao podem apresentar
problemas de compatibilidade, ou de desempenho, quando executados em determinados
processadores. importante verificar se a ferramenta de virtualizao a ser empregada
possui algum tipo de restrio quanto ao processador.
4.2.3 Virtualizao total e paravirtualizao
A implementao de mquinas virtuais de sistema ou monitores de mquinas virtuais
(VMM) pode ser obtida atravs de duas tcnicas: virtualizao total ou completa e a
para-virtualizao.
A virtualizao total (figura 4.5) consiste em prover uma rplica (virtual) do
hadware subjacente de tal forma que o sistema operacional e as aplicaes podem
executar como se tivessem executando diretamente sobre o hardware original. A grande
vantagem dessa abordagem que o sistema operacional hspede no precisa ser
modificado para executar sobre a VMM. No entanto, essa abordagem tem alguns
inconvenientes.
Primeiro, dada a diversidade de dispositivos existentes que compem um
computador, muito difcil implementar uma mquina virtual que imite o
comportamento exato de cada tipo de dispositivo. A soluo consiste em prover na
VMM suporte a um conjunto genrico de dispositivos. Tipicamente, cada VMM possui
um teclado e mouse do tipo PS/2, unidades de floppy, controladores IDE, cd-rom
ATAPI, portas seriais e paralelas, 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. Segundo, por no ser modificado, as instrues executadas pelo sistema
hspede devem ser testadas na VMM para saber se elas so sensveis ou no, o que
representa um custo de processamento. Terceiro, a implementao de VMM com
virtualizao total deve contornar alguns problemas tcnicos devido a forma os sistemas
operacionais so implementados. Por exemplo, um sistema operacional convencional
(Linux ou Windows) implementa memria virtual atravs de paginao. H toda uma
gerncia de alocao, liberao e controle de acesso s pginas que devem respeitadas.
Grosso modo, necessrio converter o espao de endereamento do sistema hspede
para um real, disputando recursos com outro sistema hspede. Tecnicamente, no h
maiores empecilhos em se fazer isso, porm, esse tratamento tambm representa uma
queda de desempenho.
A para-virtualizao (figura 4.6) uma abordagem alternativa que surge como
forma de contornar as desvantagens da virtualizao total. Nessa abordagem, o sistema
hspede modificado para chamar2 a VMM sempre que for executada uma instruo ou
ao considerada sensvel. Dessa forma, o teste por instruo no mais necessrio.
Alm disso, na para-virtualizao os dispositivos de hardware so acessados por drivers
da prpria VMM.
2

O termo normalmente empregado para tal hypercalll, ou seja, a substituio da chamada de uma
instruo sensvel pela chamada a um tratador de interrupo de software (trap) com uma parametrizao
adequada de registradores.

184

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Figura 4.5 Virtualizao total

Figura 4.6 Para-virtualizao

Para concluir, convm ressaltar alguns pontos importantes desta discusso. A


virtualizao total permite que um sistema hspede execute em uma VMM sem
necessitar nenhuma alterao, ao passo que com a para-virtualizao o sistema hspede
precisa ser modificado para enxergar a VMM. Por outro lado, a para-virtualizao
explora de maneira apropriada os recursos disponveis pelo hardware real da mquina e
apresenta um melhor desempenho que a virtualizao total. Entretanto, face o atual
suporte de hardware virtualizao presente nos processadores Intel e AMD, a
virtualizao total e a para-virtualizao tm apresentado desempenhos semelhantes
[XenSource 2008a]. A anlise apresentada em [XenSource 2008a] consistiu em executar
benchmarks como SPECcpu2000, Passmark e Netperf, que juntos simulam cargas de
trabalho similares as apresentadas por datacenters.

Livro Texto dos Minicursos

185

4.2.4 Emulao, simulao e virtualizao


Ao iniciar o estudo sobre virtualizao, h dois conceitos que normalmente aparecem:
simulao e emulao. Simulao, de acordo com dicionrio Houaiss da lngua
portuguesa, o ato de representar com semelhanas certos aspectos de; imitar ou
fingir. Sob o ponto de vista computacional, um sistema fsico, ou abstrato, pode ser
descrito atravs de um modelo matemtico que representa certas caractersticas chaves
para o entendimento de seu comportamento ou funcionamento. Um simulador um
programa que implementa um modelo de sistema recebendo parmetros de entrada e
condies iniciais de contorno e serve para auxiliar na predio e anlise de
comportamento do sistema simulado. A simulao computacional tem sido uma tcnica
bastante importante em vrias reas como fsica, qumica, geocincias, biologia, entre
outras. Um tipo especial de simulao a interativa, onde um agente externo humano
participa do lao de simulao introduzindo eventos e reaes que servem como
parmetros de entrada para um modelo. Esse o caso de simuladores de vo, de
pilotagem e da maioria dos jogos de computadores.
J emulao, tambm segundo o Houaiss, em um de seus sentidos, o esforo
para imitar ou tentar seguir o exemplo de algum. Em termos computacionais, entendese a capacidade de um programa de computador, ou de um dispositivo eletrnico, imitar
outro programa ou dispositivo. Em si, um emulador um programa que cria uma
camada de software entre uma plataforma3 hspede e a plataforma hospedeira a ser
imitada. Dessa forma, um emulador capaz de executar os mesmos programas do
sistema original (hspede) sobre outro sistema (hospedeiro), reproduzindo os mesmos
resultados para as mesmas entradas. interessante salientar que no importa como o
emulador faz isso, ou seja, seus estados internos, mas sim seu comportamento externo.
Entretanto, R. Jain [Jain, 1991] define emulao como a simulation using hardware or
firmware is called emulation e A. Singh [Singh, 2008] diz a simulator can be
informally thought of as an accurate emulator.
Da mesma forma, no existe uma definio consensual sobre o que
virtualizao, uma usualmente empregada aquela dada em [Singh, 2008]: virtualizao
um framework ou metodologia para dividir os recursos de um computador em
mltiplos ambientes de execuo, aplicando um, ou mais conceitos, e tecnologias como
particionamento de software ou hardware, tempo compartilhado, simulao completa ou
parcial da mquina, emulao e qualidade de servios. De maneira pragmtica,
virtualizao pode ser definida como uma tcnica que permite particionar um nico
sistema computacional em vrios outros sistemas totalmente separados. Cada um desses
sistemas capaz de oferecer um ambiente, denominado de mquina virtual, que estende
ou substitui uma interface existente de modo a imitar o comportamento de um outro
sistema.

Por plataforma se entende o conjunto composto pelo hardware e software de um sistema computacional,
incluindo seu sistema operacional.

186

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.2.5 Outras tcnicas de virtualizao


Um desafio para a implementao de mquinas virtuais de processo quando o sistema
hspede possui um conjunto de instrues diferente do sistema hospedeiro. A forma
mais direta de resolver esse problema atravs de interpretao. Um interpretador
busca, decodifica, analisa, instruo por instruo, e traduz cada uma delas por seu
equivalente no sistema hospedeiro. Apesar de vivel, o interpretador introduz um custo
de processamento que impacta no desempenho. Para contornar esse problema surge a
tcnica de traduo binria dinmica [Ung, 2000] a qual converte as instrues do
sistema hspede para o sistema hospedeiro em blocos e as armazena em uma cache para
reaproveitamento futuro.
importante salientar que a tcnica de traduo binria dinmica usada mesmo
quando o sistema hspede e o sistema hospedeiro possuem o mesmo conjunto de
instrues. Nesse caso, a traduo ocorre no sentido de aes, convertendo uma
ao do sistema hspede por sua ao equivalente no hospedeiro. Um exemplo a
possibilidade executar Linux sobre Microsoft Windows e vice-versa.
Outra tcnica de virtualizao que privilegia a portabilidade a de mquinas
virtuais de linguagem de alto nvel. Nesse caso, a mquina virtual definida e
implementada levando em conta um ambiente de desenvolvimento composto por uma
linguagem de alto nvel e seu compilador. O cdigo compilado no corresponde a
nenhuma arquitetura real existente, mas sim a mquina virtual definida. Para cada
arquitetura real deve haver uma implementao especfica dessa mquina virtual, assim
o cdigo compilado para esse sistema pode executar sobre qualquer sistema. Essa a
abordagem da mquina virtual Java e da Microsoft Commom Language Infrastructure,
base do .Net.

4.3. Virtualizao em ambientes de rede


At agora, a virtualizao tem sido apresentada principalmente como uma tcnica que
permite executar mltiplos sistemas operacionais e 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 o utilizam [EMA, 2008]. Nesse contexto, encontramos o uso
da virtualizao na implementao de desktops remotos, de discos virtuais, na
computao em cluster e mesmo de dados como, por exemplo, atravs do uso de XML,
SQL, JMS, entre outros.
Em ambientes de rede, na forma como estamos acostumados a pensar, a tcnica
de virtualizao encontra emprego na implantao de servios Internet e na prpria
infra-estrutura de rede. Esses aspectos so detalhados a seguir.

Livro Texto dos Minicursos

187

4.3.1 Virtualizao de servios Internet


Os servios Internet, em geral, foram, e ainda so, concebidos usando uma arquitetura
multi-camadas (multi-tier system architecture). Nesse tipo de soluo, um servio
dividido em vrias unidades funcionais e as mesmas so distribudas em vrias
mquinas objetivando uma srie de benefcios, entre outros, balanceamento de carga,
tolerncia a falhas, reaproveitamento de servidores e servios, etc. Um exemplo disso
so os servidores web que acessam um banco de dados. O banco de dados no precisa
estar na mesma mquina que o servidor web. Havendo um servidor de banco de dados
nico, tanto o servidor web como um outro servio qualquer pode usufru-lo. Assim no
se replica o servio de banco de dados e se evita que o servidor web atue tambm como
um servidor de banco de dados.
No entanto, essa abordagem trouxe como contra-partida a filosofia um servidor
por servio. Rapidamente, os responsveis pelas reas de TI se deram conta do
problema (e custo) em gerenciar diferentes mquinas fsicas, mesmo que tivessem o
mesmo sistema operacional. Alm disso, h problemas relacionados com consumo de
energia eltrica, refrigerao, espao fsico, segurana fsica, etc. Nesse contexto, a
virtualizao surge como uma possibilidade de agregar os benefcios da componetizao
de sofware com a reduo dos custos de manuteno de hardware e software. Assim,
possvel manter a idia de um um servidor por servio sem ter um hardware
especfico.
Essa abordagem reforada pela lei de Zipf [Adamic, 2008] que pode ser
sintetizada da seguinte forma: a freqncia de um evento proporcional a x, onde x
um ranking de comparao de um evento a outro. Alguns estudos [Breslau, Cao, Fan,
Philips e Shenker, 2008] mostraram que a freqncia de acesso a servidores web e
outros servios Internet seguem uma distribuio Zipfian, o que, na prtica, se traduz
pelo fato de que a maioria dos acessos a servios Internet para uma minoria deles.
Portanto, conclui-se que uma minoria de servios est ativa enquanto a maioria est
bloqueada a espera de requisies, o que, claramente, representa um desperdcio de
recursos. Para exemplificar, imagine, entre outros, o uso dos servidores de autenticao,
DHCP, impresso, arquivos, e-mail, web e DNS em sua rede corporativa.
Ento por que no pensar na possibilidade de pr vrios servios em um nico
servidor? Apesar de possvel, e muitas vezes, ser feito dessa forma, essa soluo traz
inconvenientes. Primeiro, no h como fazer isso se os servios executam sobre
sistemas operacionais diferentes. Segundo, quanto mais servios se tm em um mesmo
sistema, mais se aumenta chance de um deles apresentar uma vulnerabilidade. Se essa
vulnerabilidade for explorada, pode-se comprometer todo o conjunto de servios ao
invs de apenas quele que apresenta o problema. Nesse contexto, a virtualizao surge
como uma soluo interessante. possvel se instalar uma mquina virtual por servio,
com todas essas mquinas virtuais executando sobre o mesmo hardware fsico. Assim se
mantm os servios isolados entre si, se reduz o custo de manter computadores
adicionais especficos e se evita a subutilizao do hardware. Essa abordagem de pr
vrios servidores virtuais em uma mesma mquina fsica denominada de consolidao
de servidores.

188

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.3.2 Virtualizao da infra-estrutura de rede


Alm dos servios Internet e outros que constituem o que os usurios prcebem como
sendo a rede, h a infra-estrutura fsica composta por equipamentos de interconexo e
sua interligao. Uma forma de enxergar esses equipamentos v-los como mquinas
com um sistema operacional especfico (runtime) dedicado a execuo de uma tarefa
como roteamento, encaminhamento de pacotes (switches) e firewalls. Inclusive, muitos
fabricantes desses equipamentos usam solues baseadas em linux embarcado. Portanto,
por que no estender a idia de mquinas virtuais a esses equipamentos?
A virtualizao de equipamentos de interconexo de redes inicia no suporte que
as prprias mquinas virtuais oferecem para as interfaces de rede. As interfaces de redes
virtuais se comportam exatamente como interfaces reais com endereos MAC distintos,
suporte a unicast, multicast, broadcast e VLANs. Alm disso, cada mquina virtual tem
seu prprio endereo IP. Portanto, uma mquina virtual se comporta, sob o ponto de
vista de interconexo rede, como um sistema real, podendo ser interligado a switches e
roteadores como se fossem mquinas fsicas distintas. Tipicamente, a placa de rede
fsica programada para operar em modo promscuo e o driver de rede modificado
para fazer a multiplexao e demultiplexao de seu uso pelas diferentes interfaces
virtuais.
comum se encontrar referncia ao par TUN/TAP. Eles nada mais so do que
drivers de dispositivos virtuais disponveis para os sistemas operacionais atuais como o
MacOs, o Windows 2000/XP/Vista, Linux e Unixes, em geral. Normalmente, eles so
aparecem no contexto de redes privativas virtuais (VPN Virtual Private Network) ou
em conjunto com o OpenSSH. Na realidade, TUN/TAP emulam, respectivamente, o
comportamento da camada de rede e de enlace. O TAP permite a criao de bridges
enquanto o TUN executa roteamento. Uma aplicao pode usar o driver TUN/TAP para
enviar e receber dados. No envio, os dados so encaminhados para a pilha de protocolos
de rede como se eles fossem oriundos de uma fonte externa. A recepo similar.
Assim, com o uso dos drivers TUN/TAP, qualquer par de aplicaes podem enviar e
receber dados como se eles estivem tratando com um disposito externo. Essa a base
usada para prover uma comunicao em rede virtual.
J os equipamentos de interconexo de redes, como switches e roteadores, no
fazem parte naturalmente das mquinas virtuais, mas podem ser emulados da mesma
forma. Atualmente existem duas formas de prover essa emulao. A primeira consiste
em oferecer um produto completo que disponibilize, alm da mquina virtual, suporte
para equipamentos de interconexo de rede virtuais. Essa a soluo adotada pela
VMware (www.vmware.com), pela Microsoft (www.microsoft.com) e pela Citrix
(www.citrix.com) em seus produtos destinados a clientes coorporativos. A segunda
prover mquinas virtuais dedicadas a essa finalidade, como , por exemplo, o caso da
Vyatta (www.vyatta.com) que oferece um produto compatvel com os hypervisors mais
comuns no mercado. A soluo da Vyatta agrega uma camada de software suplementar
que simula equipamentos de interconexo de redes. Na realidade, h uma terceira
possibilidade que oferecer hardware especfico com suporte a virtualizao de
equipamentos de interconexo, como o caso de alguns produtos da linha Catalyst da
Cisco (www.cisco.com).

Livro Texto dos Minicursos

189

Portanto, possvel construir uma infra-estrutura de rede completa totalmente


virtualizada. A arquitetura exata e as opes de projeto, como em uma rede real,
dependem, caso a caso, em funo de requisitos da organizao. O importante a
salientar que existe tecnologia para tal.
4.4. Ferramentas de virtualizao
A virtualizao tem se tornado 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, consulte a wikipedia ou
o google fazendo uma busca por virtualizaition. Basicamente, existem solues
comerciais, gratuitas, em software livre, integradas a sistemas operacionais, etc. Seria
invivel, e fora do escopo deste trabalho, tecer comentrios sobre todas elas, por isso
optou-se por apresentar aquelas que esto atualmente dominando o mercado da
virtualizao: VMware e o Xen. Alm delas, h a resposta da Microsoft ao movimento
mundial da virtualizao, que dado o parque de mquinas instaladas com esse sistema
tambm foi escolhida para uma discusso mais detalhada.
4.4.1 VMware
O VMware [VMware, 2008c] na realidade 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, a 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 como apresentado na seo 4.2.1. Essa categoria composta
por oito produtos:

VMware ESX Server 3: a base para a criao de datacenters virtuais. O ESX


server um hypervisor que virtualiza os recursos de hardware do tipo
processador, memria, armazenamento e rede. Dessa forma, o ESX Server
permite que um servidor fsico seja particionado em vrias mquinas virtuais e
que cada uma seja vista como uma mquina fsica em uma infra-estrutura de
rede convencional.

VMware ESX Server 3i: possui as mesmas caractersticas e funcionalidades


descritas anteriormente para o ESX Server 3. A diferena consiste na sua
arquitetura interna e na forma como alguns procedimentos de gerenciamento so
executados.

190

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

VMware Virtual SMP: permite que uma nica mquina virtual empregue mais
de um processador fsico simultaneamente. Na atual verso, uma mquina virtual
pode empregar at quatro processadores fsicos.

VMware VMFS: um sistema de arquivos que permite que vrias mquinas


virtuais acessem concorrentemente, para leitura e escrita, um mesmo meio de
armazenamento. Alm disso, oferece uma srie de facilidades como adicionar e
remover dinamicamente ESX servers da estrutura de um sistema de arquivos,
adaptar tamanho de bloco para volume e para arquivos e recuperao de falhas.

VMware Server: a verso gratuita dos produtos ESX Server. Seu objetivo
essencial permitir que usurios testem o produto antes de adquiri-lo. Assim
como as verses ESX, o VMware Server oferece a virtualizao de processador,
memria, armazenamento e infra-estrutura de rede que so configurados atravs
de ferramenta prpria no disponvel na verso gratuita. Para contornar o
problema de configurao, ou seja, a criao do ambiente hspede, a VMware
oferece uma srie de imagens de ambientes predefinidas em seu site. Essas
imagens so denominadas de appliances e contemplam os servios de rede mais
comuns (web, arquivos, impresso, DNS, etc).

VMware Workstation: o ambiente que permite a criao de mquinas virtuais


sobre o hypervisor. Isso significa que possvel carregar um sistema operacional
qualquer nessa mquina virtual e executar as suas aplicaes. A configurao
das mquinas virtuais para um determinado sistema operacional feita atravs
de ferramenta especfica que parte integrante desse produto.

VMware Fusion: a soluo VMware Workstation equivalente para o sistema


operacional MacOS X.

VMware Player: a verso gratuita do produto VMware Workstation. Assim


como ocorria na verso server, o objetivo permitir que usurios testem o uso
da virtualizao e no possvel definir (criar) o sistema hspede na mquina
virtual a partir do zero. Novamente, em seu site, a VMware distribui uma srie
de appliances (imagens de sistemas hspedes) que contemplam diferentes
distribuies de linux e Windows Server 2003.

A figura 4.7 mostra de forma esquemtica a aplicao desses produtos na


definio de uma infra-estrutura virtual completa (mquinas e rede). Os dois
componentes essenciais so o produto ESX server que oferece a camada necessria para
a virtualizao dos recursos de hardware (hypervisor) e as mquinas virtuais definidas
sobre ele atravs do produto VMware workstation. Cabe ressaltar que a verso ESX
Server oferece switches virtuais (com suporte a VLANs) para interligar as mquinas
virtuais.

Livro Texto dos Minicursos

191

Figura 4.7 infra-estrutura virtual VMware

Para concluir a apresentao do VMware, alguns comentrios finais sobre o


funcionamento do VMware Player e do VMware Workstation por serem bastante
populares para as plataformas Intel 32-bits. A abordagem escolhida pelo VMware de
executar como uma aplicao do sistema hospedeiro, ou seja, funcionam tambm como
mquina virtual de processo. Dessa forma, o suporte para os diferentes dispositivos de
entrada e sada fornecido pelo prprio sistema operacional hspede. Essa soluo
denominada de Hosted Virtual Machine Architecture (HVMA). Na realidade, por
questes de desempenho, o VMware 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. 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 tenha o seu prprio endereo IP.
4.4.2 Xen
O Xen [XenSource, 2008b] um monitor de mquina virtual (hypervisor ou VMM), 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. O Xen originrio de um projeto de pesquisa da
universidade de Cambridge, que resultou em um empresa, a XenSource inc, adquirida
pela Citrix System em outubro 2007.
O Xen implementa a virtualizao de uma forma um pouco diferente daquela
apresentada na seo 4.2. Os dois principais conceitos do Xen so domnios e
hypervisor. Os domnios so as mquinas virtuais do Xen e so de dois tipos:
privilegiada (domnio 0) ou no-privilegiada (domnio U). O hypervisor tem por funo

192

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

controlar os recursos de comunicao, de memria e de processamento das mquinas


virtuais, e no possui drivers de dispositivos. O hypervisor 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
hypervisor. 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 possu 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 a rede e ao disco efetuados
pelas mquinas virtuais dos domnios U. A figura 4.8 mostra o relacionamento entre o
hypervisor, o domnio 0 e as demais mquinas virtuais.

Figura 4.8 Componentes do Xen: hypervisor e domnios

A primeira verso do Xen de outubro de 2003 e, originalmente, o hypervisor


foi implementado usando a tcnica da para-virtualizao, ou seja, era necessrio
modificar os sistemas operacionais hspedes (domnios U) para torn-los conscientes do
hypervisor. 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 completa, 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 de hardware
(Intel VT ou AMD-V).

Livro Texto dos Minicursos

193

Para oferecer suporte tanto para a para-virtualizao como para a virtualizao


completa, o Xen distingue os domnios U entre para-virtualizados (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 a rede e a disco para
interagirem com as suas contra-partidas no domnio 0. J as mquinas dos domnios UHVM no possuem esses drivers (no foram modificados) e iniciam como um sistema
convencional procurando executar a BIOS. O Xen virtual firmware simula a existncia
da BIOS executando 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 UHMV (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.4.3 Virtualizao e Microsoft
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, treinamento,
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.

194

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Desses produtos, dois tm especial interesse para o escopo deste trabalho, o


virtual PC 2007 e o Windows Server 2008 Hyper-V, que sero comentados a seguir.
O Virtual PC 2007 uma mquina virtual para famlia Windows que pode ser
configurada para executar qualquer outro sistema operacional. 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.
A Microsoft j vinha atuando no segmento de virtualizao de servidores com o
Microsoft Virtual Server 2005. A proposta do Windows 2008 Server Hyper-V ser a
evoluo desse produto respondendo a novas demandas e explorando eficientemente as
arquiteturas de 64 bits, processadores multicore e meios de armazenamento.O Windows
2008 o componente-chave da estratgia da Microsoft para atuar no segmento da
virtualizao, no que ela denomina de datacenter-to-destktop virtualization strategy.
Dentro dessa estratgia a Microsoft oferece todo um ambiente integrado de
gerenciamento da virtualizao (monitorao, automatizao de procedimentos,
migrao, recuperao de desastres etc).
Entre as principais vantagens do Windows 2008 Server Hyper-V esto vrias
ferramentas para automatizar o processo de virtualizao. Uma delas o Manager
Physical-to-virtual (P2V) que auxilia na converso de servidores fsicos para virtuais.
H tambm o Volume Shadow Copy Services que realiza automaticamente
procedimentos de backup e de disponibilidade de forma que o sistema, como um todo,
opere de forma homognea independente de falhas e de picos de carga. Isso feito por
tcnicas de migrao de mquinas virtuais. Um ponto que recebeu especial ateno foi a
segurana. Para isso, o Hyper-V usa mecanismos em hardware existentes nos atuais
processadores, como o execute-disable-bit que reduz o sucesso de ataque de vrios
tipos de vrus e vermes. O Hyper-V refora o aspecto de segurana atravs de um
restrito controle de regras de permisses integrado com o Active Directory e com
polticas de grupo. Alm disso, o Hyper-V permite que as mquinas virtuais usem, sem
restrio alguma, as tcnicas e ferramentas de segurana tradicionalmente empregadas
nas mquinas fsicas (firewalls, quarentena, anti-virus, entre outros).

Livro Texto dos Minicursos

195

4.5. Casos de uso


A virtualizao traz benefcios em uma srie de situaes. Seu emprego clssico na
consolidao de servidores, ou seja, executar vrios servios em uma mesma mquina
fsica, mas cada um em uma mquina virtual separada. Alm de permitir que o hardware
fsico seja melhor aproveitado, isso reduz investimento na aquisio e na manuteno de
uma infra-estrutura fsica de rede (refrigerao, cabeamento, espao fsico, consumo de
energia etc). Uma vantagem importante o fato de que uma mquina virtual pode ser
facilmente migrada de uma mquina fsica a outra, o que possibilita uma rpida
recuperao em casos de falhas e agiliza a manuteno de parques de mquinas. Ainda,
como cada mquina virtual um sistema totalmente isolado dos demais, a falha, ou
comprometimento, de um servio no afeta os demais.
O desenvolvimento de software uma outra situao em que a virtualizao traz
vantagens. possvel testar um produto em desenvolvimento sobre vrios sistemas
operacionais, e suas distintas verses, sem a necessidade de ter uma mquina fsica
instalada com cada sistema operacional. Outro uso interessante da virtualizao a
possibilidade de construir ambientes de testes, onde se pode instalar, configurar e avaliar
pacotes de software antes de p-lo em produo, isso sem comprometer um sistema
computacional fsico. Essa mesma caracterstica permite a construo de honeypots.
Nesse caso, possvel criar um ambiente virtual completo, com vrios servidores, cada
um com um sistema operacional distinto e/ou servios, e assim monitorar atividades de
tentativas de invaso sem, novamente, afetar um sistema fsico.
Na prtica, existem muitas aplicaes onde a virtualizao pode ser interessante,
mas, tipicamente, elas se encaixam nas situaes descritas anteriormente. Nesta seo
optou-se por elaborar um pouco mais essas trs situaes: virtualizao de servidores,
virtualizao de desktops e uso de honeypots.
4.5.1 Virtualizao de servidores
De acordo com uma pesquisa realizada pela Network World (www.networkworld.com),
a virtualizao de servidores motivada, em ordem de importncia, pelas seguintes
razes : aumentar a taxa de utilizao de servidores, reduzir os custos operacionais de
datacenters, melhorar os procedimentos de recuperao de desastres e de backup, criar
ambientes mais flexveis para desenvolvimento e teste de software e reduzir custos de
administrao de TI. O princpio bsico o melhor aproveitamento de recursos: 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).
Atualmente, uma organizao corporativa, por menor que seja, apresenta uma
srie de servios Internet considerados essenciais, como servidores web, e-mail, etc.
Muitas dessas organizaes, por questes que variam desde investimentos segurana,
optam por hospedar seus servidores em data centers. Porm, isso no invlida dois
pontos importantes. Primeiro, o problema de manter servidores, que passa a ser dos data
centers. Segundo, apesar de terceirizar alguns servios Internet, comum manter na
rede local da organizao alguns servios como DHCP, impresso, autenticao,

196

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

arquivos e aqueles de aplicaes relacionados com o negcio da empresa (softwares de


ERP, por exemplo).
Inicialmente, vamos discutir o caso da pequena e mdia organizao e seus
servidores. Nesse contexto, comum os servidores serem 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
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, h ferramentas que auxiliam nessa
migrao. A notar, ainda, que cada mquina virtual tem seu prprio sistema operacional,
portanto, possveis pr no novo equipamento os servios, ou aplicaes, que executam
em diferentes sistemas operacionais como, por exemplo, Microsoft Windows e Linux.
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 reconfigurar softwares especficos.
Para o caso de data center, as vantagens discutidas anteriormente tomam uma
envergadura maior. Em um data center, pela sua prpria natureza, comum haver
diferentes sistemas operacionais e, eventualmente, mais de uma verso de um mesmo
sistema operacional devido a necessidades especificas de produtos que seus clientes
executam. Sem virtualizao, cada sistema operacional (e verso) precisaria de um
hardware dedicado. Isso representa 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 (cliente) para outro enquanto a troca feita. A migrao ainda
til como mecanismo de balanceamento de carga, movendo servios de uma mquina a
outra at homogeneizar a carga do sistema. Isso evita que certos sistemas fiquem
sobrecarregados enquanto outros esto ociosos. Novamente, a noo de imagem de uma
mquina virtual auxilia nessas tarefas.
Um ponto a ressaltar que no caso de data center, a virtualizaao no a nica
alternativa. Muitos fabricantes oferecem linhas de servidores de alto-desempenho que

Livro Texto dos Minicursos

197

oferecem vantagens similares s da virtualizao. Por exemplo, existe disponvel no


mercado mquinas NUMA de at 72 processadores que podem ser particionados via
hardware em at 18 domnios de 4 processadores. Assim, uma nica mquina fsica
pode ser configurada para operar como se fosse 18 mquinas fsicas distintas, cada uma
com seu prprio sistema operacional. H tambm a opo de servidores blade. Nesses
casos, a queda de um n (blade) pode ser sanada com a instalao fsica de outro blade.
Os sistemas de gerenciamento de servidores blade oferecem software de gerenciamento
para facilitar o backup, instalao e reconfigurao de blades. Decidir qual soluo
funo do gerente de TI ponderando vantagens e desvantagens em funo do
investimento e retorno esperados.
4.5.2 Virtualizao de desktops
A consolidao de servidores o uso clssico de virtualizao, mas ela 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.
Talvez a situao recm descrita no parea um caso comum, mas h um tipo de
usurio que pode se beneficiar de executar programas hspedes em diferentes sistemas
operacionais hospedeiros: projetistas de software. As mquinas virtuais permitem isso
de maneira bastante simples, o que interessante em fases de desenvolvimento e
depurao de software. Um outro ponto, vinculado a depurao de sistemas, a
facilidade que as mquinas virtuais tm de quando finalizadas registrar uma espcie de
instantneo (snapshot) de seu estado. Isso permite que uma anlise seja parada e
retomada mais tarde a partir do mesmo ponto.
Em organizaes de um determinado porte comum o tempo de processamento
dos desktops ser subutilizado. Por exemplo, o horrio comercial de cerca de 9 horas
dirias, ou seja, 45 horas por semana, mas uma semana tem um total de 168 horas (24 x
7), portanto, a taxa de utilizao dos equipamentos de aproximadamente 27%. Uma
forma de recuperar esse processamento associar ao descanso de tela uma mquina
virtual, dessa forma, quando o descanso de tela ativado ele pode registrar uma
mquina virtual em um servidor central e assim formar um cluster (agregado) de
computadores virtuais. Esse uso derivado de programas peer-to-peer, como
seti@home. Existem vrios projetos desenvolvidos nesse sentido. Normalmente, a
tcnica emprega um horrio a partir do qual o registro feito e validado, por exemplo,
s 20 horas, quando se espera no haver mais nenhum colaborador na organizao, e, no
incio da manh (6 horas) feito um salvamento do estado da computao (checkpoint)
da mquina virtual e, em seguida, a mquina liberada para seu uso convencional.
Outra utilizao interessante da virtualizao em laboratrios de treinamento e
de ensino como aqueles encontrados em universidades. Para algumas disciplinas

198

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

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 e instalar
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. As mquinas virtuais de processo so as mais indicadas para essas
aplicaes. 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.
Um comentrio para concluir esta seo. importante lembrar que as mquinas
virtuais so imagens que so facilmente instaladas, o que permite restaurar uma
mquina para um sistema padro de forma bastante simples e rpida. Para se ter uma
ordem de grandeza, nos atuais PC, o tempo de inicializao de uma mquina virtual
VMware, com um sistema hspede Linux, em ambientes hospedeiros Microsoft
Windows, de cerca de 70 segundos.
4.5.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 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 que so postas em segmentos de redes especficos, o que aumenta os
investimentos tanto em nvel de hardware como de suporte de TI.
A virtualizao surge como uma opo interessante para se implementar
honeypots por vrias razes. Primeira, o comprometimento de um sistema operacional
resolvido apenas com a remoo da mquina virtual e a instanciao de uma nova.
Segunda, em um mesmo hardware fsico possvel se 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 se pode 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

Livro Texto dos Minicursos

199

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
honeypot www.honeyclient.org.

4.6. Planejando solues com virtualizao


Na seo anterior foram apresentadas situaes onde a virtualizao pode ser empregada
para trazer benefcios, porm o sucesso de sua implantao depende de uma anlise
mais criteriosa quanto ao seu emprego. importante ter conscincia que a virtualizao
uma deciso sobre a arquitetura da infra-estrutura de TI e no apenas mais um projeto
de implantao de um novo sistema operacional ou de um aplicativo. Portanto, a adoo
da virtualizao deve ser vista como um projeto de longo termo e no como modismo
passageiro, pois, para obter o melhor resultado, necessrio avaliar e investir em uma
boa soluo e na capacitao da equipe de TI. Alm disso, importante salientar que
com o tipo de mudana que a virtualizao traz possvel se encontrar resistncias
culturais e desconfianas quanto a sua implantao. O objetivo desta seo levantar
uma srie de aspectos para auxiliar e orientar na implantao de solues baseadas em
virtualizao.
Inicialmente, no existe um manual de Como implementar virtualizao em
minha empresa, mas muitos procedimentos gerenciais usuais podem ser aplicados com
sucesso. Uma analogia interessante a da segurana da informao luz da norma ISO
17799. Os vrios livros, manuais e artigos que tratam da segurana da informao fazem
referncia a dois pontos fundamentais: apoio e comprometimento dos nveis gerenciais e
pensar a soluo como um todo. Depois vm, mas no menos importantes, uma srie
de aspectos como identificao de ativos, proprietrios de dados, anlise de riscos etc.
Todos esses pontos so vlidos para a virtualizao.
A virtualizao um projeto que implica em uma mudana de paradigma, e
como tal, importante contar com o apoio de nveis hierrquicos superiores. Seu
emprego modificar a forma pela qual os equipamentos sero comprados e como novos
sistemas sero instalados. Uma recomendao comum planejar a virtualizao como
um todo, mas implant-la passo a passo. Isso permite que as pessoas adquiram
confiana na soluo e possibilita que se tenha, em curto prazo (cerca de seis meses),
um ROI (Returns on Investiment) mensurvel. Uma forma de fazer isso iniciar
consolidando servidores que no sejam fundamentais para o negcio. O fato de
demonstrar que servidores como, por exemplo, DHCP, DNS, impresso, executam em
uma nica mquina fsica, sem comprometer desempenho e segurana, e que,
eventualmente, cada um executa um sistema operacional diferente algo que se torna

200

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

um carto de visita para a soluo. Esse carto de visitas pode auxiliar na conquista
dos nveis hierrquicos superiores.
Mas, ao menos existe um road map para a implantao da virtualizao? A
resposta sim e, novamente, nada mais do que uma adaptao de tcnicas j
conhecidas. possvel identificar quatro fases: avaliao do sistema; planejamento e
projeto; execuo; e, gerenciamento e manuteno.
A fase de avaliao do sistema consiste em um inventrio de todos os sistemas,
hardware e software, existentes na infra-estrutura a ser virtualizada. O objetivo
descobrir todos os servios, os equipamentos e sistemas operacionais empregadosno
dia-a-dia. importante identificar a percepo que as pessoas tm da infra-estrutura de
rede, a carga de trabalho dos servidores e o desempenho de cada um deles.
A viso que os usurios tm da rede no deve ser subestimada, pois so eles os
clientes finais, os proprietrios dos dados e os que executam tarefas dirias usando a
infra-estrutura de rede. A melhor forma de se obter essa viso atravs de entrevistas
com os responsveis das diversas reas. O objetivo entender o fluxo de informao e
procedimentos feitos quotidianamente e como a virtualizao pode afet-los. A seguir,
preciso levantar a taxa de utilizao dos recursos fsicos como, processador, memria
RAM, armazenamento e trfego de rede. Isso permitir dimensionar equipamentos e
dividir adequadamente servios de forma a utilizar eficazmente os recursos e a manter
um equilbrio de carga.
A etapa de planejamento e projeto consiste em mapear a infra-estrutura fsica em
uma virtual com base nas informaes levantados na avaliao do sistema. Fazem parte
do planejamento e projeto identificar qual a melhor tecnologia de virtualizao e o
produto a ser empregado para atingir os objetivos propostos. Entre outros, so critrios a
serem adotados: soluo em software livre ou proprietrio? Qual a sua robustez?
Avaliao de continuidade da empresa ou da comunidade que desenvolve a desenvolve?
Suporte tcnico? Atualizao? Curva de aprendizado? Ferramentas de gerenciamento?
Na seqncia, necessrio dividir os servios em mquinas considerando quanto cada
um deles consome de recursos de processamento e de rede. importante definir planos
de contingncia e a sistematizao de procedimentos como configuraes padres,
backups de dados e das mquinas virtuais, registro de incidentes de segurana,
atualizaes dos sistemas operacionais hspedes e hospedeiros, assim como da prpria
soluo de virtualizao. Como toda etapa de planejamento, aqui deve ser estabelecido
um cronograma fsico de tarefas.
A terceira etapa consiste na execuo. A recomendao bvia implementar um
servio por vez iniciando pelos menos sensveis. Vrias das solues de virtualizao
possuem assistentes (wizards) denominadas de P2V (physical to Virtual) para auxiliar
nessa etapa. Para cada mquina virtual (servio) instalado interessante fazer uma
avaliao de seu comportamento e desempenho comparando-o com aquele apresentando
na mquina fsica. Os dados obtidos nessa nova avaliao podem, eventualmente, alterar
o projeto inicial. Esse ciclo de refinamento normal.

Livro Texto dos Minicursos

201

Por fim, a ltima etapa, gerenciamento e manuteno. Uma vez implantada a


infra-estrutura virtual necessrio garantir seu funcionamento de forma adequada. Para
tal, o sistema como um todo deve ser monitorado, atualizado, sofrer procedimentos de
salvamento e restaurao de cpias de segurana. O funcionamento em produo do
sistema, sem dvida, trar lies importantes que realimentaro atividades futuras como
planejamento de novas capacidades, planos de investimento, treinamento, entre outros.
De forma mais pragmtica, que tipos de aspectos e recomendaes gerais se
deve cuidar quando da implantao da virtualizao? Bom, cada caso um caso, mas h
alguns pontos comuns que podem ser comentados:

Ao consolidar os servidores a tendncia deix-los em uma mesma rede j


que esto em uma mesma mquina fsica. Isso considerado um erro.
Mesmo que as mquinas virtuais estejam em uma mesma mquina fsica
recomendvel manter a segmentao da rede criando diferentes redes de
permetro. O prprio hypervisor pode ser um problema para a segurana e
convm lembrar disso ao colocar fisicamente a mquina na rede.

A consolidao de servidores no a nica forma de virtualizao. Os


desktops podem usufruir dessa tecnologia para desenvolvimento e teste de
software, instalao de laboratrios de treinamentos, teste de software de
terceiros, definio de clusters virtuais, etc. Alm disso, existem produtos de
interconexo de rede que oferecem switches virtuais, ou seja, a rede em si
pode usufruir da virtualizao.

Existem gamas de servidores que foram projetados visando um alto


desempenho de processamento, com um armazenamento de grande
quantidade de dados e com acesso a dados em alta vazo. Por exemplo, h
vrias opes de servidores empregando tecnologia fiber channel
interconectar processadores com mdulos de E/S. Lembrar que virtualizar
nem sempre a melhor (ou nica) soluo.

Adquirir novos equipamentos tendo em vista a virtualizao. Isso implica em


verificar o uso de tecnologias de processadores como IVT (Intel) ou AMD-V
(AMD) para obter um melhor desempenho e segurana dos hypervisors.

Se a infra-estrutura de rede tambm for virtualizada, no esquecer de incluir


sua arquitetura e seus parmetros de configurao no backup.

Estabelecer planos de contingncia para o caso de recuperao de desastres.


Isso inclui listar os vrios sistemas operacionais envolvidos e as aplicaes
fundamentais para o negcio. No negligenciar procedimentos de backups e
testes regulares de seu contedo. Afinal um m backup mal feito, ou
corrompido, pior do que no ter, pois passa a falsa noo de segurana.

Por fim, um ponto muito importante. Como a virtualizao permite que em uma
mesma mquina fsica executem diferentes sistemas operacionais necessrio que
equipes que esto evangelizadas em diferentes sistemas operacionais sejam
integradas. Como sempre, o fator humano no deve ser negligenciado sob pena de se
comprometer soluo como um todo. importante investir em formao, integrao e
quebrar preconceitos que existem entre defensores de um e outro sistema operacional.

202

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.7. Sistemas virtuais, problemas reais


At o presente momento a virtualizao foi colocada como uma panacia para vrios
problemas. Entretanto, existem aspectos a serem avaliados antes de se optar pela
virtualizao. Basicamente, so trs pontos a serem melhor elaborados: segurana,
gerenciamento e desempenho.
Inicialmente, o hypervisor 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 hypervisor. Mas h muita controvrsia nesse campo. Alm disso, h a questo
da disponibilidade de servios que ocorre com o comprometimento, logicamente ou
fisicamente, 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 ser instanciados, monitorados, configurados, mantidos e
salvos. Novamente, existem produtos, como os apresentados na seo 4.4, que integram
essas solues. A Network World (www.networkworld.com), no ms de setembro de
2007, realizou uma avaliao das plataformas de gerenciamento oferecidas pela
VMware, Microsoft e XenSource (Citrix) e concluiu que a plataforma VMware a mais
flexvel e de fcil utilizao, porm ainda h espao para melhorias. Alm disso, h um
aspecto de gerenciamento relacionado com a segurana que falho em todas essas
plataformas: a correlao de eventos e aes feitas como root em ambientes virtuais.
Ainda, segundo o Gartner, existem cerca de 50 companhias (setembro 2007) que
oferecem produtos de gerenciamento para mquinas 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 e soluo. Atento a
essa necessidade, e como forma de sistematizar e fornecer uma metodologia padro para
avaliar o desempenho de mquinas virtuais, foi criado o SPEC Virtualization Commitee
(www.spec.org/specVirtualization). O objetivo desse comit desenvolver benchmarks
para avaliar o desempenho de servidores em data centers. No momento da redao deste
trabalho4, a liberao para primeira verso de benchmark est prevista para o segundo
semestre de 2008.

Maro de 2008.

Livro Texto dos Minicursos

203

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 seguintes 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; NetPerf, para avaliar o desempenho no envio e recepo de dados via rede;
SPECjbb2005 que representa um servidor e sua carga; e a compilao do pacote
SPECcpu2000 INT. A tabela 4.1 sumariza os resultados obtidos pela VMware e pela
Xen Source feitos com esses benchmarks:
Tabela 4.1 Resumo das concluses sobre anlise de desempenho (VMware
versus XenSource)
Benchmark

Estudo VMware

Estudo Xen Source

SPECcpu2000

Dependendo da carga, o ESX Server


tem um sobre-custo entre 0 a 6% contra
1 a 12% do Xen 3.0.3 em relao ao
sistema nativo.

O ESX Server tem um sobre-custo de 2%


e o Xen 3.2 de 3% em relao ao sistema
nativo.

Passmark

Em funo do teste, o ESX Server gera


de 4 a 18% de sobre-custo contra 6 a
41% do Xen 3.0.3 em relao ao
sistema nativo.

Apresentam desempenho similar com uma


variao de um em relao ao outro na
faixa de 0.5% e, em funo do teste, ambos
tem um desempenho entre 80 a 95% do
apresentado pelo sistema nativo.

Netperf

O ESX Server fornece desempenho


prximo ao sistema nativo (98%), ao
passo que o Xen 3.0.3 atinge apenas 2 a
3% dessa capacidade.

Desempenho similares e prximos do


sistema nativo (98-99%). No teste com
mais de um cliente h diferenas em favor
do Xen (90%)

SPECjbb2005

O ESX Server corresponde a 91% do


sistema nativo. No foi possvel fazer
esse experimento com o Xen 3.0.3 por
ele no ter suporte a mquinas SMP.

Desempenho similares e prximos ao


sistema nativo (96-98%). Obs.: A verso
3.2 do Xen oferece suporte a mquina
SMP.

Compilao

O ESX Server oferece um desempenho


de 90% contra 68% do oferecido
pelo Xen 3.0.3, em comparao ao
sistema nativo.

ESX server tem um desempenho de cerca


de 92% em relao ao sistema nativo,
enquanto o do Xen 86%

Abstraindo o fato de que os resultados da tabela 4.1 foram obtidos com


equipamentos e softwares de verses diferentes e de terem sido feitos por entidades que
tinham o intuito de vender seu produto, o importante a ressaltar o impacto da
virtualizao em relao a um sistema nativo. Os nmeros fornecidos do uma idia do
sobre-custo introduzido pela virtualizao. A concluso que, em geral, esse sobrecusto no muito significativo, portanto, seu uso no tem um impacto importante sobre
a realizao de um servio.

204

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

A nosso conhecimento, no foram feitos benchmarks para avaliar a


escalabilidade de hypervisors. Vale lembrar ainda que os benchmarks empregados
foram desenvolvidos para um contexto e empregados em outro. Em todo caso, h uma
movimentao geral entre os fornecedores de solues para virtualizao em reduzir,
otimizar e melhorar o desempenho de seus produtos.

8. Concluses
A virtualizao a nova onda de revoluo na rea de TI. Isso confirmado por anlises
econmicas conduzidas pela Gartner, pela criao e pela evoluo de associaes como
a EMA (Enterprise Management Association) e pelo crescimento exponencial de
empresas como VMware e a Citrix, entre outras. Ainda, o IDC prev que o crescimento
do mercado e dos investimentos em virtualizao subir de U$6.5 bilhes para U$15
bilhes em 2011. No por nada que a Citrix desembolsou, em outubro de 2007, U$500
milhes para adquirir a XenSource.
A virtualizao uma tcnica que permite que um sistema computacional (o
hospedeiro) execute vrios outros denominados de mquinas virtuais (hspedes). 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 da 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 de processo nada mais que uma aplicao que executa
sobre um sistema operacional A e que emula o comportamento de um sistema
operacional B. Assim, aplicaes desenvolvidas para o sistema B podem executar sobre
um sistema A. importante salientar que essa tcnica de implementao permite que
binrios de um processador sejam interpretados e substitudos por cdigo equivalente de
outro processador. Portanto, alm de emular sistema operacional possvel emular
processadores. As desvantagens dessa tcnica so basicamente duas: desempenho e
desperdcio de capacidades do hardware fsico. O desempenho sacrificado j que h
uma traduo de um sistema a outro, alm de executarem em modo de usurio. O
desperdcio de capacidades fsicas do hardware vem do fato que as mquinas virtuais de
processo oferecem dispositivos de E/S genricos e simples. O exemplo tpico so placas
de vdeo. Por executarem como uma aplicao, ao terminar o processo mquina
virtual, nenhum rastro permanece no sistema.
Os monitores de mquinas virtuais, mais conhecidos pelo acrnimo VMM
(Virtual Monitor Machine) ou hypervisor, surgem para resolver as desvantagens das
mquinas virtuais de processos. Eles so implementados como uma camada de software
entre o hardware e o sistema operacional, oferecendo uma mquina virtual para este.
Dessa forma eles conhecem e exploram eficientemente os dispositivos fsicos de E/S. O
desempenho tende a ser melhor por no executarem em modo usurio, o que evita
chaveamentos de contexto. Existem duas tcnicas usadas nos hypervisors: virtualizao
total e para-virtualizao. A diferena essencial se o sistema operacional hspede
precisa ser modificado (para-virtualizao) ou no (virtualizao total) para executar
sobre o hypervisor.

Livro Texto dos Minicursos

205

Assim como j aconteceu no passado com a multiprogramao, o projeto dos


processadores mais recentes tem considerado mecanismos em hardware para auxiliar na
virtualizao. o caso dos fabricantes AMD e Intel que desenvolveram extenses para a
arquitetura x86 suportar virtualizao, respectivamente, AMD-Virtualization (AMD-V,
codinome Pacfica) e Intel Virtualization Technology (IVT, condinome Vanderpool).
O uso tpico da virtualizao na consolidao de servidores, isso , permitir
que vrios servidores executem simultaneamente em um nico hardware fsico, mas
cada um em sua prpria mquina virtual. Como cada mquina virtual um ambiente
isolado, completo, os servidores podem ser de sistemas operacionais diferentes e, um
eventual comprometimento de um no afeta os demais. Alm disso, a consolidao de
servidores reduz custos com aquisio de equipamentos, e com infra-estrutura fsica
como espao, energia, cabeamento, refrigerao e custos de gerenciamento e
manuteno. Isso especialmente interessante em data centers.
Entretanto a virtualizao pode ser empregada com sucesso em vrias outras
situaes como ambientes de desenvolvimento e teste de produtos, laboratrios de
treinamento de cursos de redes e de sistemas operacionais, criao de clusters ou grades
computacionais virtuais e servir de base para implantao de mecanismos de segurana
(honeypots).
Apesar de muitas vezes se associar virtualizao a sistemas operacionais
hspedes e a consolidao de servidores, ela algo mais amplo. Segundo a EMA
[EMA, 2008] virtualizar mascarar caractersticas fsicas de recursos computacionais
dos sistemas operacionais, aplicaes e usurios. Nesse ponto entra a possibilidade
mascarar a infra-estrutura de rede. H muito tempo, os sistemas operacionais j
oferecem suporte a definio de interfaces de redes virtuais, permitindo que uma mesma
placa de rede funcione como se fosse vrias. De forma natural, cada mquina virtual
possui sua prpria placa de rede (virtual) com seu prprio endereo IP e endereo MAC.
O prximo passo foi permitir que essas mquinas virtuais fossem interconectadas entre
si usando equipamentos de interconexo tambm virtuais. Surgem assim switches e
roteadores virtuais, permitindo que se faa (virtualmente) a definio de redes de
permetro e segmentao de redes.
Como a virtualizao consiste basicamente em se pr uma camada de software a
mais em um sistema computacional a questo sobre quanto isso afeta o desempenho
final imediata. Estudos feitos pela VMware e pela XenSource apontam para um 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. Porm, atento a esse aspecto, os fabricantes esto investindo muitos esforos
no sentido de reduzir a queda de desempenho e para que haja uma forma padro, e
isenta, de avaliar, h um comit especfico (SPEC Virtualization Comitee) trabalhando
na definio de uma sute de benchmark para a virtualizao. A primeira verso dessa
sute esperada para a segunda metade de 2008.
Para finalizar, um ponto interessante. Segundo a Microsoft (em seu site technet)
o valor de mercado da virtualizao no est na pilha necessria para implement-la,
isso , no conjunto sistema operacional mais hypervisor, mas sim no desenvolvimento
de sistemas de gerenciamento para ambientes virtuais. Essa opinio reforada por um
outro estudo do Gartner que aponta um crescimento em start-ups oferecendo solues

206

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

de gerenciamento para ambientes virtuais. Fazem parte do gerenciamento, as solues


de segurana. Um tpico, entre outros, que est em aberto como correlacionar as
atividades de root em um hypervisor com as diferentes mquinas virtuais. Questes
relacionadas com desempenho, migrao de mquinas virtuais, facilidades de backup,
recuperao de falhas, configurao automtica, tambm no esto totalmente fechadas.

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.
EMA, Entreprise Management Solutions. (http://www.emscorporation.com). Acesso
maro de 2008.
Goldberg, R.P. Survey of virtual machine research. IEEE Computer, pp. 34-35, june
1974.
Jain, R. Art of Computer Systems Performance Analysis. John Willey. 1991.
Henessy, J.L.; Patterson, D.A. Computer Architecture: A quantitative approach. 4th
edition. Morgan Kauffman Publishers, 2007.
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
(http://www.microsoft.com/windowsserversystem/virtualserver), acesso novembro
2007.
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.
Popek, G.; Goldberg, R. Formal requirements for virtualizable 3rd generation
architectures. Communications of the ACM, v.17, n.7, pp. 412-421, 1974.

Livro Texto dos Minicursos

207

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.
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.
VMWare
(2008a)
A
Performance
Comparison
(http://www.vmware.com). Acesso janeiro 2008.

of

Hypervisors

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.

Você também pode gostar