SlideShare ist ein Scribd-Unternehmen logo
1 von 87
Downloaden Sie, um offline zu lesen
Centro Universitário de Maringá


                   ALAN BRUMATE




VIRTUALIZAÇÃO DE SERVIDORES: UM COMPARATIVO ENTRE
                   VMWARE E XEN




                         Maringá
                          2010
2


      ALAN BRUMATE




VIRTUALIZAÇÃO DE SERVIDORES




             Monografia apresentada ao Curso de
             graduação em Redes de Computadores, do
             Centro Universitário de Maringá, como
             requisito parcial para a obtenção do título de
             Tecnólogo, sob orientação do professor José
             Valderlei da Silva.




          Maringá
           2010
3




Aos meus pais, Vanda e Adelcino, pelo
amor e dedicação em toda a minha vida,
responsáveis diretos pela realização
desse objetivo.
4


                               AGRADECIMENTOS


      Aos professores por todo conhecimento passado durante a graduação, em
especial ao Luiz Artur, pela orientação na primeira metade do trabalho, ao Ludisleno,
pelas dicas iniciais, no momento que estava definindo qual seria o tema da
pesquisa, e em especial ao Vander (Jesus), que assumiu a orientação já na reta final
e contribuiu de forma decisiva para que esse trabalho fosse concluído.
       Aos colegas da graduação pelos anos de boa convivência, em especial a
Eliezer Oliveira, companheiro e parceiro durante os desafios da graduação. Às
pessoas que fazem parte da minha vida, meu irmão Adevan e à Rubia Pimenta por
todo amor, dedicação e paciência nesse período de tantos desafios da minha vida.
5




“O segredo do sucesso é a constância do
propósito”.
                      Benjamin Disraeli
6


                                     RESUMO



A virtualização no âmbito da informática visa utilizar uma máquina física para
executar diversos sistemas operacionais. Esta pesquisa tem o objetivo de
demonstrar as diversas formas e técnicas de virtualização, percorrer sua história e
sua evolução no cenário da tecnologia da informação e demonstrar na prática como
é possível reduzir custos e ganhar desempenho. Para isso foram comparadas duas
tecnologias disponíveis no mercado: o VMware e o Xen. Foi realizado um estudo
sobre todas as práticas usuais de virtualização e as atuais versões das duas
ferramentas citadas acima. Foram utilizados critérios de desempenho, custos, entre
outros, para avaliar o comparativo entre as ferramentas. Os principais resultados
obtidos foram que a virtualização é uma importante alternativa para as empresas
melhorar o aproveitamento dos seus recursos, e que cada vez mais as empresas de
virtualização estão disponibilizando mais facilidades e opções para a implantação da
virtualização.

Palavras-Chave: Virtualização, VMware, Xen
7


                                                  LISTA DE FIGURAS




Figura 1 - Virtualização de Desktop .......................................................................... 19
Figura 2 - Evolução Histórica da Virtualização .......................................................... 23
Figura 3 - Alguns Sistemas Existentes ...................................................................... 24
Figura 4 - Sistemas Incompatíveis ............................................................................ 25
Figura 5 - A Camada de Compatibilidade ................................................................. 25
Figura 6 - Máquina Virtual Tipo I ............................................................................... 28
Figura 7 - Máquina Virtual Tipo II .............................................................................. 29
Figura 8 - Abordagem Híbrida do Tipo I .................................................................... 30
Figura 9 - Abordagem Híbrida Para o Tipo II ............................................................ 31
Figura 10 - Representação da Virtualização Total .................................................... 32
Figura 11 - Representação da Paravirtualização ...................................................... 33
Figura 12 - Alocação de Memória na Virtualização Total .......................................... 35
Figura 13 - Virtualização do Sistema Operacional .................................................... 36
Figura 14 - Virtualização de Linguagens de Programação ........................................ 37
Figura 15 - Ambiente de Desenvolvimento Virtualizado ............................................ 38
Figura 16 - Virtualização de Hardware ...................................................................... 39
Figura 17 - Virtualização de Aplicação ...................................................................... 40
Figura 18 - Virtualização de Apresentação ............................................................... 40
Figura 19 - Virtualização de Desktop ........................................................................ 42
Figura 20 - Comparativo Entre Algumas Ferramentas .............................................. 47
Figura 21 - Versões do XenServer ............................................................................ 50
Figura 22 - Comparativo entre VMware Server e ESXi ............................................ 55
Figura 23 - Virtual Server .......................................................................................... 56
Figura 24 – KVM ....................................................................................................... 60
Figura 25 - Configuração do VMware Server ............................................................ 67
Figura 26 - XenServer ............................................................................................... 68
Figura 27 - Tela de Login do VMware Server ............................................................ 69
Figura 28 - Tela Principal do VMware Server ............................................................ 70
Figura 29 - XenCenter ............................................................................................... 71
Figura 30 - Servidor Conectado no XenCenter ......................................................... 71
8


Figura 31 - Tela de Revisão das Configurações do VMware Server ......................... 73
Figura 32 - SO's Executando no XenServer.............................................................. 74
Figura 33 - Teste 1 - Ping .......................................................................................... 76
Figura 34 - Teste 2 - Recovery .................................................................................. 76
Figura 35 - Teste 3 - Vacuum .................................................................................... 77
Figura 36 - Teste 4 – Conversão de Video ................................................................ 77
9


                                             LISTA DE TABELAS




Tabela 1 - Custos ...................................................................................................... 64
Tabela 2 - Materiais de Consulta............................................................................... 64
Tabela 3 - Aquisição.................................................................................................. 65
Tabela 4 - Suporte a Hardware ................................................................................. 66
Tabela 6 - Instalações ............................................................................................... 68
Tabela 7 - Configurações Especiais .......................................................................... 72
Tabela 8 - Instalação das Máquinas Virtuais ............................................................. 74
10


                            LISTA DE SIGLAS


AMD       Advanced Micro Devices
API       Application Programming Interface
BIOS      Basic Input/Output System
BSD       Bekerley Software Distribuition
CD-ROM    Compact Disk Read Only Memory
CP        Control Program
CPD       Centro de Processamento de Dados
CPU       Central Processing Unit
DLL       Dynamic-Link Library
DVD       Digital Video Disk
GB        Giga-Byte
GPL       General Public License
GRUB      Grand Unified Bootloader
IBM       International Business Machines
I/O       Input/Output
JVM       Java Virtual Machine
KVM       Kernel-based Virtual Machine
MB        Mega-Byte
MVP       Mobile Virtualization Platform
PC        Personal Computer
PowerPC   Power Optimization Enhanced Risc
RAM       Random Access Memory
RMVB      Real Media Variable Bitrate
SAN       Storage Area Networks
SMP       Symmetric Multi-Processing
SO        Sistema Operacional
TI        Tecnologia da Informação
UML       User-Mode Linux
USB       Universal Serial Bus
VM        Virtual Machine
VMM       Virtual Machine Monitor
11


XML   Extensible Markup Language
12


                                                    SUMÁRIO


INTRODUÇÃO .......................................................................................................... 14
1.1 MOTIVAÇÃO ....................................................................................................... 15
1.2 OBJETIVOS ........................................................................................................ 15
1.3 ORGANIZAÇÃO DA MONOGRAFIA .................................................................. 16

2 CONCEITOS DE VIRTUALIZAÇÃO ...................................................................... 17
2.1 DEFINIÇÃO DE MÁQUINAS VIRTUAIS ............................................................. 18
2.2 HISTÓRICO DA VIRTUALIZAÇÃO ..................................................................... 20
2.3 UTILIZAÇÃO DE MÁQUINAS VIRTUAIS ............................................................ 23
2.3.1 Monitor de Máquina Virtual ........................................................................... 26
2.3.2 Emuladores e Máquinas Virtuais .................................................................. 26
2.3.3 Tipos de Emuladores ..................................................................................... 27
2.3.4 Tipos de Máquinas Virtuais ........................................................................... 27
      2.3.4.1 Máquinas Virtuais - Tipo I ............................................................................... 28
      2.3.4.2 Máquinas Virtuais - Tipo II .............................................................................. 28
      2.3.4.3 Abordagens Híbridas ........................................................................................ 29
2.4 TÉCNICAS DE VIRTUALIZAÇÃO ....................................................................... 31
2.4.1 Virtualização Total .......................................................................................... 31
2.4.2 Paravirtualização ............................................................................................ 32
2.4.3 Relação entre Virtualização Completa e Paravirtualização ........................ 34
2.4.4 Recompilação Dinâmica ................................................................................ 35
2.5 FORMAS DE VIRTUALIZAÇÃO.......................................................................... 36
2.5.1 Virtualização de Sistema Operacional .......................................................... 36
2.5.2 Virtualização de Linguagem de Programação ............................................. 37
2.5.3 Virtualização de Hardware ............................................................................. 38
2.5.4 Virtualização de Aplicação ............................................................................ 39
2.5.5 Virtualização da Apresentação ..................................................................... 40
2.5.6 Virtualização da Estação de Trabalho .......................................................... 41
2.5.7 Virtualização de Armazenamento ................................................................. 42
2.6 BENEFÍCIOS E DIFICULDADES DA VIRTUALIZAÇÃO ..................................... 43
2.6.1 Benefícios da Virtualização ........................................................................... 43
2.6.2 Dificuldades da Virtualização ........................................................................ 45
13


3 TECNOLOGIAS ATUAIS DE VIRTUALIZAÇÃO ................................................... 47
3.1 XEN ..................................................................................................................... 47
3.1.1 Histórico do Xen ............................................................................................. 48
3.1.2 Xen Source 4.0 ................................................................................................ 49
3.1.3 XenServer 5.6.................................................................................................. 50
3.1.4 Outros Produtos Xen ..................................................................................... 51
3.1.5 Algumas Características Relevantes do Xen ............................................... 51
3.2 VMWARE ............................................................................................................ 52
3.2.1. VMware Player ............................................................................................... 52
3.2.2 Workstation..................................................................................................... 53
3.2.3 VSphere ESX................................................................................................... 53
3.2.4 VSphere Hypervisor (ESXi)............................................................................ 53
3.2.5 VMware Server ................................................................................................ 54
3.3 OUTRAS TECNOLOGIAS DISPONÍVEIS PARA VIRTUALIZAÇÃO ................... 55
3.3.1 VirtualBox ....................................................................................................... 55
3.3.2 Virtual Server .................................................................................................. 56
3.3.3 Virtual PC ........................................................................................................ 57
3.3.4 Hyper-V............................................................................................................ 57
3.3.5 QEMU............................................................................................................... 58
3.3.6 Kernel-based Virtual Machine ....................................................................... 59
3.3.7 User-Mode Linux (UML) ................................................................................. 60

4 FERRAMENTAS E CENÁRIOS UTILIZADOS ...................................................... 62
4.1 AMBIENTE DE REALIZAÇÃO DOS TESTES ..................................................... 62
4.2 DESCRIÇÃO DOS TESTES ............................................................................... 63
4.3 COMPARAÇÕES ................................................................................................ 63

CONCLUSÕES ......................................................................................................... 79
REFERÊNCIAS ......................................................................................................... 81
14


                                     INTRODUÇÃO



      Buscando soluções para aumentar a agilidade dos negócios e redução de
custos, as empresas começaram a considerar a virtualização como a solução de
seus problemas com infra-estrutura. (MANARA, 2007).
      Para Favacho, Miranda e Souza (2008, p.13) “no decorrer dos anos muitos
serviços foram informatizados exigindo que as empresas investissem na capacidade
ocupacional”.
      A tecnologia aumenta a capacidade de trabalho, fazendo com que um
computador faça o serviço de muitos, sem que seja necessário investir mais em
recursos físicos, aliviando, assim, a demanda de espaço, custos com energia elétrica
e futura reposição de hardware. Conforme Carmona et al (2008, p.23)
“computadores virtuais economizam a aquisição de periféricos físicos e necessitam
ao mesmo tempo de menos espaço, energia elétrica e resfriamento”. As empresas
passaram a encarar os custos com a energia elétrica e o impacto do consumo
excessivo sobre o meio ambiente como algo mais do que preocupações triviais
(CARMONA,       2008). Ou   seja,   aumentar a    capacidade    de   trabalho,   com
equipamentos que estão disponíveis, de forma econômica e funcional.
      No início, o processo de virtualização era viável apenas para grandes
empresas. Devido à crescente pesquisa de novas tecnologias, tornou-se acessível
para pequenas e médias empresas. Segundo Laureano (2006, p.15) “a utilização de
máquinas virtuais está se tornando uma alternativa para vários sistemas de
computação pelas vantagens em custos e portabilidade, inclusive em sistemas de
segurança”.
       Embora a virtualização seja relativamente nova em pequenas e médias
empresas, seus benefícios têm sido vistos com bons olhos pelas organizações. O
Gartner Inc. (instituto de pesquisa de tecnologia de informação) prevê que até 2012
a maioria das empresas de porte médio considerará a virtualização de 100% de seus
servidores, impulsionadas, sobretudo, pela economia gerada na consolidação destes
equipamentos (NEIVA, 2010).
      Entretanto, o processo de virtualização demanda planejamento e estratégia.
Uma mudança na estrutura de TI deve ser muito bem analisada, pois não se pode
15


deixar levar-se por tendências, sem que elas agreguem resultados positivos.
Segundo Carmona et al (2006, p. 29). “Juntar-se cegamente ao boom não é uma
boa estratégia, mas em vez disso, vale calcular os possíveis benefícios”.


      1.1 MOTIVAÇÃO


      Devido à adoção crescente de virtualização por parte das empresas, essa
pesquisa tem como motivação principal discutir essa técnica e trazer algumas
conclusões para aqueles que buscam implantar soluções e conhecer algumas
ferramentas utilizadas na atualidade.
      O Xen desponta como uma boa opção para aqueles que são adeptos de
software livre. Carmona (2008, p.42) diz que ”... suportado por uma grande
comunidade de usuários, a atual alta instância para soluções de virtualização é, em
geral, e certamente a mais famosa alternativa de código aberto para este fim, o Xen
se esforça para ser aceito no mundo Linux”. O movimento de código aberto participa
ativamente da criação de ferramentas para o setor de virtualização: basta ver que o
Xen é sinônimo de virtualização de alto desempenho em servidores desde o início
de 2006. (CARMONA, 2008).
      Por outro lado, o VMware, de código proprietário, é uma das opções mais
aderidas para virtualizar ambientes. O VMware é hoje a máquina virtual para
plataforma x86 de uso mais difundido. (LAUREANO, 2006).
      Tendo em vista a grande possibilidade de uso desses fabricantes, o trabalho
busca pesquisar as soluções disponibilizadas pelos dois sistemas citados
anteriormente e trazer seus benefícios, pontos negativos e particularidades.


      1.2 OBJETIVOS


      Esta pesquisa tem como objetivo discutir e apresentar ferramentas para a
virtualização de servidores, analisando duas das principais opções no mercado
atualmente. No final serão apresentadas algumas conclusões. Para isso seguiremos
as seguintes metodologias:
16


          o   Realizar estudo sobre a história da virtualização, bem como a evolução
              do seu uso comercial, por meio de pesquisa bibliográfica, materiais
              disponibilizados pelos fabricantes dos sistemas abordados e sites
              específicos, traçando sua evolução no mercado em todos esses anos.


          o   Instalar o Citrix XenServer e o VMware em uma máquina de testes,
              com o intuito de analisar as características de cada um. Fazer um
              comparativo entre os dois verificando custos, benefícios, limitações,
              requisitos necessários para instalação e desempenho por meio de
              testes reais.


      1.3 ORGANIZAÇÃO DA MONOGRAFIA


      Essa pesquisa é composta por seis capítulos, cuja estrutura encontra-se
segmentada da seguinte forma: o capítulo dois mostra a fundamentação teórica de
sistemas de virtualização, bem como suas vantagens, desvantagens, história,
conceitos de máquinas virtuais, emuladores e suas diferenças. Ainda demonstra os
tipos e técnicas de virtualização, as principais dificuldades e etapas do processo de
virtualização e o cenário atual.
      O capítulo três expõe as principais tecnologias presentes no mercado e suas
características mais marcantes, dando ênfase para os sistemas chaves desse
trabalho, o VMware e o Xen. Também serão abordadas outras opções disponíveis
no mercado e sua importância no tema.
      No capítulo quatro é apresentado o ambiente proposto, a solução, a
demonstração prática e os resultados obtidos nos testes.
      Finalmente o capítulo cinco traz conclusões a respeito do trabalho
desenvolvido e propõe sugestões para trabalhos futuros.
2 CONCEITOS DE VIRTUALIZAÇÃO




      De acordo com o dicionário online Aurélio (2010), virtual é: “Que não se
realizou, mas é suscetível de realizar-se; potencial”, e ainda de acordo com o
mesmo dicionário, “realidade virtual é simulação de um ambiente real por meio de
imagens de síntese tridimensionais”.
      O termo “virtualização”, usado nessa pesquisa, trata de uma forma mais
específica de elementos virtuais. Aqui trataremos de virtualização de máquinas,
sistemas operacionais e aplicativos (em especial de servidores de sistemas
operacionais), de que forma a indústria da tecnologia da informação se desenvolveu
ao longo da história para apresentar ferramentas cada vez mais capazes de
gerenciar um sistema como se fosse real, e como surgiu essa necessidade.
      Não é raro presenciarmos Centro de Processamento de Dados (CPD) super
lotados de máquinas, periféricos, monitores, entre outros. Todo esse equipamento
demanda estrutura elétrica e de resfriamento, e quanto mais equipamentos, maior a
necessidade de manutenção.

                     “A virtualização vem também ao encontro das premissas de
                     sustentabilidade expressas na “TI verde”, movimento que busca dotar as
                     organizações de ações voltadas para o meio ambiente, com foco no uso
                     consciente de recursos.” (PRODEMGE, 2009, p.20)


      Com a virtualização, as organizações se deram conta que é possível reduzir
custos e espaço sem perder poder de processamento. A virtualização surgiu e
rapidamente ganhou notoriedade nas empresas pelo fato de trazer tantos benefícios,
alta disponibilidade, diminuição de cabeamento e consumo de energia, ganho de
espaço, entre outras vantagens, com pouco investimento.
      No artigo para o site Decision Report, Daniel Neiva, Diretor de Vendas para
Pequenas e Médias Empresas da Dell América Latina, afirma que “... a virtualização
é uma das mais interessantes tecnologias surgidas nos últimos anos. No mundo
empresarial, é a última palavra em faça mais com menos” (NEIVA, 2010). Devido à
possibilidade   de   aumentar    a    capacidade      instalada,    sem     adquirir   novos
equipamentos.
      A máquina virtual pode possuir seu próprio sistema operacional, memória
virtual, espaço de armazenamento e seus periféricos. Davis (1990, p.445) afirma que
18


“para o usuário, a máquina virtual é o computador, os aspectos relativos à máquina
real são transparentes, ocultos pelos recursos do sistema operacional real”. Dessa
forma, a máquina virtual é para o usuário uma máquina real, mas por trás estão
inúmeros recursos que podem ser explorados pelos seus administradores.



      2.1 DEFINIÇÃO DE MÁQUINAS VIRTUAIS


      A máquina virtual funciona como uma cópia exata de uma máquina real,
incluindo seus recursos de hardware, com a diferença que trabalha com esses
recursos de forma isolada. Laureano (2006, p.17) define máquina virtual (virtual
machine – VM) como sendo “uma duplicata eficiente e isolada de uma máquina real
[...] a IBM (International Business Machines) definiu a máquina virtual como uma
cópia isolada de um sistema físico”.

                      [...] “na virtualização, informamos a processadores e outros recursos,
                      presentes fisicamente em uma única máquina virtual de que eles podem
                      fazer parte de outras máquinas, cada qual com um sistema operacional e
                      configurações diversas. (CARMONA et al, 2008, p.16).



      Mesmo sendo dependente de outro sistema operacional, que faz essa
máquina virtual funcionar, a máquina virtual opera como se fosse independente, com
seu próprio drive de CD-ROM (Compact Disk Read Only Memory), sua própria
entrada USB (Universal Serial Bus), sua própria memória e etc. Cada máquina
virtual tem seu próprio sistema operacional virtual e seus próprios periféricos virtuais
(DAVIS, 1990).
      O sistema operacional real trabalha fazendo a comunicação com os
componentes do hardware, e qualquer outro dispositivo móvel por meio de seu
kernel. Para Alves (2006, p.16), “O kernel é responsável pelo gerenciamento básico
das funções do sistema operacional, que supre todas as funções necessárias à
utilização do hardware”.
      Da mesma forma acontece com sistemas virtualizados, que identificam
qualquer entrada como sendo uma entrada física. Isso significa que ao colocarmos
um dispositivo USB no gabinete, o conteúdo dele estará disponível para os dois
SO’s virtualizados, além do SO físico.
19


      A virtualização pode ser definida como a tecnologia capaz de simular
ambientes totalmente autônomos em uma mesma máquina física, permitindo,
inclusive, a convivência independente de aplicações em diferentes sistemas
operacionais. (PRODEMGE, 2009).
      As máquinas virtuais são vistas pelos usuários e funcionam como se fossem
computadores físicos, e são facilmente transportáveis de máquinas reais. Assim,
confirma Tanenbaum (2007, p. 50), “as máquinas virtuais promovem maior
desacoplamento entre hardware e software o que permite um ambiente completo ser
movido de uma máquina para outra”.
      A figura 1 mostra a imagem que o usuário tem em uma virtualização do
desktop. Neste exemplo temos o sistema operacional Windows XP e o monitor de
máquina virtual virtualizando outro Windows XP e o Ubuntu Linux. Um monitor de
máquina virtual instalado em um sistema operacional possibilita o uso de outros
sistemas operacionais.




                         Figura - Virtualização de Desktop
                               (MANARA, 2007)
20


        2.2 HISTÓRICO DA VIRTUALIZAÇÃO


        Os primeiros pesquisadores em computação estavam interessados no
aumento da robustez e estabilidade oferecidas pelo hipervisores (MATHEWS, 2008).
De acordo com Laureano (2006, p.13) “o termo virtualização vem sendo usado
desde os primórdios da computação, na década de 1950, quando pesquisadores da
Universidade de Manchester, na Inglaterra, desenvolveram o conceito de máquina
virtual”.
        A IBM foi a pioneira no uso de máquinas virtuais. No início dos anos 1960, a
empresa sentiu a necessidade de simplificar a operação nos mainframes
(computadores de grande porte), pois o sistema operacional estava perdendo
mercado, e sentia-se a necessidade de agregar outros sistemas nos hardwares
fabricados pela corporação. Uma das razões para introduzir a virtualização foi
permitir que o software herdado fosse executado em caros hardwares de mainframe.
(TANEMBAUM, 2007).
        Segundo Laureano (2006, p.15) “as origens do conceito de máquina virtual
remetem ao início da história dos computadores, no final dos anos 1950 e início de
1960. As máquinas virtuais foram originalmente desenvolvidas para centralizar os
sistemas de computador utilizados no ambiente VM/370 da IBM”.

                      No inicio dos anos 1960, o principal sistema operacional da IBM era o OS,
                      porém o DOS já era bastante popular, em conseqüência a IBM viu-se com
                      um problema nas mãos. Era evidente a necessidade de um novo sistema
                      operacional. A manutenção da compatibilidade entre dois sistemas
                      incompatíveis em essência, DOS e OS, foi considerada fundamental, e o
                      VM surgiu como solução. (DAVIS, 1990, p. 447).


        De acordo com Davis (1990, p.447) “na Virtual Machine (VM) da IBM os
recursos do computador real são gerenciados por um sistema operacional de alto
nível chamado programa de controle (CP) [...] os sistemas operacionais são
gerenciados pelo programa de controle, e as rotinas aplicativas são executadas sob
os sistemas operacionais virtuais”. Na prática, o CP simula um computador real em
cada máquina virtual, o que o coloca como primeiro software a possibilitar a
virtualização de sistemas.
        A virtualização foi desenvolvida na década de 1960 para particionar
hardwares grandes de mainframe, a fim de aproveitá-los melhor. (VMware. 2010).
21


Essas partições permitiam que os mainframes assumissem múltiplas tarefas, ou
seja, que executassem vários aplicativos e processos ao mesmo tempo. Como os
mainframes eram recursos caros na época, foram desenvolvidos sistemas para
serem particionados de forma a aproveitar completamente o investimento. Mathews
(2008, p.15) afirma que “O sistema 370 da IBM foi o primeiro computador disponível
comercialmente projetado para virtualização”.

                      [...] nos anos de 1960, pesquisadores da IBM desenvolveram o sistema
                      CP67, que trazia consigo o conceito de máquina virtual. “... uma camada de
                      virtualização de hardware permitia particionar o hardware da máquina em
                      unidades lógicas menores e autônomas [...] permitindo inclusive executar
                      várias instâncias do sistema operacional ao mesmo tempo”. (LAUREANO,
                      2006, p. 13).

         Foi na década de 1990 que o conceito de máquina virtual começou a ser
popularizado, data em que os computadores passaram a ser mais acessíveis por
pequenas e médias empresas, além de usuários domésticos. De acordo com
Laureano (2006, p.13) “o conceito de máquina virtual permaneceu pouco conhecido
durante décadas, até seu renascimento nos Computadores Pessoais (PC) de
plataforma Intel, na metade dos anos 1990”.
         No início dos anos de 1990, um grupo de alunos da faculdade de Stanford
(Estados Unidos) usou máquinas virtuais no sistema operacional IRIX, da Silicon
Graphics, que foi projetado para executar em um hardware sem suporte a
virtualização. Os desenvolvedores do projeto introduziram modificações específicas
no sistema operacional, modificando e recompilando o IRIX para permitir a
virtualização.   Essa técnica, mais tarde, seria conhecida como paravirtualização.
Então a equipe voltou sua atenção para modificar outra plataforma não voltada para
virtualização, o x86. Isso teve uma influencia direta na fundação da VMware, e a
introdução do primeiro produto comercial de virtualização dessa plataforma,
conseguindo executar arquivos binários sem alterações no Windows. (MATHEWS,
2008).
         Tanenbaum (2007, p.48) destaca duas razões principais para a virtualização
voltar a ficar em evidência no final dos anos 90. “... estamos enfrentando uma
situação em que o software herdado não pode ser mantido no mesmo passo que as
plataformas de que depende. [...] A diversidade de plataformas e máquinas podem
ser reduzidas deixando que cada aplicação execute em sua própria máquina virtual.”
22

                       [...] É justamente esse panorama criado pela evolução – oferta de
                       máquinas, espaços lógicos ociosos, espaços físicos escassos, volume de
                       sistemas legados, custos altos de operação e manutenção – que promoveu
                       o retorno da virtualização de servidores à pauta dos executivos de TI, mais
                       de 40 anos depois, totalmente repaginada, com novos conceitos,
                       configurações, objetivos e recursos. Os benefícios e as facilidades da
                       virtualização estenderam naturalmente seu uso para aplicação em desktop,
                       sistemas operacionais e linguagens de programação. (PRODEMGE, 2009,
                       p. 20).


      Mathews et al (2008, p.16) afirma que “...desde 2005, fabricantes de
processadores como a Intel e a AMD aumentaram o suporte via hardware em suas
linhas de produtos”.
                       [...] A evolução da indústria da tecnologia para os servidores de menor porte
                       e baixo preço desviou, então, a tendência da computação centralizada para
                       sua descentralização, principalmente na forma da tecnologia
                       cliente/servidor. Aliada a essa tendência, o advento da internet e a
                       disseminação das redes de computadores consolidaram o modelo das
                       plataformas baixas. (PRODEMGE, 2009, p. 20).


      Hoje diversas empresas estão competindo no mercado da virtualização. A
VMware vem aumentando as opções para as variadas usabilidades, a Microsoft,
entrou no mercado somente nessa década, e já                   lançou o Hyper-V, nativo do
Windows 2008 Server R2, além de muitas opções de software-livre, tanto para
Windows quanto para Linux, e também para instalação direta no hardware.
      A figura 2 mostra a evolução da virtualização, desde o nascimento da
virtualização, na década de 1950, até a atualidade. Nota-se o contínuo uso em
máquinas de grande porte, e o começo da aplicação em computadores pessoais no
fim da década de 1990. Somente no fim dos anos 1990 que a tecnologia passou a
ser mais difundida, com o surgimento do VMware Workstation. Na década de 2000,
podemos notar o surgimento de muitas tecnologias, com destaque para o
lançamento do Xen, em 2003, e o KVM, em 2006. Há pouco mais de três anos a
criação para celulares e palms traz boas perspectivas de que o mercado de
virtualização não pára de evoluir.
23




                     Figura - Evolução Histórica da Virtualização
                                 (PRODEMGE, 2009)


      2.3 UTILIZAÇÃO DE MÁQUINAS VIRTUAIS


      Máquina virtual (Virtual Machine – VM) refere-se à instância de um hardware
e um sistema operacional também virtualizado sob forma de simulação. (FAVACHO;
MIRANDA; OLIVEIRA, 2008).
      O computador é constituído de hardware, sistema operacional e aplicações
(CARMONA, 2008). Devido aos diferentes fabricantes, pode acontecer de uma
24


determinada aplicação não ser compatível com um sistema operacional. Por vezes,
os fabricantes desenvolvem seu aplicativo baseado em determinada arquitetura de
hardware, e nem sempre temos disponível a mesma arquitetura pra usar seu
aplicativo. Laureano (2006, p.16) afirma que “... o papel do hardware é executar as
operações solicitadas pelas aplicações. O sistema operacional recebe as
solicitações das operações [...] e controla o acesso ao hardware”.
      Esse tipo de problema pode ser evitado com a virtualização, pois esta insere
uma camada entre o hardware e o sistema operacional, que possibilita a utilização
de aplicações que não foram projetadas para um determinado hardware.
       De acordo com Tanenbaum (2003, p.44) “como cada máquina virtual é uma
cópia exata do hardware, cada uma delas pode executar qualquer sistema
operacional, capaz de ser executado diretamente sobre o hardware.”
      A figura 3 ilustra alguns sistemas operacionais existentes, seu hardware
compatível, aplicações e compatibilidades.




                          Figura - Alguns Sistemas Existentes
                                      (LAUREANO, 2006)


      Sistemas operacionais MacOS são incompatíveis com hardware projetados
para Windows e suas aplicações. Da mesma forma ocorre com sistemas
operacionais Linux e Windows, conforme ilustra a figura 4.
25




                           Figura - Sistemas Incompatíveis
                                 (LAUREANO, 2006)


      No momento em que encontramos o problema da dependência de hardware,
sistemas e aplicativos de um mesmo fabricante, a virtualização pode ser a solução
para esse impasse. Laureano (2006, p.16) afirma que “... a máquina virtual cria uma
“camada” para compatibilizar diferentes plataformas [...] essa camada é chamada de
virtualização”. A figura 5 ilustra a camada de compatibilidade disponibilizada pela
máquina virtual.




                        Figura - A Camada de Compatibilidade
                                   (LAUREANO, 2006)

      A idéia de máquina virtual é freqüentemente usada nos computadores
pessoais. Tanenbaum (2003, p.44) explica que:


                    [...] A idéia de máquina virtual é bastante usada hoje em dia em um contexto
                    diferente: a execução de velhos programas do MS-DOS. Quando o Pentium
                    e seus softwares estavam sendo projetados, a Intel e a Microsoft
                    perceberam que haveria uma grande demanda para executar softwares
                    antigos em hardwares novos. Por isso, a Intel disponibilizou um modo virtual
                    8086 no Pentium. Nesse modo de funcionamento, a máquina age como se
26

                    fosse um 8086 (que é idêntico a um 8088 do ponto de vista de software),
                    inclusive com o endereçamento de 16 bits e com limite de 1 MB(Mega-byte).


      2.3.1 Monitor de Máquina Virtual


      O monitor (também chamado de hypervisor, VMM, ou Virtual Machine
Monitor) é um dos principais conceitos envolvidos no estudo de máquinas virtuais.
(FAVACHO; MIRANDA; OLIVEIRA, 2008). O monitor pode criar uma ou mais
máquinas virtuais em uma única máquina real (LAUREANO, 2006).
      O hypersivor é, portanto, o elemento fundamental da virtualização, uma vez
que fornecerá recursos da máquina física para as estações virtuais residentes em
determinado ambiente, fazendo com que cada uma delas funcione de forma
independente, como se fossem máquinas físicas. (PRODEMGE, 2009, p. 21).
      Exemplos típicos dessa abordagem são VMware( TANENBAUM, 2007 apud
SUNGERMAN et al., 2001) e Xen ( TANENBAUM, 2007 apud BARHAN et al., 2003)


      2.3.2 Emuladores e Máquinas Virtuais


      Emulador é um tipo de sistema que a primeira vista se confunde com
virtualização. Laureano (2006, P.18) explica que “... um emulador engana o sistema,
fazendo com que todas as operações da máquina real sejam implementadas em um
software [...] ocorre à interpretação de um código desenvolvido para outra
plataforma”.
      Ao emular um sistema, estamos enganando um sistema ou aplicativo,
“afirmando” a esse sistema ou aplicativo que suas instâncias estão localizadas numa
máquina ou SO base diversos de sua localização real. (CARMONA 2008).
      A emulação reflete todos os estados internos do ambiente ao mesmo tempo
(FAVACHO; MIRANDA; OLIVEIRA, 2008). Por exemplo, um aplicativo desenvolvido
para a plataforma Windows rodando no Linux, ou um game do Playstation podendo
ser jogado diretamente no computador.
      Um emulador apresenta algumas desvantagens em relação à virtualização.
Laureano (2006, p.18) salienta que “... emuladores são muito complexos, pois
necessitam simular quase todas as instruções do processador e demais
características do hardware que os circundam”.
27



                     Emulação é um tipo de virtualização mais complexa, devido o fato de ter
                     que emular de maneira precisa o comportamento de um hardware. [...] Um
                     ponto importante que deve ser lembrado é que este tipo de virtualização se
                     torna útil para os desenvolvedores de firmware e de hardware, uma vez que
                     a funcionabilidade de uma solução pode ser validada sem a necessidade de
                     hardware real. (OLIVEIRA, 2007, p. 5).


       Laureano (2006, p.21) ressalta as diferenças entre emuladores e máquinas
virtuais ao afirmar que “... Enquanto o emulador fornece uma abstração completa
entre o sistema em execução e o hardware, o monitor de máquina virtual fornece
uma interface idêntica ao hardware”.

       2.3.3 Tipos de Emuladores

   •   Firmware: Programação em hardware ou dados de computador que são
       armazenados permanentemente em um chip de memória de hardware.
       Laureano (2006, p.21) afirma que “é a mais rápida tecnologia de emulação,
       mas também a mais complexa de implementar e manter a compatibilidade
       com versões anteriores”.


   •   Software: O emulador reconfigura a máquina em uso para aplicação que se
       deseja emular, considerada a forma mais fácil de implementar e portar para
       outras plataformas. Laureano (2006).

   •   Emulação Combinada: Composto de hardware e software. O software faz o
       papel principal, e o hardware fornece partes chaves do processo, e oferece
       grande flexibilidade em termos de projeto. Laureano (2006).



       2.3.4 Tipos de Máquinas Virtuais

       Com a evolução da virtualização surgiram diferentes práticas para atender
diferentes necessidades. Carmona et al (2008, p.32) afirma que “... é essencial saber
se a camada de virtualização atua tanto sobre o aplicativo como sobre o SO do
hóspede, situação em que estamos falando de virtualização do sistema”. Esse que é
o tema principal dessa pesquisa pode ser ainda divida em duas categorias,
28


máquinas virtuais tipo I e tipo II. Outros tipos de virtualização, como de aplicações,
hardware entre outros, serão abordados posteriormente.


      2.3.4.1 Máquinas Virtuais - Tipo I

      Hypervisors Clássicos: Sistema em que o monitor é implementado entre o
hardware e os sistemas convidados. Segundo Favacho, Miranda e Oliveira (2008 p.
18) “o tipo I é aquele que é executado diretamente no hardware da máquina, como
se fosse um sistema operacional”.
      Exemplos desse tipo de virtualização são o Xen e VMWARE ESXi . Laureano
(2006, p.21) explica que “... o monitor tem o controle do hardware e cria um
ambiente de VM’s. Cada uma delas se comporta como uma máquina física completa
que pode executar seu próprio SO”.
      A Figura 6 ilustra esse conceito, o monitor (VMM) representa o software que
vai gerenciar a comunicação entre hardware e sistemas operacionais, os SO’s
trabalham de forma independente.




                                     Figura - Máquina Virtual Tipo I
                                          (LAUREANO, 2006)



      2.3.4.2 Máquinas Virtuais - Tipo II

      O tipo 2 é aquele que é executado sobre um sistema operacional existente
em uma segunda camada.(FAVACHO; MIRANDA; OLIVEIRA 2008, p.18).
      Conforme ilustra a figura 7, um sistema operacional hospeda um monitor de
máquina virtual, que opera junto com as aplicações do SO. Um ou mais sistemas
operacionais rodam no VMM e podem oferecer as suas aplicações. Esse modelo é
29


mais usado em máquinas virtualizadas em desktop, e também em servidores, como
o Hyper-V e o VMware Server.




                             Figura - Máquina Virtual Tipo II
                                  (LAUREANO, 2006.)

      Laureano (2006, p.22) explica que “... o monitor do tipo II funciona de forma
análoga ao de tipo I, sendo a sua maior diferença a existência de um sistema abaixo
desse. Nesse modelo, o monitor simula todas as operações que o sistema anfitrião
controlaria”. Carmona et al (2008, p.35) confirma, “... A camada de virtualização [...]
interpreta as informações privilegiadas do sistema operacional hóspede. É
necessário porque os hóspedes não sabem que eles não têm propriedade exclusiva
sobre o hardware conforme esperado, mas precisam dividi-lo”.

      2.3.4.3 Abordagens Híbridas

      Otimizações nas arquiteturas de máquinas virtuais podem modificar o modo
como as máquinas virtuais, hardware e sistema anfitrião trabalham. Laureano (2006,
24) define essas modificações como abordagens híbridas.
      Na prática é comum aplicar técnicas para aperfeiçoar o desempenho das
arquiteturas de máquinas virtuais. Laureano (2006, p.22) define quatro otimizações:
      Em monitores do Tipo I (Figura 8):
      O sistema convidado acessa diretamente o hardware. Laureano (2006, p.23)
explica que “... essa forma de acesso se dá pela implementação de modificações no
30


núcleo do sistema convidado e no monitor. Essa otimização ocorre no subsistema de
gerência de memória do ambiente XEN”.




                         Figura - Abordagem Híbrida do Tipo I
                                   (LAUREANO, 2006)


      Em monitores do tipo II (Figura 9):
         1. O sistema convidado acessa diretamente o sistema anfitrião. Laureano
            (2006, p.23) diz que “... essa otimização é implementada pelo monitor,
            oferecendo partes da Interface de API (Interface de Programação de
            Aplicações) do sistema anfitrião ao sistema convidado. Um exemplo
            dessa técnica ocorre no sistema de arquivos do VMware, onde o
            sistema convidado faz uso da implementação de sistema de arquivos
            nativos existentes no sistema anfitrião. (LAUREANO 2006)
         2. O sistema convidado acessa diretamente o hardware. Nesse caso a
            implementação é feita parcialmente pelo monitor, e parcialmente pelo
            sistema anfitrião. Laureano (2006, P.23) afirma que o VMware usa
            essa otimização no acesso direto a dispositivos físicos, como interface
            de rede, por exemplo.
         3. O monitor acessa diretamente o hardware. Nesse caso o driver é
            instalado no sistema anfitrião, oferecendo ao monitor uma interface de
            baixo nível para acesso ao hardware. Essa abordagem é usada por
            sistemas VMware.( LAUREANO, 2006).
31




                       Figura - Abordagem Híbrida Para o Tipo II
                                  (LAUREANO, 2006)

      2.4 TÉCNICAS DE VIRTUALIZAÇÃO


      Existem várias técnicas usadas na virtualização. Favacho, Miranda e Oliveira
(2008) afirmam que as principais são a virtualização total, paravirtualização e
recompilação dinâmica. Vamos a seguir tratar dessas técnicas.


      2.4.1 Virtualização Total


      Na virtualização total, também chamada de virtualização completa ou nativa,
uma estrutura completa de hardware é virtualizada, e o sistema virtualizado não
precisa ser alterado (Laureano, 2006). Para Favacho, Miranda e Oliveira (2008,
p.20) “...a técnica de virtualização total utiliza uma simulação completa do hardware,
de modo que qualquer sistema operacional possa ser executado”.
      Entre os benefícios e dificuldades desta técnica, Laureano (2006) cita o fato
da virtualização total não sofrer alteração, mas com o agravo do sistema convidado
ser executado de forma mais lenta.
      Outro problema é que o sistema convidado precisa implementar alternativas
para que certas operações possam ser executadas em processadores que não
suportam a virtualização nativamente, o Intel 32 bits por exemplo. (Laureano, 2006).
      A Figura 10 ilustra a representação da virtualização total descrita por
Laureano.
32


      Mathews et al (2008, p.7) afirma que “ ...neste caso, o hypervisor vigia o
acesso ao hardware subjacente e dá a cada sistema operacional hóspede a ilusão
de ter sua própria cópia desse hardware”.




                      Figura - Representação da Virtualização Total
                                        (LAUREANO, 2006)



      O VMware Workstation e VMware Server trabalham nessa técnica de
virtualização, e o Xen suporta virtualização completa em arquiteturas básicas com o
suporte de hardware para a virtualização total ( MATHEWS, 2008).


      2.4.2 Paravirtualização

      Paravirtualização é uma técnica que apresenta uma API para as máquinas
virtuais. Essa API é similar, mas não idêntica ao hardware real (OLIVEIRA 2007,
p.7). Laureano (2006, p.30) diz que “o sistema a ser virtualizado sofre alterações
para que a interação com o monitor de máquinas virtuais seja mais eficiente”. Esse
cenário é ilustrado pela Figura 11.
33




                       Figura - Representação da Paravirtualização
                                       ( LAUREANO, 2006)




                     [...] Já a paravirtualização ou virtualização parcial é uma alternativa à
                     virtualização total. Somente permite a execução de sistemas operacionais
                     parcialmente adaptados e não virtualiza todos os recursos computacionais.
                     As adaptações exigidas nos sistemas hóspedes são para que eles sempre
                     passem o controle para o VMM quando forem executar uma instrução que
                     altere o estado do sistema. (Lopes; Ribeiro, 2009, p. 96).


      Na paravirtualização é necessário que os sistemas sejam adaptados
especificamente para essa técnica. Carmona (2008, p.235) explica que “... um
sistema Linux, precisa de um kernel especialmente modificado para ser executado
nessa instância (paravirtualização)”.
      Basicamente o hypervisor exporta uma versão modificada do hardware físico
subjacente. As modificações são introduzidas para facilitar e acelerar o suporte a
múltiplos sistemas operacionais hóspedes, sendo necessárias apenas pequenas
mudanças nos SO’s hóspedes. São exemplos dessa técnica o User-mode Linux e o
Xen (MATHEWS, 2008).
      A paravirtualização reduz a complexidade do desenvolvimento das máquinas
virtuais, já que historicamente os processadores não suportam a virtualização nativa
A principal razão para utilizar a paravirtualização é o desempenho obtido, uma vez
que ela compensa as modificações que serão implementadas nos sistemas
convidados. (Laureano, 2006).
34


      Mathews et al (2008, p.9) afirma que “ a escolha da paravirtualização para o
Xen tem mostrado que consegue obter maior desempenho de isolamento mesmo
em um hardware de computador pessoal típico”.

      2.4.3 Relação entre Virtualização Completa e Paravirtualização


      Na virtualização completa, a máquina real aloca um espaço físico da memória
para a máquina virtual, e a máquina virtual interpreta como se estivesse usando o
início da memória. De acordo com Laureano (2006, p.31), “... a máquina real tem um
endereçamento iniciado em 0000 até FFFF. O monitor reserva o espaço de memória
compreendido entre 000F e 00FF, mas o sistema convidado enxerga esse espaço
como sua memória total e, portanto, iniciando em 0000 e finalizando em 000F”.
Conforme ilustra a Figura 12.
      Na paravirtualização isso não ocorre, pois a máquina virtual é informada pelo
monitor qual o espaço de memória poderá ser utilizado, e o sistema convidado
acessa diretamente a memória sem interferência do monitor de máquinas virtuais
(LAUREANO, 2006).
      Na paravirtualização é preciso que os sistemas sejam adaptados, já na
virtualização total os sistemas podem ser instalados exatamente como uma máquina
convencional. (CARMONA 2008).
      Para Oliveira (2007, p.9) “a paravirtualização possui melhor desempenho que
a virtualização total. Isso se deve ao fato de os drivers de dispositivos executados
nas máquinas paravirtualizadas serem os drivers reais para os dispositivos físicos,
diferentemente dos drivers emulados na virtualização completa”.
      O mesmo processo ocorre para o acesso ao disco. Laureano (2006, P.31)
afirma que “... no processo de virtualização total o sistema enxerga o disco como seu
para uso exclusivo, na paravirtualização o sistema sabe que o disco é virtualizado”.
35




                   Figura - Alocação de Memória na Virtualização Total
                                      (LAUREANO, 2006)



      2.4.4 Recompilação Dinâmica


      A recompilação dinâmica é uma técnica usada para aumentar o desempenho
de aplicativos e sistemas.
      Segundo Laureano (2006, p.32), “com a compilação, durante a execução, o
sistema pode adequar o código gerado de forma a refletir o ambiente original do
programa. [...] Em outros casos, um sistema pode empregar a recompilação como
forma de adaptação, para executar uma representação portátil do sistema, tal como
bytecodes de Java”.
      Laureano (2006, p.32) classifica a recompilação dinâmica em sete passos.


   1. Agrupamento de bits: Um emulador ou máquina virtual pode usar o
      conhecimento sobre o formato de um executável compilado, e pelo uso de
      técnicas heurísticas, ou seja, por aproximação do objetivo, recuperar os
      conjuntos de bits do executável e reordená-los.
   2. Desmontagem: Os bits são desmontados e transformados em um conjunto
      de instruções e operadores ordenados em partes.
   3. Geração intermediária do código: As instruções são transformadas para
      uma representação de máquina independente.
   4. Decompilação: A representação gerada é transformada em uma linguagem
      de alto nível (por exemplo o “C”)
36


5. Compilação: O Código gerado é novamente compilado para a nova
  plataforma.
6. Montagem: Os códigos-objeto gerados pela compilação são novamente
  montados, preparando a criação de um novo executável.
7. Armazenagem dos bits: Os bits são agrupados de forma a gerar o novo
  executável.


  2.5 Formas de Virtualização

         Segundo Laureano (2006, p.24) “... os softwares podem ser utilizados
  para fazer os recursos parecerem diferentes do que realmente são, e essa
  capacidade é chamada de virtualização”. Além das técnicas de virtualização
  citadas nas seções anteriores, existem diversas formas de virtualizar
  diferentes recursos.


  2.5.1 Virtualização de Sistema Operacional

         Nesta forma, a virtualização exporta um sistema operacional como
  abstração de um sistema específico, como acontece com o FreeDSD
  (Laureano, 2006). A Figura 13 demonstra a arquitetura dessa forma de
  virtualização.




                    Figura - Virtualização do Sistema Operacional
                                 (LAUREANO, 2006)
37


             Mathews et al (2008, p.11) afirma que “...nessa técnica não existe
      monitor de máquina virtual, em vez disso tudo é feito inteiramente com uma
      única imagem tradicional de sistema operacional”.
             Essa técnica pode ser mais adequada em um ambiente onde cada
      hóspede deseja executar o mesmo sistema operacional (MATHEWS, 2008).


      2.5.2 Virtualização de Linguagem de Programação

      Neste caso é criada uma máquina virtual para a execução de programas
específicos. A camada de virtualização exporta uma abstração para a execução de
programas escritos para essa virtualização. Java e Smalltalk são exemplos desse
tipo de máquina virtual (LAUREANO, 2006).         A Figura 14 ilustra o conceito de
virtualização de linguagem de programação.




                  Figura - Virtualização de Linguagens de Programação
                                        (LAUREANO, 2006)



      Essa forma de virtualização pode fornecer recursos como variáveis de
ambientes, bibliotecas de interface com usuários e objetos que auxiliam na
programação de aplicativos (MATHEWS, 2008).
      Além da abstração de uma máquina virtual para rodar aplicativos específicos,
a virtualização tem um importante auxilio na construção de softwares. O
programador pode ter em sua máquina todos os ambientes para desenvolver e fazer
os testes unitários necessários, e dispor de sistemas operacionais distintos, bem
como suas versões mais antigas, prevenindo problemas com incompatibilidade. O
programador também terá acesso a um repositório de controle de códigos-fonte,
servidor de banco de dados, arquivos, componentes e etc. (Microsoft, 2007). Assim
como ilustra a Figura 15.
38




                  Figura - Ambiente de Desenvolvimento Virtualizado
                                     (MICROSOFT, 2007)



                    [...] Quando a Sun Microsystens inventou a linguagem de programação
                    Java, inventou também uma máquina virtual, denominada JVM (Java Virtual
                    Machine). O compilador produz código para a JVM que é executado por um
                    programa interpretador da JVM. A vantagem é que o código pode ser
                    enviado pela internet a qualquer computador que tenha um interpretador
                    JVM e ser executado. (TANENBAUM, 2003 p.45).



      2.5.3 Virtualização de Hardware


      A virtualização exporta o sistema físico como se fosse parte real do sistema, e
possibilita o funcionamento de softwares sem sofrer incompatibilidade. Por exemplo,
um aplicativo escrito para arquitetura x86 sendo executado em um MAC. Segundo
Laureano (2006, p. 24), “esse foi o modelo adotado na década de 1960 para o
39


VM/370 nos mainframes IBM e é a tecnologia utilizada pela VMware na plataforma
x86”. O modelo é ilustrado pela Figura 16.




                           Figura - Virtualização de Hardware
                                   (LAUREANO, 2006)



      2.5.4 Virtualização de Aplicação


      Virtualização de aplicação surge da necessidade de resolver problemas de
incompatibilidade entre aplicações no mesmo sistema operacional. Por exemplo,
uma aplicação pode exigir uma DLL (Dynamic-link library) de versão diferente que
outra aplicação vai precisar. É nesse cenário que se torna viável a virtualização de
aplicação.

                     [...] A virtualização de aplicativos resolve esse problema [incompatibilidade]
                     criando cópias específicas para a aplicação de todos os recursos
                     compartilhados. As configurações que uma aplicação pode compartilhar
                     com outras em seu sistema -- entradas de registro, DLLs específicas, e mais
                     -- são, em vez disso, empacotadas com ele e executadas no cache da
                     máquina, criando uma aplicação virtual. Quando uma aplicação virtual é
                     implantada, usa sua própria cópia desses recursos compartilhados.
                     (MICROSOFT, 2009).



      A Figura 17 ilustra a independência das aplicações em uma arquitetura de
virtualização de aplicações. No primeiro quadro as aplicações estão de forma
independente do sistema operacional para ilustrar o conceito de independência de
40


arquivos de configuração, no segundo quadro todos os aplicativos compartilham os
mesmo arquivos de configuração.




                         Figura - Virtualização de Aplicação
                                (MICROSOFT, 2009)




      2.5.5 Virtualização da Apresentação

      A virtualização da apresentação é a forma de apresentar ao usuário uma
interface configurada, que é executada em outra máquina, conforme mostra a Figura
18. A virtualização de apresentação cria seções virtuais em que as aplicações em
execução projetam suas interfaces de usuário remotamente (MICROSOFT, 2009).
Um exemplo é Terminal Server da Microsoft.




                       Figura - Virtualização de Apresentação
                                 (MICROSOFT, 2009)
41


      Segundo a Microsoft (2009), executar virtualização de apresentação pode
gerar alguns benefícios:


                •   Dados centralizados;
                •   Redução de custos. Se uma aplicação precisa ser atualizada,
                    nesse caso, só será necessário atualizar a estação do servidor,
                    pois todos os usuários acessam a mesma base;
                •   Elimina problema de incompatibilidade de sistema operacional;
                •   Melhoria de Desempenho. Em caso de máquinas mais antigas,
                    por exemplo, ao invés dessas máquinas executarem toda
                    aplicação e comunicação com o banco de dados localmente,
                    esse procedimento será realizado no servidor que disponibilizará
                    a apresentação.



      2.5.6 Virtualização da Estação de Trabalho

      A virtualização da estação de trabalho possibilita a usuários executarem em
seus computadores aplicativos não compatíveis e/ou legados, muito usados também
para criar uma máquina de testes para estudos ou mesmo para instalação de
aplicativos. Com isso, evita-se que esses aplicativos comprometam o funcionamento
normal da máquina. Usando a máquina virtual, os testes são isolados do sistema
principal. São exemplos dessa tecnologia o Microsoft Virtual PC e o VirtualBox da
Oracle. Na Figura 19 consta um exemplo de arquitetura de virtualização da estação
de trabalho.


                     [...] A virtualização de estações de trabalho hospedada por cliente cria um
                     ambiente de SO separado na estação de trabalho, permitindo que
                     aplicações de legado ou empresariais não-compatíveis operem dentro de
                     seu ambiente nativo em um sistema operacional de estação de trabalho
                     mais atual ou permitindo que dois ambientes de TI (por exemplo, particular e
                     corporativo) sejam executados simultaneamente no mesmo dispositivo
                     físico. (MICROSOFT, 2009).
42




                           Figura - Virtualização de Desktop
                                 (MICROSOFT, 2009)




      2.5.7 Virtualização de Armazenamento

      A virtualização de armazenamento é a forma de armazenar dados, de
maneira centralizada, sem que o usuário se preocupe de onde está acessando os
dados.
      Um armazenamento virtualizado permite que o armazenamento físico de um
ambiente seja compartilhado em vários servidores de aplicações, e que dispositivos
físicos por trás da camada de virtualização sejam exibidos e gerenciados sem limites
físicos (MICROSOFT, 2009).

                    [...] A virtualização de armazenamento é o processo de consolidar vários
                    dispositivos físicos de diversos fabricantes e reorganizá-los em
                    agrupamentos virtuais e lógicos, ou em unidades de armazenamento. [...] A
                    virtualização de armazenamento não é novidade, tanto no conceito quanto
                    na prática. Definida a quase 20 anos na computações em mainframes, a
                    tecnologia está descobrindo uma nova oportunidade e importância com a
                    emergência das redes SAN’s (Storage Area Network). (NEXTG, 2009).


      Um exemplo bastante simples é o redirecionamento de pastas no Windows,
que permite que as informações em uma pasta sejam armazenadas em qualquer
unidade de disco acessível pela rede (MICROSOFT, 2009).
43


       2.6 BENEFÍCIOS E DIFICULDADES DA VIRTUALIZAÇÃO



       Apesar dos inúmeros benefícios viabilizados pela virtualização, existem os
pontos negativos. Aqui abordaremos as vantagens dessa tecnologia, bem como as
dificuldades e requisitos para implementação e o custo da virtualização.

       2.6.1 Benefícios da Virtualização

       A possibilidade de aumentar a capacidade instalada sem a necessidade de
adquirir novos equipamentos, com melhor aproveitamento da estrutura disponível, é
umas das principais vantagens da virtualização, por estar relacionada diretamente à
parte econômica. Outra vantagem é a possibilidade de manutenção de sistemas
legados. A virtualização contribui para aumentar a utilização do poder computacional
dos servidores, enquanto diminui o número de plataformas físicas necessárias
(OLIVEIRA, 2008 apud WILIAMS & GARCIA, 2007).
        A virtualização aumenta a produtividade da infraestrutura, a segurança,
melhora o gerenciamento, diminui manutenção, além de economizar em recursos
humanos, físicos e consequentemente financeiros (MANARA, 2007).
       Os investimentos inerentes à implementação de uma nova solução são
rapidamente compensados pelos ganhos em economia, com a redução de consumo
de energia, espaço e equipamentos (PRODEMGE, 2009, p. 21).


                       [...] A virtualização tem aplicação eficaz em diversas frentes nas
                       organizações. A tecnologia reduz custos de aquisição de servidores físicos
                       e agrega economia significativa nos custos operacionais, especialmente de
                       consumo de energia elétrica e manutenção, ao consolidar e particionar
                       sistemas [...] cabe ressaltar ainda a rápida disponibilidade de servidores, um
                       fator que pode ser considerado crítico, especialmente nas empresas
                       públicas, sujeitas à legislação específica para compras. O aspecto
                       relacionado à continuidade do negócio da empresa também se beneficia de
                       forma expressiva com a adoção da virtualização. (PRODEMGE, 2009).




       Laureano (2006, p.35) destaca os principais benefícios ao utilizar máquinas
virtuais.
            •   Facilitar o aperfeiçoamento e testes de novos sistemas operacionais.
44


            •   Auxiliar no ensino prático de sistemas operacionais e programação, ao
                permitir a execução de vários sistemas para comparação no mesmo
                equipamento.
            •   Executar diferentes sistemas operacionais sobre o mesmo hardware
                simultaneamente.
            •   Simular configurações e situações, como por exemplo, a presença de
                outros dispositivos de Entrada/Saída.
            •   Simular alterações e falhas no hardware.
            •   Garantir a portabilidade de aplicações legadas.
            •   Desenvolvimento de novas aplicações para diversas plataformas.
            •   Diminuição de custos com Hardware.
            •   Facilidade no gerenciamento, migração e replicação de computadores,
                aplicações ou sistemas operacionais.
            •   Prover um serviço dedicado a um cliente específico com segurança e
                confiabilidade.


         Podemos destacar também a possibilidade de estudar efeitos de vírus e
outras pragas virtuais sem afetar o sistema hospedeiro, testes de atualizações ou
softwares experimentais, antes de aplicá-lo ao sistema em produção.
         A virtualização oferece alta disponibilidade, realocando hóspedes quando
uma máquina servidora se torna indisponível. A virtualização permite um melhor
aproveitamento também do hardware, em máquinas com múltiplos processadores ou
múltiplos núcleos.
         Com relação a custos com licenças de sistema operacional, a virtualização
também apresenta vantagens, uma vez que a Microsoft oferece licenças gratuitas
para máquinas virtualizadas Windows na versão Enterprise do Windows 2008, e dá
direito a quatro licenças de máquinas virtuais. Já a versão Windows 2008 Datacenter
oferece licenças ilimitadas para máquinas hóspedes virtuais (MCLEAN; THOMAS,
2010).
45


         2.6.2 Dificuldades da Virtualização

         Criar uma máquina virtual é dedicar recursos de uma máquina física para a
execução da máquina virtual e suas aplicações. Dependendo da carga esperada em
cada máquina virtual, é necessário avaliar se a queda estimada no desempenho não
terá efeitos adversos sobre as aplicações que serão executadas (MICROSOFT,
2007).
         McLean e Thomas (2010, p.324) afirmam que “... servidores com alto requisito
de I/O (Input/Output) ou alto requisito de processamento não são bons candidatos
para a virtualização”. Não adianta usar uma máquina virtual para executar uma
aplicação perto do limite de hardware da máquina física, afinal, junto com essa
aplicação terá a carga de processamento da máquina virtual, o sistema hóspede e o
sistema convidado.
         Outro fator importante é que as máquinas virtuais trabalham de forma
independente do sistema hospedeiro, então é necessário um maior gerenciamento
dos sistemas. As atualizações e licenças devem ser administradas de forma
independente, ou seja, cada máquina virtual necessita de uma licença, em caso de
softwares proprietários, e também suas aplicações. É fundamental que os seus
fornecedores de software sejam consultados antecipadamente para verificar as
políticas de licenciamento e suporte de seus produtos em ambientes virtuais
(MICROSOFT, 2007).
         O hardware hospedeiro das máquinas virtuais precisará de memória,
processamento e armazenamento suficiente para executar todos os sistemas
operacionais e seus aplicativos simultaneamente.
         Laureano (2006, p. 36) destaca algumas dificuldades de utilização da
tecnologia de virtualização em alguns casos:
               • Processador não virtualizado: A arquitetura de processadores Intel
         32 bits não permite nativamente a virtualização.
               • Diversidade    de   equipamentos:     pela   grande   quantidade   de
         equipamentos existentes, torna-se difícil os desenvolvedores de monitores de
         máquinas virtuais estarem sempre acompanhando as novidades do mercado.
               • Preexistência de softwares: os desktops normalmente vêm com um
         sistema operacional instalado e configurado. Nesses casos é importante
46


      permitir que um usuário possa utilizar a tecnologia de máquinas virtuais sem
      perder a facilidade de continuar utilizando seu sistema operacional padrão.
            Segundo Laureano (2006), a principal desvantagem é o custo adicional
de execução de processos em comparação com a máquina real, em razão de
processadores sem suporte à virtualização. Esse problema não existe em hardwares
com suporte à virtualização, como os mainframes.
      Deve-se tomar atenção especial com os processadores antes de implementar
métodos de virtualização em uma máquina. Carmona et al (2008, p.37) afirma que:

                    [...] Há pouco tempo os fabricantes de processadores do modulo x86, Intel e
                    AMD também começaram a suportar nativamente a virtualização. A Intel
                    com sua Intel Virtualization Technology (VT, codename Vanderpool) e a
                    AMD com sua AMD I/O Virtualization Technology (codename Pacífica). A
                    solução da AMD implementa funções de processador especiais, que
                    suportam o hypervisor na transferência de endereços e, além disso, pode
                    controlar em seu nome se determinados acessos de um sistema hóspede a
                    dispositivos podem ser permitido.
47


                    3 TECNOLOGIAS ATUAIS DE VIRTUALIZAÇÃO



      Nos últimos anos a indústria da tecnologia de informação está crescendo e
evoluindo muito na área de virtualização. Basta ver a Figura 2 (capítulo 2), que
mostra uma grande quantidade de fabricantes de software, lançando produtos no
mercado, cada qual com sua particularidade.
      Hoje o mercado é disputado por uma diversidade de tecnologias e produtos
de solução de virtualização e prevalece certa confusão de conceitos (CARMONA et
al 2008).
      Esse capítulo busca descrever tais particularidades, e apresentar as principais
ferramentas disponíveis no mercado atualmente. A figura 20 faz uma comparação
dos cinco sistemas de virtualização mais relevantes para esta pesquisa.




                   Figura - Comparativo Entre Algumas Ferramentas
                                 (SILVA et al, 2008)


      3.1 XEN


      O Xen é um monitor de máquina virtual do tipo I para a plataforma x86, ou
seja, aquele em que o monitor de máquina virtual é instalado diretamente no
hardware, sem que haja um sistema operacional hospedeiro. Suporta vários
48


sistemas convidados simultaneamente com bom desempenho e isolamento, é
gratuito e de código aberto. (LAUREANO, 2006).
       O Xen é um hypervisor que trabalha tanto em modo de paravirtualização,
como em modo de virtualização completa (SILVA et al, 2008). O objetivo do Xen é
suportar aplicações sem a necessidade de modificações. Ele possui acesso direto
ao hardware, e os sistemas convidados o utilizam como ponte para acessar os
recursos do hardware. Segundo Laureano (2006, p. 101) “no Xen a memória é
separada em blocos pelo monitor de máquinas virtuais e o sistema convidado pode
utilizar como quiser esses blocos, tornando o acesso à memória mais direto e
eficiente”. Os discos rígidos também são separados, tornando o acesso a ele mais
eficiente.
       O ambiente XEN suporta os sistemas Windows XP, Linux e Unix. Atualmente
várias distribuições Linux (Suse, Ubuntu, Debian) possuem suporte nativo à máquina
virtual Xen (LAUREANO, 2006). Seu código-fonte está liberado sob a licença GNU
General Public License 2 (GPL2).

       3.1.1 Histórico do Xen


       O Xen nasceu na Universidade de Cambridge, em 2001, e desde então tem
evoluído de forma significativa no cenário mundial dos monitores de máquinas
virtuais (MATHEWS et al, 2008).
       O Xen foi divulgado para o grande público pela primeira vez em 2003, em um
artigo acadêmico para o Simpósio de Princípios em Sistemas Operacionais, na
mesma universidade onde foi criado. A afirmação de ter uma solução para virtualizar
máquinas em plataformas x86 foi muito bem recebida no meio acadêmico
(MATHEWS et al 2008).
       Em 2004 foi criada a XenSource, empresa que tinha o objetivo de estimular
pesquisas e desenvolvimento. No Fim de 2004, o Xen 2.0 é lançado conseguindo
grande eficiência nas configurações de dispositivos virtuais de Entrada/Saída dos
sistemas operacionais hóspedes. Nessa versão já era possível aos usuários
configurarem regras de firewall, roteamento, pontes de interfaces de hóspedes
virtuais de rede e o live migration, que permite que uma instância do sistema
49


operacional em execução seja movida entre hardwares conectados na rede sem
interrupção do serviço.
      Em 2005 cresce o interesse pelo sistema no meio acadêmico e empresarial,
tanto que no ano seguinte o Xen já havia conseguido uma participação significativa
nas virtualizações em uso. Nesse mesmo ano é lançada a versão 3.0, onde o Xen
apresentou uma camada de abstração para tecnologias de virtualização de
hardware, oferecidas pelos novos processadores da Intel e AMD, que tinham as
tecnologias de virtualização nativa (Vandepool e Pacifica respectivamente)
(MATHEWS et al, 2008). Em 2007, a Citrix compra o Xen e lança a versão 3.1,
trazendo a possibilidade de ferramentas de gerenciamento de terceiros.
      Existem várias possibilidades de instalação do Xen e alguns aplicativos
adicionais, que serão mostrados na seções a seguir:


      3.1.2 Xen Source 4.0

      O hypervisor Xen 4.0 é um código-fonte aberto que insere uma fina camada
de software entre o sistema operacional e o hardware (XEN.ORG). Para a instalação
do hypervisor Xen é necessário ter algum sistema operacional instalado na máquina,
pois o sistema pede que sejam atualizados alguns pacotes essenciais utilizando o
comando apt-get. Em seguida é necessário obter os pacotes do Xen com o mesmo
comando, e depois recompilar o kernel, e reconfigurar o GRUB, para que o Xen
utilize a estrutura do sistema operacional para ser tornar o sistema anfitrião. Na
próxima reinicialização, o XEN aparece no menu de boot, bem como o sistema
operacional anterior sem as modificações, podendo o usuário acessar tanto o Xen
como o sistema original.
      O Xen também dispõe do XenSource na forma de liveCD, onde é fornecida
uma imagem que pode ser gravada em um CD-ROM. Com o liveCD, é possível
testar o Xen sem qualquer modificação no sistema. Segundo Mathews et al (2008,
p.30) “o liveCD executa completamente direto da memória RAM e não exige
instalação no disco rígido. Pode ser usado para testar compatibilidade de hardware
e se familiarizar com os comandos básicos do Xen”.
50


      3.1.3 XenServer 5.6


      O XenServer é um software da Citrix que oferece gerenciamento centralizado
de máquinas virtuais com inúmeros recursos, ferramentas de migração e conversão
de máquinas virtuais (CITRIX, 2010).
      A Citrix oferece treinamentos online em sua página na internet, alguns deles
gratuitos, e também suporte ao Windows e Linux. Atualmente conta com quatro
versões, sendo uma gratuita (CITRIX, 2010). A Figura 21 especifica as diferenças
entre as versões.
      O XenServer é instalado diretamente no hardware, com o arquivo
disponibilizado em formato de imagem ISO, sendo necessário ser gravado em uma
mídia de CD-ROM. O XenServer pode ser gerenciado por outra máquina que tenha
instalado o XenCenter. Mais detalhes então no capitulo 4 dessa pesquisa.




                            Figura - Versões do XenServer
                                    (CITRIX, 2010)
51



       3.1.4 Outros Produtos Xen


       XenDesktop:
       O XenDesktop é um aplicativo da Citrix que tem a função de entrega de área
de trabalho virtualizada e possibilita aos usuários acessarem sua área de trabalho
de qualquer lugar (CITRIX, 2010). O XenDesktop funciona centralizando todas as
estações de trabalho em um servidor, com apenas uma imagem, e disponibiliza para
o usuário como se fosse a máquina física, salvando sua configurações para usos
futuros.
       XenApp:
       O XenApp é um serviço de entrega de aplicativos por demanda aos usuários.
Cada aplicação fica centralizada no servidor, é virtualizada e entregue para o
usuário em qualquer local, como se fosse executada no sistema operacional local.
Possibilita o acesso de inúmeros dispositivos, computadores, thinclient’s, Palmtop’s
e aparelhos de telefone móvel.


       3.1.5 Algumas Características Relevantes do Xen

       Algumas características importantes que o Xen implementou a cada nova
versão:

           •   Agendador Xen: Divide o tempo do processamento entre processos
               que são executados em paralelo. O agendador do Xen atribui recursos
               para máquinas virtuais por tempo limitado (CARMONA 2008).
           •   Live Migration: Segundo Carmona (2008, p.44) “o Xen torna possível
               transferir hóspedes ativos de um host para o outro, sem que eles
               precisem interromper seu trabalho nesse meio tempo”.
           •   Discos Rígidos Virtuais: A partir da versão 3.0, o Xen oferece
               diferentes opções para fornecer um armazenamento virtual para
               sistemas hóspedes.
           •   Acelerador   de   Inicialização:   O   tempo   necessário   para   uma
               reinicializarão é reduzido e o procedimento normal de inicialização
               (BIOS, GRUB) é evitado.
52


          •   Padronização: Os fabricantes mais renomados de monitores de
              máquinas virtuais demonstram o desejo de uma padronização quanto
              ao gerenciamento e configurações de máquinas virtuais. Assim
              confirma Carmona (2008, p.43): “o estreito trabalho conjunto entre
              desenvolvedores do VMware e do Xen levou a que, em julho de 2006,
              tivéssemos o plano de uma interface padrão unificada para
              hypervisors”.
          •   Alta Disponibilidade: Essa é uma preocupação tanto em máquinas
              virtuais como em reais. O Xen oferece ferramentas que coordena todas
              as atividades em um cluster e facilita a administração de recursos.

      3.2 VMware

      Fundada em 1998, foi a primeira empresa a oferecer softwares para o
ambiente x86. Atualmente possui extensa linha de produtos de virtualização para
servidores e máquinas pessoais (MATHEWS et al, 2008).
      A VMware é uma empresa sinônimo de virtualização, e desde a sua fundação
apresenta soluções para a evolução das técnicas de virtualização. De acordo com
Silva et al (2008, p. 33) “O VMware instala drivers adicionais no sistema operacional
convidado e hospedeiro para otimizar o acesso dos recursos nas máquinas físicas e
virtuais”. Isso significa que o VMware já vem projetado para suprir muitas possíveis
dificuldades encontradas na implementação da máquina virtual, por exemplo, um
driver de vídeo, entre outros. A VMware disponibiliza em sua página na internet
várias máquinas virtuais prontas para serem usadas em seus softwares.
      Existem muitas versões do VMware, e para atender a cada segmento
especificamente, abaixo listamos algumas delas:


      3.2.1. VMware Player

      Versão mais simples da máquina virtual, indicada para aplicações leves ou
testes. É uma máquina virtual do tipo II, aquela em que o monitor de máquina virtual
é instalado sobre um sistema hospedeiro, disponível para o sistema Windows e
Linux (LAUREANO 2006). O VMware Player está atualmente na versão 3.12 e pode
ser baixado gratuitamente na página do fabricante na internet. A versão atual traz
53


suporte ao Windows 7, Chrome OS e às últimas versões do Linux, além de suporte
para múltiplos monitores, download automático de atualizações e a possibilidade de
impressão a partir da máquina virtual, sem a necessidade de instalação dos drivers
da impressora (VMWARE, 2010).

      3.2.2 Workstation


      Versão um pouco mais robusta que o VMware Player. O Workstation dispõe
de opções de configurações a mais, que não existem no VMware Player. Ele é
executado em 32 ou 64 bits, e a versão atual conta com suporte ao Windows 7, tem
função Flip 3D, que mostra miniaturas das máquinas virtuais em execução , além de
ter a função de arrastar e soltar arquivos da máquina física para a virtual (
VMWARE, 2010). É uma máquina virtual de tipo II, não gratuita, e está atualmente
na versão 7.1.2. De acordo com a página do fabricante na internet, pode ser usado
por 30 dias gratuitamente. A versão completa custa U$ 189.00 (WMWARE, 2010)

      3.2.3 VSphere ESX


      Versão do VMware indicada para aplicações profissionais em larga escala. É
uma máquina virtual do tipo I, e executada diretamente no hardware (LAUREANO,
2006). Segundo Silva et al (2008, p.34) “é um sistema baseado no kernel do Linux e
cria uma camada de abstração para acesso aos recursos do sistema por máquinas
virtuais”. Disponível em várias versões, atende necessidades de pequenas, médias e
grandes empresas. A versão de testes expira em 60 dias, e o valor varia conforme o
pacote, do standard, de U$ 1.318,00 até o enterprise plus, que custa U$ 4.369,00
(WMWARE, 2010).


      3.2.4 VSphere Hypervisor (ESXi)


      A VMware criou a versão VSphere Hypervisor (ESXi) totalmente gratuita. É
uma edição livre da linha VSphere, e não possui os recursos como live migration,
presente na versão comercial (SILVA et al, 2008), mas pode ser comprado
separadamente e adicionado ao ESXi. O suporte e treinamento é oferecido pela
VMware, porém são cobrados.
54


         Utilizando a ferramenta    VMware Converter, vendido separadamente, é
possível utilizar máquinas virtuais criadas por outros softwares como Virtual Server e
Virtual PC da Microsoft, e também do VMware Server.


         3.2.5 VMware Server

         O VMware Server é uma plataforma de virtualização que trabalha como uma
aplicação em qualquer hardware e particiona um servidor físico em várias máquinas
virtuais ( VMWARE, 2010), portanto é uma máquina virtual do tipo II, e distribuída de
forma gratuita. A VMware recomenda a utilização do VMware Server para avaliação
de virtualização de servidores pela primeira vez, avaliar softwares em máquinas
virtuais e também testes e desenvolvimento de softwares em diferentes ambientes
de TI.
         Algumas características destacadas pela VMware sobre esse produto
(VMWARE, 2010):
            •   Instala como uma aplicação, instalação simples, orientada por um
                assistente.
            •   Interface web de gestão
            •   Funciona em qualquer hardware x86
            •   Funciona sobre uma ampla variedade de sistemas Linux e Windows
                como hospedeiro e convidado.
            •   Permite que uma única máquina virtual abranja até dois processadores


         A Figura 22 destaca as principais diferenças entre as duas opções gratuitas
da VMware para servidores, o VMware Server e o ESXi.
55




                   Figura - Comparativo entre VMware Server e ESXi
                                  (VMWARE, 2010)



      3.3 Outras Tecnologias disponíveis para Virtualização


      As maiores empresas da área de TI estão cada vez mais investindo em
softwares de virtualização, e as comunidades de software livre não ficam atrás, na
atualidade temos inúmeras opções para cada caso especifico. Nessa seção serão
abordados alguns dos demais softwares disponíveis no mercado.


      3.3.1 VirtualBox

      O VirtualBox é um software da Oracle, de código aberto, sob os termos da
GPL (General Public License), pode ser instalado em Windows, Linux, Solaris e
Macintosh, e tem suporte a um grande número de sistemas convidados
(VIRTUALBOX.ORG, 2010).
56


      Segundo Silva et al (2008, p.35), “o VirtualBox utiliza partes de outros
sistemas virtualizadores, como o QEMU e o BOCHS, para base de seu
funcionamento”.
      O sistema pode ser adquirido gratuitamente no site do fabricante e atualmente
está na versão 3.2.10. De interface simplificada, oferece uma boa opção para quem
está iniciando nos processos de virtualização, pois é equivalente ao VMware
Workstation.

      3.3.2 Virtual Server


      Virtual Server é a ferramenta da Microsoft para competir no mercado de
virtualização de servidores. É uma máquina virtual do tipo II e precisa ser instalada
em algum sistema operacional da família Server, da Microsoft (Windows 2000,
Windows 2003) (LAUREANO, 2006).
      O Virtual Server é um software gratuito e encontrado em duas versões: o
Virtual Server 2005 Enterprise (até 32 processadores físicos) e o Virtual Server 2005
Standard (até quatro processadores) (MICROSOFT, 2010). A Figura 23 demonstra o
modelo de arquitetura do Virtual Server. Neste exemplo, o Virtual Server é
executado sobre o Windows Server 2003, com duas máquinas virtuais e suas
aplicações.




                                Figura - Virtual Server
                                 (MICROSOFT, 2009)
57


         3.3.3 Virtual PC

         O VirtualPc é um software da Microsoft, lançado em 2003, que suporta o
sistema operacional Windows sobre os Computadores Macintosh. O Virtual PC é
uma máquina virtual do tipo II e precisa de um sistema hospedeiro (LAUREANO
2006).
         Atualmente o VirtualPc suporta todas as versões do Windows, MS-DOS,
Linux, OS/2, entre outros (FAVACHO;MIRANDA;OLIVEIRA, 2008). É distribuído de
forma gratuita pela Microsoft, porém a versão para Macintosh está disponível
comercialmente (MATHEWS, 2008).


         3.3.4 Hyper-V


         O Hyper-V é um sistema de virtualização nativo do Windows 2008 Server, que
permite executar computadores virtualizados sob as versões x64, e é considerado
uma evolução do Virtual Server 2005. Contudo, ele teve uma importante modificação
em relação ao Virtual Server, com a incorporação direta do Hyper-V no sistema
operacional, e não no hardware, como é o caso do Virtual Server (MCLEAN;
THOMAS, 2010).
         O Hyper-V é a aposta da Microsoft para o cenário da virtualização, e dispõe
de diversas características interessantes, como o snapshot, que permite reverter
uma instância anterior de um sistema operacional bem mais rapidamente do que
seria se tivesse que reinstalar o sistema. Conta também com a tecnologia Live
Migration, possibilitando a migração de uma máquina virtual, sem que o usuário
conectado perca seus dados. O Hyper-V usa o mesmo formato de arquivos de
máquinas virtuais do Virtual Server 2005, o VHD, ou seja, pode-se migrar uma
máquina virtual de um servidor antigo para o Hyper-V tranquilamente. (MICROSOFT,
2010).
         Junto com o Hyper-V a Microsoft dispõe o Virtual Server Migration Toolkit,
uma ferramenta capaz de fazer a migração de um sistema operacional instalado
fisicamente no modo tradicional, para uma máquina virtual, trazendo todas as suas
configurações e aplicativos, sem quaisquer mudanças, salvas em arquivos XML.
58


      Para servidores de grande porte, a Microsoft dispõe do System Center Virtual
Machine Manager, que oferece mais segurança e confiabilidade em relação ao
Virtual Server Migration Toolkit. Essa ferramenta necessita alto investimento em
infraestrutura e um banco de dados SQL Server, para armazenar os dados e
configurações das máquinas a serem migradas. As duas ferramentas de migração
da Microsoft são compatíveis com Hyper-V e Virtual Server 2005 (MCLEAN;
THOMAS, 2010).
      O Hyper-V possui um console de gerenciamento que possibilita gerenciar
redes virtuais, editar e inspecionar discos, criar, reverter e excluir Snapshots ,editar
as configurações de máquinas virtuais individualmente e configurar balanceamento
de processador. Neste caso é possível determinar a carga de processamento para
cada máquina virtual ou atribuir um peso relativo, onde o Hyper-V calcula quanto de
processamento a máquina virtual necessita e aloca essa quantidade, economizando
recursos. (MCLEAN; THOMAS, 2010).


      3.3.5 QEMU


      O QEMU é dos virtualizadores mais complexos hoje existentes, mas que
suporta várias maneiras de execução (SILVA et al, 2008). Laureano (2006, p.108)
afirma que “o QEMU é um emulador de processador [...] o emulador converte partes
do código para que o processador execute o conjunto de instruções”. Isso torna o
QEMU bastante dependente do processador.
      O QEMU pode trabalhar em dois modos de operação: emulação total e no
modo usuário. Na emulação total se processa o sistema completo, incluindo o
processador, e pode ser utilizada para executar vários sistemas operacionais. Na
emulação no modo usuário, disponível apenas para Linux, é possível executar
programas Linux para outra plataforma, como o PowerPC, por exemplo,
(LAUREANO, 2006).
      O QEMU é uma ótima opção para executar aplicativos dos Windows no Linux,
pois é um software livre e gratuito. Sua desvantagem se diz respeito à velocidade,
uma vez que por ser um emulador, ele fornece ao sistema convidado todas as
instruções necessárias, deixando os processos mais lentos do que em máquinas
virtuais em geral (LAUREANO, 2006).
59


          3.3.6 Kernel-based Virtual Machine


          O KVM é um software de virtualização livre e gratuito para Linux, projetado
para permitir emulação de hardware completa, na medida necessária para inicializar
muitos sistemas operacionais de computadores na forma não modificada. (IBM,
2010).
          Segundo Mathews et al (2008, p.22), “a KVM é uma modificação do núcleo do
Linux que efetivamente o transforma em um hypervisor quando se acrescenta um
módulo adicional”.
          Cada hóspede é executado no espaço do usuário do sistema hospedeiro, por
essa razão cada instância hóspede parece como um processo normal para o kernel
hospedeiro, causando um isolamento mais fraco da máquina virtual, em relação às
outras tecnologias já abordadas (MATHEWS, 2008).
          Usando KVM, é possível executar várias máquinas virtuais com imagens do
Linux, Windows ou Mac. Cada máquina virtual tem hardware virtualizado particular,
como placa de rede, disco, placa de vídeo e etc. (IBM, 2010).

                       [...] Um processo normal, executando em Linux, possui dois modos de
                       execução: Kernel Mode (modo kernel) e User Mode (modo usuário). Porém,
                       por uma máquina virtual precisa de mais prioridade do que um processo
                       normal, e por ser, também, bem mais complexa que um aplicativo comum, é
                       adicionado um terceiro modo de execução: o guest mode (modo
                       Convidado). (SILVA et al, 2008, p. 31).


          Silva et al (2008, p. 30) afirma que “integrado ao kernel, o KVM suporta
automaticamente todos os dispositivos de hardware que funcionam com Linux”.
          O KVM é integrado ao kernel e não abaixo dele, fazendo com que cada
máquina virtual seja um processo normal no sistema operacional. A Figura 24 ilustra
a arquitetura do KVM. Na terminologia do KVM, os guest são máquinas virtuais
comuns e o privileged-guest é a máquina destinada ao gerenciamento (SILVA et al,
2008). O KVM utiliza o QEMU para promover a abstração de hardware na máquina
virtual


                       [...] O modulo KVM emprega um controlador de dispositivo com novas
                       características para expor hardware virtual para as instâncias hóspedes
                       através da entrada /dev/kvm no sistema de arquivos do hypervisor. Os
                       hóspedes KVM então acessam o hardware virtual via um processo QEMU
                       ligeiramente modificado. (MATHEWS et al, 2008, p. 24).
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen

Weitere ähnliche Inhalte

Was ist angesagt?

K19 k52-desenvolvimento-web-com-struts
K19 k52-desenvolvimento-web-com-strutsK19 k52-desenvolvimento-web-com-struts
K19 k52-desenvolvimento-web-com-strutsCaique Moretto
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Robson Silva Espig
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cppTiago
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantesCaique Moretto
 
K19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvcK19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvcCaique Moretto
 
K19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidK19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidCaique Moretto
 
K19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi
K19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdiK19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi
K19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdiCaique Moretto
 
Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16Caique Moretto
 
K19 k23-integracao-de-sistemas-com-webservices-jms-e-ejb
K19 k23-integracao-de-sistemas-com-webservices-jms-e-ejbK19 k23-integracao-de-sistemas-com-webservices-jms-e-ejb
K19 k23-integracao-de-sistemas-com-webservices-jms-e-ejbVinicius Fonseca
 
K19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernateK19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernateCaique Moretto
 
K19 k51-design-patterns-em-java
K19 k51-design-patterns-em-javaK19 k51-design-patterns-em-java
K19 k51-design-patterns-em-javaCaique Moretto
 
K19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptK19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptJandirlei Feliciano
 
Programando ooo b
Programando ooo bProgramando ooo b
Programando ooo bvangney
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)gsabatke
 

Was ist angesagt? (19)

K19 k52-desenvolvimento-web-com-struts
K19 k52-desenvolvimento-web-com-strutsK19 k52-desenvolvimento-web-com-struts
K19 k52-desenvolvimento-web-com-struts
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)
 
Power Point
Power PointPower Point
Power Point
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cpp
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantes
 
135 sistemas operacionais
135 sistemas operacionais135 sistemas operacionais
135 sistemas operacionais
 
K19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvcK19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvc
 
OpenLDAP
OpenLDAPOpenLDAP
OpenLDAP
 
K19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidK19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-android
 
K19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi
K19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdiK19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi
K19 k22-desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi
 
Photoshop cs3
Photoshop cs3Photoshop cs3
Photoshop cs3
 
Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16
 
K19 k23-integracao-de-sistemas-com-webservices-jms-e-ejb
K19 k23-integracao-de-sistemas-com-webservices-jms-e-ejbK19 k23-integracao-de-sistemas-com-webservices-jms-e-ejb
K19 k23-integracao-de-sistemas-com-webservices-jms-e-ejb
 
K19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernateK19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernate
 
Programacao em java
Programacao em javaProgramacao em java
Programacao em java
 
K19 k51-design-patterns-em-java
K19 k51-design-patterns-em-javaK19 k51-design-patterns-em-java
K19 k51-design-patterns-em-java
 
K19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptK19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascript
 
Programando ooo b
Programando ooo bProgramando ooo b
Programando ooo b
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)
 

Ähnlich wie Virtualizacao de Servidores: Um comparativo entre VMware e Xen

A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...Marcelo Dieder
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURASabrina Mariana
 
Virtualização
VirtualizaçãoVirtualização
VirtualizaçãoSubao
 
DissertacaoMScValterFinal20070216
DissertacaoMScValterFinal20070216DissertacaoMScValterFinal20070216
DissertacaoMScValterFinal20070216Valter Inacio Jr.
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaJooMarcos614503
 
Javascript
JavascriptJavascript
JavascriptTiago
 
Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02a2m
 
Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13Moisés Moura
 
Jspservlets
JspservletsJspservlets
JspservletsTiago
 
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM SocialTrabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM SocialJuliana Fideles
 
Cópia de apostila nova curso idosos
Cópia de apostila nova curso idososCópia de apostila nova curso idosos
Cópia de apostila nova curso idososPaulo Rosa
 
Relatório de Estágio da Graduação
Relatório de Estágio da GraduaçãoRelatório de Estágio da Graduação
Relatório de Estágio da GraduaçãoMaurício Linhares
 
Intro redes
Intro redesIntro redes
Intro redesTiago
 
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosDissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosJuliana Chahoud
 
Implementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsImplementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsEdward David Moreno
 

Ähnlich wie Virtualizacao de Servidores: Um comparativo entre VMware e Xen (20)

A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
 
Poojava
PoojavaPoojava
Poojava
 
Virtualização
VirtualizaçãoVirtualização
Virtualização
 
DissertacaoMScValterFinal20070216
DissertacaoMScValterFinal20070216DissertacaoMScValterFinal20070216
DissertacaoMScValterFinal20070216
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Samba
SambaSamba
Samba
 
Javascript
JavascriptJavascript
Javascript
 
Guia Ubuntu Server
Guia Ubuntu ServerGuia Ubuntu Server
Guia Ubuntu Server
 
Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02
 
Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13
 
Jspservlets
JspservletsJspservlets
Jspservlets
 
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM SocialTrabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
 
Cópia de apostila nova curso idosos
Cópia de apostila nova curso idososCópia de apostila nova curso idosos
Cópia de apostila nova curso idosos
 
Relatório de Estágio da Graduação
Relatório de Estágio da GraduaçãoRelatório de Estágio da Graduação
Relatório de Estágio da Graduação
 
Intro redes
Intro redesIntro redes
Intro redes
 
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosDissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
 
Implementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufsImplementacao e desempenho da virtualizacao no dcomp ufs
Implementacao e desempenho da virtualizacao no dcomp ufs
 
Tutorial java
Tutorial javaTutorial java
Tutorial java
 
Apostila Java
Apostila JavaApostila Java
Apostila Java
 

Virtualizacao de Servidores: Um comparativo entre VMware e Xen

  • 1. Centro Universitário de Maringá ALAN BRUMATE VIRTUALIZAÇÃO DE SERVIDORES: UM COMPARATIVO ENTRE VMWARE E XEN Maringá 2010
  • 2. 2 ALAN BRUMATE VIRTUALIZAÇÃO DE SERVIDORES Monografia apresentada ao Curso de graduação em Redes de Computadores, do Centro Universitário de Maringá, como requisito parcial para a obtenção do título de Tecnólogo, sob orientação do professor José Valderlei da Silva. Maringá 2010
  • 3. 3 Aos meus pais, Vanda e Adelcino, pelo amor e dedicação em toda a minha vida, responsáveis diretos pela realização desse objetivo.
  • 4. 4 AGRADECIMENTOS Aos professores por todo conhecimento passado durante a graduação, em especial ao Luiz Artur, pela orientação na primeira metade do trabalho, ao Ludisleno, pelas dicas iniciais, no momento que estava definindo qual seria o tema da pesquisa, e em especial ao Vander (Jesus), que assumiu a orientação já na reta final e contribuiu de forma decisiva para que esse trabalho fosse concluído. Aos colegas da graduação pelos anos de boa convivência, em especial a Eliezer Oliveira, companheiro e parceiro durante os desafios da graduação. Às pessoas que fazem parte da minha vida, meu irmão Adevan e à Rubia Pimenta por todo amor, dedicação e paciência nesse período de tantos desafios da minha vida.
  • 5. 5 “O segredo do sucesso é a constância do propósito”. Benjamin Disraeli
  • 6. 6 RESUMO A virtualização no âmbito da informática visa utilizar uma máquina física para executar diversos sistemas operacionais. Esta pesquisa tem o objetivo de demonstrar as diversas formas e técnicas de virtualização, percorrer sua história e sua evolução no cenário da tecnologia da informação e demonstrar na prática como é possível reduzir custos e ganhar desempenho. Para isso foram comparadas duas tecnologias disponíveis no mercado: o VMware e o Xen. Foi realizado um estudo sobre todas as práticas usuais de virtualização e as atuais versões das duas ferramentas citadas acima. Foram utilizados critérios de desempenho, custos, entre outros, para avaliar o comparativo entre as ferramentas. Os principais resultados obtidos foram que a virtualização é uma importante alternativa para as empresas melhorar o aproveitamento dos seus recursos, e que cada vez mais as empresas de virtualização estão disponibilizando mais facilidades e opções para a implantação da virtualização. Palavras-Chave: Virtualização, VMware, Xen
  • 7. 7 LISTA DE FIGURAS Figura 1 - Virtualização de Desktop .......................................................................... 19 Figura 2 - Evolução Histórica da Virtualização .......................................................... 23 Figura 3 - Alguns Sistemas Existentes ...................................................................... 24 Figura 4 - Sistemas Incompatíveis ............................................................................ 25 Figura 5 - A Camada de Compatibilidade ................................................................. 25 Figura 6 - Máquina Virtual Tipo I ............................................................................... 28 Figura 7 - Máquina Virtual Tipo II .............................................................................. 29 Figura 8 - Abordagem Híbrida do Tipo I .................................................................... 30 Figura 9 - Abordagem Híbrida Para o Tipo II ............................................................ 31 Figura 10 - Representação da Virtualização Total .................................................... 32 Figura 11 - Representação da Paravirtualização ...................................................... 33 Figura 12 - Alocação de Memória na Virtualização Total .......................................... 35 Figura 13 - Virtualização do Sistema Operacional .................................................... 36 Figura 14 - Virtualização de Linguagens de Programação ........................................ 37 Figura 15 - Ambiente de Desenvolvimento Virtualizado ............................................ 38 Figura 16 - Virtualização de Hardware ...................................................................... 39 Figura 17 - Virtualização de Aplicação ...................................................................... 40 Figura 18 - Virtualização de Apresentação ............................................................... 40 Figura 19 - Virtualização de Desktop ........................................................................ 42 Figura 20 - Comparativo Entre Algumas Ferramentas .............................................. 47 Figura 21 - Versões do XenServer ............................................................................ 50 Figura 22 - Comparativo entre VMware Server e ESXi ............................................ 55 Figura 23 - Virtual Server .......................................................................................... 56 Figura 24 – KVM ....................................................................................................... 60 Figura 25 - Configuração do VMware Server ............................................................ 67 Figura 26 - XenServer ............................................................................................... 68 Figura 27 - Tela de Login do VMware Server ............................................................ 69 Figura 28 - Tela Principal do VMware Server ............................................................ 70 Figura 29 - XenCenter ............................................................................................... 71 Figura 30 - Servidor Conectado no XenCenter ......................................................... 71
  • 8. 8 Figura 31 - Tela de Revisão das Configurações do VMware Server ......................... 73 Figura 32 - SO's Executando no XenServer.............................................................. 74 Figura 33 - Teste 1 - Ping .......................................................................................... 76 Figura 34 - Teste 2 - Recovery .................................................................................. 76 Figura 35 - Teste 3 - Vacuum .................................................................................... 77 Figura 36 - Teste 4 – Conversão de Video ................................................................ 77
  • 9. 9 LISTA DE TABELAS Tabela 1 - Custos ...................................................................................................... 64 Tabela 2 - Materiais de Consulta............................................................................... 64 Tabela 3 - Aquisição.................................................................................................. 65 Tabela 4 - Suporte a Hardware ................................................................................. 66 Tabela 6 - Instalações ............................................................................................... 68 Tabela 7 - Configurações Especiais .......................................................................... 72 Tabela 8 - Instalação das Máquinas Virtuais ............................................................. 74
  • 10. 10 LISTA DE SIGLAS AMD Advanced Micro Devices API Application Programming Interface BIOS Basic Input/Output System BSD Bekerley Software Distribuition CD-ROM Compact Disk Read Only Memory CP Control Program CPD Centro de Processamento de Dados CPU Central Processing Unit DLL Dynamic-Link Library DVD Digital Video Disk GB Giga-Byte GPL General Public License GRUB Grand Unified Bootloader IBM International Business Machines I/O Input/Output JVM Java Virtual Machine KVM Kernel-based Virtual Machine MB Mega-Byte MVP Mobile Virtualization Platform PC Personal Computer PowerPC Power Optimization Enhanced Risc RAM Random Access Memory RMVB Real Media Variable Bitrate SAN Storage Area Networks SMP Symmetric Multi-Processing SO Sistema Operacional TI Tecnologia da Informação UML User-Mode Linux USB Universal Serial Bus VM Virtual Machine VMM Virtual Machine Monitor
  • 11. 11 XML Extensible Markup Language
  • 12. 12 SUMÁRIO INTRODUÇÃO .......................................................................................................... 14 1.1 MOTIVAÇÃO ....................................................................................................... 15 1.2 OBJETIVOS ........................................................................................................ 15 1.3 ORGANIZAÇÃO DA MONOGRAFIA .................................................................. 16 2 CONCEITOS DE VIRTUALIZAÇÃO ...................................................................... 17 2.1 DEFINIÇÃO DE MÁQUINAS VIRTUAIS ............................................................. 18 2.2 HISTÓRICO DA VIRTUALIZAÇÃO ..................................................................... 20 2.3 UTILIZAÇÃO DE MÁQUINAS VIRTUAIS ............................................................ 23 2.3.1 Monitor de Máquina Virtual ........................................................................... 26 2.3.2 Emuladores e Máquinas Virtuais .................................................................. 26 2.3.3 Tipos de Emuladores ..................................................................................... 27 2.3.4 Tipos de Máquinas Virtuais ........................................................................... 27 2.3.4.1 Máquinas Virtuais - Tipo I ............................................................................... 28 2.3.4.2 Máquinas Virtuais - Tipo II .............................................................................. 28 2.3.4.3 Abordagens Híbridas ........................................................................................ 29 2.4 TÉCNICAS DE VIRTUALIZAÇÃO ....................................................................... 31 2.4.1 Virtualização Total .......................................................................................... 31 2.4.2 Paravirtualização ............................................................................................ 32 2.4.3 Relação entre Virtualização Completa e Paravirtualização ........................ 34 2.4.4 Recompilação Dinâmica ................................................................................ 35 2.5 FORMAS DE VIRTUALIZAÇÃO.......................................................................... 36 2.5.1 Virtualização de Sistema Operacional .......................................................... 36 2.5.2 Virtualização de Linguagem de Programação ............................................. 37 2.5.3 Virtualização de Hardware ............................................................................. 38 2.5.4 Virtualização de Aplicação ............................................................................ 39 2.5.5 Virtualização da Apresentação ..................................................................... 40 2.5.6 Virtualização da Estação de Trabalho .......................................................... 41 2.5.7 Virtualização de Armazenamento ................................................................. 42 2.6 BENEFÍCIOS E DIFICULDADES DA VIRTUALIZAÇÃO ..................................... 43 2.6.1 Benefícios da Virtualização ........................................................................... 43 2.6.2 Dificuldades da Virtualização ........................................................................ 45
  • 13. 13 3 TECNOLOGIAS ATUAIS DE VIRTUALIZAÇÃO ................................................... 47 3.1 XEN ..................................................................................................................... 47 3.1.1 Histórico do Xen ............................................................................................. 48 3.1.2 Xen Source 4.0 ................................................................................................ 49 3.1.3 XenServer 5.6.................................................................................................. 50 3.1.4 Outros Produtos Xen ..................................................................................... 51 3.1.5 Algumas Características Relevantes do Xen ............................................... 51 3.2 VMWARE ............................................................................................................ 52 3.2.1. VMware Player ............................................................................................... 52 3.2.2 Workstation..................................................................................................... 53 3.2.3 VSphere ESX................................................................................................... 53 3.2.4 VSphere Hypervisor (ESXi)............................................................................ 53 3.2.5 VMware Server ................................................................................................ 54 3.3 OUTRAS TECNOLOGIAS DISPONÍVEIS PARA VIRTUALIZAÇÃO ................... 55 3.3.1 VirtualBox ....................................................................................................... 55 3.3.2 Virtual Server .................................................................................................. 56 3.3.3 Virtual PC ........................................................................................................ 57 3.3.4 Hyper-V............................................................................................................ 57 3.3.5 QEMU............................................................................................................... 58 3.3.6 Kernel-based Virtual Machine ....................................................................... 59 3.3.7 User-Mode Linux (UML) ................................................................................. 60 4 FERRAMENTAS E CENÁRIOS UTILIZADOS ...................................................... 62 4.1 AMBIENTE DE REALIZAÇÃO DOS TESTES ..................................................... 62 4.2 DESCRIÇÃO DOS TESTES ............................................................................... 63 4.3 COMPARAÇÕES ................................................................................................ 63 CONCLUSÕES ......................................................................................................... 79 REFERÊNCIAS ......................................................................................................... 81
  • 14. 14 INTRODUÇÃO Buscando soluções para aumentar a agilidade dos negócios e redução de custos, as empresas começaram a considerar a virtualização como a solução de seus problemas com infra-estrutura. (MANARA, 2007). Para Favacho, Miranda e Souza (2008, p.13) “no decorrer dos anos muitos serviços foram informatizados exigindo que as empresas investissem na capacidade ocupacional”. A tecnologia aumenta a capacidade de trabalho, fazendo com que um computador faça o serviço de muitos, sem que seja necessário investir mais em recursos físicos, aliviando, assim, a demanda de espaço, custos com energia elétrica e futura reposição de hardware. Conforme Carmona et al (2008, p.23) “computadores virtuais economizam a aquisição de periféricos físicos e necessitam ao mesmo tempo de menos espaço, energia elétrica e resfriamento”. As empresas passaram a encarar os custos com a energia elétrica e o impacto do consumo excessivo sobre o meio ambiente como algo mais do que preocupações triviais (CARMONA, 2008). Ou seja, aumentar a capacidade de trabalho, com equipamentos que estão disponíveis, de forma econômica e funcional. No início, o processo de virtualização era viável apenas para grandes empresas. Devido à crescente pesquisa de novas tecnologias, tornou-se acessível para pequenas e médias empresas. Segundo Laureano (2006, p.15) “a utilização de máquinas virtuais está se tornando uma alternativa para vários sistemas de computação pelas vantagens em custos e portabilidade, inclusive em sistemas de segurança”. Embora a virtualização seja relativamente nova em pequenas e médias empresas, seus benefícios têm sido vistos com bons olhos pelas organizações. O Gartner Inc. (instituto de pesquisa de tecnologia de informação) prevê que até 2012 a maioria das empresas de porte médio considerará a virtualização de 100% de seus servidores, impulsionadas, sobretudo, pela economia gerada na consolidação destes equipamentos (NEIVA, 2010). Entretanto, o processo de virtualização demanda planejamento e estratégia. Uma mudança na estrutura de TI deve ser muito bem analisada, pois não se pode
  • 15. 15 deixar levar-se por tendências, sem que elas agreguem resultados positivos. Segundo Carmona et al (2006, p. 29). “Juntar-se cegamente ao boom não é uma boa estratégia, mas em vez disso, vale calcular os possíveis benefícios”. 1.1 MOTIVAÇÃO Devido à adoção crescente de virtualização por parte das empresas, essa pesquisa tem como motivação principal discutir essa técnica e trazer algumas conclusões para aqueles que buscam implantar soluções e conhecer algumas ferramentas utilizadas na atualidade. O Xen desponta como uma boa opção para aqueles que são adeptos de software livre. Carmona (2008, p.42) diz que ”... suportado por uma grande comunidade de usuários, a atual alta instância para soluções de virtualização é, em geral, e certamente a mais famosa alternativa de código aberto para este fim, o Xen se esforça para ser aceito no mundo Linux”. O movimento de código aberto participa ativamente da criação de ferramentas para o setor de virtualização: basta ver que o Xen é sinônimo de virtualização de alto desempenho em servidores desde o início de 2006. (CARMONA, 2008). Por outro lado, o VMware, de código proprietário, é uma das opções mais aderidas para virtualizar ambientes. O VMware é hoje a máquina virtual para plataforma x86 de uso mais difundido. (LAUREANO, 2006). Tendo em vista a grande possibilidade de uso desses fabricantes, o trabalho busca pesquisar as soluções disponibilizadas pelos dois sistemas citados anteriormente e trazer seus benefícios, pontos negativos e particularidades. 1.2 OBJETIVOS Esta pesquisa tem como objetivo discutir e apresentar ferramentas para a virtualização de servidores, analisando duas das principais opções no mercado atualmente. No final serão apresentadas algumas conclusões. Para isso seguiremos as seguintes metodologias:
  • 16. 16 o Realizar estudo sobre a história da virtualização, bem como a evolução do seu uso comercial, por meio de pesquisa bibliográfica, materiais disponibilizados pelos fabricantes dos sistemas abordados e sites específicos, traçando sua evolução no mercado em todos esses anos. o Instalar o Citrix XenServer e o VMware em uma máquina de testes, com o intuito de analisar as características de cada um. Fazer um comparativo entre os dois verificando custos, benefícios, limitações, requisitos necessários para instalação e desempenho por meio de testes reais. 1.3 ORGANIZAÇÃO DA MONOGRAFIA Essa pesquisa é composta por seis capítulos, cuja estrutura encontra-se segmentada da seguinte forma: o capítulo dois mostra a fundamentação teórica de sistemas de virtualização, bem como suas vantagens, desvantagens, história, conceitos de máquinas virtuais, emuladores e suas diferenças. Ainda demonstra os tipos e técnicas de virtualização, as principais dificuldades e etapas do processo de virtualização e o cenário atual. O capítulo três expõe as principais tecnologias presentes no mercado e suas características mais marcantes, dando ênfase para os sistemas chaves desse trabalho, o VMware e o Xen. Também serão abordadas outras opções disponíveis no mercado e sua importância no tema. No capítulo quatro é apresentado o ambiente proposto, a solução, a demonstração prática e os resultados obtidos nos testes. Finalmente o capítulo cinco traz conclusões a respeito do trabalho desenvolvido e propõe sugestões para trabalhos futuros.
  • 17. 2 CONCEITOS DE VIRTUALIZAÇÃO De acordo com o dicionário online Aurélio (2010), virtual é: “Que não se realizou, mas é suscetível de realizar-se; potencial”, e ainda de acordo com o mesmo dicionário, “realidade virtual é simulação de um ambiente real por meio de imagens de síntese tridimensionais”. O termo “virtualização”, usado nessa pesquisa, trata de uma forma mais específica de elementos virtuais. Aqui trataremos de virtualização de máquinas, sistemas operacionais e aplicativos (em especial de servidores de sistemas operacionais), de que forma a indústria da tecnologia da informação se desenvolveu ao longo da história para apresentar ferramentas cada vez mais capazes de gerenciar um sistema como se fosse real, e como surgiu essa necessidade. Não é raro presenciarmos Centro de Processamento de Dados (CPD) super lotados de máquinas, periféricos, monitores, entre outros. Todo esse equipamento demanda estrutura elétrica e de resfriamento, e quanto mais equipamentos, maior a necessidade de manutenção. “A virtualização vem também ao encontro das premissas de sustentabilidade expressas na “TI verde”, movimento que busca dotar as organizações de ações voltadas para o meio ambiente, com foco no uso consciente de recursos.” (PRODEMGE, 2009, p.20) Com a virtualização, as organizações se deram conta que é possível reduzir custos e espaço sem perder poder de processamento. A virtualização surgiu e rapidamente ganhou notoriedade nas empresas pelo fato de trazer tantos benefícios, alta disponibilidade, diminuição de cabeamento e consumo de energia, ganho de espaço, entre outras vantagens, com pouco investimento. No artigo para o site Decision Report, Daniel Neiva, Diretor de Vendas para Pequenas e Médias Empresas da Dell América Latina, afirma que “... a virtualização é uma das mais interessantes tecnologias surgidas nos últimos anos. No mundo empresarial, é a última palavra em faça mais com menos” (NEIVA, 2010). Devido à possibilidade de aumentar a capacidade instalada, sem adquirir novos equipamentos. A máquina virtual pode possuir seu próprio sistema operacional, memória virtual, espaço de armazenamento e seus periféricos. Davis (1990, p.445) afirma que
  • 18. 18 “para o usuário, a máquina virtual é o computador, os aspectos relativos à máquina real são transparentes, ocultos pelos recursos do sistema operacional real”. Dessa forma, a máquina virtual é para o usuário uma máquina real, mas por trás estão inúmeros recursos que podem ser explorados pelos seus administradores. 2.1 DEFINIÇÃO DE MÁQUINAS VIRTUAIS A máquina virtual funciona como uma cópia exata de uma máquina real, incluindo seus recursos de hardware, com a diferença que trabalha com esses recursos de forma isolada. Laureano (2006, p.17) define máquina virtual (virtual machine – VM) como sendo “uma duplicata eficiente e isolada de uma máquina real [...] a IBM (International Business Machines) definiu a máquina virtual como uma cópia isolada de um sistema físico”. [...] “na virtualização, informamos a processadores e outros recursos, presentes fisicamente em uma única máquina virtual de que eles podem fazer parte de outras máquinas, cada qual com um sistema operacional e configurações diversas. (CARMONA et al, 2008, p.16). Mesmo sendo dependente de outro sistema operacional, que faz essa máquina virtual funcionar, a máquina virtual opera como se fosse independente, com seu próprio drive de CD-ROM (Compact Disk Read Only Memory), sua própria entrada USB (Universal Serial Bus), sua própria memória e etc. Cada máquina virtual tem seu próprio sistema operacional virtual e seus próprios periféricos virtuais (DAVIS, 1990). O sistema operacional real trabalha fazendo a comunicação com os componentes do hardware, e qualquer outro dispositivo móvel por meio de seu kernel. Para Alves (2006, p.16), “O kernel é responsável pelo gerenciamento básico das funções do sistema operacional, que supre todas as funções necessárias à utilização do hardware”. Da mesma forma acontece com sistemas virtualizados, que identificam qualquer entrada como sendo uma entrada física. Isso significa que ao colocarmos um dispositivo USB no gabinete, o conteúdo dele estará disponível para os dois SO’s virtualizados, além do SO físico.
  • 19. 19 A virtualização pode ser definida como a tecnologia capaz de simular ambientes totalmente autônomos em uma mesma máquina física, permitindo, inclusive, a convivência independente de aplicações em diferentes sistemas operacionais. (PRODEMGE, 2009). As máquinas virtuais são vistas pelos usuários e funcionam como se fossem computadores físicos, e são facilmente transportáveis de máquinas reais. Assim, confirma Tanenbaum (2007, p. 50), “as máquinas virtuais promovem maior desacoplamento entre hardware e software o que permite um ambiente completo ser movido de uma máquina para outra”. A figura 1 mostra a imagem que o usuário tem em uma virtualização do desktop. Neste exemplo temos o sistema operacional Windows XP e o monitor de máquina virtual virtualizando outro Windows XP e o Ubuntu Linux. Um monitor de máquina virtual instalado em um sistema operacional possibilita o uso de outros sistemas operacionais. Figura - Virtualização de Desktop (MANARA, 2007)
  • 20. 20 2.2 HISTÓRICO DA VIRTUALIZAÇÃO Os primeiros pesquisadores em computação estavam interessados no aumento da robustez e estabilidade oferecidas pelo hipervisores (MATHEWS, 2008). De acordo com Laureano (2006, p.13) “o termo virtualização vem sendo usado desde os primórdios da computação, na década de 1950, quando pesquisadores da Universidade de Manchester, na Inglaterra, desenvolveram o conceito de máquina virtual”. A IBM foi a pioneira no uso de máquinas virtuais. No início dos anos 1960, a empresa sentiu a necessidade de simplificar a operação nos mainframes (computadores de grande porte), pois o sistema operacional estava perdendo mercado, e sentia-se a necessidade de agregar outros sistemas nos hardwares fabricados pela corporação. Uma das razões para introduzir a virtualização foi permitir que o software herdado fosse executado em caros hardwares de mainframe. (TANEMBAUM, 2007). Segundo Laureano (2006, p.15) “as origens do conceito de máquina virtual remetem ao início da história dos computadores, no final dos anos 1950 e início de 1960. As máquinas virtuais foram originalmente desenvolvidas para centralizar os sistemas de computador utilizados no ambiente VM/370 da IBM”. No inicio dos anos 1960, o principal sistema operacional da IBM era o OS, porém o DOS já era bastante popular, em conseqüência a IBM viu-se com um problema nas mãos. Era evidente a necessidade de um novo sistema operacional. A manutenção da compatibilidade entre dois sistemas incompatíveis em essência, DOS e OS, foi considerada fundamental, e o VM surgiu como solução. (DAVIS, 1990, p. 447). De acordo com Davis (1990, p.447) “na Virtual Machine (VM) da IBM os recursos do computador real são gerenciados por um sistema operacional de alto nível chamado programa de controle (CP) [...] os sistemas operacionais são gerenciados pelo programa de controle, e as rotinas aplicativas são executadas sob os sistemas operacionais virtuais”. Na prática, o CP simula um computador real em cada máquina virtual, o que o coloca como primeiro software a possibilitar a virtualização de sistemas. A virtualização foi desenvolvida na década de 1960 para particionar hardwares grandes de mainframe, a fim de aproveitá-los melhor. (VMware. 2010).
  • 21. 21 Essas partições permitiam que os mainframes assumissem múltiplas tarefas, ou seja, que executassem vários aplicativos e processos ao mesmo tempo. Como os mainframes eram recursos caros na época, foram desenvolvidos sistemas para serem particionados de forma a aproveitar completamente o investimento. Mathews (2008, p.15) afirma que “O sistema 370 da IBM foi o primeiro computador disponível comercialmente projetado para virtualização”. [...] nos anos de 1960, pesquisadores da IBM desenvolveram o sistema CP67, que trazia consigo o conceito de máquina virtual. “... uma camada de virtualização de hardware permitia particionar o hardware da máquina em unidades lógicas menores e autônomas [...] permitindo inclusive executar várias instâncias do sistema operacional ao mesmo tempo”. (LAUREANO, 2006, p. 13). Foi na década de 1990 que o conceito de máquina virtual começou a ser popularizado, data em que os computadores passaram a ser mais acessíveis por pequenas e médias empresas, além de usuários domésticos. De acordo com Laureano (2006, p.13) “o conceito de máquina virtual permaneceu pouco conhecido durante décadas, até seu renascimento nos Computadores Pessoais (PC) de plataforma Intel, na metade dos anos 1990”. No início dos anos de 1990, um grupo de alunos da faculdade de Stanford (Estados Unidos) usou máquinas virtuais no sistema operacional IRIX, da Silicon Graphics, que foi projetado para executar em um hardware sem suporte a virtualização. Os desenvolvedores do projeto introduziram modificações específicas no sistema operacional, modificando e recompilando o IRIX para permitir a virtualização. Essa técnica, mais tarde, seria conhecida como paravirtualização. Então a equipe voltou sua atenção para modificar outra plataforma não voltada para virtualização, o x86. Isso teve uma influencia direta na fundação da VMware, e a introdução do primeiro produto comercial de virtualização dessa plataforma, conseguindo executar arquivos binários sem alterações no Windows. (MATHEWS, 2008). Tanenbaum (2007, p.48) destaca duas razões principais para a virtualização voltar a ficar em evidência no final dos anos 90. “... estamos enfrentando uma situação em que o software herdado não pode ser mantido no mesmo passo que as plataformas de que depende. [...] A diversidade de plataformas e máquinas podem ser reduzidas deixando que cada aplicação execute em sua própria máquina virtual.”
  • 22. 22 [...] É justamente esse panorama criado pela evolução – oferta de máquinas, espaços lógicos ociosos, espaços físicos escassos, volume de sistemas legados, custos altos de operação e manutenção – que promoveu o retorno da virtualização de servidores à pauta dos executivos de TI, mais de 40 anos depois, totalmente repaginada, com novos conceitos, configurações, objetivos e recursos. Os benefícios e as facilidades da virtualização estenderam naturalmente seu uso para aplicação em desktop, sistemas operacionais e linguagens de programação. (PRODEMGE, 2009, p. 20). Mathews et al (2008, p.16) afirma que “...desde 2005, fabricantes de processadores como a Intel e a AMD aumentaram o suporte via hardware em suas linhas de produtos”. [...] A evolução da indústria da tecnologia para os servidores de menor porte e baixo preço desviou, então, a tendência da computação centralizada para sua descentralização, principalmente na forma da tecnologia cliente/servidor. Aliada a essa tendência, o advento da internet e a disseminação das redes de computadores consolidaram o modelo das plataformas baixas. (PRODEMGE, 2009, p. 20). Hoje diversas empresas estão competindo no mercado da virtualização. A VMware vem aumentando as opções para as variadas usabilidades, a Microsoft, entrou no mercado somente nessa década, e já lançou o Hyper-V, nativo do Windows 2008 Server R2, além de muitas opções de software-livre, tanto para Windows quanto para Linux, e também para instalação direta no hardware. A figura 2 mostra a evolução da virtualização, desde o nascimento da virtualização, na década de 1950, até a atualidade. Nota-se o contínuo uso em máquinas de grande porte, e o começo da aplicação em computadores pessoais no fim da década de 1990. Somente no fim dos anos 1990 que a tecnologia passou a ser mais difundida, com o surgimento do VMware Workstation. Na década de 2000, podemos notar o surgimento de muitas tecnologias, com destaque para o lançamento do Xen, em 2003, e o KVM, em 2006. Há pouco mais de três anos a criação para celulares e palms traz boas perspectivas de que o mercado de virtualização não pára de evoluir.
  • 23. 23 Figura - Evolução Histórica da Virtualização (PRODEMGE, 2009) 2.3 UTILIZAÇÃO DE MÁQUINAS VIRTUAIS Máquina virtual (Virtual Machine – VM) refere-se à instância de um hardware e um sistema operacional também virtualizado sob forma de simulação. (FAVACHO; MIRANDA; OLIVEIRA, 2008). O computador é constituído de hardware, sistema operacional e aplicações (CARMONA, 2008). Devido aos diferentes fabricantes, pode acontecer de uma
  • 24. 24 determinada aplicação não ser compatível com um sistema operacional. Por vezes, os fabricantes desenvolvem seu aplicativo baseado em determinada arquitetura de hardware, e nem sempre temos disponível a mesma arquitetura pra usar seu aplicativo. Laureano (2006, p.16) afirma que “... o papel do hardware é executar as operações solicitadas pelas aplicações. O sistema operacional recebe as solicitações das operações [...] e controla o acesso ao hardware”. Esse tipo de problema pode ser evitado com a virtualização, pois esta insere uma camada entre o hardware e o sistema operacional, que possibilita a utilização de aplicações que não foram projetadas para um determinado hardware. De acordo com Tanenbaum (2003, p.44) “como cada máquina virtual é uma cópia exata do hardware, cada uma delas pode executar qualquer sistema operacional, capaz de ser executado diretamente sobre o hardware.” A figura 3 ilustra alguns sistemas operacionais existentes, seu hardware compatível, aplicações e compatibilidades. Figura - Alguns Sistemas Existentes (LAUREANO, 2006) Sistemas operacionais MacOS são incompatíveis com hardware projetados para Windows e suas aplicações. Da mesma forma ocorre com sistemas operacionais Linux e Windows, conforme ilustra a figura 4.
  • 25. 25 Figura - Sistemas Incompatíveis (LAUREANO, 2006) No momento em que encontramos o problema da dependência de hardware, sistemas e aplicativos de um mesmo fabricante, a virtualização pode ser a solução para esse impasse. Laureano (2006, p.16) afirma que “... a máquina virtual cria uma “camada” para compatibilizar diferentes plataformas [...] essa camada é chamada de virtualização”. A figura 5 ilustra a camada de compatibilidade disponibilizada pela máquina virtual. Figura - A Camada de Compatibilidade (LAUREANO, 2006) A idéia de máquina virtual é freqüentemente usada nos computadores pessoais. Tanenbaum (2003, p.44) explica que: [...] A idéia de máquina virtual é bastante usada hoje em dia em um contexto diferente: a execução de velhos programas do MS-DOS. Quando o Pentium e seus softwares estavam sendo projetados, a Intel e a Microsoft perceberam que haveria uma grande demanda para executar softwares antigos em hardwares novos. Por isso, a Intel disponibilizou um modo virtual 8086 no Pentium. Nesse modo de funcionamento, a máquina age como se
  • 26. 26 fosse um 8086 (que é idêntico a um 8088 do ponto de vista de software), inclusive com o endereçamento de 16 bits e com limite de 1 MB(Mega-byte). 2.3.1 Monitor de Máquina Virtual O monitor (também chamado de hypervisor, VMM, ou Virtual Machine Monitor) é um dos principais conceitos envolvidos no estudo de máquinas virtuais. (FAVACHO; MIRANDA; OLIVEIRA, 2008). O monitor pode criar uma ou mais máquinas virtuais em uma única máquina real (LAUREANO, 2006). O hypersivor é, portanto, o elemento fundamental da virtualização, uma vez que fornecerá recursos da máquina física para as estações virtuais residentes em determinado ambiente, fazendo com que cada uma delas funcione de forma independente, como se fossem máquinas físicas. (PRODEMGE, 2009, p. 21). Exemplos típicos dessa abordagem são VMware( TANENBAUM, 2007 apud SUNGERMAN et al., 2001) e Xen ( TANENBAUM, 2007 apud BARHAN et al., 2003) 2.3.2 Emuladores e Máquinas Virtuais Emulador é um tipo de sistema que a primeira vista se confunde com virtualização. Laureano (2006, P.18) explica que “... um emulador engana o sistema, fazendo com que todas as operações da máquina real sejam implementadas em um software [...] ocorre à interpretação de um código desenvolvido para outra plataforma”. Ao emular um sistema, estamos enganando um sistema ou aplicativo, “afirmando” a esse sistema ou aplicativo que suas instâncias estão localizadas numa máquina ou SO base diversos de sua localização real. (CARMONA 2008). A emulação reflete todos os estados internos do ambiente ao mesmo tempo (FAVACHO; MIRANDA; OLIVEIRA, 2008). Por exemplo, um aplicativo desenvolvido para a plataforma Windows rodando no Linux, ou um game do Playstation podendo ser jogado diretamente no computador. Um emulador apresenta algumas desvantagens em relação à virtualização. Laureano (2006, p.18) salienta que “... emuladores são muito complexos, pois necessitam simular quase todas as instruções do processador e demais características do hardware que os circundam”.
  • 27. 27 Emulação é um tipo de virtualização mais complexa, devido o fato de ter que emular de maneira precisa o comportamento de um hardware. [...] Um ponto importante que deve ser lembrado é que este tipo de virtualização se torna útil para os desenvolvedores de firmware e de hardware, uma vez que a funcionabilidade de uma solução pode ser validada sem a necessidade de hardware real. (OLIVEIRA, 2007, p. 5). Laureano (2006, p.21) ressalta as diferenças entre emuladores e máquinas virtuais ao afirmar que “... Enquanto o emulador fornece uma abstração completa entre o sistema em execução e o hardware, o monitor de máquina virtual fornece uma interface idêntica ao hardware”. 2.3.3 Tipos de Emuladores • Firmware: Programação em hardware ou dados de computador que são armazenados permanentemente em um chip de memória de hardware. Laureano (2006, p.21) afirma que “é a mais rápida tecnologia de emulação, mas também a mais complexa de implementar e manter a compatibilidade com versões anteriores”. • Software: O emulador reconfigura a máquina em uso para aplicação que se deseja emular, considerada a forma mais fácil de implementar e portar para outras plataformas. Laureano (2006). • Emulação Combinada: Composto de hardware e software. O software faz o papel principal, e o hardware fornece partes chaves do processo, e oferece grande flexibilidade em termos de projeto. Laureano (2006). 2.3.4 Tipos de Máquinas Virtuais Com a evolução da virtualização surgiram diferentes práticas para atender diferentes necessidades. Carmona et al (2008, p.32) afirma que “... é essencial saber se a camada de virtualização atua tanto sobre o aplicativo como sobre o SO do hóspede, situação em que estamos falando de virtualização do sistema”. Esse que é o tema principal dessa pesquisa pode ser ainda divida em duas categorias,
  • 28. 28 máquinas virtuais tipo I e tipo II. Outros tipos de virtualização, como de aplicações, hardware entre outros, serão abordados posteriormente. 2.3.4.1 Máquinas Virtuais - Tipo I Hypervisors Clássicos: Sistema em que o monitor é implementado entre o hardware e os sistemas convidados. Segundo Favacho, Miranda e Oliveira (2008 p. 18) “o tipo I é aquele que é executado diretamente no hardware da máquina, como se fosse um sistema operacional”. Exemplos desse tipo de virtualização são o Xen e VMWARE ESXi . Laureano (2006, p.21) explica que “... o monitor tem o controle do hardware e cria um ambiente de VM’s. Cada uma delas se comporta como uma máquina física completa que pode executar seu próprio SO”. A Figura 6 ilustra esse conceito, o monitor (VMM) representa o software que vai gerenciar a comunicação entre hardware e sistemas operacionais, os SO’s trabalham de forma independente. Figura - Máquina Virtual Tipo I (LAUREANO, 2006) 2.3.4.2 Máquinas Virtuais - Tipo II O tipo 2 é aquele que é executado sobre um sistema operacional existente em uma segunda camada.(FAVACHO; MIRANDA; OLIVEIRA 2008, p.18). Conforme ilustra a figura 7, um sistema operacional hospeda um monitor de máquina virtual, que opera junto com as aplicações do SO. Um ou mais sistemas operacionais rodam no VMM e podem oferecer as suas aplicações. Esse modelo é
  • 29. 29 mais usado em máquinas virtualizadas em desktop, e também em servidores, como o Hyper-V e o VMware Server. Figura - Máquina Virtual Tipo II (LAUREANO, 2006.) Laureano (2006, p.22) explica que “... o monitor do tipo II funciona de forma análoga ao de tipo I, sendo a sua maior diferença a existência de um sistema abaixo desse. Nesse modelo, o monitor simula todas as operações que o sistema anfitrião controlaria”. Carmona et al (2008, p.35) confirma, “... A camada de virtualização [...] interpreta as informações privilegiadas do sistema operacional hóspede. É necessário porque os hóspedes não sabem que eles não têm propriedade exclusiva sobre o hardware conforme esperado, mas precisam dividi-lo”. 2.3.4.3 Abordagens Híbridas Otimizações nas arquiteturas de máquinas virtuais podem modificar o modo como as máquinas virtuais, hardware e sistema anfitrião trabalham. Laureano (2006, 24) define essas modificações como abordagens híbridas. Na prática é comum aplicar técnicas para aperfeiçoar o desempenho das arquiteturas de máquinas virtuais. Laureano (2006, p.22) define quatro otimizações: Em monitores do Tipo I (Figura 8): O sistema convidado acessa diretamente o hardware. Laureano (2006, p.23) explica que “... essa forma de acesso se dá pela implementação de modificações no
  • 30. 30 núcleo do sistema convidado e no monitor. Essa otimização ocorre no subsistema de gerência de memória do ambiente XEN”. Figura - Abordagem Híbrida do Tipo I (LAUREANO, 2006) Em monitores do tipo II (Figura 9): 1. O sistema convidado acessa diretamente o sistema anfitrião. Laureano (2006, p.23) diz que “... essa otimização é implementada pelo monitor, oferecendo partes da Interface de API (Interface de Programação de Aplicações) do sistema anfitrião ao sistema convidado. Um exemplo dessa técnica ocorre no sistema de arquivos do VMware, onde o sistema convidado faz uso da implementação de sistema de arquivos nativos existentes no sistema anfitrião. (LAUREANO 2006) 2. O sistema convidado acessa diretamente o hardware. Nesse caso a implementação é feita parcialmente pelo monitor, e parcialmente pelo sistema anfitrião. Laureano (2006, P.23) afirma que o VMware usa essa otimização no acesso direto a dispositivos físicos, como interface de rede, por exemplo. 3. O monitor acessa diretamente o hardware. Nesse caso o driver é instalado no sistema anfitrião, oferecendo ao monitor uma interface de baixo nível para acesso ao hardware. Essa abordagem é usada por sistemas VMware.( LAUREANO, 2006).
  • 31. 31 Figura - Abordagem Híbrida Para o Tipo II (LAUREANO, 2006) 2.4 TÉCNICAS DE VIRTUALIZAÇÃO Existem várias técnicas usadas na virtualização. Favacho, Miranda e Oliveira (2008) afirmam que as principais são a virtualização total, paravirtualização e recompilação dinâmica. Vamos a seguir tratar dessas técnicas. 2.4.1 Virtualização Total Na virtualização total, também chamada de virtualização completa ou nativa, uma estrutura completa de hardware é virtualizada, e o sistema virtualizado não precisa ser alterado (Laureano, 2006). Para Favacho, Miranda e Oliveira (2008, p.20) “...a técnica de virtualização total utiliza uma simulação completa do hardware, de modo que qualquer sistema operacional possa ser executado”. Entre os benefícios e dificuldades desta técnica, Laureano (2006) cita o fato da virtualização total não sofrer alteração, mas com o agravo do sistema convidado ser executado de forma mais lenta. Outro problema é que o sistema convidado precisa implementar alternativas para que certas operações possam ser executadas em processadores que não suportam a virtualização nativamente, o Intel 32 bits por exemplo. (Laureano, 2006). A Figura 10 ilustra a representação da virtualização total descrita por Laureano.
  • 32. 32 Mathews et al (2008, p.7) afirma que “ ...neste caso, o hypervisor vigia o acesso ao hardware subjacente e dá a cada sistema operacional hóspede a ilusão de ter sua própria cópia desse hardware”. Figura - Representação da Virtualização Total (LAUREANO, 2006) O VMware Workstation e VMware Server trabalham nessa técnica de virtualização, e o Xen suporta virtualização completa em arquiteturas básicas com o suporte de hardware para a virtualização total ( MATHEWS, 2008). 2.4.2 Paravirtualização Paravirtualização é uma técnica que apresenta uma API para as máquinas virtuais. Essa API é similar, mas não idêntica ao hardware real (OLIVEIRA 2007, p.7). Laureano (2006, p.30) diz que “o sistema a ser virtualizado sofre alterações para que a interação com o monitor de máquinas virtuais seja mais eficiente”. Esse cenário é ilustrado pela Figura 11.
  • 33. 33 Figura - Representação da Paravirtualização ( LAUREANO, 2006) [...] Já a paravirtualização ou virtualização parcial é uma alternativa à virtualização total. Somente permite a execução de sistemas operacionais parcialmente adaptados e não virtualiza todos os recursos computacionais. As adaptações exigidas nos sistemas hóspedes são para que eles sempre passem o controle para o VMM quando forem executar uma instrução que altere o estado do sistema. (Lopes; Ribeiro, 2009, p. 96). Na paravirtualização é necessário que os sistemas sejam adaptados especificamente para essa técnica. Carmona (2008, p.235) explica que “... um sistema Linux, precisa de um kernel especialmente modificado para ser executado nessa instância (paravirtualização)”. Basicamente o hypervisor exporta uma versão modificada do hardware físico subjacente. As modificações são introduzidas para facilitar e acelerar o suporte a múltiplos sistemas operacionais hóspedes, sendo necessárias apenas pequenas mudanças nos SO’s hóspedes. São exemplos dessa técnica o User-mode Linux e o Xen (MATHEWS, 2008). A paravirtualização reduz a complexidade do desenvolvimento das máquinas virtuais, já que historicamente os processadores não suportam a virtualização nativa A principal razão para utilizar a paravirtualização é o desempenho obtido, uma vez que ela compensa as modificações que serão implementadas nos sistemas convidados. (Laureano, 2006).
  • 34. 34 Mathews et al (2008, p.9) afirma que “ a escolha da paravirtualização para o Xen tem mostrado que consegue obter maior desempenho de isolamento mesmo em um hardware de computador pessoal típico”. 2.4.3 Relação entre Virtualização Completa e Paravirtualização Na virtualização completa, a máquina real aloca um espaço físico da memória para a máquina virtual, e a máquina virtual interpreta como se estivesse usando o início da memória. De acordo com Laureano (2006, p.31), “... a máquina real tem um endereçamento iniciado em 0000 até FFFF. O monitor reserva o espaço de memória compreendido entre 000F e 00FF, mas o sistema convidado enxerga esse espaço como sua memória total e, portanto, iniciando em 0000 e finalizando em 000F”. Conforme ilustra a Figura 12. Na paravirtualização isso não ocorre, pois a máquina virtual é informada pelo monitor qual o espaço de memória poderá ser utilizado, e o sistema convidado acessa diretamente a memória sem interferência do monitor de máquinas virtuais (LAUREANO, 2006). Na paravirtualização é preciso que os sistemas sejam adaptados, já na virtualização total os sistemas podem ser instalados exatamente como uma máquina convencional. (CARMONA 2008). Para Oliveira (2007, p.9) “a paravirtualização possui melhor desempenho que a virtualização total. Isso se deve ao fato de os drivers de dispositivos executados nas máquinas paravirtualizadas serem os drivers reais para os dispositivos físicos, diferentemente dos drivers emulados na virtualização completa”. O mesmo processo ocorre para o acesso ao disco. Laureano (2006, P.31) afirma que “... no processo de virtualização total o sistema enxerga o disco como seu para uso exclusivo, na paravirtualização o sistema sabe que o disco é virtualizado”.
  • 35. 35 Figura - Alocação de Memória na Virtualização Total (LAUREANO, 2006) 2.4.4 Recompilação Dinâmica A recompilação dinâmica é uma técnica usada para aumentar o desempenho de aplicativos e sistemas. Segundo Laureano (2006, p.32), “com a compilação, durante a execução, o sistema pode adequar o código gerado de forma a refletir o ambiente original do programa. [...] Em outros casos, um sistema pode empregar a recompilação como forma de adaptação, para executar uma representação portátil do sistema, tal como bytecodes de Java”. Laureano (2006, p.32) classifica a recompilação dinâmica em sete passos. 1. Agrupamento de bits: Um emulador ou máquina virtual pode usar o conhecimento sobre o formato de um executável compilado, e pelo uso de técnicas heurísticas, ou seja, por aproximação do objetivo, recuperar os conjuntos de bits do executável e reordená-los. 2. Desmontagem: Os bits são desmontados e transformados em um conjunto de instruções e operadores ordenados em partes. 3. Geração intermediária do código: As instruções são transformadas para uma representação de máquina independente. 4. Decompilação: A representação gerada é transformada em uma linguagem de alto nível (por exemplo o “C”)
  • 36. 36 5. Compilação: O Código gerado é novamente compilado para a nova plataforma. 6. Montagem: Os códigos-objeto gerados pela compilação são novamente montados, preparando a criação de um novo executável. 7. Armazenagem dos bits: Os bits são agrupados de forma a gerar o novo executável. 2.5 Formas de Virtualização Segundo Laureano (2006, p.24) “... os softwares podem ser utilizados para fazer os recursos parecerem diferentes do que realmente são, e essa capacidade é chamada de virtualização”. Além das técnicas de virtualização citadas nas seções anteriores, existem diversas formas de virtualizar diferentes recursos. 2.5.1 Virtualização de Sistema Operacional Nesta forma, a virtualização exporta um sistema operacional como abstração de um sistema específico, como acontece com o FreeDSD (Laureano, 2006). A Figura 13 demonstra a arquitetura dessa forma de virtualização. Figura - Virtualização do Sistema Operacional (LAUREANO, 2006)
  • 37. 37 Mathews et al (2008, p.11) afirma que “...nessa técnica não existe monitor de máquina virtual, em vez disso tudo é feito inteiramente com uma única imagem tradicional de sistema operacional”. Essa técnica pode ser mais adequada em um ambiente onde cada hóspede deseja executar o mesmo sistema operacional (MATHEWS, 2008). 2.5.2 Virtualização de Linguagem de Programação Neste caso é criada uma máquina virtual para a execução de programas específicos. A camada de virtualização exporta uma abstração para a execução de programas escritos para essa virtualização. Java e Smalltalk são exemplos desse tipo de máquina virtual (LAUREANO, 2006). A Figura 14 ilustra o conceito de virtualização de linguagem de programação. Figura - Virtualização de Linguagens de Programação (LAUREANO, 2006) Essa forma de virtualização pode fornecer recursos como variáveis de ambientes, bibliotecas de interface com usuários e objetos que auxiliam na programação de aplicativos (MATHEWS, 2008). Além da abstração de uma máquina virtual para rodar aplicativos específicos, a virtualização tem um importante auxilio na construção de softwares. O programador pode ter em sua máquina todos os ambientes para desenvolver e fazer os testes unitários necessários, e dispor de sistemas operacionais distintos, bem como suas versões mais antigas, prevenindo problemas com incompatibilidade. O programador também terá acesso a um repositório de controle de códigos-fonte, servidor de banco de dados, arquivos, componentes e etc. (Microsoft, 2007). Assim como ilustra a Figura 15.
  • 38. 38 Figura - Ambiente de Desenvolvimento Virtualizado (MICROSOFT, 2007) [...] Quando a Sun Microsystens inventou a linguagem de programação Java, inventou também uma máquina virtual, denominada JVM (Java Virtual Machine). O compilador produz código para a JVM que é executado por um programa interpretador da JVM. A vantagem é que o código pode ser enviado pela internet a qualquer computador que tenha um interpretador JVM e ser executado. (TANENBAUM, 2003 p.45). 2.5.3 Virtualização de Hardware A virtualização exporta o sistema físico como se fosse parte real do sistema, e possibilita o funcionamento de softwares sem sofrer incompatibilidade. Por exemplo, um aplicativo escrito para arquitetura x86 sendo executado em um MAC. Segundo Laureano (2006, p. 24), “esse foi o modelo adotado na década de 1960 para o
  • 39. 39 VM/370 nos mainframes IBM e é a tecnologia utilizada pela VMware na plataforma x86”. O modelo é ilustrado pela Figura 16. Figura - Virtualização de Hardware (LAUREANO, 2006) 2.5.4 Virtualização de Aplicação Virtualização de aplicação surge da necessidade de resolver problemas de incompatibilidade entre aplicações no mesmo sistema operacional. Por exemplo, uma aplicação pode exigir uma DLL (Dynamic-link library) de versão diferente que outra aplicação vai precisar. É nesse cenário que se torna viável a virtualização de aplicação. [...] A virtualização de aplicativos resolve esse problema [incompatibilidade] criando cópias específicas para a aplicação de todos os recursos compartilhados. As configurações que uma aplicação pode compartilhar com outras em seu sistema -- entradas de registro, DLLs específicas, e mais -- são, em vez disso, empacotadas com ele e executadas no cache da máquina, criando uma aplicação virtual. Quando uma aplicação virtual é implantada, usa sua própria cópia desses recursos compartilhados. (MICROSOFT, 2009). A Figura 17 ilustra a independência das aplicações em uma arquitetura de virtualização de aplicações. No primeiro quadro as aplicações estão de forma independente do sistema operacional para ilustrar o conceito de independência de
  • 40. 40 arquivos de configuração, no segundo quadro todos os aplicativos compartilham os mesmo arquivos de configuração. Figura - Virtualização de Aplicação (MICROSOFT, 2009) 2.5.5 Virtualização da Apresentação A virtualização da apresentação é a forma de apresentar ao usuário uma interface configurada, que é executada em outra máquina, conforme mostra a Figura 18. A virtualização de apresentação cria seções virtuais em que as aplicações em execução projetam suas interfaces de usuário remotamente (MICROSOFT, 2009). Um exemplo é Terminal Server da Microsoft. Figura - Virtualização de Apresentação (MICROSOFT, 2009)
  • 41. 41 Segundo a Microsoft (2009), executar virtualização de apresentação pode gerar alguns benefícios: • Dados centralizados; • Redução de custos. Se uma aplicação precisa ser atualizada, nesse caso, só será necessário atualizar a estação do servidor, pois todos os usuários acessam a mesma base; • Elimina problema de incompatibilidade de sistema operacional; • Melhoria de Desempenho. Em caso de máquinas mais antigas, por exemplo, ao invés dessas máquinas executarem toda aplicação e comunicação com o banco de dados localmente, esse procedimento será realizado no servidor que disponibilizará a apresentação. 2.5.6 Virtualização da Estação de Trabalho A virtualização da estação de trabalho possibilita a usuários executarem em seus computadores aplicativos não compatíveis e/ou legados, muito usados também para criar uma máquina de testes para estudos ou mesmo para instalação de aplicativos. Com isso, evita-se que esses aplicativos comprometam o funcionamento normal da máquina. Usando a máquina virtual, os testes são isolados do sistema principal. São exemplos dessa tecnologia o Microsoft Virtual PC e o VirtualBox da Oracle. Na Figura 19 consta um exemplo de arquitetura de virtualização da estação de trabalho. [...] A virtualização de estações de trabalho hospedada por cliente cria um ambiente de SO separado na estação de trabalho, permitindo que aplicações de legado ou empresariais não-compatíveis operem dentro de seu ambiente nativo em um sistema operacional de estação de trabalho mais atual ou permitindo que dois ambientes de TI (por exemplo, particular e corporativo) sejam executados simultaneamente no mesmo dispositivo físico. (MICROSOFT, 2009).
  • 42. 42 Figura - Virtualização de Desktop (MICROSOFT, 2009) 2.5.7 Virtualização de Armazenamento A virtualização de armazenamento é a forma de armazenar dados, de maneira centralizada, sem que o usuário se preocupe de onde está acessando os dados. Um armazenamento virtualizado permite que o armazenamento físico de um ambiente seja compartilhado em vários servidores de aplicações, e que dispositivos físicos por trás da camada de virtualização sejam exibidos e gerenciados sem limites físicos (MICROSOFT, 2009). [...] A virtualização de armazenamento é o processo de consolidar vários dispositivos físicos de diversos fabricantes e reorganizá-los em agrupamentos virtuais e lógicos, ou em unidades de armazenamento. [...] A virtualização de armazenamento não é novidade, tanto no conceito quanto na prática. Definida a quase 20 anos na computações em mainframes, a tecnologia está descobrindo uma nova oportunidade e importância com a emergência das redes SAN’s (Storage Area Network). (NEXTG, 2009). Um exemplo bastante simples é o redirecionamento de pastas no Windows, que permite que as informações em uma pasta sejam armazenadas em qualquer unidade de disco acessível pela rede (MICROSOFT, 2009).
  • 43. 43 2.6 BENEFÍCIOS E DIFICULDADES DA VIRTUALIZAÇÃO Apesar dos inúmeros benefícios viabilizados pela virtualização, existem os pontos negativos. Aqui abordaremos as vantagens dessa tecnologia, bem como as dificuldades e requisitos para implementação e o custo da virtualização. 2.6.1 Benefícios da Virtualização A possibilidade de aumentar a capacidade instalada sem a necessidade de adquirir novos equipamentos, com melhor aproveitamento da estrutura disponível, é umas das principais vantagens da virtualização, por estar relacionada diretamente à parte econômica. Outra vantagem é a possibilidade de manutenção de sistemas legados. A virtualização contribui para aumentar a utilização do poder computacional dos servidores, enquanto diminui o número de plataformas físicas necessárias (OLIVEIRA, 2008 apud WILIAMS & GARCIA, 2007). A virtualização aumenta a produtividade da infraestrutura, a segurança, melhora o gerenciamento, diminui manutenção, além de economizar em recursos humanos, físicos e consequentemente financeiros (MANARA, 2007). Os investimentos inerentes à implementação de uma nova solução são rapidamente compensados pelos ganhos em economia, com a redução de consumo de energia, espaço e equipamentos (PRODEMGE, 2009, p. 21). [...] A virtualização tem aplicação eficaz em diversas frentes nas organizações. A tecnologia reduz custos de aquisição de servidores físicos e agrega economia significativa nos custos operacionais, especialmente de consumo de energia elétrica e manutenção, ao consolidar e particionar sistemas [...] cabe ressaltar ainda a rápida disponibilidade de servidores, um fator que pode ser considerado crítico, especialmente nas empresas públicas, sujeitas à legislação específica para compras. O aspecto relacionado à continuidade do negócio da empresa também se beneficia de forma expressiva com a adoção da virtualização. (PRODEMGE, 2009). Laureano (2006, p.35) destaca os principais benefícios ao utilizar máquinas virtuais. • Facilitar o aperfeiçoamento e testes de novos sistemas operacionais.
  • 44. 44 • Auxiliar no ensino prático de sistemas operacionais e programação, ao permitir a execução de vários sistemas para comparação no mesmo equipamento. • Executar diferentes sistemas operacionais sobre o mesmo hardware simultaneamente. • Simular configurações e situações, como por exemplo, a presença de outros dispositivos de Entrada/Saída. • Simular alterações e falhas no hardware. • Garantir a portabilidade de aplicações legadas. • Desenvolvimento de novas aplicações para diversas plataformas. • Diminuição de custos com Hardware. • Facilidade no gerenciamento, migração e replicação de computadores, aplicações ou sistemas operacionais. • Prover um serviço dedicado a um cliente específico com segurança e confiabilidade. Podemos destacar também a possibilidade de estudar efeitos de vírus e outras pragas virtuais sem afetar o sistema hospedeiro, testes de atualizações ou softwares experimentais, antes de aplicá-lo ao sistema em produção. A virtualização oferece alta disponibilidade, realocando hóspedes quando uma máquina servidora se torna indisponível. A virtualização permite um melhor aproveitamento também do hardware, em máquinas com múltiplos processadores ou múltiplos núcleos. Com relação a custos com licenças de sistema operacional, a virtualização também apresenta vantagens, uma vez que a Microsoft oferece licenças gratuitas para máquinas virtualizadas Windows na versão Enterprise do Windows 2008, e dá direito a quatro licenças de máquinas virtuais. Já a versão Windows 2008 Datacenter oferece licenças ilimitadas para máquinas hóspedes virtuais (MCLEAN; THOMAS, 2010).
  • 45. 45 2.6.2 Dificuldades da Virtualização Criar uma máquina virtual é dedicar recursos de uma máquina física para a execução da máquina virtual e suas aplicações. Dependendo da carga esperada em cada máquina virtual, é necessário avaliar se a queda estimada no desempenho não terá efeitos adversos sobre as aplicações que serão executadas (MICROSOFT, 2007). McLean e Thomas (2010, p.324) afirmam que “... servidores com alto requisito de I/O (Input/Output) ou alto requisito de processamento não são bons candidatos para a virtualização”. Não adianta usar uma máquina virtual para executar uma aplicação perto do limite de hardware da máquina física, afinal, junto com essa aplicação terá a carga de processamento da máquina virtual, o sistema hóspede e o sistema convidado. Outro fator importante é que as máquinas virtuais trabalham de forma independente do sistema hospedeiro, então é necessário um maior gerenciamento dos sistemas. As atualizações e licenças devem ser administradas de forma independente, ou seja, cada máquina virtual necessita de uma licença, em caso de softwares proprietários, e também suas aplicações. É fundamental que os seus fornecedores de software sejam consultados antecipadamente para verificar as políticas de licenciamento e suporte de seus produtos em ambientes virtuais (MICROSOFT, 2007). O hardware hospedeiro das máquinas virtuais precisará de memória, processamento e armazenamento suficiente para executar todos os sistemas operacionais e seus aplicativos simultaneamente. Laureano (2006, p. 36) destaca algumas dificuldades de utilização da tecnologia de virtualização em alguns casos: • Processador não virtualizado: A arquitetura de processadores Intel 32 bits não permite nativamente a virtualização. • Diversidade de equipamentos: pela grande quantidade de equipamentos existentes, torna-se difícil os desenvolvedores de monitores de máquinas virtuais estarem sempre acompanhando as novidades do mercado. • Preexistência de softwares: os desktops normalmente vêm com um sistema operacional instalado e configurado. Nesses casos é importante
  • 46. 46 permitir que um usuário possa utilizar a tecnologia de máquinas virtuais sem perder a facilidade de continuar utilizando seu sistema operacional padrão. Segundo Laureano (2006), a principal desvantagem é o custo adicional de execução de processos em comparação com a máquina real, em razão de processadores sem suporte à virtualização. Esse problema não existe em hardwares com suporte à virtualização, como os mainframes. Deve-se tomar atenção especial com os processadores antes de implementar métodos de virtualização em uma máquina. Carmona et al (2008, p.37) afirma que: [...] Há pouco tempo os fabricantes de processadores do modulo x86, Intel e AMD também começaram a suportar nativamente a virtualização. A Intel com sua Intel Virtualization Technology (VT, codename Vanderpool) e a AMD com sua AMD I/O Virtualization Technology (codename Pacífica). A solução da AMD implementa funções de processador especiais, que suportam o hypervisor na transferência de endereços e, além disso, pode controlar em seu nome se determinados acessos de um sistema hóspede a dispositivos podem ser permitido.
  • 47. 47 3 TECNOLOGIAS ATUAIS DE VIRTUALIZAÇÃO Nos últimos anos a indústria da tecnologia de informação está crescendo e evoluindo muito na área de virtualização. Basta ver a Figura 2 (capítulo 2), que mostra uma grande quantidade de fabricantes de software, lançando produtos no mercado, cada qual com sua particularidade. Hoje o mercado é disputado por uma diversidade de tecnologias e produtos de solução de virtualização e prevalece certa confusão de conceitos (CARMONA et al 2008). Esse capítulo busca descrever tais particularidades, e apresentar as principais ferramentas disponíveis no mercado atualmente. A figura 20 faz uma comparação dos cinco sistemas de virtualização mais relevantes para esta pesquisa. Figura - Comparativo Entre Algumas Ferramentas (SILVA et al, 2008) 3.1 XEN O Xen é um monitor de máquina virtual do tipo I para a plataforma x86, ou seja, aquele em que o monitor de máquina virtual é instalado diretamente no hardware, sem que haja um sistema operacional hospedeiro. Suporta vários
  • 48. 48 sistemas convidados simultaneamente com bom desempenho e isolamento, é gratuito e de código aberto. (LAUREANO, 2006). O Xen é um hypervisor que trabalha tanto em modo de paravirtualização, como em modo de virtualização completa (SILVA et al, 2008). O objetivo do Xen é suportar aplicações sem a necessidade de modificações. Ele possui acesso direto ao hardware, e os sistemas convidados o utilizam como ponte para acessar os recursos do hardware. Segundo Laureano (2006, p. 101) “no Xen a memória é separada em blocos pelo monitor de máquinas virtuais e o sistema convidado pode utilizar como quiser esses blocos, tornando o acesso à memória mais direto e eficiente”. Os discos rígidos também são separados, tornando o acesso a ele mais eficiente. O ambiente XEN suporta os sistemas Windows XP, Linux e Unix. Atualmente várias distribuições Linux (Suse, Ubuntu, Debian) possuem suporte nativo à máquina virtual Xen (LAUREANO, 2006). Seu código-fonte está liberado sob a licença GNU General Public License 2 (GPL2). 3.1.1 Histórico do Xen O Xen nasceu na Universidade de Cambridge, em 2001, e desde então tem evoluído de forma significativa no cenário mundial dos monitores de máquinas virtuais (MATHEWS et al, 2008). O Xen foi divulgado para o grande público pela primeira vez em 2003, em um artigo acadêmico para o Simpósio de Princípios em Sistemas Operacionais, na mesma universidade onde foi criado. A afirmação de ter uma solução para virtualizar máquinas em plataformas x86 foi muito bem recebida no meio acadêmico (MATHEWS et al 2008). Em 2004 foi criada a XenSource, empresa que tinha o objetivo de estimular pesquisas e desenvolvimento. No Fim de 2004, o Xen 2.0 é lançado conseguindo grande eficiência nas configurações de dispositivos virtuais de Entrada/Saída dos sistemas operacionais hóspedes. Nessa versão já era possível aos usuários configurarem regras de firewall, roteamento, pontes de interfaces de hóspedes virtuais de rede e o live migration, que permite que uma instância do sistema
  • 49. 49 operacional em execução seja movida entre hardwares conectados na rede sem interrupção do serviço. Em 2005 cresce o interesse pelo sistema no meio acadêmico e empresarial, tanto que no ano seguinte o Xen já havia conseguido uma participação significativa nas virtualizações em uso. Nesse mesmo ano é lançada a versão 3.0, onde o Xen apresentou uma camada de abstração para tecnologias de virtualização de hardware, oferecidas pelos novos processadores da Intel e AMD, que tinham as tecnologias de virtualização nativa (Vandepool e Pacifica respectivamente) (MATHEWS et al, 2008). Em 2007, a Citrix compra o Xen e lança a versão 3.1, trazendo a possibilidade de ferramentas de gerenciamento de terceiros. Existem várias possibilidades de instalação do Xen e alguns aplicativos adicionais, que serão mostrados na seções a seguir: 3.1.2 Xen Source 4.0 O hypervisor Xen 4.0 é um código-fonte aberto que insere uma fina camada de software entre o sistema operacional e o hardware (XEN.ORG). Para a instalação do hypervisor Xen é necessário ter algum sistema operacional instalado na máquina, pois o sistema pede que sejam atualizados alguns pacotes essenciais utilizando o comando apt-get. Em seguida é necessário obter os pacotes do Xen com o mesmo comando, e depois recompilar o kernel, e reconfigurar o GRUB, para que o Xen utilize a estrutura do sistema operacional para ser tornar o sistema anfitrião. Na próxima reinicialização, o XEN aparece no menu de boot, bem como o sistema operacional anterior sem as modificações, podendo o usuário acessar tanto o Xen como o sistema original. O Xen também dispõe do XenSource na forma de liveCD, onde é fornecida uma imagem que pode ser gravada em um CD-ROM. Com o liveCD, é possível testar o Xen sem qualquer modificação no sistema. Segundo Mathews et al (2008, p.30) “o liveCD executa completamente direto da memória RAM e não exige instalação no disco rígido. Pode ser usado para testar compatibilidade de hardware e se familiarizar com os comandos básicos do Xen”.
  • 50. 50 3.1.3 XenServer 5.6 O XenServer é um software da Citrix que oferece gerenciamento centralizado de máquinas virtuais com inúmeros recursos, ferramentas de migração e conversão de máquinas virtuais (CITRIX, 2010). A Citrix oferece treinamentos online em sua página na internet, alguns deles gratuitos, e também suporte ao Windows e Linux. Atualmente conta com quatro versões, sendo uma gratuita (CITRIX, 2010). A Figura 21 especifica as diferenças entre as versões. O XenServer é instalado diretamente no hardware, com o arquivo disponibilizado em formato de imagem ISO, sendo necessário ser gravado em uma mídia de CD-ROM. O XenServer pode ser gerenciado por outra máquina que tenha instalado o XenCenter. Mais detalhes então no capitulo 4 dessa pesquisa. Figura - Versões do XenServer (CITRIX, 2010)
  • 51. 51 3.1.4 Outros Produtos Xen XenDesktop: O XenDesktop é um aplicativo da Citrix que tem a função de entrega de área de trabalho virtualizada e possibilita aos usuários acessarem sua área de trabalho de qualquer lugar (CITRIX, 2010). O XenDesktop funciona centralizando todas as estações de trabalho em um servidor, com apenas uma imagem, e disponibiliza para o usuário como se fosse a máquina física, salvando sua configurações para usos futuros. XenApp: O XenApp é um serviço de entrega de aplicativos por demanda aos usuários. Cada aplicação fica centralizada no servidor, é virtualizada e entregue para o usuário em qualquer local, como se fosse executada no sistema operacional local. Possibilita o acesso de inúmeros dispositivos, computadores, thinclient’s, Palmtop’s e aparelhos de telefone móvel. 3.1.5 Algumas Características Relevantes do Xen Algumas características importantes que o Xen implementou a cada nova versão: • Agendador Xen: Divide o tempo do processamento entre processos que são executados em paralelo. O agendador do Xen atribui recursos para máquinas virtuais por tempo limitado (CARMONA 2008). • Live Migration: Segundo Carmona (2008, p.44) “o Xen torna possível transferir hóspedes ativos de um host para o outro, sem que eles precisem interromper seu trabalho nesse meio tempo”. • Discos Rígidos Virtuais: A partir da versão 3.0, o Xen oferece diferentes opções para fornecer um armazenamento virtual para sistemas hóspedes. • Acelerador de Inicialização: O tempo necessário para uma reinicializarão é reduzido e o procedimento normal de inicialização (BIOS, GRUB) é evitado.
  • 52. 52 • Padronização: Os fabricantes mais renomados de monitores de máquinas virtuais demonstram o desejo de uma padronização quanto ao gerenciamento e configurações de máquinas virtuais. Assim confirma Carmona (2008, p.43): “o estreito trabalho conjunto entre desenvolvedores do VMware e do Xen levou a que, em julho de 2006, tivéssemos o plano de uma interface padrão unificada para hypervisors”. • Alta Disponibilidade: Essa é uma preocupação tanto em máquinas virtuais como em reais. O Xen oferece ferramentas que coordena todas as atividades em um cluster e facilita a administração de recursos. 3.2 VMware Fundada em 1998, foi a primeira empresa a oferecer softwares para o ambiente x86. Atualmente possui extensa linha de produtos de virtualização para servidores e máquinas pessoais (MATHEWS et al, 2008). A VMware é uma empresa sinônimo de virtualização, e desde a sua fundação apresenta soluções para a evolução das técnicas de virtualização. De acordo com Silva et al (2008, p. 33) “O VMware instala drivers adicionais no sistema operacional convidado e hospedeiro para otimizar o acesso dos recursos nas máquinas físicas e virtuais”. Isso significa que o VMware já vem projetado para suprir muitas possíveis dificuldades encontradas na implementação da máquina virtual, por exemplo, um driver de vídeo, entre outros. A VMware disponibiliza em sua página na internet várias máquinas virtuais prontas para serem usadas em seus softwares. Existem muitas versões do VMware, e para atender a cada segmento especificamente, abaixo listamos algumas delas: 3.2.1. VMware Player Versão mais simples da máquina virtual, indicada para aplicações leves ou testes. É uma máquina virtual do tipo II, aquela em que o monitor de máquina virtual é instalado sobre um sistema hospedeiro, disponível para o sistema Windows e Linux (LAUREANO 2006). O VMware Player está atualmente na versão 3.12 e pode ser baixado gratuitamente na página do fabricante na internet. A versão atual traz
  • 53. 53 suporte ao Windows 7, Chrome OS e às últimas versões do Linux, além de suporte para múltiplos monitores, download automático de atualizações e a possibilidade de impressão a partir da máquina virtual, sem a necessidade de instalação dos drivers da impressora (VMWARE, 2010). 3.2.2 Workstation Versão um pouco mais robusta que o VMware Player. O Workstation dispõe de opções de configurações a mais, que não existem no VMware Player. Ele é executado em 32 ou 64 bits, e a versão atual conta com suporte ao Windows 7, tem função Flip 3D, que mostra miniaturas das máquinas virtuais em execução , além de ter a função de arrastar e soltar arquivos da máquina física para a virtual ( VMWARE, 2010). É uma máquina virtual de tipo II, não gratuita, e está atualmente na versão 7.1.2. De acordo com a página do fabricante na internet, pode ser usado por 30 dias gratuitamente. A versão completa custa U$ 189.00 (WMWARE, 2010) 3.2.3 VSphere ESX Versão do VMware indicada para aplicações profissionais em larga escala. É uma máquina virtual do tipo I, e executada diretamente no hardware (LAUREANO, 2006). Segundo Silva et al (2008, p.34) “é um sistema baseado no kernel do Linux e cria uma camada de abstração para acesso aos recursos do sistema por máquinas virtuais”. Disponível em várias versões, atende necessidades de pequenas, médias e grandes empresas. A versão de testes expira em 60 dias, e o valor varia conforme o pacote, do standard, de U$ 1.318,00 até o enterprise plus, que custa U$ 4.369,00 (WMWARE, 2010). 3.2.4 VSphere Hypervisor (ESXi) A VMware criou a versão VSphere Hypervisor (ESXi) totalmente gratuita. É uma edição livre da linha VSphere, e não possui os recursos como live migration, presente na versão comercial (SILVA et al, 2008), mas pode ser comprado separadamente e adicionado ao ESXi. O suporte e treinamento é oferecido pela VMware, porém são cobrados.
  • 54. 54 Utilizando a ferramenta VMware Converter, vendido separadamente, é possível utilizar máquinas virtuais criadas por outros softwares como Virtual Server e Virtual PC da Microsoft, e também do VMware Server. 3.2.5 VMware Server O VMware Server é uma plataforma de virtualização que trabalha como uma aplicação em qualquer hardware e particiona um servidor físico em várias máquinas virtuais ( VMWARE, 2010), portanto é uma máquina virtual do tipo II, e distribuída de forma gratuita. A VMware recomenda a utilização do VMware Server para avaliação de virtualização de servidores pela primeira vez, avaliar softwares em máquinas virtuais e também testes e desenvolvimento de softwares em diferentes ambientes de TI. Algumas características destacadas pela VMware sobre esse produto (VMWARE, 2010): • Instala como uma aplicação, instalação simples, orientada por um assistente. • Interface web de gestão • Funciona em qualquer hardware x86 • Funciona sobre uma ampla variedade de sistemas Linux e Windows como hospedeiro e convidado. • Permite que uma única máquina virtual abranja até dois processadores A Figura 22 destaca as principais diferenças entre as duas opções gratuitas da VMware para servidores, o VMware Server e o ESXi.
  • 55. 55 Figura - Comparativo entre VMware Server e ESXi (VMWARE, 2010) 3.3 Outras Tecnologias disponíveis para Virtualização As maiores empresas da área de TI estão cada vez mais investindo em softwares de virtualização, e as comunidades de software livre não ficam atrás, na atualidade temos inúmeras opções para cada caso especifico. Nessa seção serão abordados alguns dos demais softwares disponíveis no mercado. 3.3.1 VirtualBox O VirtualBox é um software da Oracle, de código aberto, sob os termos da GPL (General Public License), pode ser instalado em Windows, Linux, Solaris e Macintosh, e tem suporte a um grande número de sistemas convidados (VIRTUALBOX.ORG, 2010).
  • 56. 56 Segundo Silva et al (2008, p.35), “o VirtualBox utiliza partes de outros sistemas virtualizadores, como o QEMU e o BOCHS, para base de seu funcionamento”. O sistema pode ser adquirido gratuitamente no site do fabricante e atualmente está na versão 3.2.10. De interface simplificada, oferece uma boa opção para quem está iniciando nos processos de virtualização, pois é equivalente ao VMware Workstation. 3.3.2 Virtual Server Virtual Server é a ferramenta da Microsoft para competir no mercado de virtualização de servidores. É uma máquina virtual do tipo II e precisa ser instalada em algum sistema operacional da família Server, da Microsoft (Windows 2000, Windows 2003) (LAUREANO, 2006). O Virtual Server é um software gratuito e encontrado em duas versões: o Virtual Server 2005 Enterprise (até 32 processadores físicos) e o Virtual Server 2005 Standard (até quatro processadores) (MICROSOFT, 2010). A Figura 23 demonstra o modelo de arquitetura do Virtual Server. Neste exemplo, o Virtual Server é executado sobre o Windows Server 2003, com duas máquinas virtuais e suas aplicações. Figura - Virtual Server (MICROSOFT, 2009)
  • 57. 57 3.3.3 Virtual PC O VirtualPc é um software da Microsoft, lançado em 2003, que suporta o sistema operacional Windows sobre os Computadores Macintosh. O Virtual PC é uma máquina virtual do tipo II e precisa de um sistema hospedeiro (LAUREANO 2006). Atualmente o VirtualPc suporta todas as versões do Windows, MS-DOS, Linux, OS/2, entre outros (FAVACHO;MIRANDA;OLIVEIRA, 2008). É distribuído de forma gratuita pela Microsoft, porém a versão para Macintosh está disponível comercialmente (MATHEWS, 2008). 3.3.4 Hyper-V O Hyper-V é um sistema de virtualização nativo do Windows 2008 Server, que permite executar computadores virtualizados sob as versões x64, e é considerado uma evolução do Virtual Server 2005. Contudo, ele teve uma importante modificação em relação ao Virtual Server, com a incorporação direta do Hyper-V no sistema operacional, e não no hardware, como é o caso do Virtual Server (MCLEAN; THOMAS, 2010). O Hyper-V é a aposta da Microsoft para o cenário da virtualização, e dispõe de diversas características interessantes, como o snapshot, que permite reverter uma instância anterior de um sistema operacional bem mais rapidamente do que seria se tivesse que reinstalar o sistema. Conta também com a tecnologia Live Migration, possibilitando a migração de uma máquina virtual, sem que o usuário conectado perca seus dados. O Hyper-V usa o mesmo formato de arquivos de máquinas virtuais do Virtual Server 2005, o VHD, ou seja, pode-se migrar uma máquina virtual de um servidor antigo para o Hyper-V tranquilamente. (MICROSOFT, 2010). Junto com o Hyper-V a Microsoft dispõe o Virtual Server Migration Toolkit, uma ferramenta capaz de fazer a migração de um sistema operacional instalado fisicamente no modo tradicional, para uma máquina virtual, trazendo todas as suas configurações e aplicativos, sem quaisquer mudanças, salvas em arquivos XML.
  • 58. 58 Para servidores de grande porte, a Microsoft dispõe do System Center Virtual Machine Manager, que oferece mais segurança e confiabilidade em relação ao Virtual Server Migration Toolkit. Essa ferramenta necessita alto investimento em infraestrutura e um banco de dados SQL Server, para armazenar os dados e configurações das máquinas a serem migradas. As duas ferramentas de migração da Microsoft são compatíveis com Hyper-V e Virtual Server 2005 (MCLEAN; THOMAS, 2010). O Hyper-V possui um console de gerenciamento que possibilita gerenciar redes virtuais, editar e inspecionar discos, criar, reverter e excluir Snapshots ,editar as configurações de máquinas virtuais individualmente e configurar balanceamento de processador. Neste caso é possível determinar a carga de processamento para cada máquina virtual ou atribuir um peso relativo, onde o Hyper-V calcula quanto de processamento a máquina virtual necessita e aloca essa quantidade, economizando recursos. (MCLEAN; THOMAS, 2010). 3.3.5 QEMU O QEMU é dos virtualizadores mais complexos hoje existentes, mas que suporta várias maneiras de execução (SILVA et al, 2008). Laureano (2006, p.108) afirma que “o QEMU é um emulador de processador [...] o emulador converte partes do código para que o processador execute o conjunto de instruções”. Isso torna o QEMU bastante dependente do processador. O QEMU pode trabalhar em dois modos de operação: emulação total e no modo usuário. Na emulação total se processa o sistema completo, incluindo o processador, e pode ser utilizada para executar vários sistemas operacionais. Na emulação no modo usuário, disponível apenas para Linux, é possível executar programas Linux para outra plataforma, como o PowerPC, por exemplo, (LAUREANO, 2006). O QEMU é uma ótima opção para executar aplicativos dos Windows no Linux, pois é um software livre e gratuito. Sua desvantagem se diz respeito à velocidade, uma vez que por ser um emulador, ele fornece ao sistema convidado todas as instruções necessárias, deixando os processos mais lentos do que em máquinas virtuais em geral (LAUREANO, 2006).
  • 59. 59 3.3.6 Kernel-based Virtual Machine O KVM é um software de virtualização livre e gratuito para Linux, projetado para permitir emulação de hardware completa, na medida necessária para inicializar muitos sistemas operacionais de computadores na forma não modificada. (IBM, 2010). Segundo Mathews et al (2008, p.22), “a KVM é uma modificação do núcleo do Linux que efetivamente o transforma em um hypervisor quando se acrescenta um módulo adicional”. Cada hóspede é executado no espaço do usuário do sistema hospedeiro, por essa razão cada instância hóspede parece como um processo normal para o kernel hospedeiro, causando um isolamento mais fraco da máquina virtual, em relação às outras tecnologias já abordadas (MATHEWS, 2008). Usando KVM, é possível executar várias máquinas virtuais com imagens do Linux, Windows ou Mac. Cada máquina virtual tem hardware virtualizado particular, como placa de rede, disco, placa de vídeo e etc. (IBM, 2010). [...] Um processo normal, executando em Linux, possui dois modos de execução: Kernel Mode (modo kernel) e User Mode (modo usuário). Porém, por uma máquina virtual precisa de mais prioridade do que um processo normal, e por ser, também, bem mais complexa que um aplicativo comum, é adicionado um terceiro modo de execução: o guest mode (modo Convidado). (SILVA et al, 2008, p. 31). Silva et al (2008, p. 30) afirma que “integrado ao kernel, o KVM suporta automaticamente todos os dispositivos de hardware que funcionam com Linux”. O KVM é integrado ao kernel e não abaixo dele, fazendo com que cada máquina virtual seja um processo normal no sistema operacional. A Figura 24 ilustra a arquitetura do KVM. Na terminologia do KVM, os guest são máquinas virtuais comuns e o privileged-guest é a máquina destinada ao gerenciamento (SILVA et al, 2008). O KVM utiliza o QEMU para promover a abstração de hardware na máquina virtual [...] O modulo KVM emprega um controlador de dispositivo com novas características para expor hardware virtual para as instâncias hóspedes através da entrada /dev/kvm no sistema de arquivos do hypervisor. Os hóspedes KVM então acessam o hardware virtual via um processo QEMU ligeiramente modificado. (MATHEWS et al, 2008, p. 24).