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.

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

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.

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.

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.

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

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

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.

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

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] jnz loop end: ; Copia 16 bytes do registrador A para o ; registrador B, e incrementa A e B em 16 ; Se no for zero, no alcanou ; o final da string, ento volte e continue copiando

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: CDROM, 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

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 noglobal, 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 5 6

DAS definido por dispositivo de armazenamento que est diretamente conectado ao computador NAS caracterizado pela habilidade de prover acesso a dados atravs de uma rede. 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

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 fsicovirtual 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 ECMA335 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.

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

10

102

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/g06net.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