Você está na página 1de 114

LNCC - LABORATRIO NACIONAL DE COMPUTAO CIENTFICA

ISTCC - INSTITUTO SUPERIOR DE TECNOLOGIA EM CINCIAS DA


COMPUTAO

Virtualizao de Sistemas Operacionais

Por
Rodrigo Ferreira da Silva

Orientador
Prof. Fbio Borges de Oliveira

Petrpolis - RJ, Brasil


Dezembro de 2007
LNCC - LABORATRIO NACIONAL DE COMPUTAO CIENTFICA
ISTCC - INSTITUTO SUPERIOR DE TECNOLOGIA EM CINCIAS DA
COMPUTAO

Virtualizao de Sistemas Operacionais

Monografia apresentada ao curso de Graduao em


Tecnologia da Informao e da Comunicao do
ISTCC Instituto Superior de Tecnologia em Cincias
da Computao de Petrpolis, como pr-requisito para
obteno do ttulo de graduado em Tecnologia da
Informao e da Comunicao.

2
FOLHA DE APROVAO

Virtualizao de sistemas operacionais


Por
Rodrigo Ferreira da Silva

Monografia apresentada Comisso Examinadora como requisito da Disciplina


Projeto Final:

Fbio Borges de Oliveira


Laboratrio Nacional de Computao Cientfica - LNCC
Instituto Superior de Tecnologia em Cincias da Computao ISTCC

Eduardo Lcio Mendes Garcia


Laboratrio Nacional de Computao Cientfica - LNCC

Rogrio Albuquerque de Almeida


Laboratrio Nacional de Computao Cientfica - LNCC

Wagner Vieira Lo
Laboratrio Nacional de Computao Cientfica - LNCC

Petrpolis - RJ, Brasil


Dezembro de 2007

3
AGRADECIMENTOS

A Deus acima de tudo, minha noiva Juliana que sempre me deu apoio nas horas
difceis, aos meus pais que sempre acreditaram e investiram em meus estudos, ao meu
orientador Fbio pelo tempo disponibilizado entre as suas atividades, a Tnia e ao
pessoal da secretaria do IST sempre dando uma fora extra aos alunos, ao Lincoln, ao
professor Srgio da Tiny English Course de Petrpolis, aos colegas Bruno, Alex,
Luciana e Mariana, aos professores Luis Fernando, Augusto e Otvio (in memoriam), e
a todos que me ajudaram nesta difcil caminhada.

4
RESUMO

A virtualizao de sistemas operacionais uma tecnologia que vem ganhando espao


nos ltimos anos e cuja principal proposta particionar os recursos do hardware de
forma que ele execute vrios sistemas operacionais (iguais ou diferentes) e suas
aplicaes de forma simultnea e totalmente isoladas entre si. Com a virtualizao
podemos fazer um melhor aproveitamento dos recursos computacionais novos ou
existentes, reduzindo a freqente ociosidade desses recursos em momentos do dia e do
ms. Este trabalho tem como objetivo, apresentar os principais conceitos, bem como
algumas das caractersticas tcnicas, alm de exemplificar outras importantes utilizaes
desta tecnologia. Ele descreve tambm, as arquiteturas dos principais softwares de
virtualizao disponveis na atualidade, inclusive com detalhes de implementao.

Palavras-Chave: Virtualizao, Mquinas Virtuais, Sistemas Operacionais, Emuladores.

5
ABSTRACT

The operating systems virtualization is a technology that, is getting large in the last
years and which main proposal is divide the resources of the hardware to make it
execute several operating systems (different or the same), their applications in a
simultaneous way and totally isolated among themselves. With the virtualization we can
make a better use of the computer resources: new or existent, reducing the frequent
idleness of those resources in moments of the day and of the month. This work has the
intention, to present the main concepts, as well as some of the technical characteristics,
besides exemplifying other important uses of this technology. It also describes, the
architectures of the main softwares of virtualization available at the present time,
including implementation details.

Keywords: Virtualization, Virtual Machines, Operating systems, Emulators.

6
SUMRIO

INTRODUO .............................................................................................................. 11

CAPTULO I
CONCEITO DE VIRTUALIZAO E MQUINAS VIRTUAIS .............................. 13
1.1 Conceito de Virtualizao .................................................................................... 13
1.2 Implementaes .................................................................................................... 13
1.3 Virtualizao e emulao...................................................................................... 14
1.4 Mquina virtual e mquina real ............................................................................ 15
1.5 Motivao para o uso mquinas virtuais .............................................................. 16
1.6 O Monitor de Mquinas Virtuais .......................................................................... 17
1.7 Tipos de Mquinas Virtuais.................................................................................. 18
1.7.1 Mquinas virtuais clssicas ou de Tipo I ....................................................... 19
1.7.2 Mquinas virtuais Hospedadas ou de Tipo II ................................................ 20
1.7.3 Consideraes ................................................................................................ 20
1.8 Formas de virtualizao por software................................................................... 21
1.8.1 Camada de Abstrao do Hardware (Hardware Abstraction Layer - HAL) 21
1.8.2 Nvel do sistema operacional (OS Level) ...................................................... 22
1.8.3 Emulao completa........................................................................................ 22
1.8.4 Nvel de Aplicao ........................................................................................ 23
1.8.5 Bibliotecas de interface do usurio (User level library interface) ................ 24

CAPTULO II
PRINCIPAIS APLICAES DE MQUINAS VIRTUAIS ........................................ 25
2.1 Introduo ............................................................................................................. 25
2.2 Consolidao de servidores .................................................................................. 26
2.2.1 Implementao da consolidao de servidores .............................................. 27
2.3 Segurana.............................................................................................................. 30
2.3.1 Isolamento ..................................................................................................... 30
2.3.2 Tolerncia falhas ......................................................................................... 31
2.3.3 Honeypots e Honeynets ................................................................................. 32

7
2.3.4 Deteco de intruso...................................................................................... 33
2.4 Ensino ................................................................................................................... 35
2.5 Teste e Migrao de aplicaes ............................................................................ 36
2.6 Consolidao de aplicaes legadas ..................................................................... 36
2.7 Servio de Hospedagem (Hosting) ....................................................................... 37
2.8 Suporte Tcnico .................................................................................................... 39

CAPTULO III
TCNICAS PARA CONSTRUO DE SOFTWARE VIRTUALIZADOR................ 40
3.1 Modos de CPU, trap e Chamadas de Sistema ...................................................... 40
3.2 O Modo Hipervisor............................................................................................... 40
3.3 O problema da Arquitetura x86 ............................................................................ 41
3.4 Virtualizao Total (Full Virtualization).............................................................. 42
3.4.1 Virtualizao de CPU na virtualizao total.................................................. 43
3.4.2 Virtualizao de memria/disco na virtualizao total.................................. 44
3.4.3 Virtualizao de E/S na virtualizao total.................................................... 45
3.5 Paravirtualizao (Paravirtualization) ................................................................. 46
3.5.1 Paravirtualizao e CPU ................................................................................ 47
3.5.2 Paravirtualizao e memria/disco ................................................................ 47
3.6 Emulao com Recompilao Dinmica .............................................................. 48
3.7 As novas tecnologias de Virtualizao da Intel e AMD....................................... 50

CAPTULO IV
VIRTUALIZAO POR CAMADA DE ABSTRAO DO HARDWARE ............... 53
4.1 Introduo ............................................................................................................. 53
4.2 VMware ................................................................................................................ 53
4.2.1 VMware ESX Server ..................................................................................... 54
4.2.1.1 Virtualizao de CPU ............................................................................. 54
4.2.1.2 Virtualizao de memria....................................................................... 55
4.2.1.3 Virtualizao de disco ............................................................................ 55
4.2.1.4 Virtualizao de rede .............................................................................. 56
4.2.2 VMware Server.............................................................................................. 56
4.2.3 VMware Workstation .................................................................................... 58
4.2.4 VMware Player .............................................................................................. 59

8
4.2.5 VMWare Infrastructure ................................................................................. 59
4.2.5.1 Alta Disponibilidade ............................................................................... 61
4.2.6 Teste do VMWare ......................................................................................... 62
4.3 Xen ....................................................................................................................... 63
4.3.1 Gerenciamento de Memria .......................................................................... 65
4.3.2 Gerenciamento da CPU ................................................................................. 65
4.3.3 Dispositivos de E/S........................................................................................ 65
4.3.4 Dispositivos de Rede ..................................................................................... 66
4.3.5 Migrao de domnios ................................................................................... 67
4.3.6 Teste do Xen .................................................................................................. 67
4.4 Microsoft Virtual PC e Microsoft Virtual Server ................................................. 68
4.4.1 Discos virtuais (Virtual Hard Disk)............................................................... 70
4.4.2 Teste do Microsoft Virtual Server ................................................................. 71
4.5 VirtualBox ............................................................................................................ 72
4.5.1 Teste do VirtualBox ...................................................................................... 74
4.6 User-Mode Linux ................................................................................................. 75
4.6.1 Chamadas de sistema ..................................................................................... 76
4.6.2 Sistema de arquivos ....................................................................................... 77
4.6.3 Desempenho .................................................................................................. 77
4.6.4 Teste do User-Mode Linux ............................................................................ 77

CAPTULO V
VIRTUALIZAO NO NVEL DE SISTEMAS OPERACIONAIS ........................... 80
5.1 Introduo ............................................................................................................. 80
5.2 Solaris Containers (Zones) ................................................................................... 80
5.2.1 Gerenciamento de Memria .......................................................................... 82
5.2.2 Sistema de Arquivos ...................................................................................... 83
5.2.3 Configuraes de Rede .................................................................................. 83
5.2.4 Gerenciamento de Recursos .......................................................................... 84
5.2.5 Teste do Solaris Zones ................................................................................... 84
5.3 FreeBSD Jails ....................................................................................................... 87
5.3.1 Teste do FreeBSD Jails ................................................................................. 89

9
CAPTULO VI
VIRTUALIZAO POR EMULAO ....................................................................... 93
6.1 Introduo ............................................................................................................. 93
6.2 QEMU .................................................................................................................. 93
6.2.1 Teste do QEMU ............................................................................................. 95
6.3 Bochs .................................................................................................................... 96
6.3.1 Teste do Bochs .............................................................................................. 96

CAPTULO VII
VIRTUALIZAO NO NVEL DE APLICAO...................................................... 98
7.1 Introduo ............................................................................................................. 98
7.2 Java Virtual Machine ............................................................................................ 98
7.3 Microsoft .Net CLR .............................................................................................. 99

CAPTULO VIII
BIBLIOTECAS DE INTERFACE DO USURIO ..................................................... 101
8.1 Introduo ........................................................................................................... 101
8.2 Wine ................................................................................................................... 101
8.2.1 Arquitetura do Wine .................................................................................... 102
8.2.2 Gerenciamento de memria ......................................................................... 103
8.2.3 Drivers Wine ............................................................................................... 104
8.2.4 Teste do Wine .............................................................................................. 104

CONCLUSO .............................................................................................................. 106

ANEXO I - TABELA COMPARATIVA DE MQUINAS VIRTUAIS .................... 109

BIBLIOGRAFIA .......................................................................................................... 111

10
INTRODUO

Os sistemas computacionais tradicionais vm se baseando h alguns anos no modelo


Hardware - Sistema Operacional - Aplicaes. Todavia, nesse modelo h um problema:
uma aplicao geralmente s executa sobre o sistema operacional para qual ela foi
escrita. Assim somos obrigados a ter um sistema operacional por vez executando em
determinado hardware, e somente as aplicaes que executam sobre esse sistema
podero ser executadas nesse hardware.

A virtualizao de sistemas operacionais um meio para reduzir a importncia do


sistema operacional. Ela visa permitir que um hardware possa executar vrios sistemas
operacionais iguais ou distintos, de uma forma simultnea e isolados entre si. Para isto
utiliza-se de tcnicas avanadas de abstrao e emulao, sempre mantendo esforos
para prover o mximo de segurana, desempenho e confiabilidade dos meios
envolvidos.

Alm disso, tambm uma proposta para consolidao de servidores, reduo do


consumo de energia eltrica, produo de calor, espao fsico e manuteno de
equipamentos. Benefcios estes que garantem um melhor aproveitamento dos recursos
computacionais existentes, assim, gerando menores custos e menor degradao
ambiental.

O presente trabalho consiste em apresentar os principais pontos desta tecnologia que


vem ganhando bastante espao nos ltimos anos. Ele visa principalmente servir de base
a pessoas que esto ingressando no estudo do tema, e podendo ser utilizado como ponto
de partida a pesquisas mais especficas na rea no futuro.

Este trabalho est dividido da seguinte forma: principais conceitos da tecnologia,


principais utilizaes da tecnologia, a arquitetura e as diferenas das tcnicas de
virtualizao existentes, e as caractersticas dos principais softwares de virtualizao
atuais. importante salientar que alguns desses softwares foram testados de forma

11
prtica, e ao final de cada apresentao do software neste trabalho, h um relato sobre
como foi feito o teste e uma rpida concluso.

Na ltima seo h uma concluso geral e sugestes para trabalhos futuros.

12
CAPTULO I

CONCEITO DE VIRTUALIZAO E MQUINAS VIRTUAIS

1.1 Conceito de Virtualizao

A virtualizao uma tecnologia que oferece uma camada de abstrao dos verdadeiros
recursos de uma mquina, provendo um hardware virtual para cada sistema, com o
objetivo de esconder as caractersticas fsicas e forma como os sistemas
operacionais e aplicaes interagem com os recursos computacionais.

As principais qualidades da virtualizao so: o reaproveitamento de recursos, a


portabilidade e a segurana.

Com a virtualizao podemos:

 Executar diferentes sistemas operacionais em um mesmo hardware


simultaneamente.
 Executar um sistema operacional (e suas aplicaes) como um processo de
outro.
 Utilizar sistemas operacionais e aplicaes escritas para uma plataforma em
outra, alm de outros usos que sero vistos a seguir.

1.2 Implementaes

Conceitualmente a virtualizao pode ser implementada de duas formas: por solues


combinadas em hardware e software, ou totalmente baseada em software.

As solues de combinao entre hardware e software no so um conceito novo e suas


origens remetem ao incio da histria dos computadores nos anos 60, nas mquinas
VM/370 da IBM. Na soluo de hardware e software h uma cooperao entre um

13
software virtualizador (que faz o papel principal) com o hardware, cujo qual fornece
partes chaves do processo. O desempenho a principal vantagem desta tecnologia. So
exemplos de arquiteturas que suportam este tipo de virtualizao: IBM z/VM e HP-UX
Virtual Partition.

Na virtualizao totalmente baseada em software, no preciso um hardware provendo


recursos para suport-la, ao invs disso, o software virtualizador que prov totalmente
os recursos no processo. Essa tecnologia tem como vantagens o baixo custo de
implementao e a portabilidade entre plataformas. So exemplos dessa tecnologia:
VMWare, Xen, Microsoft Virtual Server, Solaris Zones, FreeBSD Jails e outras.

Este trabalho visa apresentar os principais conceitos da virtualizao baseada por


software, uma vez que esta tecnologia a mais comum atualmente e vem ganhando
cada vez mais popularidade por profissionais de TI (Tecnologia da Informao). A
virtualizao baseada em software alm de possuir as vantagens j citadas, ainda
possibilita virtualizar arquiteturas de baixo custo como, por exemplo, x86 e PowerPC.

1.3 Virtualizao e emulao

importante salientar que os termos virtualizao e emulao de sistemas apesar de


parecerem referir-se ao mesmo tema, na verdade possuem grandes diferenas. Um
emulador um agente escrito para tornar possvel a interao entre dois sistemas
distintos e incompatveis entre si (os quais podem ser um software e um hardware, ou
um software e outro software). Para isto, o emulador traduz as instrues entre um
sistema e outro, intermediando o processo.

J a virtualizao, por sua vez, utiliza a emulao e outras tcnicas para oferecer um
conjunto completo de recursos, com o objetivo de permitir que vrios sistemas
executem sobre uma mesma plataforma visando o mximo de desempenho.

O foco da emulao fazer um sistema executar totalmente sobre outro para o qual no
foi originalmente construdo, mesmo que isto cause uma perda de desempenho. De um

14
modo contrrio, a virtualizao preocupa-se sempre com o desempenho e executa o
sistema virtual diretamente no hardware quando possvel.

1.4 Mquina virtual e mquina real

Uma mquina virtual um espao virtual isolado com acesso ao hardware, onde
funciona um sistema virtual. Mquina virtual (em ingls, Virtual Machine VM) o
termo a que nos referimos quando estamos trabalhando com sistemas virtuais
executando em uma mquina real. Uma mquina virtual Uma duplicata eficiente e
isolada de uma mquina real [POPEK e GOLDBERG].

Uma mquina real formada por vrios componentes fsicos que fornecem operaes
para o sistema operacional e suas aplicaes. A funcionalidade e o nvel de abstrao
de uma mquina virtual encontram-se em uma posio intermediria entre uma
mquina real e um emulador, de forma que os recursos de hardware e de controle so
abstrados e usados pelas aplicaes [LAUREANO 2006].

O aparecimento do termo mquina virtual data do ano de 1967 quando pesquisadores da


IBM desenvolveram o sistema CP-67 que permitia que um nico hardware da famlia
360 simulasse mltiplas mquinas lgicas menores e totalmente independentes entre si.
Entretanto este termo permaneceu pouco conhecido at a metade dos anos 90, quando o
termo ressurgiu, sobretudo com o aparecimento de aplicaes voltadas a virtualizar
recursos nos microcomputadores PC (Personal Computer) de plataforma Intel
(arquitetura x86).

Em ambientes virtualizados as mquinas virtuais simulam uma rplica fsica de uma


mquina real. Dispositivos adicionais como drives de disquetes, CD-ROM e
dispositivos USB (Universal Serial Bus) tambm podem ser compartilhados entre as
mquinas virtuais e o sistema anfitrio (tambm chamado de sistema host). Os usurios
tm a iluso de que o sistema est disponvel para seu uso exclusivo.

Embora as funcionalidades das diversas mquinas virtuais sejam diferentes, todos


compartilham de atributos comuns [ROSEMBLUM] como:

15
 Compatibilidade do software: a mquina virtual fornece uma abstrao
compatvel de modo que todo o software escrito para ela funcione.
 Isolamento: garante que os softwares executados em cada uma das mquinas
virtuais e os da mquina real estejam totalmente isolados entre si.
 Encapsulamento: usado para manipular e controlar a execuo do software na
mquina virtual.
 Desempenho: adicionar uma camada de software a um sistema pode afetar o
desempenho do software que funciona na mquina virtual, mas os benefcios de
uso de sistemas virtuais devem compensar.

1.5 Motivao para o uso mquinas virtuais

Os sistemas computacionais tradicionais, de uma forma bsica, so projetados com trs


componentes: o hardware, o sistema operacional e as aplicaes.

Figura 1.01 - Representao dos componentes dos sistemas tradicionais

O hardware executa as operaes solicitadas pelas aplicaes. O sistema operacional


recebe as solicitaes das operaes por meio das chamadas de sistemas e controla o
hardware.

Devido ao fato de os projetistas de hardware, sistema operacional e aplicaes


trabalharem independentemente, geraram ao longo dos anos vrias plataformas

16
operacionais diferentes e incompatveis entre si. Assim as aplicaes escritas para uma
plataforma no funcionam para outra.

A utilizao de mquinas virtuais possibilita contornar essa dificuldade, pois permite


que diferentes aplicaes de diferentes plataformas executem ao mesmo tempo em um
mesmo hardware.

Em ambiente virtualizado podemos, por exemplo, criar uma mquina virtual executando
Windows, outra executando Linux, outra executando FreeBSD, alm de outras, as quais
executaro simultaneamente no mesmo computador. o monitor de mquinas virtuais
que permite estas implementaes.

1.6 O Monitor de Mquinas Virtuais

O monitor de mquinas virtuais (Virtual Machine Monitor VMM) uma aplicao


que implementa uma camada de virtualizao, a qual permite que mltiplos sistemas
operacionais funcionem sobre um mesmo hardware simultaneamente.

"As finalidades primrias de um sistema operacional so habilitar aplicaes a


interagir com um hardware de computador e gerenciar recursos de hardware e
software de um sistema. Por tal motivo, o monitor de mquinas virtuais pode ser
definido como um sistema operacional para sistemas operacionais [LAUREANO
2006].

o monitor de mquinas virtuais que cria e gerencia os ambientes de mquinas virtuais,


interpretando e emulando o conjunto de instrues entre as mquinas virtuais e a
mquina real (hardware).

As principais funes do monitor de mquinas virtuais so:

 Definir o ambiente de mquinas virtuais.


 Alterar o modo de execuo do sistema operacional convidado de privilegiado
para no privilegiado, e vice-versa.

17
 Emular as instrues e escalonar o uso da CPU para as mquinas virtuais.
 Gerenciar acesso aos blocos de memria e disco destinados ao funcionamento
das mquinas virtuais.
 Intermediar as chamadas de sistema e controlar acesso a outros dispositivos
como CD-ROM, drives de disquete, dispositivos de rede, dispositivos USB.

Segundo Popek e Goldberg, um monitor de mquinas virtuais deve ter trs


caractersticas [POPEK e GOLDBERG] principais:

 Eficincia: extremamente importante que um grande nmero de instrues do


processador virtual seja executada diretamente pelo processador real, sem que
haja interveno do monitor. As instrues que no puderem ser tratadas pelo
processador real precisam ser tratadas pelo monitor.
 Integridade: todas as requisies aos recursos de hardware devem ser alocadas
explicitamente pelo monitor (memria, processamento etc).
 Equivalncia: o monitor deve prover um comportamento de execuo
semelhante ao da mquina real para o qual ele oferece suporte de virtualizao,
salvo haja a necessidade de se fazer alteraes na disponibilidade de recursos da
mquina.

Ainda segundo Popek e Goldberg, importante salientar que na implementao de um


monitor de mquinas virtuais deve-se levar em conta caractersticas como:
compatibilidade, desempenho e simplicidade. A compatibilidade importante para a
execuo do legado de software. O desempenho de extrema importncia para a
execuo do sistema operacional e aplicaes na mquina virtual. A simplicidade
buscada para evitar falhas no monitor, que causaria problemas para todas as mquinas
virtuais em execuo.

1.7 Tipos de Mquinas Virtuais

Para a construo de mquinas virtuais, existem duas abordagens:

18
 Mquinas virtuais clssicas ou de Tipo I.
 Mquinas virtuais hospedadas ou de Tipo II.

1.7.1 Mquinas virtuais clssicas ou de Tipo I

Nesta abordagem o monitor de mquinas virtuais implementado entre o hardware e os


sistemas convidados (tambm chamados de sistemas guest ou guest systems).

Figura 1.02 - Esquema representativo de mquinas virtuais do tipo I

O monitor possui controle sobre o hardware e cria um ambiente de mquinas virtuais


dando a cada mquina virtual o comportamento de uma mquina fsica, podendo
executar sobre esses ambientes, sistemas operacionais iguais ou diferentes, totalmente
isolados entre si.

Um monitor deste tipo executa com a maior prioridade sobre os sistemas convidados de
forma que ele pode interceptar e emular todas as operaes que acessam ou manipulam
os recursos de hardware provenientes dos sistemas convidados.

19
1.7.2 Mquinas virtuais Hospedadas ou de Tipo II

Nesta abordagem o monitor implementado como um processo de um sistema


operacional real (sistema anfitrio).

O monitor de tipo II funciona de forma anloga ao de tipo I, com a diferena que ele
executado sobre o sistema operacional anfitrio, como um processo deste. Neste modelo
o monitor simula todas as operaes que o sistema anfitrio controlaria.

Figura 1.03 - Esquema representativo de mquinas virtuais do tipo II

1.7.3 Consideraes

Deve-se considerar que os monitores de tipo I e tipo II raramente so projetados em sua


forma conceitual. Hoje em dia so inseridas otimizaes para aumentar o desempenho
dos sistemas convidados. So elas:

Em monitores de tipo I:

 O sistema convidado acessa diretamente o hardware. Neste processo,


necessrio que sejam feitas alteraes no sistema operacional para que suporte a
otimizao.

20
Em monitores de tipo II:

 O sistema convidado acessa diretamente o sistema anfitrio. Nessa otimizao, o


monitor permite que sejam acessadas certas API1 do sistema anfitrio pelo
sistema convidado.
 O sistema convidado acessa diretamente o hardware. Essa otimizao
conseguida quando o monitor permite o acesso direto a drivers de dispositivo do
sistema anfitrio.
 O monitor acessa diretamente o hardware. Nessa otimizao o monitor tem seus
prprios drivers de dispositivos acessando o hardware com uma interface
prpria (de baixo nvel).

1.8 Formas de virtualizao por software

A seguir apresentada uma viso geral sobre as principais tcnicas utilizadas para
conceber softwares de virtualizao. Essas tcnicas so apresentadas de forma mais
detalhada nos captulos IV, V, VI, VII e VIII, e tambm estudos sobre os principais
softwares de virtualizao que as implementam.

1.8.1 Camada de Abstrao do Hardware (Hardware Abstraction Layer - HAL)

Nesta virtualizao utilizado um monitor de mquinas virtuais que simula um


conjunto de recursos de hardware para os sistemas convidados.

Com esta tcnica possvel executar diferentes sistemas operacionais (isto , com
kernels diferentes) em uma mesma arquitetura.

1
API (Application Programming Interface) o conjunto de rotinas que acessam ou executam
determinadas funcionalidades nos sistemas operacionais. So geralmente utilizadas por programadores no
desenvolvimento de softwares para que no seja necessrio envolver-se em detalhes de implementao
dos sistemas operacionais.

21
Exemplos: VMware, Xen, Virtual Server e VirtualBox.

Figura 1.04 - Representao da virtualizao por camada de abstrao de hardware

1.8.2 Nvel do sistema operacional (OS Level)

Nessa tcnica, a virtualizao obtida utilizando-se uma chamada de sistema (system


call) especfica, criando um ambiente idntico ao sistema operacional anfitrio
(geralmente uma instncia dele mesmo), cujo principal objetivo o isolamento de
processos. A mquina virtual funciona como um processo do sistema anfitrio. Essa
forma de virtualizao tem como vantagem o desempenho por j fazer parte do sistema
operacional. A desvantagem de que o usurio no pode fazer uso de outro sistema
operacional (outro kernel) no ambiente virtual.

Figura 1.05 - Representao da virtualizao no nvel de sistema operacional

1.8.3 Emulao completa

A execuo do sistema virtual conseguida usando-se um software emulador, o qual


simula o hardware do sistema para a execuo do sistema convidado, traduzindo

22
instrues do sistema convidado para equivalentes no sistema anfitrio e vice-versa. Por
este motivo a principal desvantagem desta implementao o baixo desempenho. Alm
disso, um emulador geralmente s permite a execuo de um sistema convidado por
vez, sendo necessrio executar uma nova instncia do emulador para cada mquina
virtual criada, o que contribui significativamente para a perda de desempenho.

Os emuladores so descritos neste trabalho, por se constituir uma maneira de se obter a


execuo de um sistema virtual. Contudo, os emuladores no so classificados como
softwares de virtualizao propriamente dito, uma vez que no preenchem os requisitos
de flexibilidade e desempenho.

Exemplos: QEMU e Bochs.

Figura 1.06 - Representao da execuo de sistemas virtuais por emulao

1.8.4 Nvel de Aplicao

Essa virtualizao consiste no uso de uma mquina virtual como um componente-chave


para execuo de certas aplicaes de uma forma protegida a outros processos em
execuo no sistema operacional. Essa mquina virtual pode ser implementada em
vrias plataformas, garantido assim a portabilidade da aplicao nas diversas
plataformas.

Exemplos: Java VM e Microsoft .Net CLR.

23
Figura 1.07 - Representao da virtualizao no nvel de aplicao

1.8.5 Bibliotecas de interface do usurio (User level library interface)

Esta virtualizao consiste em prover um ambiente para execuo de aplicaes sobre


uma plataforma diferente para o qual ela foi construda. Baseia-se na emulao das
chamadas API entre a aplicao e o sistema operacional original, traduzindo-as para
equivalentes ao sistema operacional anfitrio.

Exemplo: Wine e Cygwin.

24
CAPTULO II

PRINCIPAIS APLICAES DE MQUINAS VIRTUAIS

2.1 Introduo

A utilizao da virtualizao, ao longo dos anos, tem-se revelado uma alternativa


interessante em diversos paradigmas da computao, entre eles esto a centralizao e
consolidao de servidores, as otimizaes de hardware e a segurana da informao.

Com a consolidao de servidores, ao invs das empresas utilizarem vrios servidores


com seus respectivos sistemas operacionais, utiliza-se um servidor com mquinas
virtuais abrigando vrios sistemas operacionais com suas aplicaes e servios,
reduzindo-se assim diversos custos administrativos e operacionais.

Alm disso, um sistema funcionando em uma mquina virtual fica disponvel


instantaneamente. Mquinas virtuais basicamente so arquivos armazenados no disco e
podem ser mantidos em espera e restaurados em poucos segundos, com aplicaes e
servios voltando a funcionar no mesmo ponto onde a mquina virtual foi suspensa,
tornando prtica sua administrao.

O isolamento entre as mquinas virtuais e o sistema anfitrio torna certas tarefas


arriscadas, completamente seguras. A avaliao de novos sistemas, testes com vrus e
outras ameaas geralmente significa sujeitar o computador a operaes onde nem
sempre possvel sua reverso. Quando o teste concludo, o estado completo da
mquina virtual pode ser arquivado ou descartado. Se alguma ameaa danificar o
sistema, a mquina virtual pode ser descartada e restaurada ao seu estado original.

O campo de desenvolvimento de softwares outra rea que tambm se beneficia do uso


de mquinas virtuais. Desenvolver aplicaes de baixo nvel ou componentes de
sistemas operacionais usando-se a plataforma que est em execuo no momento pode

25
causar danos irreversveis ao sistema. As mquinas virtuais tambm isolam o sistema
principal de bugs em softwares, aumentando a segurana para test-los.

A seguir sero descritas algumas das principais aplicaes em que o uso da


virtualizao tem um papel muito importante, seja reduzindo custos ou at mesmo
viabilizando certos procedimentos.

2.2 Consolidao de servidores

Hoje em dia as empresas vm cada vez mais buscando a centralizao e diminuio do


nmero de servidores fsicos em suas instalaes. Esse processo conhecido como
consolidao de servidores.

Devido aos anos de recesso que estamos sofrendo recentemente, cada vez mais faz-se
necessrio reduzir custos. Este fato vem mudando o cenrio do mercado internacional
de servidores, que est caminhando novamente para centralizao de recursos.

Imaginemos uma situao onde tivssemos que disponibilizar servios em vrios


servidores diferentes sendo que cada servidor teria, conforme o servio, determinada
quantidade de memria e espao em disco. Devemos considerar tambm que grande
parte do tempo estes servidores ficaro ociosos ou seu uso cai consideravelmente em
determinados horrios. Todos os servidores devem ficar disponveis em uma rede,
porm precisam ter certo nvel de segurana.

Esse cenrio tradicionalmente exigiria um grande investimento em infra-estrutura em


computadores, espao fsico, rede, alm de gastos operacionais como energia eltrica,
manuteno dos equipamentos e da rede, e administrao dos diversos sistemas e
servios.

Nesses casos a virtualizao uma grande alternativa, pois, ao invs de possuirmos


vrios servidores fsicos, podemos possuir apenas alguns ou mesmo somente um,
reduzindo drasticamente a complexidade. Alm disso, haver tambm um melhor
aproveitamento dos recursos computacionais, reduo do custo total de propriedade e do

26
custo operacional, a diminuio do consumo de energia eltrica reduzindo o impacto no
meio ambiente, alm do que, com o nmero de servidores fsicos reduzidos, o espao
fsico necessrio para abrig-los tambm ficar reduzido, garantindo vantagens como
economia em administrao, manuteno e refrigerao dos equipamentos.

Alm disso, a capacidade de executar softwares de diferentes sistemas operacionais num


mesmo hardware reduz o desperdcio de capacidade de processamento que ocorre
freqentemente nos servidores em determinados horrios ou dias do ms. Segundo a
revista INFO [INFO249], em recente estudo, somente 25% (vinte e cinco por cento) da
capacidade instalada de TI utilizada em um ano.

A administrao facilitada outro benefcio agregado e de grande importncia no


projeto de consolidao de servidores. Nesta proposta, tecnicamente os sistemas
operacionais so abrigados em mquinas virtuais e cada mquina virtual geralmente
armazenada no disco da mquina fsica como um s arquivo, o que torna extremamente
prtico, por exemplo, operaes de backup, mudana de mquinas virtuais de um
servidor fsico para outro, adicionar cpias de sistemas e testar novos sistemas. Alguns
monitores de mquinas virtuais (como o VMware e o Xen, que sero vistos a seguir) j
possuem scripts automatizados de backup e mudana de mquina virtual de servidor.

Por fim, as empresas que consolidarem seu parque de servidores podero aproveitar os
seus equipamentos descartados para outras finalidades. Elas podem utilizar estes
equipamentos, por exemplo, para aumentar a disponibilidade e segurana de seus
sistemas, implantando solues de tolerncia falhas.

2.2.1 Implementao da consolidao de servidores

Como j foi visto, a consolidao de servidores uma excelente alternativa para


reduo de custos em ambiente de TI. Na virtualizao um servidor subdividido em
mquinas virtuais e cada mquina virtual tem sua prpria CPU virtualizada, memria, e
espao em disco e podendo compartilhar outros dispositivos anexados plataforma
fsica.

27
Figura 2.01 - Servidores no virtualizados

Figura 2.02 - Servidor virtualizado

Para implementarmos uma consolidao de servidores, primeiramente devemos


considerar alguns pontos chaves [INTEL]:

 Avaliar os processos e as aplicaes crticas. Onde aumentando o nvel dos


servios, aumentariam os resultados?
 Verificar quais servidores so subutilizados e que poderiam compartilhar
recursos. Muitos servidores web e de e-mails hoje funcionam na maioria do
tempo abaixo de 10% de utilizao. Esses so timos candidatos a uma
consolidao.

28
 Algumas aplicaes so ms candidatas consolidao. Nesta classificao
esto enquadradas as aplicaes de alta performance que utilizam o servidor na
maior parte do tempo (ex: analisadores de grandes massas de dados), bem como,
os de misso crtica ou de performance crtica, em que qualquer conteno de
recursos poderia impactar negativamente nos resultados.

Deve-se proceder a seguinte metodologia para clculo de capacidade:

 Fazer um histrico dos dados das aplicaes a serem consolidadas, capturando


dados como consultas, uso de memria, entrada e sada, armazenamento ou
qualquer outra informao relevante, em um ciclo de um dia, um ms, um ano
etc.
 Usando este histrico, deve-se mapear padres de uso para descobrir aplicaes
que poderiam funcionar juntas, e combinando aplicaes de picos em horrios
diferentes.
 Somar todos os picos de carga de trabalho de todos os servios e aplicaes a
serem consolidadas para determinar a requisitos de capacidade computacionais
necessrias (CPU, memria, disco, operaes de entrada e sada etc.).
 Acrescentar uma margem de crescimento projetada para os prximos seis meses,
dois anos ou eventual substituio de equipamentos (por exemplo: devido ao
trmino de suas vidas teis).
 Caso haja polticas institucionais de utilizao de servidores (por exemplo:
nenhum servidor deveria estar funcionando normalmente acima de 80% da
capacidade), deve-se adicionar tambm esta margem de segurana.
 Por fim, deve-se considerar no clculo o overhead2 gerado da tcnica de
virtualizao adotada.

Aps este estudo, deve-se realizar a consolidao das aplicaes em sua forma prtica,
consolidando aplicaes de menor escala e, na medida em que se obtm xito, proceder
para aplicaes de maior escala.

2
Overhead: Custos adicionais em processamento ou armazenamento que reduz de forma significativa e
indesejvel, o desempenho dos sistemas de computao.

29
Ao final de cada trabalho, deve-se utilizar tcnicas de medio de carga de trabalho para
uma anlise do sucesso obtido.

2.3 Segurana

Ameaas segurana so uma das mais imprevisveis e desafiadoras causas de quedas


de servio em sistemas, o que pode ser extremamente custoso para a instituio. Em
recente relatrio apontando pelos laboratrios McAfee Avert, as taxas em que novas
ameaas segurana aparecem duplicaram nos ltimos anos [HINES]. O relatrio
semestral da Symantec sobre ameaas de segurana, referente ao segundo semestre de
2005, apontou aumento no nmero ameaas, enfatizou o uso de novas e sofisticadas
ferramentas para a prtica do crime ciberntico, e o substancial aumento no roubo de
informaes confidenciais [SYMANTEC].

A virtualizao uma poderosa ferramenta na preveno contra ameaas de segurana,


na medida em que evita custos com interrupo de servio e perda de dados.

2.3.1 Isolamento

Um dos maiores benefcios da virtualizao o isolamento de processos em mquinas


virtuais. Com a virtualizao, podemos isolar aplicaes de alto risco de aplicaes
potencialmente vulnerveis. O isolamento eleva a proteo contra aplicaes
maliciosas, aumentando a dificuldade das mesmas acessarem dados, ou afetar processos
que estejam executando em outras mquinas virtuais.

Alm disso, isolando falhas, prevenimos que uma aplicao em mau funcionamento
comprometa todo o sistema. Por exemplo, aplicaes que fazem conexes externas,
como servidores de e-mail, podem ser confinadas em mquinas virtuais prprias, ou
seja, mantendo-as separadas do sistema operacional anfitrio. Alm do mais, podemos
definir nesta mquina virtual, privilgios para acesso a dados e servios vitais.

30
Ainda neste contexto, uma mquina virtual pode ser usada para dar privilgios limitados
a usurios ou aplicaes convidados em um ambiente que pode ser seguramente
deletado quando o servio for concludo. Se algumas destas mquinas virtuais
estiverem comprometidas, somente seria necessrio descartar as mquinas virtuais
corrompidas e iniciar novas outras, ou recuperar cpias de seguranas (backup).

2.3.2 Tolerncia falhas

A virtualizao permite que uma aplicao em mau funcionamento executando em sua


mquina virtual possa ser reiniciada rapidamente e de um modo seguro, sem afetar
outras aplicaes que estejam executando no mesmo sistema anfitrio. Ela permite
tambm, que administradores possam suspender, reiniciar e migrar mquinas virtuais,
ajudando a suavizar efeitos de ataques e falhas em aplicaes, ou at mesmo falhas em
hardware, quando acontecerem (figura 2.03).

Em caso de falha, as mquinas virtuais podem simplesmente ser reiniciadas de um


ponto de restaurao, uma cpia de segurana, ou outro mecanismo de recuperao que
possa trazer o sistema a um estado saudvel.

Se a camada fsica do sistema falha, as mquinas virtuais podem ser migradas e


restauradas em outras mquinas fsicas. Esta habilidade para recriar um servio sem ter
que iniciar do zero especialmente til para servios de misso crtica e de execuo
prolongada, porque prov uma rpida recuperao de desastres. Uma boa idia
armazenar pontos de restaurao de mquinas virtuais em locais remotos para
posteriormente serem recuperados em caso de falha.

Os monitores de mquinas virtuais VMware e Xen dispem de ferramentas que migram


e reiniciam as mquinas virtuais automaticamente em outros servidores em caso de
falha do servidor original.

31
Funcionamento normal

Funcionamento com falha

Figura 2.03 - Demonstrao de recuperaes em uma falha de sistema

2.3.3 Honeypots e Honeynets

Um honeypot um sistema ou aplicao que colocado em uma rede de forma


proposital para que seja comprometido ou atacado. Um honeypot age como uma
ferramenta de estudos e testes de vulnerabilidades em uma rede ou aplicaes, mas no
considerado uma ferramenta de segurana. Honeynet uma rede composta de
honeypots.

Mquinas com honeypots instalados executam servios falsos, que um atacante trata
como se fosse um servio original. Entretanto servios como este tm a finalidade de
monitorar os passos do atacante para que se saiba como e quando foram feitos os

32
ataques e o que se pretende fazer aps a invaso do sistema, gerando logs dessas
informaes para os administradores do sistema.

Os honeypots no tm valor de produo, assim qualquer um que tente se comunicar


com o sistema geralmente uma tentativa de ataque.

A virtualizao faz o uso de honeypots e honeynets ser uma alternativa extremamente


segura, simples e barata. Por exemplo, com a virtualizao podemos simular uma rede
virtual colocando firewall, software IDS, servidor web e servidor de arquivos em
mquinas virtuais isoladas executando sobre a mesma mquina fsica. Um atacante que
consiga invadir este sistema acreditar que est invadindo uma rede real, e assim, uma
vez que toda a ao do atacante foi devidamente registrada no logs do sistema, podemos
identificar as vulnerabilidades exploradas por ele e elimin-las de nossa rede de
produo.

2.3.4 Deteco de intruso

Sistemas de deteco de intruso (Intrusion Detection System IDS) so utilizados para


detectar se algum est tentando invadir um sistema ou fazer mau uso dele. Essas
ferramentas foram concebidas com o crescimento das redes, devido dificuldade de
administradores de redes e analistas de segurana monitorar ou inspecionar
constantemente todos os sistemas e arquivos de logs.

As ferramentas IDS tm a finalidade de ficar a todo tempo monitorando um sistema e


tentando reconhecer aes intrusivas ou fora de um padro normal de uso. Caso
detectem alguma anomalia, elas automaticamente disparam um alerta ao administrador
do sistema ou executam aes defensivas.

Existem conceitualmente dois tipos de implementao de ferramentas IDS:

 Host Based IDS (HIDS): so instalados em um servidor (host) para prevenir


ataques ao prprio servidor. Essa implementao utilizada quando se deseja
elevar a segurana das informaes contidas neste servidor.

33
 Network Based IDS (NIDS): essa implementao baseia-se na captura e anlise
dos pacotes na rede, e so instalados em mquinas em que se concentra o trfego
de rede.

O uso de mquinas virtuais com ferramentas IDS tem mais sentido quando as
implementamos em um sistema anfitrio devido a um problema caracterstico dos
sistemas HIDS: se as ferramentas IDS estiverem instaladas na prpria mquina que est
sendo monitorada, o sistema fica passvel de desativao por parte do atacante, o que
causa reduo de sua confiabilidade.

A idia deste modelo consiste em instalar as ferramentas IDS num sistema operacional
anfitrio e confinar o sistema a ser monitorado em uma mquina virtual executando
sobre esse sistema anfitrio. Dessa forma o sistema principal ficaria isolado das
ferramentas IDS e este por sua vez estaria fora do alcance do atacante, monitorando
constantemente os acessos mquina virtual.

Figura 2.04 - Representao de um modelo freqentemente utilizado e


um modelo isolado em mquinas virtuais

A figura 2.04 ilustra, no primeiro caso, uma implementao normal. Nessa


implementao o atacante que chegar ao sistema pode ter acesso s ferramentas IDS e
conseqentemente desativ-las. No segundo as ferramentas IDS esto isoladas e
monitorando o sistema convidado, um atacante que chegar ao sistema convidado no
conseguir chegar at as ferramentas IDS.

34
2.4 Ensino

A fora da virtualizao tambm pode ter excelente emprego na rea de ensino. O uso
de mquinas virtuais torna o processo de ensino bastante prtico e a custo reduzido. Por
exemplo, em uma instituio que ministra diversos tipos de cursos e que utiliza a
tecnologia dos computadores, comum a necessidade de possuir mquinas dedicadas a
cada curso, o que gera grandes custos de compra de equipamentos e manuteno.
Tambm, nestes casos, comum acontecerem diversos problemas durante o curso, tais
como: necessidade de reinstalao do sistema operacional e aplicativos, dificuldade de
se restaurar configuraes padro, alterao e esquecimento de senhas (como a de
administrador), arquivos apagados de forma acidental, etc.

Problemas como estes podem ser facilmente resolvidos com o uso dos conceitos de
virtualizao. Para essa implementao podem ser consideradas duas abordagens:

Na primeira abordagem pode ser utilizado um computador de grande porte como


servidor central, onde ficaro armazenadas as mquinas virtuais que sero utilizadas
pelos alunos dos diversos cursos. No lado do aluno sero utilizadas mquinas clientes de
pequeno porte, onde acessaro, atravs de uma conexo de rede, as mquinas virtuais
armazenadas no servidor. Periodicamente os arquivos contendo as mquinas virtuais
originais poderiam ser recuperados no servidor, o que rapidamente tornaria o sistema
pronto para um novo uso.

Na segunda abordagem pode ser utilizado um nmero reduzido de computadores


contendo vrias mquinas virtuais com o contedo dos cursos. Nesta abordagem cada
aluno utilizaria o computador podendo fazer suas modificaes conforme necessrio,
todavia restrito a seu espao virtual. Ao final do perodo, podem ser recuperados os
arquivos de mquinas virtuais originais alojados em uma rea de armazenamento
remoto, para que rapidamente os sistemas retomem seu estado normal.

Em ambas as abordagens os alunos devem armazenar seus arquivos de curso e


configuraes pessoais em sua mdia de preferncia ou em um espao em disco remoto,
uma vez que as mquinas virtuais sempre sero restauradas em seu estado original.

35
Sabemos que comum em processos de aprendizagem acontecer danos ao sistema
operacional ou ferramentas instaladas, seja para ensino de computao, seja para ensino
em outras reas. Estas abordagens tm como principal vantagem o fato de se poder criar
mquinas virtuais instalando o sistema operacional e ferramentas que sejam necessrias
para cada perfil de curso/aluno, em um estado em que todo o sistema esteja testado e
livre de problemas, e, posteriormente permitindo que se recupere essas configuraes,
sem maiores transtornos aos alunos e professores.

2.5 Teste e Migrao de aplicaes

Sem dvida um dos grandes desafios para profissionais de TI o teste e a migrao de


aplicaes. Com o passar do tempo necessrio que as aplicaes utilizadas sejam
atualizadas para que possamos desfrutar de novos recursos e tecnologias existentes.
Mas por outro lado essa no uma tarefa to simples, uma vez que ao substituirmos
uma aplicao por outra, ou atualizarmos para uma verso mais nova, corremos o risco
de ficarmos impossibilitados de utilizar estas aplicaes, ocasionando prejuzos para a
instituio.

Utilizando o recurso da virtualizao podemos criar mquinas virtuais para fazer os


devidos testes de sistemas operacionais, migraes de aplicaes, desenvolvimento e
teste de software novo etc, tudo isso de forma isolada do sistema de produo. Assim se
algo der errado podemos restaurar uma mquina virtual original e retomar o processo do
incio, e com isso conhecer as dificuldades do processo de forma antecipada.

2.6 Consolidao de aplicaes legadas

Hoje em dia grande parte das instituies ainda utiliza aplicaes legadas em seus
sistemas de misso crtica, ou seja, aplicaes que no podem ser migradas ou
modificadas devido a fatores como: falta de oramento, fabricante que se retirou do
mercado, aplicaes que foram descontinuadas pelo fabricante, etc.

36
Podemos utilizar a virtualizao para mover estas aplicaes legadas e sem suporte por
parte do fabricante de um modo em que possuam um melhor aproveitamento de
recursos de hardware e gerenciamento.

A virtualizao simplifica a migrao de aplicaes legadas em novas plataformas. Em


casos em que a nova plataforma no suporta a execuo das aplicaes legadas, a
aplicao pode ser hospedada com seu sistema operacional (para qual foi desenvolvido
originalmente) em uma mquina virtual executando sobre a nova plataforma, sem
nenhuma necessidade de alterao no software.

Normalmente um hardware novo fica subutilizado quando dedicado a executar


aplicaes legadas. A consolidao das aplicaes legadas atravs da virtualizao
tambm oferece um melhor aproveitamento de hardware novo, pois permite que um
nico hardware execute vrias instncias de aplicaes legadas simultaneamente.

Por fim, movendo aplicaes legadas para sistemas virtuais eliminamos os riscos de
problemas de compatibilidade e de execuo simultnea, porque elas estaro confinadas
s suas respectivas mquinas virtuais, completamente isoladas das novas aplicaes e
dos novos sistemas operacionais.

2.7 Servio de Hospedagem (Hosting)

A hospedagem (hosting) um servio que possibilita que pessoas e empresas possam


armazenar informaes, imagens, vdeos, ou qualquer contedo acessvel pela web. Esse
servio prestado por empresas que possuem um centro de dados, e normalmente
tambm podem oferecer conectividade Internet.

Os provedores deste servio geralmente usam uma tcnica conhecida como virtual
hosting para abrigar centenas de pginas com seus respectivos domnios em um servidor
web, uma vez que seria proibitivo em termos de hardware, manter um servidor web
separado para cada domnio. Atravs da tcnica, um nico servidor web pode atender
solicitaes a diversos domnios simultaneamente (figura 2.05).

37
Figura 2.05 - Um servidor com vrios domnios virtuais

Por outro lado, um servidor dedicado tem como principal vantagem o fato de no
interferir em outros sites hospedados no mesmo servidor fsico e liberar o acesso do
sistema operacional (acesso de root) para que o administrador do site possa instalar e
configurar quaisquer aplicativos com total liberdade e flexibilidade.

As mquinas virtuais possibilitam que os servios de hospedagem possam usufruir dos


benefcios citados no pargrafo anterior sem maiores custos. Essa tcnica chamada de
servidor virtual privativo (virtual private server - VPS), permite que os centros de dados
operem com diversos servidores virtuais dedicados para cada domnio consolidados em
um nmero reduzido de servidores fsicos (figura 2.06).

Como um servidor virtual privativo executa seu prprio sistema operacional, os


provedores podero dar a seus clientes acesso com segurana s mquinas (virtuais),
ampliando sua gama de servios oferecidos.

38
Figura 2.06 - Virtualizao de servidores web dedicados para cada domnio

2.8 Suporte Tcnico

A virtualizao tambm facilita o trabalho de empresas que oferecem servios de


suporte tcnico. Com ela as limitaes tcnicas que inviabilizam o atendimento de
suporte para diferentes sistemas operacionais e aplicaes e suas diferentes verses,
praticamente so eliminados, uma vez que no h necessidade de se manter
equipamentos dedicados a cada verso de sistema operacional ou aplicao que se
deseja dar suporte. Alm disso, ao invs de uma empresa manter funcionrios
especficos para atender solicitaes de suporte para cada tipo de sistema operacional e
aplicaes, ela pode habilitar seus funcionrios a atenderem chamadas de suporte aos
diversos tipos de sistemas diferentes, o que acarreta em economia em mo-de-obra e
qualidade no atendimento.

39
CAPTULO III

TCNICAS PARA CONSTRUO DE SOFTWARE VIRTUALIZADOR

3.1 Modos de CPU, trap e Chamadas de Sistema

Basicamente existem dois modos de privilgios na CPU para execuo de cdigo


binrio: o modo de usurio (user mode) e modo supervisor (kernel mode). O sistema
operacional executa em modo supervisor, gerenciando os processos e, portanto tem o
controle total da mquina. Os processos dos sistemas operacionais executam em modo
usurio e por isso no detm o controle total da mquina.

As instrues que mudam o completo estado do sistema e so chamadas de instrues


privilegiadas, no podem executar no modo usurio. Quando uma aplicao em modo
usurio tenta executar instrues privilegiadas, gerada uma exceo que resulta em
uma interrupo da CPU, esta exceo comumente chamada de trap. Em seguida, a
CPU automaticamente transfere o fluxo de controle para o kernel do sistema
operacional, o qual decide o que fazer.

Geralmente as aplicaes (que executam em modo de usurio) evitam executar


instrues privilegiadas. Ao invs disso, elas chamam o kernel atravs de uma
funcionalidade conhecida como chamadas de sistema (system calls) [STEIL].

3.2 O Modo Hipervisor

Algumas CPU introduzem um terceiro modo de CPU, chamado modo hipervisor


(hypervisor mode). O modo hipervisor tem total controle da CPU, e onde o monitor de
mquinas virtuais gerencia os sistemas operacionais abrigados em suas mquinas
virtuais. Enquanto a interface entre modo usurio e modo supervisor ainda a mesma,
agora h uma nova interface entre o modo supervisor e o hardware, o modo
hipervisor. Desse modo, todas as instrues privilegiadas feitas pelo kernel so

40
capturadas pelo monitor de mquinas virtuais que pode emular o comportamento
desejado. Este mtodo chamado captura e emulao (trap-and-emulate) [STEIL].

Um exemplo de uma CPU que implementa um modo hipervisor o IBM PowerPC 970,
tambm conhecido como G5. As novas arquiteturas Intel VT da Intel e AMD-V da
AMD tambm implementam uma espcie de modo hipervisor e so descritas mais a
seguir.

3.3 O problema da Arquitetura x86

Os processadores de arquitetura x86 (ou IA32) possuem quatro nveis de privilgio para
execuo de cdigos que so numerados de 0 a 3. Cdigo rodando no nvel 0 (modo
supervisor) pode executar qualquer instruo na CPU, enquanto no nvel 3 (modo
usurio) existem instrues que no podem ser executadas. Esses nveis de privilgios
so comumente chamados de "anis" (rings), devido forma como eram ilustrados no
manual de programao do chip 80386 (figura 3.01).

Figura 3.01 - Estrutura da Arquitetura x86

Nessa arquitetura os sistemas operacionais somente usam os nveis 0 e 3, sendo o nvel


0 para o kernel e o nvel 3 para o modo usurio.

Como nessa arquitetura no foi implementado um modo hipervisor, o monitor de


mquinas virtuais obrigado a executar em modo supervisor, e ao criar uma mquina

41
virtual ele precisa forar o kernel do sistema operacional convidado a executar em modo
usurio no ring 3 (em algumas implementaes ele executa em um nvel no utilizado
como o ring 1).

Com isso, para manter cada sistema convidado isolado necessrio utilizar uma tcnica
complexa chamada de desprivilegiamento, a qual fora a execuo de um sistema
convidado em um nvel menos privilegiado.

A seguir esto descritas as principais tcnicas utilizadas para superar esta dificuldade da
arquitetura x86. importante salientar que tais tcnicas tambm podem ser
implementadas em outras arquiteturas.

3.4 Virtualizao Total (Full Virtualization)

A virtualizao total uma tcnica que prov uma completa simulao da subcamada de
hardware para os sistemas convidados. O resultado um ambiente em que todos os
sistemas operacionais que so capazes de executar diretamente em um hardware
tambm podem executar em uma mquina virtual.

A principal vantagem da virtualizao total que no h necessidade de modificaes


nos sistemas operacionais convidados para que suportem a virtualizao, dado que uma
estrutura completa de hardware virtualizada o que faz com que o sistema convidado
pense estar executando diretamente no hardware.

Figura 3.02 - Estrutura representativa da virtualizao total

42
O desafio para a virtualizao total manter cada sistema convidado isolado. Para
conseguir isto, so aplicadas algumas tcnicas de captura e emulao de instrues da
CPU, o que resulta em um desempenho reduzido neste tipo de tcnica.

3.4.1 Virtualizao de CPU na virtualizao total

Para que uma arquitetura seja estritamente virtualizvel, necessrio que todas as
instrues privilegiadas sejam capturadas para o modo supervisor quando originadas em
modo usurio. Entretanto em arquiteturas como a x86, o kernel do sistema convidado
no pode estar executando em modo usurio, porque ele pode utilizar instrues
assembler que no podem ser capturadas e emuladas. O kernel comporta-se
diferentemente quando em modo usurio. Nesta arquitetura existem diversas instrues
que tem comportamentos diferentes no modo usurio e no modo supervisor, e por isso
no causam uma exceo na CPU (trap). Um exemplo disso que uma aplicao em
modo usurio poderia perguntar se ela est executando em modo supervisor ou em
modo usurio, e obteria a mesma resposta: modo usurio, sem qualquer chance do
monitor de mquinas virtuais interceptar essa instruo e retornar uma resposta falsa
[STEIL].

Com isso dizemos que a arquitetura x86 no estritamente virtualizvel, pois no


possui nativamente um modo hipervisor e nem todas as instrues sensveis causam
traps de CPU.

Para contornar esse problema, em algumas solues o cdigo x86 analisado instruo
por instruo e emulado, contudo este processo causa uma perda de desempenho
considervel. Esta tcnica tambm conhecida como emulao do cdigo x86 e
utilizada pelo software de virtualizao Bochs.

Em outras solues utilizada uma tcnica chamada traduo binria (ou reescrita
binria) que bem mais eficiente em termos de desempenho. Essa tcnica atualmente
a mais utilizada e so implementados em softwares como VMware, Microsoft Virtual
Server e outros.

43
A traduo binria consiste em recompilar todo e somente o cdigo sensvel, isto ,
traduzir todo o cdigo assembler que problemtico (que necessita de um trap de CPU,
mas como foi explicado anteriormente, no causa um trap) substituindo com traps
explcitos no modo supervisor. Todo cdigo do modo supervisor gerado nos sistemas
convidados deve ser analisado e emulado antes de ser executado.

O cdigo dividido em blocos e estes so ento verificados. Se eles no contm


instrues problemticas, podem ser executados, do contrrio estas instrues so
substitudas por outras, adequadas pelo monitor, o que far com que o sistema
convidado acredite estar executando em um modo privilegiado quando na verdade est
em um modo desprivilegiado.

Nesse contexto, todo cdigo que j foi checado uma vez no precisa ser checado
novamente, e uma definio de blocos que se refere a outro, pode ser colocado junto a
um bloco maior (trace cache), podendo ser executado sem futuras checagens, o que
agiliza bastante o processo.

3.4.2 Virtualizao de memria/disco na virtualizao total

Uma vez que a mquina virtual deve se comportar como uma mquina real, a memria
deve se comportar da mesma forma para todo cdigo executado dentro da mquina
virtual. Entretanto, o acesso pgina de memria pelo endereamento normal de dentro
de uma mquina virtual no possvel, pois todo sistema operacional acessa a pgina
fsica comeando com o endereo 0, o que causaria um grande conflito j que eles
mapeariam suas pginas virtuais para a mesma pgina fsica.

Ento cada acesso tabela de pgina na mquina virtual causa um trap, cujo controle
transferido ao monitor de mquinas virtuais. Este por sua vez, reserva um mapeamento
que possua o mesmo efeito, porm usa uma pgina com endereamentos diferentes. O
sistema convidado acredita estar usando o incio da memria (endereo 0).

44
Figura 3.03 - Alocao de pgina de memria para a mquina virtual

Conforme a figura 3.03, a mquina fsica possui um endereamento de memria


iniciando em 0000 e vai at FFFF, porm o monitor de mquinas virtuais reserva o
espao para a pgina de memria da mquina virtual, que comea no endereo fsico de
00FF a 0FFF. Contudo o sistema convidado acredita que esta pgina est comeando
no endereo 0000 e finalizando em 0F00. o monitor de mquinas virtuais que se
encarrega de traduzir os endereos corretamente.

Praticamente o mesmo processo ocorre na virtualizao do disco. O espao em disco


para a mquina virtual alocado previamente e o mapeamento feito de forma similar
ao mapeamento de memria. O sistema convidado acredita ter acesso exclusivo ao
disco.

3.4.3 Virtualizao de E/S na virtualizao total

Na virtualizao total, todo o cdigo que esteja dentro de uma mquina virtual executa
em modo usurio e todo acesso de Entrada e Sada (E/S) vai gerar um trap,
direcionando o controle para o monitor de mquinas virtuais. A partir da, o monitor
descobre a finalidade do acesso e emula uma cpia do hardware retornando esta
cpia ao sistema convidado. Por exemplo, quando um sistema convidado pergunta

45
pelo estado do mouse, isto gera um trap o qual a CPU direciona para o monitor, este por
sua vez informar o estado do mouse atual para o sistema convidado baseado em
informaes internas sobre o mouse emulado. Quando um dispositivo virtual gera
interrupes, o monitor injeta uma interrupo na mquina virtual emulando o que
aconteceria se caso a interrupo fosse feita diretamente mquina fsica.

Problematicamente, este mtodo muito lento para muito dispositivos (especialmente


vdeo) porque o driver do sistema convidado e o monitor tm que se comunicar na
linguagem de protocolo de hardware, que muito eficiente para mquina real, todavia
no eficiente entre dois softwares. Felizmente os fabricantes de solues de
virtualizao total, desenvolveram drivers especiais (que utilizam recursos de E/S que
no esto sendo utilizados pela mquina real) para que os sistemas convidados
diretamente se comuniquem com a mquina real, tornando-se um protocolo muito mais
eficiente [STEIL].

3.5 Paravirtualizao (Paravirtualization)

Paravirtualizao uma tcnica que apresenta uma interface de software para mquinas
virtuais que similar (mas no idntica) subcamada de hardware. A tcnica permite
que o sistema convidado acesse diretamente recursos do hardware, porm com
restries, que so administradas pelo monitor de mquinas virtuais. Esta capacidade
minimiza o overhead e otimiza o desempenho do sistema para suportar a virtualizao.

A principal limitao da paravirtualizao a necessidade de que o sistema operacional


convidado seja previamente adaptado (modificado) para executar no topo de um
monitor de mquinas virtuais. Entretanto, a paravirtualizao elimina a necessidade da
dependncia dos mecanismos de trap da CPU, no havendo necessidades de capturar e
emular a maioria das instrues.

A figura 3.04 representa a paravirtualizao, em que o sistema convidado pode acessar


diretamente o hardware, sendo que este processo totalmente gerenciado pelo monitor
de mquinas virtuais. Esta tcnica utilizada pelo monitor Xen, por exemplo.

46
Figura 3.04 - Estrutura representativa da paravirtualizao

3.5.1 Paravirtualizao e CPU

A paravirtualizao simplifica a interface exportada para o hardware, de um modo que


elimina certas necessidades implementadas na virtualizao total. Um exemplo so as
instrues sensveis (que executam de modos diferentes dependendo do modo que so
executado, em modo supervisor ou modo usurio). Na paravirtualizao elas so
executadas diretamente na CPU, todavia h um pequeno nmero de instrues que
devem ser substitudas (capturadas e emuladas).

3.5.2 Paravirtualizao e memria/disco

Na paravirtualizao o sistema operacional convidado (que foi modificado para suportar


a virtualizao) recebe do monitor de mquinas virtuais, o espao que ser utilizado
para sua pgina de memria, e este, acessa diretamente a memria fsica sem que seja
necessria qualquer intermediao do monitor.

O acesso ao disco tambm feito de forma direta pelo sistema convidado, porm uma
vez que h vrios sistemas convidados executando de forma simultnea e o disco
compartilhado, o monitor de mquinas virtuais gerencia a fila de acessos
[MAGENHEIMER e CHRISTIAN].

47
3.6 Emulao com Recompilao Dinmica

Outra tcnica bastante utilizada a emulao com recompilao dinmica (tambm


conhecida como dynamic recompilation ou dynarec). Esta tcnica consiste em
recompilar partes do cdigo de um programa durante sua execuo. Com isso, o sistema
pode adequar o cdigo compilado para refletir o ambiente de execuo original do
programa, e talvez produzir um cdigo mais eficiente, explorando informaes que no
esto disponveis para um compilador esttico tradicional. Em outros casos, um sistema
pode empregar recompilao dinmica como parte de uma estratgia de otimizao
adaptvel para executar uma representao porttil do programa como os bytecodes do
Java ou do .NET CLR [LAUREANO 2004].

Exemplificando de um modo simples a recompilao dinmica, podemos supor que um


determinado programa est sendo executado num emulador e precisa copiar uma string
nula. O programa est compilado originalmente para um processador simples. Esse
processador pode copiar apenas um byte por vez, e deve faz-lo lendo a string de
origem em um registrador, e escrevendo a string de destino a partir deste registrador.
Esse programa se pareceria como:

beginning:
mov A,[ponteiro para primeira string]
; Coloca o endereo do primeiro caracter da string de
; origem no registrador A

mov B,[ponteiro para segunda string]


; Coloca o endereo do primeiro caracter da string de
; destino no registrador B

loop:
mov C,[A] ; Copia o byte do registrador A para o C
mov [B],C ; Copia o byte no registrador C para o B
cmp C,#0 ; Compara o dado copiado com 0 (marcador de fim de string)
inc A ; Incrementa o registrador A para apontar para
; o prximo byte
inc B ; Incrementa registrador B para apontar para
; o prximo byte
jnz loop ; Se ele no for 0 ento volta e copia o prximo byte
end:

48
Imaginemos que um emulador estivesse executando num processador que similar a
esse, todavia possusse um desempenho melhor em cpias de strings, e que este
emulador soubesse desta caracterstica. Ele poderia identificar as instrues de
seqncia de cpia da string e decidir reescrev-las de um modo mais eficiente antes da
execuo.

Esse novo processador possui uma instruo chamada movs especificamente


designado para copiar strings de uma forma mais eficiente. Esta hipottica instruo
copiaria 16 bytes por vez sem ter que carreg-lo no registrador C, mas pararia quando
copiasse um byte 0 (que marca o fim da string). Ele tambm sabe que o endereo da
string estar no registrador A e B, ento ele incrementa A e B em 16 bytes, cada vez que
executa.

Ento, o novo cdigo compilado se pareceria com o seguinte:

beginning:
mov A,[ponteiro para primeira string]
; Coloca o endereo do primeiro caracter da string de
; origem no registrador A
mov B,[ponteiro para segunda string]
; Coloca o endereo do primeiro caracter da string de
; destino no registrador B

loop:
movs [B],[A] ; Copia 16 bytes do registrador A para o
; registrador B, e incrementa A e B em 16
jnz loop ; Se no for zero, no alcanou
; o final da string, ento volte e continue copiando
end:

Com isso, h um imediato aumento de desempenho simplesmente porque o processador


no precisa carregar muitas instrues para fazer a mesma tarefa.

O QEMU um exemplo de software que utiliza a tcnica de emulao com


recompilao dinmica, e que pode ser usado para prover a virtualizao.

49
Por fim, h uma diferena bsica entre traduo dinmica e a tcnica de recompilao
dinmica (dynarec). A traduo dinmica traduz um bloco de instrues do sistema
convidado para instrues do sistema anfitrio anteriormente a execuo do bloco e faz
um cache dos blocos traduzidos para aumentar o desempenho. A tcnica da
recompilao dinmica descobre qual algoritmo o sistema convidado implementa e
substitui com uma verso otimizada no sistema anfitrio [KASICK et al].

3.7 As novas tecnologias de Virtualizao da Intel e AMD

Tanto a Intel como a AMD vem investindo em tecnologia para permitir a virtualizao
em processadores de arquitetura x86. Elas introduziram arquiteturas similares,
implementando um assistente em hardware (conhecido como hardware assist) para
suportar virtualizao de uma forma nativa, porm as tecnologias das duas fabricantes
so incompatveis entre si.

Com esta nova camada na CPU, o monitor de mquinas virtuais tem seu prprio nvel
privilegiado onde ele executa, e tambm no mais necessrio que seja feito o
desprivilegiamento dos sistemas convidados, uma vez que os sistemas operacionais
executam diretamente sobre o hardware.

Figura 3.05 - Arquitetura x86 com o hardware assist da Intel e AMD

A Intel nomeou sua verso de seu hardware assist de VT (Virtualization


Tecnology) que anteriormente era chamado de Vanderpool, enquanto a AMD

50
nomeou de SVM (Secure Virtual Machine) e mais recentemente mudou para
AMD-V (AMD Virtualization), o codinome inicial era Pacifica.

A idia tornar suas CPU estritamente virtualizveis, adicionando um modo hipervisor.


Algumas instrues sensveis ainda no geram traps no modo usurio, todavia isto no
uma grande preocupao quando o sistema convidado pode executar em modo
supervisor.

Existem algumas diferenas entre as implementaes da Intel e AMD, contudo os


processadores dotados desta tecnologia basicamente possuem um conjunto de instrues
extra chamado de Extenses de Mquina Virtual (Virtual Machine Extensions - VMX).

Por exemplo, no caso do Intel-VT, o VMX traz 10 novas instrues especficas para
utilizao de mquinas virtuais com o processador, so elas: VMPTRLD, VMPTRST,
VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUCH, VMRESUME,
VMXOFF e VMXON.

Para entrar no modo de virtualizao, o software deve executar a instruo VMXON e


ento chamar o monitor de mquinas virtuais. Feito isso, o monitor pode entrar em cada
mquina virtual usando a instruo VMLAUNCH, e sair delas usando a instruo
VMRESUME. Se o monitor quiser parar todas as mquinas virtuais e sair do modo de
virtualizao, ela executa a instruo VMXOFF.

O SVM disponibiliza a instruo VMRUN para executar uma mquina virtual,


VMSAVE e VMLOAD so utilizadas para complementar as capacidades de guardar e
restaurar estado da instruo VMRUN e do acesso ao estado do processador. A
instruo VMCALL permite que o sistema operacional se comunique diretamente com
o monitor.

Em termos de gerenciamento de memria, existe uma diferena relevante entre a


tecnologia da AMD e Intel. Nos processadores da AMD o gerenciamento de memria
feito por hardware enquanto que nos processadores da Intel ele feito por software. Por
esta razo, o desempenho da arquitetura SVM pode ser mais elevado que o da

51
arquitetura Intel-VT, embora esta eficincia ainda no tenha sido efetivamente
comprovada [DUMIENSE e JESUS].

Outro avano dessas tecnologias de virtualizao a incluso de virtualizao de E/S.


Atualmente as solues de virtualizao por software no podem exclusivamente
determinar que uma mquina virtual acesse diretamente um hardware fsico (como uma
placa de rede, por exemplo), tendo que simular estas operaes com a utilizao
tcnicas complexas [STEIL].

Desse modo, podemos concluir que a principal vantagem dessas tecnologias da Intel e
AMD uma melhora significativa de desempenho na virtualizao de CPU, pois uma
vez que h uma camada de virtualizao nativa no hardware, no existe a necessidade
de traduo binria.

52
CAPTULO IV

VIRTUALIZAO POR CAMADA DE ABSTRAO DO HARDWARE

4.1 Introduo

Neste conceito de virtualizao existe uma camada de software entre o sistema


operacional e o hardware, provendo a intercomunicao entre as partes. Esse software
o monitor de mquinas virtuais e geralmente pode suportar vrios sistemas operacionais
executando ao mesmo tempo com bom desempenho, caracterstica que deve ser de
fundamental importncia para construo de softwares deste tipo.

A arquitetura dos monitores de mquinas virtuais que virtualizam por abstrao do


hardware pode ser de dois tipos principais, cujas diferenas j foram citadas no captulo
III, so elas: a virtualizao total e a paravirtualizao.

Esse tipo de virtualizao est sendo muito difundido nos ltimos anos e atualmente a
forma mais utilizada para virtualizar sistemas operacionais. Nesse captulo so
apresentados os principais softwares classificados nesse tipo de virtualizao.

4.2 VMware

O software de virtualizao mais difundido atualmente o VMware. Lanado em 1999,


foi a primeira soluo de virtualizao para computadores baseados na arquitetura x86.
O VMware um software proprietrio que prov uma camada de virtualizao que
suporta vrios sistemas operacionais sobre um hardware. A empresa desenvolvedora do
VMware, a VMware Inc. uma subsidiria da EMC Corporation e localiza-se em Palo
Alto, Califrnia, Estados Unidos.

As principais verses do VMware so: VMware ESX Server, VMware Server, VMware
Workstation e VMware Player.

53
4.2.1 VMware ESX Server

O VMware ESX Server a verso comercial do produto VMware voltado para o uso
em servidores de grande porte. Ele uma mquina virtual do tipo I e possui um sistema
operacional prprio e otimizado para gerenciar mquinas virtuais.

No VMware ESX Server, cada mquina virtual representa um sistema completo, com
processador, memria, disco e BIOS, provendo um completo ambiente de execuo, o
que faz com que os sistemas operacionais convidados no precisem ser modificados.

Basicamente o sistema virtualiza quatro recursos chaves do servidor: CPU, memria,


disco e rede [VMWARE 2006-A].

4.2.1.1 Virtualizao de CPU

Como visto anteriormente, os processadores baseados na arquitetura x86 no possuem


suporte nativo a virtualizao, e por isso no conseguem capturar certas instrues de
modo privilegiado originadas de um sistema operacional executando em uma mquina
virtual. Desse modo, no podem contar totalmente com a tcnica de captura e emulao
dos sistemas tradicionais.

Para suprir esta dificuldade, o VMware usa adicionalmente a tcnica de traduo


binria. Com isso, o VMware examina todas as instrues antes de serem executadas,
substituindo as instrues que no so causam traps por outras. Devido a isso, a tcnica
causa uma perda de desempenho, contudo h instrues que executam diretamente entre
a mquina virtual e a CPU.

importante salientar que o VMware d a cada sistema operacional executando em sua


mquina virtual, a sua prpria CPU virtual, ou seja, os sistemas operacionais
acreditam possurem uma CPU dedicada. Cada CPU virtual possui seus prprios
registradores e estruturas de controle.

54
4.2.1.2 Virtualizao de memria

Como o ESX virtualiza a memria das mquinas virtuais por meio da traduo de
endereos, o monitor de mquinas virtuais faz um mapeamento da pgina de memria
do sistema operacional convidado para a pgina de memria fsica na subcamada do
hardware. Cada mquina virtual tem sua prpria pgina de memria em que o sistema
operacional convidado v iniciando do endereo 0.

O monitor intercepta instrues da mquina virtual que manipula estruturas de


gerenciamento de memria do sistema operacional convidado, de modo que a unidade
de gerenciamento da memria (Memory Management Unit MMU) do processador no
seja atualizada diretamente pelo sistema convidado. O ESX mapeia a pgina da
mquina virtual em uma tabela de pgina sombra (Shadow Page Table - SPT) que
atualizado com o da mquina fsica.

Quando o sistema operacional convidado estabelece um mapeamento novo em sua


tabela de pgina, o monitor detecta a modificao e atualiza a respectiva entrada na
tabela de pgina sombra, que aponta para a localizao real da pgina de memria no
hardware. Quando a mquina virtual est executando, o hardware usa diretamente a
tabela de pgina sombra para a traduo do endereo, o que permite que os acessos de
memria normais na mquina virtual executem sem adicionar overhead de tradues de
endereos, uma vez que as tabelas de pgina da sombra j esto definidas.

4.2.1.3 Virtualizao de disco

O ESX Server implementa seu prprio sistema de arquivos chamado de VMFS. O


VMFS um sistema de arquivos distribudo que permite que mltiplos hosts acessem
arquivos concorrentemente no mesmo volume VMFS. A principal vantagem que o
VMFS otimizado para operaes E/S com arquivos grandes como o caso dos
arquivos que contm as imagens de mquinas virtuais. Outro ponto importante o

55
armazenamento em reas de disco que podem ser compartilhadas para acesso entre os
sistemas operacionais convidados executando em diferentes mquinas virtuais.

4.2.1.4 Virtualizao de rede

No ESX Server possvel definir at quatro adaptadores de rede virtual. Cada adaptador
tem seu prprio endereo MAC e endereo IP. As interfaces de rede virtual das
mltiplas mquinas virtuais podem ser conectadas a um switch virtual. Cada switch
pode ser configurado sem qualquer conexo ou a uma LAN fsica por meio dos
adaptadores de rede da mquina anfitri. Esses switches so chamados de VMnets e
so abstraes que garantem conexes com velocidade entre as mquinas virtuais, o
sistema anfitrio e a LAN fsica.

4.2.2 VMware Server

O VMware Server (que anteriormente chamado de VMware GSX Server) a verso


para uso em servidores de pequenos e mdios portes. Tornou-se gratuito em 12 de junho
de 2006 e disponibilizado para download no site oficial do fabricante.

O VMware Server uma mquina virtual do tipo II, ou seja, necessrio que o software
execute sobre um sistema operacional anfitrio que pode ser em sistemas operacionais
baseados em Linux ou Windows (existe uma verso para cada um destas plataformas).
O programa permite que sejam criadas diversas mquinas virtuais suportando alguns
sistemas convidados de um modo otimizado, como por exemplo, algumas verses do
Windows, Linux, Solaris e BSD (figura 4.01). Existe tambm um modo genrico para
que se utilize outros sistemas operacionais sem suporte especfico.

O VMware Server, assim como o VMware ESX, tambm suporta mquinas virtuais
com uma ou duas CPU virtuais.

Ele pode compartilhar com os sistemas convidados, perifricos do hardware como: CD-
ROM, placas de rede e portas USB.

56
Com ele existe a possibilidade de criar registros instantneos (chamado de "snapshot")
de uma mquina virtual num dado momento, no qual possvel fazer backup em um
determinado estado, ou testar configuraes em que se pode reverter.

Figura 4.01 - VMware Server: Exemplo de uma mquina virtual Linux Debian
executando sobre um sistema anfitrio Windows

No VMware Server o suporte a rede feito atravs de VMnets (como no ESX Server),
possuindo trs modos:
 Bridged: a mquina virtual vista como um outro computador na rede, com
endereo IP podendo ser obtido via DHCP.
 NAT: a mquina virtual se conecta ao computador anfitrio, que por sua vez se
conecta a rede.
 Host-Only: a mquina virtual apenas se conecta ao anfitrio.

Alm disso, possui uma interface web para gerenciamento remoto. Para administrao
dos sistemas operacionais, o software usa uma verso modificada do VNC (figura 4.02).

57
Figura 4.02 - VMware Server: Interface web de gerenciamento remoto.

4.2.3 VMware Workstation

Esta a verso comercial do VMware que utilizada em estaes de trabalho. Possui


basicamente os mesmos recursos do VMware Server inclusive com a possibilidade de
criar mquinas virtuais.

O VMware Workstation destaca-se pela facilidade de uso proporcionada por seus


assistentes que guiam o usurio no processo de criao de mquinas virtuais. Ele
tambm possui um assistente que ajuda a montar clones de mquinas virtuais. Tambm
possvel criar grupos de mquinas virtuais, de uma s vez, e coloc-las em redes.

Com o VMware Workstation possvel criar mquinas virtuais em dispositivos externo


como um disco rgido ou um pen-drive, atravs de um produto adicional chamado ACE
Option Pack.

58
4.2.4 VMware Player

Esta a verso mais simples do produto e que tambm disponibilizada gratuitamente


para download. O VMware Player indicado para aplicaes leves e no pode criar
mquinas virtuais, porm executa as mquinas virtuais criadas por outras verses mais
completas.

4.2.5 VMWare Infrastructure

O VMware Infrastructure no uma verso, na verdade ele uma sute de aplicativos


de virtualizao que otimiza o processo de implantao e gerenciamento de mquinas
virtuais nas empresas. Ele visa oferecer, em uma soluo integrada, ganhos em:
virtualizao compreensiva, gerenciamento, otimizao de recursos e disponibilidade de
aplicaes. A sute composta de um conjunto de aplicativos cujo principal o
VMware ESX Server. So eles:

 VMware ESX Server: j visto anteriormente, o ESX um software que prov


uma camada de virtualizao, no qual abstrai processador, memria, disco e
recursos de rede. O ESX possui ainda, um sistema operacional prprio, o que
visa aumentar o desempenho das mquinas virtuais.
 Virtual Symmetric Multi Processing (SMP): possibilita que uma simples
mquina virtual use mltiplos processadores simultaneamente.
 Virtual Center Management Server: um ponto central para configurar e gerenciar
infra-estrutura de TI virtualizada.
 Virtual Infrastructure Client: uma interface que permite administradores e
usurios se conectarem remotamente ao Virtual Center Management Server ou
instalaes individuais do ESX.
 Virtual Infrastructure Web Access: Uma interface web para gerenciamento e
acesso remoto.
 VMotion: habilita uma migrao em tempo de execuo de uma mquina virtual
de um servidor para outro com a menor queda possvel no nvel de servio.

59
 High Availability (HA): mantm a alta disponibilidade das mquinas virtuais.
Com ele, em caso de falha de um servidor as mquinas virtuais afetadas so
automaticamente reiniciadas em outros servidores de produo que possuam
condies para abrig-las.
 Distributed Resource Scheduler (DRS): Distribui de forma inteligente recursos
de hardware para as mquinas virtuais.
 Consolidated Backup: um agente centralizado para backup de mquinas virtuais.
Ele simplifica a administrao e reduz a carga nas instalaes do ESX Server.
[VMWARE 2006-B].

Dentro da sute VMware Infrastructure, o Virtual Center um aplicativo que uma


central administrativa do ESX Server. Ele visa facilitar e agilizar a criao de mquinas
virtuais pois possui uma srie de templates (mquinas virtuais criadas previamente) de
servidores prontos. Com o Virtual Center possvel criar mquinas virtuais atravs de
um modelo (com um servidor de banco de dados j instalado, por exemplo) e deixar o
software implantar o novo sistema em servidores fsicos, o que torna a tarefa mais
rpida do que executar uma instalao e configurao de um novo servidor fsico na
rede. A figura 4.03 ilustra um exemplo de funcionamento do VMware Virtual Center.

Figura 4.03 - Criao de mquinas virtuais com o VMware Virtual Center

60
4.2.5.1 Alta Disponibilidade

O High Availability uma aplicao que permite a migrao de mquinas virtuais em


caso de falha do servidor fsico, para um outro que esteja operacional no momento.

Figura 4.04 - Infra-estrutura de mquinas virtuais com alta disponibilidade

A figura 4.04 ilustra um exemplo de uma infra-estrutura em que dois servidores


compartilham uma rede de armazenamento de dados (SAN3). Nesta configurao, os
arquivos fsicos das mquinas virtuais esto armazenados na SAN e cada CPU tem
acesso simultneo s informaes. No caso de pane de um dos servidores, as mquinas
virtuais so transferidas de um servidor a outro. O VMotion, que outra aplicao
includa na sute, visa executar estas transferncias com o menor downtime possvel.

O VMotion tambm ajuda no processo de transferir mquinas virtuais de um servidor


para outro (figura 4.05) com o intuito de aliviar a carga deste primeiro em momentos de
picos de utilizao. Ele tambm auxilia no processo de mover mquinas virtuais para
servidores novos.

Tambm possvel agendar trocas de mquinas virtuais, ou configurar as trocas para


que sejam feitas em funo dos picos de utilizao, com a aplicao chamada
Distributed Resource Scheduling (DRS). Sua principal funo eliminar a ociosidade

3
SAN (Storage Area Network) uma rede projetada para agrupar vrios dispositivos de armazenamento
de informaes.

61
das mquinas, redistribuindo os recursos de forma a manter a disponibilidade e o
mximo desempenho do parque.

Figura 4.05 - Migrao de mquinas virtuais entre servidores

4.2.6 Teste do VMWare

Em meu teste foi utilizada a verso VMware Server (que possui licenciamento gratuito),
o qual instalei sobre um sistema anfitrio Windows XP. Em seguida foram criadas duas
mquinas virtuais contendo os seguintes sistemas operacionais convidados: Debian 4.0
e Ubuntu 6.06 Server.

Para criao dessas mquinas virtuais foram utilizados dois discos virtuais novos para
abrigar cada instalao e o escolhido modo de conexo a rede bridged para ambas.

Ao final do processo pude concluir que:

 Ambos os sistemas foram instalados sem apresentar problemas e funcionaram


normalmente.
 O desempenho foi bom, mesmo com as duas mquinas virtuais executando
simultaneamente no sistema anfitrio.
 Todas as mquinas acessaram normalmente a rede, sendo que para cada uma foi
configurado um endereo IP distinto, os quais responderam aos comandos ping

62
originados de outra mquina virtual e do sistema anfitrio, conforme pode ser
visto na figura 4.06.
 Ficou evidente que o VMware Server deve ser utilizado preferencialmente em
redes de pequeno porte ou em estaes de trabalho, devido a sua simplicidade e
carncia de grandes recursos.
 O VMware mesmo em sua verso limitada um timo software de virtualizao
pois alia bom desempenho, compatibilidade com os diversos sistemas
operacionais e facilidade de uso.

Figura 4.06 - Execuo de comandos ping entre as mquinas virtuais e o sistema anfitrio

4.3 Xen

O Xen uma plataforma de virtualizao do tipo I para a arquitetura x86. O projeto Xen
de cdigo aberto e baseado na General Public License (GPL). Foi originalmente parte
chave de um projeto de pesquisa na Universidade de Cambridge chamado XenoServer,
cujo objetivo era prover uma infra-estrutura pblica para computao distribuda
[CLARK]. Ian Pratt, que foi lder do projeto, fundou a empresa XenSource Inc. que
atualmente suporta o desenvolvimento do projeto open source e tambm possui verses
comerciais do software.

63
O Xen utiliza o modelo de paravirtualizao para prover mquinas virtuais. Como j foi
visto, a paravirtualizao o processo que simplifica a interface exportada para
hardware de uma forma que elimina certas caractersticas que so difceis de virtualizar.
Um exemplo dessas caractersticas so as instrues sensveis que possuem um
comportamento diferente dependendo da forma que est executando nos modos usurio
ou kernel. Um significante overhead gerado uma vez que as instrues devem ser
interceptadas e interpretadas pela camada de virtualizao. O Xen utiliza a
paravirtualizao para reduzir esse overhead [YOUSEFF et al]. A paravirtualizao
permite que mquinas virtuais especficas comuniquem-se diretamente com o hardware.
Ao invs de todas as mquinas virtuais se comunicarem com o sistema anfitrio, a
mquina privilegiada que gerencia a interao e recebe as chamadas passadas pelos
outros sistemas virtuais.

Ele possui acesso privilegiado ao hardware e os sistemas convidados utilizam esse


acesso privilegiado como uma espcie de ponte para acessar o hardware. A memria
separada em blocos pelo monitor de mquinas virtuais, e os sistemas convidados podem
utilizar esses blocos da forma que lhes convier, tornando o acesso memria direto e
mais eficiente. Esta separao e isolamento tambm ocorrem em dispositivos como
disco, o que proporciona um acesso mais rpido a estes. O monitor de mquinas virtuais
s interfere quando ocorre um acesso fora do bloco [LAUREANO 2006].

necessrio que os sistemas operacionais sejam modificados para suportar esta


virtualizao, contudo no necessrio que as aplicaes que executem sobre esses
sistemas sejam reescritas. Algumas distribuies Linux como o Red Hat e o Debian, j
possuem suporte nativo ao Xen.

necessrio frisar que o Xen suporta (atravs de pacotes adicionais) que sistemas
operacionais executem sem modificaes, desde que o hardware possua processadores
com a tecnologia de hardware assist (j comentado no captulo III), como o Intel VT da
Intel e AMD-V da AMD [CLARK].

Na paravirtualizao em interfaces x86, existem quatro fatores amplos: Os


gerenciamentos de memria, da CPU, dos dispositivos E/S e de redes [BARHAM et al].

64
4.3.1 Gerenciamento de Memria

A virtualizao de memria representa a maior dificuldade em paravirtualizar uma


arquitetura, isto por causa de mecanismos requeridos no monitor e das modificaes
requeridas nos sistemas convidados.

Em cada mquina virtual criada no Xen (denominado domnio ou dom), uma tabela
de pgina de memria alocada pelo monitor, que a partir da usa um mecanismo
chamado hypercall para realizar as atualizaes nessas tabelas. O monitor (que executa
no domnio 0 ou dom0) permite que os sistemas operacionais convidados acessem
tabelas de pginas diretamente, porm em modo somente para leitura.

4.3.2 Gerenciamento da CPU

Como visto no captulo III, a arquitetura x86 implementa camadas de privilgio


genericamente descritas como anis (rings), enumeradas de 0 (mais privilegiada) at 3
(menos privilegiada).

O Xen utiliza a tcnica de desprivilegiamento, no qual o monitor que executa no ring 0


desloca a execuo do sistema operacional convidado para o ring 1 ou 2 para que ele
possa manter um controle das instrues privilegiadas. As aplicaes de usurio
continuam executando no ring 3.

As instrues privilegiadas so paravirtualizadas de uma forma que requer que elas


sejam validadas e executadas pelo monitor. Qualquer sistema operacional convidado
que tente executar diretamente uma instruo privilegiada causa uma falha, uma vez que
somente o Xen executa em nvel privilegiado suficiente.

4.3.3 Dispositivos de E/S

O gerenciamento de dispositivos E/S feito basicamente emulando dispositivos de


hardware existentes como tipicamente feito na virtualizao total. O Xen implementa

65
um conjunto de abstraes simples para os dispositivos, que permite projetar uma
interface que seja eficiente e satisfatria quanto proteo e isolamento.

Somente o domnio 0 (dom0) tem acesso direto sem checagem aos discos fsicos. Todos
os outros domnios acessam o disco atravs de uma abstrao chamada VBD (Virtual
Block Devices), que so criadas e configuradas pelo monitor (que executa dentro do
domnio 0).

Um VBD compreende uma lista de extenses com associaes e informaes de


controle de acesso, e aparece para os sistemas operacionais como um disco SCSI.

O mecanismo consiste em manter uma tabela de traduo com o monitor para cada
VBD. Ao receber uma requisio de disco, o Xen inspeciona o identificador VBD,
checa as permisses, e define o endereo correspondente do setor e o dispositivo fsico
do armazenamento.

Figura 4.07 - Xen: Dom0 acessa o hardware, os outros domnios so restritos a disco e rede virtuais

4.3.4 Dispositivos de Rede

O Xen prov uma abstrao de um roteador/firewall virtual (Virtual Firewall Router -


VFR) onde cada domnio tem uma ou mais VIF (Virtual network InterFace), que seriam
as placas de rede (virtuais) de cada sistema operacional hospedado.

66
Para transmitir um pacote, o sistema operacional convidado simplesmente enfileira um
descritor de buffer no anel de transmisso. O Xen copia o descritor, examina o
cabealho do pacote e executa quaisquer regras de filtros de pacotes que haja.

Quando o pacote recebido, o Xen imediatamente checa as definies de regras de


recepo para determinar a VIF de destino, e troca o buffer do pacote por um quadro no
anel de recepo. Se nenhum quadro estiver disponvel, o pacote descartado
[PRZYBYSZ e LUIZ].

4.3.5 Migrao de domnios

A migrao que usada para transferir um domnio entre hosts fsicos um dos
recursos mais teis no Xen, pois d a possibilidade de agendar uma manuteno
planejada do hardware, ou transferir a carga de uma mquina sobrecarregada, ou apenas
mudar um servio especfico para uma nova mquina.

A migrao no Xen pode ser feita de duas formas: regular e live. O primeiro move uma
mquina virtual de um host para outro fazendo uma pausa nela, copiando o contedo na
memria e reiniciando no destino. O ltimo executa a mesma funcionalidade lgica,
contudo sem a necessidade de pausar o domnio. Com a migrao live o domnio
continua sua atividade, o que da perspectiva do usurio a migrao imperceptvel.

4.3.6 Teste do Xen

Implementei o Xen da seguinte forma (figura 4.08): um sistema anfitrio (dom0)


Debian, e duas mquinas virtuais OpenSuse Linux (dom1 e dom2). Vemos na figura
uma janela de status (acima), com os dados de consumo (processamento, memria,
disco etc) de ambas as mquinas virtuais e tambm do dom0. Neste caso o Xen foi
executado sobre um kernel do Debian, contudo ao contrrio do exemplo, no
necessrio executar o Xen com uma interface grfica uma vez que ele executa
normalmente em modo texto, consumindo menos recursos.

67
Neste teste, os trs sistemas executaram com excelente desempenho. A configurao foi
relativamente fcil devido a presena de um assistente de instalao e configurao. O
sistema apresentou boa estabilidade mesmo com altos picos de utilizao de CPU e
memria, os quais puderam ser devidamente acompanhados pela janela de status dos
sistemas virtuais.

Figura 4.08 - Ambiente do Xen com duas mquinas virtuais

4.4 Microsoft Virtual PC e Microsoft Virtual Server

O Virtual PC um software da Microsoft lanado em dezembro de 2003 para virtualizar


sistemas operacionais Windows ou emul-los em sistemas baseados no PowerPC
(Macintosh). O programa foi originalmente escrito em 1997 pela empresa Connectix
que foi adquirida pela Microsoft posteriormente.

68
Tecnicamente o Virtual PC emula um processador Intel Pentium de 32 bits com um
chipset Intel 440BX, um adaptador grfico padro SVGA VESA (com 16 MBytes de
VRAM, em suas ltimas verses), um BIOS da American Megatrends (AMI), um
adaptador de som Creative Labs Sound Blaster 16 PnP, e uma placa de rede DEC 21140
(Julho 2007).

A verso Macintosh do Virtual PC usa a recompilao dinmica para traduzir o cdigo


x86 usado por um PC padro para seu equivalente no PowerPC. A verso Windows do
Virtual PC tambm usa recompilao dinmica, mas apenas para traduzir o modo
supervisor (kernel mode) em cdigo de modo usurio (user mode) enquanto o modo
usurio original e o cdigo do modo virtual executa nativamente.

Para competir com o VMWare ESX Server, a Microsoft lanou uma verso do Virtual
PC para servidores Windows denominado Microsoft Virtual Server. Em janeiro de
2006, a Microsoft reduziu de forma significativa os preos das verses do Virtual
Server. A VMWare por sua vez lanou o VMware Server (anteriormente VMware GSX
Server) a custo zero. Durante o LinuxWorld Trade Show em abril de 2006, a Microsoft
anunciou uma nova verso do Virtual Server (Virtual Server 2005 R2 Enterprise
Edition), tambm com custo zero e suporte nativo plataforma x64 [HIGASHIYAMA].
Atualmente a Microsoft disponibiliza o Virtual PC e o Virtual Server para download
gratuito em seu site na Internet.

As principais caractersticas do Virtual Server so [MICROSOFT]:

 Funciona somente em servidores Windows, suportando qualquer verso de


Windows como mquina virtual.
 Suporte para conectividade permitindo cluster de todas as mquinas virtuais
executando sobre um host.
 Suporta a tecnologia 64 bit.
 Melhorias no hyper-threading.
 Integrao com o Active Directory.
 Possibilidade de migrao de mquinas virtuais com ferramentas especiais.
 Virtual Hard Disks (VHD): oferece flexibilidade ao encapsular mquinas
virtuais em discos virtuais,

69
4.4.1 Discos virtuais (Virtual Hard Disk)

As formas como podem ser armazenadas as mquinas virtuais no Microsoft Virtual


Server so uns dos recursos interessantes do software, pois chama ateno pela
flexibilidade.

No Virtual Server podemos criar os discos virtuais previamente (que no sistema


Windows anfitrio so arquivos que ficam com a extenso .vhd), mantendo uma lista
de discos virtuais disponveis que podem ser utilizados a qualquer momento, ou
diretamente no momento de criao de uma mquina virtual. As opes de alocao de
disco so:

 Alocao dinmica (Dynamically expandig): O tamanho arquivo do disco virtual


(VHD) aumenta conforme os dados so gravados nele. O tamanho inicial
tipicamente 100 kilobytes, mas conforme os dados so adicionados o disco ir
aumentar at que alcance o limite especificado no momento da criao. o
padro para criao de mquinas virtuais.
 Tamanho fixo (Fixed-size): O tamanho do arquivo VHD um tamanho fixo
especificado no momento de criao do disco virtual. Por exemplo: se na criao
do disco virtual for definido o tamanho fixo de 5 gigabytes, arquivo VHD
imediatamente possuir o tamanho de 5 gigabytes.
 Diferenciado (Differencing): o modo diferenciado permite possuir mltiplas
configuraes de sistemas operacionais que so baseadas em uma nica
instalao de sistema operacional. Um disco virtual diferenciado um disco
virtual associado com outro disco virtual numa relao pai e filho. Nesta
analogia, o disco virtual o filho e o disco virtual associado o pai.
 Vinculado (Linked): Este modo um vnculo entre um disco virtual e um disco
fsico. O sistema convidado acessa diretamente os arquivos armazenados no
disco fsico.

70
4.4.2 Teste do Microsoft Virtual Server

Nesse teste fiz uma instalao de uma verso do Microsoft Virtual Server que obtive
atravs d pagina da Microsoft na Internet. O sistema instalou sem problemas,
integrando-se ao sistema operacional Windows Server 2003 anfitrio.

A figura 4.09 mostra a interface web de administrao e criao de mquinas virtuais do


virtual Server, o qual executa diretamente sobre o servidor web do prprio Windows
Servidor (IIS).

Figura 4.09 - Interface web de administrao do Virtual Server

Aps a instalao do software, fiz uma instalao do Windows 98 como sistema


convidado, o que tambm ocorreu sem problemas. A figura 4.10 mostra o
funcionamento do teste.

71
Para esta instalao foi utilizado o modelo de crescimento dinmico para o
armazenamento da mquina virtual, o que se mostrou muito interessante uma vez que o
tamanho do arquivo foi alocado dinamicamente pelo monitor, conforme realmente
necessrio.

O Microsoft Virtual Server , sem dvida, uma boa opo para virtualizao de sistemas
totalmente baseados em Windows, uma vez que possui suporte e integrao a servidores
Windows, gratuito, possui boa flexibilidade, alm de ser da mesma empresa fabricante
dos sistemas operacionais, o que em teoria, agrega melhor compatibilidade e
confiabilidade ao produto.

Figura 4.10 - Sistema Operacional convidado Windows 98 executando no Virtual Server

4.5 VirtualBox

O VirtualBox um software de virtualizao para arquitetura x86 desenvolvido pela


empresa Innotek GmbH, com sede na Alemanha. Desde janeiro de 2007 possui uma
verso que open source de licena GNU GPL.

72
O software uma mquina virtual do tipo II e executa como um processo de sistema
operacional host que pode ser Linux, Windows 32 ou 64 bits, ou Mac OS X.
Atualmente suporta sistemas convidados como DOS, FreeBSD, Linux, OpenBSD,
NetBSD, Solaris, Netware, OS/2 Warp e Windows.

Ele utiliza a tcnica da virtualizao total, emulando componentes chaves do hardware.


Com isso, no h necessidade de que os sistemas operacionais convidados sejam
modificados para que executem em uma mquina virtual.

O VirtualBox tenta executar uma poro do cdigo dos sistemas virtuais diretamente no
processador. Para que sejam executadas as instrues privilegiadas, ele tenta mover o
sistema operacional para o nvel de ring 1, ao invs do ring 0. Como j visto, o nvel de
ring 1 geralmente no utilizado na arquitetura x86. Caso haja problemas no processo,
o VirtualBox tambm utiliza a tcnica de recompilao dinmica. O recompilador do
VirtualBox baseado no open-source QEMU (que ser visto mais adiante).
Adicionalmente, o VirtualBox automaticamente desmonta e, na maioria dos casos,
corrige o cdigo dos sistema convidados a fim de prevenir futuras recompilaes. Em
razo disso o cdigo executa nativamente na maior parte do tempo, numa tentativa de
aumentar seu desempenho [VIRTUALBOX].

No software, os discos so emulados num recipiente especial chamado Virtual Disk


Image (arquivos VDI), o qual at o momento incompatvel com formatos usados por
outras solues. O VirtualBox possui uma funcionalidade que pode conectar
dispositivos iSCSI e us-los como discos virtuais.

O VirtualBox virtualiza os adaptadores grficos como no padro VESA e cuja memria


pode ser ajustada. Em sistemas convidados Linux e Windows, pode ser instalado drivers
grficos especiais para melhorar o desempenho.

Os adaptadores de rede so virtualizados como adaptadores AMD PCNet, e placas de


som como dispositivos Intel ICH AC97. Dispositivos USB tambm so emulados.

73
Outras caractersticas do VirtualBox:

 Permite virtualizao recursiva (uma instncia do VirtualBox pode ser executada


em sistema convidado).
 Permite controle total atravs de linha de comando.
 Permite logon automtico em mquinas virtuais Windows.
 Inclui um servidor Microsoft Remote Desktop Protocol (RDP) para
administrao de mquinas virtuais.
 Inclui suporte total a Intel VT e suporte experimental ao AMD-V.

4.5.1 Teste do VirtualBox

Em meu teste, o VirtualBox mostrou-se bem simples. Possui algumas das opes de
configurao de mquina virtual presentes no VMware Server. Contudo ainda no
possui recursos como: maior flexibilidade na configurao da rede virtual, opes de
inicializao automtica do sistema virtual junto com o sistema anfitrio e suspenso e
reativao da mquina virtual sem a necessidade de deslig-la.

O VirtualBox foi instalado em PC com Windows XP como sistema anfitrio, e foi


criada uma mquina virtual, o qual recebeu uma verso do sistema operacional Kurumin
Linux que baseado no Debian (figura 4.11). Esse sistema operacional funcionou
perfeitamente, entretanto quando tentei criar outra mquina virtual para abrigar o
sistema operacional FreeBSD, este no foi possvel instalar, acusando erro em todas as
tentativas. A documentao do programa afirma que h suporte ao sistema operacional
FreeBSD.

Nesse teste pude concluir que o VirtualBox ainda um sistema bem simples se
comparado ao VMware, e por isso ainda no recomendado utiliz-lo em ambientes de
servidores. Todavia, ele uma boa opo para um usurio que necessite utilizar
sistemas operacionais virtuais, uma vez que possui bom desempenho, que foi aferido no
teste.

74
Figura 4.11 - Interface de gerenciamento de mquinas virtuais do VirtualBox com o
Kurumin Linux executando como sistema convidado

4.6 User-Mode Linux

O User-mode Linux (UML) um espao de usurio (userspace) portado do kernel do


Linux. Ele foi idealizado por Jeff Dike em 1999 e uma mquina virtual de tipo II, j
que cada mquina virtual executa como um processo do sistema Linux anfitrio. A
mquina virtual do User-mode Linux capaz de executar o mesmo conjunto de
aplicaes e servios que executam nos sistema anfitrio.

Caractersticas do User-mode Linux [YEHUDA]:


 Executa sistemas operacionais sem necessidade de modificaes.
 Pode executar diferentes kernels ou distribuies Linux (no h necessidade que
o sistema convidado seja igual ao sistema anfitrio).
 Mquina virtual segura.
 Bom desempenho dependendo da carga de trabalho.
 Acessa o sistema de arquivos do sistema anfitrio (via hostfs).

75
 Acesso total rede.
 Suporta SMP (Symmetric Multiprocessing).

O monitor de mquinas virtuais do User-mode Linux executa como um processo que


controla as mquinas virtuais, e por sua vez, cada mquina virtual executa como um
processo do sistema anfitrio. O kernel do sistema convidado no se comunica
diretamente com o hardware. Ao invs disso, essa comunicao passada para o kernel
do sistema anfitrio, o qual verdadeiramente acessa o hardware.

Uma vez que tanto o sistema virtual como o sistema anfitrio so sistemas Linux (com
estruturas quase idnticas), a comunicao feita de forma muito eficiente,
necessitando de pouca abstrao e traduo.

4.6.1 Chamadas de sistema

Como o Linux no fornece nenhum mecanismo de distino entre o modo usurio e o


modo supervisor (kernel), o UML usa a chamada de sistema de rastreamento ptrace
para prover seu prprio mecanismo. O UML tem uma thread especial cujo principal
trabalho controlar a execuo de todos os outros processos. Quando um processo est
em modo usurio, suas chamadas de sistema esto sendo interceptadas pela thread de
rastreamento. Quando est no modo kernel, ele no est sendo rastreado. Desta forma o
UML faz a distino entre o modo usurio e o modo supervisor.

Quando este mecanismo intercepta uma chamada de sistema de um processo e troca


entre modo usurio e modo supervisor, a virtualizao das chamadas de sistema
acontece diretamente, ou seja, a thread de rastreamento anula a chamada de sistema no
kernel anfitrio. Aps isto, ela salva o estado do processo e impe um novo estado,
forando que o processo inicie a execuo da chamada de sistema. Ao final da
execuo, um sinal enviado. Logo aps isto, o processo armazena os valores de
retorno e requisita a thread de rastreamento que o retorne para o modo usurio [DIKE].

Como foi visto, a thread de rastreamento que redireciona todas as chamadas de


sistema para o kernel virtual.

76
4.6.2 Sistema de arquivos

O UML tem um sistema de arquivos (chamado hostfs) que prov acesso direto ao
sistema de arquivos anfitrio. Isto possvel, pela implementao da interface VFS
(Virtual File System), que traduz todas as chamadas equivalentes no sistema anfitrio.

O hostfs tambm pode ser um sistema de arquivos raiz, sendo registrado como um
sistema de arquivos virtual [DIKE].

4.6.3 Desempenho

O UML no precisa emular um hardware especfico, ao invs disso, as instrues so


passadas com eficcia entre o kernel virtual e o kernel anfitrio. Com isso, o UML pode
executar cdigo nativo, e na pior hiptese, com uma perda de desempenho de apenas
20% (vinte por cento) em comparao com o mesmo cdigo sendo executado no
sistema anfitrio [LINUX].

4.6.4 Teste do User-Mode Linux

O UML est presente nativamente nos kernel Linux da srie 2.6. Nos sistemas cuja
verso do kernel seja inferior, deve ser adquirido os mdulos do UML para compilar
com o kernel. Pode-se tambm obter uma verso do kernel inferior ao 2.6 j compilado,
que disponibilizado no site oficial do projeto.

Em meu teste utilizei o sistema operacional Linux Debian 4.0, o qual j possui suporte
ao UML. A seguir, baixei um sistema de arquivo do Fedora j pronto e disponvel no
site oficial do projeto. Para a inicializao da mquina virtual o comando dado foi:

# linux ubda=FedoraCore5-x86-root_fs mem=128M

Desse modo uma mquina virtual contendo o Fedora foi iniciada sobre o sistema
anfitrio Debian, conforme visto na figura 4.12. A figura 4.13 mostra as pastas do

77
sistema de arquivos do Fedora totalmente isoladas do sistema anfitrio na mquina
virtual.

Nesse teste, o UML mostrou que uma boa opo para virtualizao em sistemas Linux
com kernel igual ou mesmo outro kernel Linux, uma vez que j suportado nativamente
pelas distribuies atuais e pela sua facilidade de uso.

Figura 4.12 - Tela de login da mquina virtual Fedora sobre o sistema anfitrio Debian

78
Figura 4.13 - Lista de pastas do Fedora em um ambiente completamente isolado do sistema anfitrio

79
CAPTULO V

VIRTUALIZAO NO NVEL DE SISTEMAS OPERACIONAIS

5.1 Introduo

Virtualizao no nvel de sistema operacional uma tecnologia de virtualizao que


virtualiza servidores em uma subcamada do sistema operacional. Ele pode ser descrito
como um particionamento de um servidor fsico em mltiplas parties menores, e cada
partio isolada das demais e do sistema anfitrio.

A arquitetura da virtualizao no nvel de sistema operacional possui um baixo


overhead que ajuda a maximizar (de forma eficiente) o uso de recursos do servidor.
Como envolve apenas um kernel, este tipo de virtualizao introduz um overhead quase
insignificante e permite executar centenas de servidores virtuais isolados entre si, em
um mesmo hardware, diferentemente do que acontece com outras tcnicas (emulao,
virtualizao total ou paravirtualizao) que no podem executar muitas mquinas
virtuais por causa do alto overhead caracterstico delas. Em contrapartida, a
virtualizao no nvel de sistema operacional no permite executar diferentes sistemas
operacionais (isto , kernels diferentes), ainda que diferentes bibliotecas e distribuies
sejam possveis.

Comparando com solues de virtualizao por hardware e software como, por


exemplo, o IBM's LPAR, a virtualizao no nvel de sistema operacional tem o
benefcio de executar em um hardware de baixo custo.

5.2 Solaris Containers (Zones)

Containers a tecnologia de virtualizao da Sun presente nativamente no Solaris 10


que resultante da adio de inovaes feitas no sistema operacional desde a verso 8.
Solaris Containers compreende duas tecnologias:

80
 Solaris Zones, que prov um ambiente virtualizado que possui seu prprio nome
de host, endereo de IP, usurios, sistema de arquivos, e isolamento de
aplicaes.
 Gerenciamento de recursos, que otimiza a carga de trabalho atravs de uma
melhor distribuio dos recursos do sistema.

Zona (ou zone) uma abstrao do sistema operacional que prov um ambiente
protegido para execuo de aplicaes. Cada zona um ambiente virtualizado e tem sua
prpria identidade, que ficam separadas da subcamada do hardware. Como resultado,
cada zona comporta-se como se estivesse executando seu prprio sistema operacional.
Todas as zonas acessam o sistema concorrentemente, compartilhando os recursos do
hardware. Em outras palavras, podemos dizer que, as zonas so mquinas virtuais que
executam como instncias do sistema operacional anfitrio (Solaris).

Devido ao fato do Solaris Containers ser independente da subcamada do hardware, os


servios podem ser recriados em diversos sistemas conforme a necessidade. Cada
aplicao executa em seu prprio ambiente privado e muitas aplicaes podem ser
testadas e desenvolvidas em um simples servidor sem que isto afete outros sistemas.
Caso o resultado seja indesejado, a zona pode ser facilmente destruda e recriada.

As zonas podem ser de dois tipos (figura 5.01):

 Zona global: a instncia principal do Solaris, todos os processos executam na


zona global.
 Zonas no-globais: so ambientes virtuais opcionais que podem ser criados para
hospedar aplicaes ( a mquina virtual).

As principais caractersticas das zonas do Solaris so [VICTOR]:

 Mltiplas instncias do sistema operacional.


 Alocao de recursos, incluindo CPU, memria fsica, banda de rede, e outros,
baseado na carga de trabalho.

81
 Atribuio de ambientes virtuais s zonas, permitindo cada ambiente ter suas
prprias configuraes.
 Sistemas de arquivos privados ou compartilhados.
 Cada zona pode ter seu prprio endereo IP.
 As zonas podem ser criadas ou iniciadas manualmente, programaticamente ou
automaticamente quando o sistema for iniciado.
 Possibilidade de desligar uma zona de dentro de outra ou da zona global.
 Possibilidade de usar pacotes de atualizao para modificar a zona global, um
subconjunto de zonas, ou todas as zonas.

Figura 5.01 - Exemplo de aplicaes isoladas nas zonas no-globais do Solaris

5.2.1 Gerenciamento de Memria

A memria gerenciada pela zona global. Um benefcio disto que geralmente os


executveis usados e bibliotecas, podem ser carregados na memria uma vez e
compartilhados entre as zonas, economizando consideravelmente os recursos de
memria. No est includo no Solaris Containers a habilidade de limitar a memria
disponvel para zonas, entretanto um daemon do Solaris (rcapd) pode ser usado para
limitar a quantidade de memria que cada zona pode usar. Quando um processo alcana
seu limite de memria, o rcapd daemon fora-o a enviar pginas para o dispositivo de
swap.

82
5.2.2 Sistema de Arquivos

O Solaris Containers suporta o uso de mltiplos tipos de armazenamento como Direct


Attached Storage (DAS4), Network Attached Storage (NAS5) e Storage Area Network
(SAN6) e mltiplos tipos de sistema de arquivos.

possvel compartilhar sistema de arquivos para que os mesmos dados sejam utilizados
por diferentes zonas.

Existem dois modelos de layout do arquivo do sistema operacional para uma zona no-
global, que so:

 Whole root: uma zona whole root uma cpia completa do sistema operacional
no disco. Um processo executando em uma whole root pode ver s os
arquivos nesta cpia, bem como os arquivos criados por usurios nesta zona. O
superusurio (root) pode instalar novas verses do sistema e biblioteca de
usurios. Este modelo oferece flexibilidade, todavia requer mais esforo de
administrao.
 Sparse root: uma zona sparse root no inclui sua cpia privada dos arquivos de
sistema operacional e bibliotecas (no possui cpia dos diretrios /usr, /sbin,
/platform e /lib). Os programas em zonas no-globais utilizam os arquivos de
sistema da zona global. Este o modelo padro para zonas e economiza
memria fsica e espao em disco, alm de simplificar a administrao.

5.2.3 Configuraes de Rede

As configuraes de rede das zonas sempre so feitas a partir da zona global. Ao criar
cada zona, deve-se definir as configuraes de rede, porm estas configuraes podem
ser alteradas a qualquer momento pelo administrador, mesmo que as zonas estejam em
execuo.
4
DAS definido por dispositivo de armazenamento que est diretamente conectado ao computador
5
NAS caracterizado pela habilidade de prover acesso a dados atravs de uma rede.
6
SAN so redes de dispositivos de armazenamento que prov acesso a dados aos servidores.

83
As comunicaes entre zonas, por padro, esto apenas disponveis atravs das
interfaces virtuais de rede. Entretanto, pode-se tambm configurar as zonas para se
comunicarem entre si, mesmo que suas interfaces estejam em sub-redes diferentes.

5.2.4 Gerenciamento de Recursos

O gerenciamento de recursos uma funcionalidade do ambiente do Solaris Containers


que permite controlar como aplicaes usam os recursos de sistema disponveis.

Com o gerenciamento de recursos possvel:

 Alocar recursos computacionais, como por exemplo, tempo de processador.


 Monitorar as alocaes que esto sendo utilizadas, e ajust-las conforme
necessrio.
 Gerar relatrios de anlises.

Existem no Solaris Containers trs tipos de mecanismos de controle para gerenciamento


de recursos, so elas: Constraint, que permite ao administrador ou desenvolvedor de
aplicaes definir os limites de consumo de recursos especficos para uma carga de
trabalho. Com limites conhecidos, a modelagem de cenrios de consumo de recursos
torna-se um processo bastante simples. Os limites tambm podem ser usados para
controlar aplicaes com mau funcionamento que poderiam comprometer o
desempenho do sistema. Scheduling, o qual permite que se faa uma seqncia de
alocaes em intervalos especficos. Partitioning, usado para vincular uma carga de
trabalho a um subconjunto de recursos disponveis no sistema. Este vnculo garante que
uma fatia dos recursos esteja sempre disponvel para determinada carga de trabalho
[SUN 2004].

5.2.5 Teste do Solaris Zones

84
Os passos a seguir descrevem uma implementao de zona no-global numa instalao
do Solaris 10 que fiz em meus testes:

1. Na zona global iniciei um console e nela defini uma zona no-global chamada
znrodrigo.
2. Nesta zona atribu o endereo IP 192.168.0.11 ao adaptador de rede (que no
caso era pcn0).
3. Instalei o sistema Solaris e inicializei-o, conforme Figura 5.02.

Os comandos para estes procedimentos foram:


# zonecfg z znrodrigo
zonecfg:znrodrigo> create
zonecfg:znrodrigo> set zonepath=/zones/zone_roots/znrodrigo
zonecfg:znrodrigo> add net
zonecfg:znrodrigo:net> set address=192.168.0.11
zonecfg:znrodrigo:net> set physical=pcn0
zonecfg:znrodrigo> end
zonecfg:znrodrigo> commit
zonecfg:znrodrigo> exit
# zoneadm z znrodrigo install

Aps a nova zona ser inicializada, efetuei o login nessa nova zona atravs de um
console com o comando:
# zlogin C znrodrigo

Na figura 5.03 pode-se ver o sistema de arquivos da zona, obtido com o comando:
# ls -l

85
Figura 5.02 - Criao de uma zona chamada znrodrigo no Solaris

Figura 5.03 - Sistema de arquivos da zona no-global

86
Por fim, na figura 5.04 podemos observar um console da zona noglobal znrodrigo e
o console da zona global chamada vmsolaris1.

Com isto, pude concluir que criar e administrar zonas no Solaris uma tarefa fcil, e
cada zona criada, pode possuir caractersticas como um sistema de arquivos e um
endereo IP prprio, alm de outros elementos.

Figura 5.04 - Zona global vmsolaris1 e zona no-global znrodrigo executando simultaneamente

5.3 FreeBSD Jails

Jails (prises) so parties nativas do ambiente do sistema operacional FreeBSD, o


qual podem abranger processos, sistema de arquivos e recursos de rede. Esta
funcionalidade proveniente do modelo de segurana do sistema Unix, permitindo
mltiplos usurios e um superusurio (root) privilegiado em cada partio, enquanto
limita o escopo das atividades do superusurio na mesma. O administrador da mquina

87
FreeBSD pode particionar a mquina em prises separadas, e prover acesso de
superusurio (root) em cada uma delas, sem perder o controle sobre todo o ambiente.

Quando um processo est aprisionado (dentro de uma jail), os seus processos filhos7
tambm so aprisionados. Um processo pode executar em apenas uma priso, e aps a
criao do processo, ele no pode mais deixar esta priso.

A chamada de sistema jail cria prises, e pode ser implementada de diversas maneiras,
porm de uma forma usual, a configurao cria uma completa instalao do FreeBSD
para cada priso, o que inclui cpias de todos os binrios relevantes do sistema bem
como arquivos de dados e seu prprio diretrio /etc (figura 5.05). Esta configurao
maximiza a independncia de vrias prises e reduz as chances de interferncia entre
prises quando possvel, especialmente quando desejvel prover acesso de root (de
dentro de uma priso) para um usurio menos confivel, por exemplo.

Figura 5.05 - Diagrama do FreeBSD com duas prises configuradas da forma usual

Uma vez que uma priso criada, ela somente enderea um sistema de arquivos
exclusivo a ela, e como os processos no podem manipular arquivos que no
endeream, a integridade e confidencialidade de arquivos que esto fora da priso esto
garantidas.

7
Processos criados a partir de um processo pai.

88
Atualmente somente um simples endereo IP pode ser alocado para cada priso e toda
comunicao da priso est limitada ao endereamento IP. Os processos aprisionados
no podem utilizar outros endereos IP para conexes de entrada e sada.

Um processo executando com privilgios de root e confinado em uma priso no pode:

 Modificar o kernel atual.


 Modificar configuraes de rede.
 Montar e desmontar sistemas de arquivos.
 Criar ns de dispositivos.
 Alterar nveis de segurana de arquivos.
 Acessar recursos de rede no associados com a priso.

Como visto, a funcionalidade FreeBSD jails prov um mecanismo simples de


particionamento, permitindo a delegao de permisses administrativas dentro das
mquinas virtuais e tambm limita a interao entre processos e arquivos, recursos de
rede, e operaes de privilgios [KAMP e WATSON].

5.3.1 Teste do FreeBSD Jails

Para implementao da priso, utilizei o FreeBSD verso 6.2, o qual instalei a interface
grfica KDE. O hardware constituiu-se de um PC de arquitetura simples. importante
salientar que dentre os sistemas virtuais testados por mim, o FreeBSD Jails foi o que
apresentou maior grau de dificuldade na criao de mquinas virtuais, necessitando
editar vrios arquivos do sistema operacional FreeBSD.

Nessa instalao foram definidos os seguintes dados para o sistema anfitrio:


 Hostname: vmfreebsd
 IP: 192.168.188.129
 Interface de rede: lnc0
A seguir, estipulei os seguintes dados para o novo sistema virtual:
 Hostname: vm1

89
 IP: 192.168.188.130
 Caminho para os arquivos do sistema virtual: /usr/jails/vm1

Esses foram os passos utilizados para configurar a priso:

1. Criao da pasta e gerao dos arquivos para o sistema virtual:

# mkdir /usr/jails/vm1
# cd /usr/src
# make world DESTDIR=/usr/jails/vm1
# cd etc
# make distribution DESTDIR=/usr/jails/vm1

2. Edio do arquivo /etc/rc.conf, acrescentando os dados da nova priso:

inetd_enable=YES
inetd_flags="-wW -a 192.168.0.129"

jail_enable="yes"
jail_list="vm1" # apenas uma priso definida (vm1)

jail_vm1_rootdir="/usr/jails/vm1/"
jail_vm1_hostname="vm1"
jail_vm1_ip="192.168.188.130"
jail_vm1_exec="/bin/sh /etc/rc"
jail_vm1_devfs_enable="YES"
jail_vm1_fdescfs_enable="YES"
jail_vm1_procfs_enable="YES
jail_vm1_fstab=""
jail_vm1_flags="-l -U root"

3. Criao do arquivo fstab vazio e cpia do arquivo resolv.conf do sistema


anfitrio para a pasta /etc do sistema virtual:

# touch /usr/jails/vm1/fstab
# cp /etc/resolv.conf /usr/jails/vm1/etc

4. Inicializao da nova priso, conforme visto na figura 5.06:

90
# ifconfig lnc0 inet alias 192.168.188.130/24
# mount_devfs devfs /usr/jails/vm1/dev
# mount_procfs procfs /usr/jails/vm1/proc
# jail /usr/jails/vm1 vm1 192.168.188.130 /bin/sh

Na figura 5.07, vemos um teste de ping feito com sucesso entre o sistema anfitrio e a
nova priso, o comando utilizado foi:
# ping 192.168.188.130

Com todos esses testes pude concluir que o FreeBSD jails, assim como o Solaris Zones,
tambm uma grande ferramenta para isolamento de processos, e com a vantagem de j
estar disponvel no kernel do FreeBSD. Ele tambm disponibiliza um novo sistema de
arquivos (uma cpia do sistema anfitrio) bem como um novo endereo IP para cada
priso.

Figura 5.06 - Inicializao da nova priso em um console e listagem do novo sistema de arquivos

91
Figura 5.07 - Teste de ping partindo do sistema anfitrio com destino ao IP da nova priso

92
CAPTULO VI

VIRTUALIZAO POR EMULAO

6.1 Introduo

Esta tcnica consiste em fazer uso de emuladores para prover a utilizao de sistemas
operacionais em mquinas virtuais.

Esta tcnica especialmente til em casos onde preciso utilizar sistemas operacionais
que no foram escritos para a arquitetura do hardware da mquina anfitri, ou executar
um simples sistema operacional sobre outro diferente. A desvantagem desta tcnica
consiste na necessidade de executar uma nova instncia do emulador para cada mquina
virtual criada. Com isso, para aplicaes que requeiram mltiplos sistemas operacionais
diferentes, os sistemas de virtualizao que utilizam camada de abstrao do hardware
so os mais indicados.

6.2 QEMU

O QEMU um software emulador de processador que utiliza a tcnica de traduo


dinmica. Como j foi visto, esta tcnica traduz partes do cdigo para que o processador
execute as instrues. O QEMU foi escrito por Fabrice Bellard e um software livre
(cuja maior parte est sob licena GNU LGPL8).

O QEMU tem dois modos de operao:

 Emulao total do sistema: neste modo o QEMU emula um sistema completo


(x86, por exemplo) que pode ser com um ou mais processadores e vrios

8
GNU Lesser General Public License, uma licena de software escrita com o intuito de ser um meio-
termo entre a GPL e licenas mais permissivas como a licena BSD.

93
perifricos. Assim ele pode ser usado para executar diferentes sistemas
operacionais.
 Emulao de modo usurio (somente Linux): Neste modo, ele pode executar
processos Linux compilados de uma CPU em outra CPU. Com isso, um
programa compilado para um processador PowerPC pode ser executado em x86
e vice-versa.. principalmente usado para testar o resultado de compiladores, ou
para testar o emulador de CPU sem que seja necessrio iniciar uma mquina
virtual completa.

Principais caractersticas:

 Emula arquiteturas como x86 32 e 64, PowerPC, MIPS, ARM e Sparc 32 e 64


(todavia as arquiteturas x86 e PowerPC so melhor suportadas).
 Emula dispositivos como vdeo VGA, porta serial, mouse e teclado PS/2, disco
rgido IDE, adaptador de rede NE2000.
 Suporta auto-emulao, isto , possvel executar o QEMU de dentro do QEMU
(embora isto no seja indicado devido a uma perda acentuada de desempenho).
 No requer alteraes no sistema anfitrio e convidado.
 Controle remoto da mquina emulada por meio de um servidor VNC.
 Pode salvar e recuperar o estado de uma mquina, bem como de seus programas
em execuo.
 A verso para sistemas anfitrio Windows experimental (embora o QEMU
suporte bem o Windows dentro de uma mquina virtual).

No gerenciamento de memria, o QEMU usa uma chamada de sistema (mmap) do


sistema anfitrio para simular uma Memory Management Unit (MMU) alvo. O QEMU
tambm suporta um software MMU. Neste modo, a traduo do endereamento fsico-
virtual feita a cada acesso memria. Na emulao de processos do usurio, nenhuma
simulao MMU feita porque o QEMU pressupe que o mapeamento da memria do
usurio feito pelo sistema anfitrio [BELLARD 2005].

Sendo o QEMU um emulador, e necessrio fornecer mquina virtual todas as


instrues que ela utiliza, o que afeta diretamente seu desempenho. O QEMU quatro
vezes mais lento do que sistemas nativos em operaes de inteiros, e dez vezes mais

94
lento em operaes de ponto flutuante. Contudo ele aproximadamente trinta vezes
mais rpido que o Bochs, que ser visto mais adiante [BELLARD 2007].

6.2.1 Teste do QEMU

Em meu experimento, fiz uma instalao QEMU baixando os pacotes atravs da


Internet em um sistema Linux Debian 4.0 e instalei o sistema operacional Windows XP
como sistema convidado. Esta instalao foi feita atravs de um CD de instalao do
Windows XP em um sistema de arquivos virtual que chamei de hdv1 definido na
propriedade da criao do processo QEMU. O hardware utilizado foi um PC de
configurao simples.

Os comandos utilizados foram os a seguir:


# apt-get install qemu
# dd if=/dev/zero of=hdv1 bs=1024 count=1400000
# qemu -cdrom /dev/cdrom -boot d hdv1
# qemu -boot c hdv1

Figura 6.01 - Sistema Linux Debian com QEMU executando Windows

95
Nesse teste, o sistema Windows XP funcionou normalmente, porm o desempenho do
sistema mostrou-se bastante reduzido mesmo com apenas um processo QEMU em
execuo, diferentemente do que j havia sido experimentado em outros mtodos de
virtualizao testados anteriormente.

6.3 Bochs

O Bochs um programa que simula totalmente um computador de arquitetura x86. Ele


foi desenvolvido Kevin Lawton em 1994 para ser um produto comercial, todavia, foi
adquirido em maro de 2000 pela empresa MandrakeSoft (atualmente Mandriva) que o
tornou open source, sob a licena GNU LGPL.

O Bochs suporta emulao de CPU (podendo funcionar como uma CPU 386, 486,
Pentium e AMD64, incluindo as instrues MMX, SSE/SSE2/SSE3 e 3DNow!),
memria, disco, vdeo, rede, BIOS e os perifricos mais comuns.

Foi escrito na linguagem C++ e desenvolvido para executar em diferentes plataformas


anfitris, como x86, PPC, Alpha, Sun e MIPS. Difere de outros emuladores pelo fato de
no depender totalmente de instrues nativas da mquina anfitri, simulando por meio
do software cada instruo x86. Por este motivo, ele pode, por exemplo, executar um
sistema operacional Windows em um hardware Alpha ou Sparc [LAWTON et al].

6.3.1 Teste do Bochs

Realizei uma instalao da verso do Bochs para Windows em um sistema operacional


Windows XP e em seguida, instalei o sistema MS-DOS como convidado.

No teste os comandos do MS-DOS funcionaram sem problemas, todavia o sistema


apresentou um desempenho muito reduzido, o que me fez concluir que o Bochs no a
melhor opo para emular sistemas operacionais escritos para uma mesma plataforma,
todavia, pode ser uma opo interessante para emular sistemas operacionais em

96
arquiteturas de hardware para os quais eles no foram escritos originalmente (por
exemplo: Windows em plataforma Sparc). A figura 6.02 ilustra o teste supracitado.

Figura 6.02 - Bochs para Windows executando MS-DOS

97
CAPTULO VII

VIRTUALIZAO NO NVEL DE APLICAO

7.1 Introduo

Na virtualizao no nvel de aplicao, a mquina virtual no prov um ambiente


completo para execuo de sistemas operacionais. Na verdade a mquina virtual um
componente chave para execuo de determinadas aplicaes, com a funo de receber
um programa em uma linguagem e fazer uma compilao do programa em tempo de
execuo. Essa tcnica conhecida como compilao just-in-time ou JIT. Desse modo,
no h necessidade do programa ser compilado previamente para execuo em
plataformas especficas (como nas aplicaes tradicionais).

O principal objetivo deste modelo de garantir uma maior portabilidade para os


programas, uma vez que um mesmo programa pode ser executado em qualquer
plataforma que exista uma mquina virtual escrita para ela.

7.2 Java Virtual Machine

O Java Virtual Machine (JVM ou mquina virtual Java) a pedra fundamental da


linguagem Java da Sun Microsystems. Ele o componente da tecnologia responsvel
pela independncia entre o hardware e o sistema operacional, o pequeno tamanho do
cdigo compilado, e a habilidade de proteger usurios contra programas maliciosos.

Ele uma abstrao da mquina, porm sua implementao no assume qualquer


tecnologia em particular (apesar de padronizada pela Sun), hardware anfitrio, ou
sistema operacional anfitrio.

98
Uma curiosidade que o primeiro prottipo de implementao do JVM, feito pela Sun,
emulava um conjunto de instrues da mquina virtual Java em um dispositivo
handheld.

O JVM no conhece a linguagem de programao Java, ele s executa um formato de


arquivo binrio, o formato de arquivo .class que contm instrues para a mquina
virtual Java, chamado de bytecodes [LINDHOLM e YELLIN].

O JVM interpreta o arquivo de bytecode e se encarrega de executar os comandos no


sistema operacional onde o programa est executando. O bytecode pode ser interpretado
por qualquer mquina virtual Java, executando em diversos sistemas operacionais como
Linux, Windows e Solaris, ou qualquer outro sistema operacional que possua uma
implementao de JVM.

Ele tambm no permite que um programa Java acesse diretamente os recursos de


hardware, protegendo o sistema de operaes perigosas, como acesso a regies
protegidas da memria ou reas do disco rgido.

7.3 Microsoft .Net CLR

O CLR (Common Language Runtime) a mquina virtual do Microsoft .Net, cujo


objetivo prover um ambiente abstrato para execuo de aplicaes de forma
independente da plataforma de uso.

As implementaes da Microsoft para o CLR seguiram o padro de arquitetura ECMA-


335 CLI (Common Language Interface), que um conjunto de especificaes para
execuo de aplicaes escritas em diversas linguagens de programao diferentes.

O Microsoft .Net compila todo cdigo escrito nas linguagens do ambiente .Net (por
exemplo: VB.Net, C#.Net, Asp.Net) em uma linguagem intermediria que comum
todas as linguagens. Esta linguagem intermediria chama-se Microsoft Intermediate
Language (MSIL), e o cdigo que interpretado pela mquina virtual CLR. Em tempo

99
de execuo, o compilador just-in-time converte o cdigo MSIL em cdigo nativo para
o sistema operacional [BOCCATO et al].

O CLR alm de prover um nvel abstrao que permite que os desenvolvedores de


software ignorem detalhes de sistemas operacionais e hardware, ele tambm prov
outras caractersticas importantes como:

 orientado a objetos e suporta herana simples e polimorfismo.


 Possui um conjunto de classes que encapsulam a maioria da funcionalidade da
API do Windows e outras tecnologias, como o XML.
 Proporciona execuo virtual de cdigo e tratamento de memria automtica.
 Possui coletor de lixo (garbage collector).
 Uma vez escrito e compilado para MSIL, uma aplicao .NET administrada
pode ser executada em qualquer plataforma que suporte CLR.
 O CLR pode verificar a segurana de tipo de todos os seus cdigos, eliminando
muitos erros comuns de programao.
 Tratamento de excees e opes avanadas de depurao de aplicaes.

100
CAPTULO VIII

BIBLIOTECAS DE INTERFACE DO USURIO

8.1 Introduo

uma prtica comum dos desenvolvedores de software escrever sistemas e aplicaes


utilizando-se de um conjunto de API (Application Programming Interface) fornecida
pelo sistema operacional e acessadas pelo usurio por meio de bibliotecas. A
virtualizao nesta forma conseguida inserindo uma camada que captura as chamadas
as API pela aplicao e emulando-as, com o intuito de que a aplicao execute em um
sistema operacional diferente do qual foi originalmente projetada. Um bom exemplo de
software que faz uma implementao deste tipo o Wine.

8.2 Wine

O Wine uma implementao da API do Windows sobre a plataforma Unix. uma


camada de traduo entre o Unix e um aplicativo para Windows, que intercepta as
chamadas a API do Windows feita pelos aplicativos e converte-as em chamadas
equivalentes prprias dos sistemas Unix. Segundo a Sun [SUN 2003], o Wine uma
implementao da API do Windows no topo do software Unix e o sistema X Window.

Atualmente o Wine um projeto open source sob a licena GNU LGPL e suporta
aplicaes escritas para Windows sobre as plataformas Linux, Solaris, Mac OS/X e
FreeBSD. O projeto foi iniciado em 1993 por Bob Amstadt, como uma forma de
suportar aplicativos do Windows 3.1 em Linux. Posteriormente o projeto foi entregue a
Alexandre Julliard que o coordena at os dias atuais.

Podemos dizer que o Wine um carregador, o qual carrega e executa programas


Windows e uma srie de bibliotecas que emulam chamadas s funes da API do
Windows.

101
Porque o Wine no prov um ambiente completo para execuo de aplicativos (como
um sistema operacional ou um hardware virtual) ele no considerado um emulador
total. O prprio nome Wine reafirma isso, pois um acrnimo recursivo de Wine is not
Emulator (o Wine no um emulador). Desse modo, ele permite que as aplicaes
convidadas executem com o mximo de desempenho, obtendo uma vantagem sobre a
maioria das solues de virtualizao.

Contudo, o Wine ainda um projeto em desenvolvimento e muitas aplicaes ainda no


funcionam por problemas de compatibilidade, principalmente aplicaes mais recentes.
Isso se deve principalmente ao fato de que algumas companhias de software no
revelarem maiores detalhes das operaes internas de seus sistemas operacionais e
aplicaes.

Para conhecimento, o Cygwin um aplicativo similiar ao Wine, porm funciona de


forma inversa, ele uma implementao da API do Linux sobre a plataforma Windows.

8.2.1 Arquitetura do Wine

O funcionamento do Wine est fundamentalmente ligado execuo de um processo


chamado wineserver. o wineserver que gerencia a execuo todos os processos wine e
suas threads. Todos os objetos Win329 do cliente wine tambm so gerenciados pelo
wineserver, e todos os clientes devem enviar requisies ao wineserver sempre que eles
precisarem saber sobre qualquer descritor de arquivo Unix associado a um objeto
Win32.

Os aplicativos Windows fazem freqentemente chamadas as Dynamic Link Library


(DLL10). Para isto o Wine contm um conjunto de implementaes de DLL Quando
uma aplicao precisa importar uma DLL, o Wine faz um busca em sua lista de DLL
registradas.

9
Win32: API das verses 32 bits do sistema operacional Windows.
10
DLL: Bibliotecas compartilhadas de funes do Windows.

102
O Wine substitui completamente trs das principais DLL do Windows
(Kernel/Kernel32, GDI/GDI32, User/User32), cujas quais todas as outras DLL esto
submetidas de alguma forma. O NTDLL outra importante DLL de ncleo do
Windows implementada no Wine [WINEHQ]. A figura 8.01 ilustra a arquitetura do
Wine.

Figura 8.01 - Representao da arquitetura do Wine em camadas

8.2.2 Gerenciamento de memria

Cada processo no Wine tem seu prprio processo no sistema anfitrio e com isso seu
prprio espao de endereamento.

103
8.2.3 Drivers Wine

O Wine no permite utilizar diretamente drivers Windows debaixo do Unix. Ele


somente capaz de prover acesso a um dispositivo especfico se o mesmo for suportado
pelo Unix, ou seja, no caso de existir um driver Unix para ele. O Wine tambm prov o
acesso nos casos em que ele possui uma implementao que faa uma ponte entre a
API do driver Windows e o driver Unix [WINEHQ].

8.2.4 Teste do Wine

Primeiramente baixei e instalei os pacotes do Wine com o comando:

# apt-get install wine

Logo aps modifiquei as configuraes padres do Wine para emular o Windows XP


com o comando:

# winecfg

A seguir instalei o software Adobe Reader 6.0 para Windows com o comando:

# wine AdbeRdr60_ptb_full.exe

A figura 8.02 mostra o software Adobe Reader 6.0 executando normalmente sobre o
Linux com o Wine.

Fiz tambm uma instalao de um software conversor de vdeo freeware, conforme


figura 8.03.

Com esses testes pude concluir que o Wine uma excelente soluo para executar
aplicaes Windows sobre o ambiente Linux sem que seja necessrio virtualizar um
sistema operacional completo. Todavia, o Wine ainda possui muitos problemas de
compatibilidade, os quais pude constatar quando fiz tentativas de instalao de
aplicativos mais complexos.

104
Figura 8.02 - Adobe Reader para Windows executando no Linux com o Wine

Figura 8.03 - Software conversor de vdeo para Windows executando no Linux com o Wine

105
CONCLUSO

A virtualizao definitivamente uma tecnologia emergente. Segundo a revista INFO


[INFO249] 80% (oitenta por cento) das grandes e mdias empresas brasileiras esto
investindo em virtualizao e 67% (sessenta e sete por cento) foi o crescimento do
mercado mundial de software de virtualizao em 2005. Ainda segundo a revista INFO
[INFO259] o mercado de virtualizao movimentar prximo a 12 (doze) bilhes de
dlares at 2011.

A IDC Brasil realizou um estudo intitulado Brazil IT Investments Trends 2007, que
foram consultados 100 (cem) organizaes do Pas e revelou que a virtualizao est
entre as principais prioridades dos CIO (Chief Information Officer). Entre os
entrevistados, 71% (setenta e um por cento) disseram que vo investir em projetos nessa
rea em 2008 e pretendem adotar o modelo tanto no ambiente de produo quanto no de
teste e desenvolvimento das aplicaes.

Neste trabalho pude concluir que a virtualizao praticamente um novo conceito sobre
o modelo tradicional da computao, o qual reduz a importncia do sistema operacional,
permitindo que um hardware execute quaisquer aplicaes com seu sistema operacional
de origem, sem precisar interromper as demais aplicaes e servios j em execuo.

Como vimos no captulo II, a soluo de virtualizao de sistemas operacionais pode


trazer importantes benefcios nos diversos ramos da computao como nas empresas,
entidades de pesquisas, instituies de ensino etc.

H vrias formas de virtualizao, e cada uma com suas vantagens e desvantagens. Em


um processo de implantao necessrio decidir sobre a mais adequada para instituio
de modo que se obtenha uma boa relao custo/benefcio no processo.

A virtualizao nas empresas mesmo sendo muito interessante conforme vimos, como
toda nova tecnologia, tem momentos certos para ser adotada e quando adotada, deve ser
bem realizada. O mais indicado que seja traado um planejamento estratgico
adequado, uma vez que sua implantao dispe de tempo e requer bons conhecimentos

106
tcnicos. Nessa tecnologia no so descartados problemas de compatibilidade e perda de
performance, sobretudo por causa de combinaes mal realizadas, por exemplo: uma
aplicao que consuma muito processamento e memria no deve ser virtualizada junto
com outra, com risco de que o desempenho dos dois servios fique severamente
prejudicado. Alm disso, as mquinas virtuais tendem a consumir mais recursos
(principalmente de CPU e memria), o que torna recomendado dispor de um hardware
mais robusto a fim de execut-las sem grandes perdas de desempenho.

Tambm neste trabalho foram citadas caractersticas dos principais softwares de


virtualizao (monitores de mquinas virtuais), alm de emuladores e componentes de
sistemas operacionais que tambm se consegue virtualizar. Em alguns tambm foram
feitos testes prticos.

Com essas experincias pude perceber que dos softwares monitores de mquinas
virtuais, os produtos VMWare e Xen (que so produtos comerciais, mas possuem
verses gratuitas) alcanaram um grau de maturidade bastante avanado. No entanto, as
demais solues (Microsoft Virtual Server, VirtualBox, User-mode Linux) por causa de
suas particularidades, no deixam nada a desejar e tambm devem ser consideradas num
processo de implantao de virtualizao.

Para implantao da virtualizao nos ambientes que operam com os sistemas


operacionais Solaris e FreeBSD, devem ser considerados suas tecnologias Zones e Jails
respectivamente, os quais primam pelo desempenho, uma vez que j esto integrados
aos kernels desses sistemas. Contudo, nada impede que outras tecnologias sejam
aproveitadas.

As tecnologias de emulao total (como QEMU e Bochs) so interessantes quando se


deseja um ambiente simples para execuo de um sistema operacional sobre o outro e
com compatibilidade total. Todavia, por terem que emular quase que totalmente as
instrues da CPU, perdem muito em desempenho.

Existem outros sistemas virtuais que neste trabalho no foram citados ou no foram
detalhados e que futuramente podem ser explorados em outros trabalhos, so alguns

107
deles: Denali, Valgrind, Cooperative Linux, Linux VServer, OpenVZ, Virtuozzo,
Plex86, Crusoe, Parrot, Cedega e Cygwin.

Uma outra boa sugesto para trabalhos no futuro so testes acerca das novas tcnicas de
virtualizao por meio de uma camada adicional na arquitetura interna dos
processadores x86 de ltima gerao (as tecnologias Intel-VT da Intel e AMD-V da
AMD).

108
ANEXO I

TABELA COMPARATIVA DE MQUINAS VIRTUAIS

109
110
BIBLIOGRAFIA

[ADAMS e AGESEN] ADAMS, K. and AGESEN, O. A Comparison of Software and


Hardware Techniques for x86 Virtualization, VMWare.

[BARHAM et al] BARHAM, P., DRAGOVIC B., FRASER K., HAND, S., HARRIS
T., HO, A., NEUGEBAUER, R., PRATT, I. and WARFIELD, A. Xen and the Art of
Virtualization, In Proceedings of the 19th ACM Symposium on Operating Systems
Principles, pages 164177, Bolton Landing, NY, October 2003.

[BELLARD 2005] BELLARD, F. QEMU, A Fast and Portable Dynamic Translator,


USENIX Annual Technical Conference, USENIX Association, 2005.

[BELLARD 2007] BELLARD, F. QEMU Emulator User Documentation. February


2007. Disponvel em <http://fabrice.bellard.free.fr/qemu/qemu-doc.html>.

[BOCCATO et al] BOCCATO, B., DIAS R., CRUZ, R., Mquina Virtual .NET.
Disponvel em <www.ic.unicamp.br/~rodolfo/Cursos/mc722/2s2005/Trabalho/g06-
net.pdf>.

[CLARK] CLARK, C. Xen v3.0 Users Manual, 2002. <Disponvel em:


http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user.pdf>.

[DIKE] DIKE, Jeff. A User-mode Linux. <Disponvel em: http://lwn.net/2001/


features/OLS/pdf/pdf/uml.pdf>

[DUMIENSE e JESUS] DUMIENSE, G. M, JESUS, J. P. Virtualizao e Segurana


em Processadores Modernos, IST, 2006/2007.

[HIGASHIYAMA] HIGASHIYAMA, A. Viso Comercial do Microsoft Virtual Server


2005 R2, Artigo Tcnico, Revista IT Central, Junho 2006.

[HINES] HINES, Matt., Research Points to Faster Threat Development, eWeek, 2006.

111
[INFO249] INFO EXAME, Revista, Editora Abril S.A., Edio n 249, Dezembro
2006.

[INFO259] INFO EXAME, Revista, Editora Abril S.A, Edio n 259, Outubro 2007.

[INTEL] INTEL, Using virtualization to change the face of business - E-book 2006.
Disponvel em: <http://intelvt.com/flash>.

[KAMP e WATSON] KAMP, P., WATSON, R., Jails: Confining the omnipotent root.
The FreeBSD Project. 2nd International System Administration and Networking
Conference "SANE 2000", May 2000.

[KASICK et al] KASICK, M., WILLEN, G. and CUI, M. Virtualization - Operating


System Design & Implementation, April 2007.

[LAUREANO 2004] LAUREANO, M. Uma abordagem para a proteo de detectores


de intruso baseada em mquinas virtuais. Centro de Cincias Exatas e de Tecnologia,
Pontifcia Universidade Catlica do Paran, Curitiba, 2004. 103 f.

[LAUREANO 2006] LAUREANO, M. Mquinas Virtuais e Emuladores. Conceitos,


Tcnicas e Aplicaes. Ed. Novatec 2006.

[LAWTON et al] LAWTON, K. P., DENNEY, B., GUARNERI, D. N., RUPPERT, V.,
BOTHAMY, C. Bochs User Manual. Disponvel em <http://bochs.sourceforge.net>

[LINDHOLM e YELLIN] LINDHOLM, T., YELLIN F. The Java Virtual Machine


Specification, Second Edition, Sun Microsystems, Inc. 1999.

[LINUX] LINUX MAGAZINE, Revista. Linux New Media do Brasil Editora Ltda.,
Edio n 9, Junho de 2005.

[MAGENHEIMER e CHRISTIAN] MAGENHEIMER D. and CHRISTIAN T.,


vBlades: Optimized Paravirtualization for the Itanium Processor Family. Proceedings of
the Third Virtual Machine Research and Technology Symposium, Usenix, May 2004.

112
[MICROSOFT] MICROSOFT. Windows Server Virtualization An Overview,
Microsoft Corporation, May 2006.

[POPEK e GOLDBERG] POPEK, G. J., and GOLDBERG, R. P. Formal requirements


for virtualizable third generation architectures. ACM 17, 7 (1974).

[PRZYBYSZ e LUIZ] PRZYBYSZ, A. L. e LUIZ Jr., O. J. Sistema Operacional Xen e


o modelo VM Monitor, Mestrado em Informtica Aplicada, PUCPR, Maro 2006.

[ROSENBLUM] ROSENBLUM, M. The Reincarnation of Virtual Machines. ACM


Queue vol. 2, no. 5 - July/August 2004.

[SINGH] SINGH, An Introduction to Virtualization. Disponvel em:


<http://www.kernelthread.com/publications/virtualization>.

[SUN 2003] SUN Microsystems Inc., Sun Ray Interoperability Brief, White Paper,
August 2003.

[SUN 2004] SUN Microsystems Inc., System Administration Guide: Solaris


Containers, Resource Management, and Zones, March 2004.

[SYMANTEC] SYMANTEC Corporation, Symantec Internet Security Threat Report,


2006.

[STEIL] STEIL M. Inside VMWare - How VMware, VirtualPC and Parallels actually
work. 23rd Chaos Communication Congress.

[VICTOR] VICTOR, J. Solaris Containers Techonology Architecture Guide. Sun


Microsystems. Sun BluePrints OnLine, May 2006.

[VIRTUALBOX] VIRTUALBOX. Technical Documentations, Innotek GmbH, 2007.


Disponvel em <http://www.virtualbox.org>

113
[VMWARE 2006-A] VMWARE Inc., Architeture and Performance Implications.
VMware ESX Server 2. 2006. White paper.

[VMWARE 2006-B] VMWARE Inc., VMware Infrastrucutre Architecture Overview,


2006 White paper.

[WHATELY e AMORIM] WHATELY L. e AMORIM, C. Sistemas de Computao


Baseados em Mquinas Virtuais. Engenharia de Sistemas e Computao -
COPPE/UFRJ. 2005.

[WINEHQ] WINEHQ, Wine Developer's Guide, Wine Project Official Page.


Disponvel em <http://www.winehq.org/site/docs/winedev-guide/index>.

[YEHUDA] YEHUDA M.,User Mode Linux. Study Group, HRL. IBM Haifa Research
Labs., October 2003.

[YOUSEFF et al] YOUSEFF, L., WOLSKI, R. GORDA, B. and KRINTZ, C.


Paravrtualization for HPC Systems. Department of Computer Science. University of
California, Santa Barbara.

114

Você também pode gostar