virtualizacao de sistemas operacionais.tcc

114
LNCC - LABORATÓRIO NACIONAL DE COMPUTAÇÃO CIENTÍFICA ISTCC - INSTITUTO SUPERIOR DE TECNOLOGIA EM CIÊNCIAS DA COMPUTAÇÃO Virtualização de Sistemas Operacionais Por Rodrigo Ferreira da Silva Orientador Prof. Fábio Borges de Oliveira Petrópolis - RJ, Brasil Dezembro de 2007

Upload: roeli-ileor

Post on 25-Nov-2015

22 views

Category:

Documents


3 download

TRANSCRIPT

  • 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

  • 2

    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.

  • 3

    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

  • 4

    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.

  • 5

    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.

  • 6

    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.

  • 7

    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

  • 8

    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

  • 9

    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

  • 10

    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

  • 11

    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

  • 12

    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.

  • 13

    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

  • 14

    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

  • 15

    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:

  • 16

    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

  • 17

    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.

  • 18

    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:

  • 19

    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.

  • 20

    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.

  • 21

    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.

  • 22

    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

  • 23

    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.

  • 24

    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.

  • 25

    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

  • 26

    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

  • 27

    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.

  • 28

    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.

  • 29

    Algumas aplicaes so ms candidatas consolidao. Nesta classificao

    esto enquadradas as aplicaes de alta performance que utilizam o servidor na

    maior parte do tempo (ex: analisadores de grandes massas de dados), bem como,

    os de misso crtica ou de performance crtica, em que qualquer conteno de

    recursos poderia impactar negativamente nos resultados.

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

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

    dados como consultas, uso de memria, entrada e sada, armazenamento ou

    qualquer outra informao relevante, em um ciclo de um dia, um ms, um ano

    etc.

    Usando este histrico, deve-se mapear padres de uso para descobrir aplicaes

    que poderiam funcionar juntas, e combinando aplicaes de picos em horrios

    diferentes.

    Somar todos os picos de carga de trabalho de todos os servios e aplicaes a

    serem consolidadas para determinar a requisitos de capacidade computacionais

    necessrias (CPU, memria, disco, operaes de entrada e sada etc.).

    Acrescentar uma margem de crescimento projetada para os prximos seis meses,

    dois anos ou eventual substituio de equipamentos (por exemplo: devido ao

    trmino de suas vidas teis).

    Caso haja polticas institucionais de utilizao de servidores (por exemplo:

    nenhum servidor deveria estar funcionando normalmente acima de 80% da

    capacidade), deve-se adicionar tambm esta margem de segurana.

    Por fim, deve-se considerar no clculo o overhead2 gerado da tcnica de

    virtualizao adotada.

    Aps este estudo, deve-se realizar a consolidao das aplicaes em sua forma prtica,

    consolidando aplicaes de menor escala e, na medida em que se obtm xito, proceder

    para aplicaes de maior escala.

    2 Overhead: Custos adicionais em processamento ou armazenamento que reduz de forma significativa e

    indesejvel, o desempenho dos sistemas de computao.

  • 30

    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.

  • 31

    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.

  • 32

    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

  • 33

    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.

  • 34

    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.

  • 35

    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.

  • 36

    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.

  • 37

    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).

  • 38

    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.

  • 39

    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.

  • 40

    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

  • 41

    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

  • 42

    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

  • 43

    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.

  • 44

    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).

  • 45

    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

  • 46

    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.

  • 47

    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].

  • 48

    3.6 Emulao com Recompilao Dinmica

    Outra tcnica bastante utilizada a emulao com recompilao dinmica (tambm

    conhecida como dynamic recompilation ou dynarec). Esta tcnica consiste em

    recompilar partes do cdigo de um programa durante sua execuo. Com isso, o sistema

    pode adequar o cdigo compilado para refletir o ambiente de execuo original do

    programa, e talvez produzir um cdigo mais eficiente, explorando informaes que no

    esto disponveis para um compilador esttico tradicional. Em outros casos, um sistema

    pode empregar recompilao dinmica como parte de uma estratgia de otimizao

    adaptvel para executar uma representao porttil do programa como os bytecodes do

    Java ou do .NET CLR [LAUREANO 2004].

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

    determinado programa est sendo executado num emulador e precisa copiar uma string

    nula. O programa est compilado originalmente para um processador simples. Esse

    processador pode copiar apenas um byte por vez, e deve faz-lo lendo a string de

    origem em um registrador, e escrevendo a string de destino a partir deste registrador.

    Esse programa se pareceria como:

    beginning:

    mov A,[ponteiro para primeira string]

    ; Coloca o endereo do primeiro caracter da string de

    ; origem no registrador A

    mov B,[ponteiro para segunda string]

    ; Coloca o endereo do primeiro caracter da string de

    ; destino no registrador B

    loop:

    mov C,[A] ; Copia o byte do registrador A para o C

    mov [B],C ; Copia o byte no registrador C para o B

    cmp C,#0 ; Compara o dado copiado com 0 (marcador de fim de string)

    inc A ; Incrementa o registrador A para apontar para

    ; o prximo byte

    inc B ; Incrementa registrador B para apontar para

    ; o prximo byte

    jnz loop ; Se ele no for 0 ento volta e copia o prximo byte

    end:

  • 49

    Imaginemos que um emulador estivesse executando num processador que similar a

    esse, todavia possusse um desempenho melhor em cpias de strings, e que este

    emulador soubesse desta caracterstica. Ele poderia identificar as instrues de

    seqncia de cpia da string e decidir reescrev-las de um modo mais eficiente antes da

    execuo.

    Esse novo processador possui uma instruo chamada movs especificamente

    designado para copiar strings de uma forma mais eficiente. Esta hipottica instruo

    copiaria 16 bytes por vez sem ter que carreg-lo no registrador C, mas pararia quando

    copiasse um byte 0 (que marca o fim da string). Ele tambm sabe que o endereo da

    string estar no registrador A e B, ento ele incrementa A e B em 16 bytes, cada vez que

    executa.

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

    beginning:

    mov A,[ponteiro para primeira string]

    ; Coloca o endereo do primeiro caracter da string de

    ; origem no registrador A

    mov B,[ponteiro para segunda string]

    ; Coloca o endereo do primeiro caracter da string de

    ; destino no registrador B

    loop:

    movs [B],[A] ; Copia 16 bytes do registrador A para o

    ; registrador B, e incrementa A e B em 16

    jnz loop ; Se no for zero, no alcanou

    ; o final da string, ento volte e continue copiando

    end:

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

    no precisa carregar muitas instrues para fazer a mesma tarefa.

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

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

  • 50

    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

  • 51

    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

  • 52

    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.

  • 53

    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.

  • 54

    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.

  • 55

    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

  • 56

    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

    qu