Escolar Documentos
Profissional Documentos
Cultura Documentos
Por
Rodrigo Ferreira da Silva
Orientador
Prof. Fbio Borges de Oliveira
2
FOLHA DE APROVAO
Wagner Vieira Lo
Laboratrio Nacional de Computao Cientfica - LNCC
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
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.
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
10
INTRODUO
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.
12
CAPTULO I
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.
1.2 Implementaes
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.
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.
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].
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.
16
operacionais diferentes e incompatveis entre si. Assim as aplicaes escritas para uma
plataforma no funcionam para outra.
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.
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.
18
Mquinas virtuais clssicas ou de Tipo I.
Mquinas virtuais hospedadas ou de Tipo II.
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
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.
1.7.3 Consideraes
Em monitores de tipo I:
20
Em monitores de tipo II:
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.
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.
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.
23
Figura 1.07 - Representao da virtualizao no nvel de aplicao
24
CAPTULO II
2.1 Introduo
25
causar danos irreversveis ao sistema. As mquinas virtuais tambm isolam o sistema
principal de bugs em softwares, aumentando a segurana para test-los.
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.
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.
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.
27
Figura 2.01 - Servidores no virtualizados
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.
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
2.3.1 Isolamento
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).
31
Funcionamento normal
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.
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.
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:
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.
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.
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.
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.
38
Figura 2.06 - Virtualizao de servidores web dedicados para cada domnio
39
CAPTULO III
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.
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).
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.
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.
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.
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].
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.
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.
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
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.
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.
46
Figura 3.04 - Estrutura representativa da paravirtualizao
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
beginning:
mov A,[ponteiro para primeira string]
; Coloca o endereo do primeiro caracter da string de
; origem no registrador A
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.
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:
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].
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.
50
nomeou de SVM (Secure Virtual Machine) e mais recentemente mudou para
AMD-V (AMD Virtualization), o codinome inicial era Pacifica.
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.
51
arquitetura Intel-VT, embora esta eficincia ainda no tenha sido efetivamente
comprovada [DUMIENSE e JESUS].
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
4.1 Introduo
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
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.
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.
55
armazenamento em reas de disco que podem ser compartilhadas para acesso entre os
sistemas operacionais convidados executando em diferentes mquinas virtuais.
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.
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.
58
4.2.4 VMware Player
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].
60
4.2.5.1 Alta Disponibilidade
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.
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.
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.
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].
64
4.3.1 Gerenciamento de Memria
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.
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).
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
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.
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.
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.
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).
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.
69
4.4.1 Discos virtuais (Virtual Hard Disk)
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.
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.
4.5 VirtualBox
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.
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].
73
Outras caractersticas 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.
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
75
Acesso total rede.
Suporta SMP (Symmetric Multiprocessing).
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.
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 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:
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
5.1 Introduo
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).
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.
82
5.2.2 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.
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.
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.
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
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
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.
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.
89
IP: 192.168.188.130
Caminho para os arquivos do sistema virtual: /usr/jails/vm1
# mkdir /usr/jails/vm1
# cd /usr/src
# make world DESTDIR=/usr/jails/vm1
# cd etc
# make distribution DESTDIR=/usr/jails/vm1
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"
# touch /usr/jails/vm1/fstab
# cp /etc/resolv.conf /usr/jails/vm1/etc
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
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
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:
94
lento em operaes de ponto flutuante. Contudo ele aproximadamente trinta vezes
mais rpido que o Bochs, que ser visto mais adiante [BELLARD 2007].
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 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.
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.
97
CAPTULO VII
7.1 Introduo
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 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].
100
CAPTULO VIII
8.1 Introduo
8.2 Wine
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.
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.
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.
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
# 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.
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 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.
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.
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.
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
109
110
BIBLIOGRAFIA
[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.
[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>.
[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.
[LAWTON et al] LAWTON, K. P., DENNEY, B., GUARNERI, D. N., RUPPERT, V.,
BOTHAMY, C. Bochs User Manual. Disponvel em <http://bochs.sourceforge.net>
[LINUX] LINUX MAGAZINE, Revista. Linux New Media do Brasil Editora Ltda.,
Edio n 9, Junho de 2005.
112
[MICROSOFT] MICROSOFT. Windows Server Virtualization An Overview,
Microsoft Corporation, May 2006.
[SUN 2003] SUN Microsystems Inc., Sun Ray Interoperability Brief, White Paper,
August 2003.
[STEIL] STEIL M. Inside VMWare - How VMware, VirtualPC and Parallels actually
work. 23rd Chaos Communication Congress.
113
[VMWARE 2006-A] VMWARE Inc., Architeture and Performance Implications.
VMware ESX Server 2. 2006. White paper.
[YEHUDA] YEHUDA M.,User Mode Linux. Study Group, HRL. IBM Haifa Research
Labs., October 2003.
114