UNIVERSIDADE CANDIDO MENDES PÓS-GRADUAÇÃO “LATO SENSU” FACULDADE INTEGRADA AVM OTIMIZAÇÃO DE RECURSOS EM TI UTILIZANDO VIRTUALIZAÇÃO Por: Anderson de Souza Campos Orientador Prof. Nelsom Magalhães Rio de Janeiro 2011 2 UNIVERSIDADE CANDIDO MENDES PÓS-GRADUAÇÃO “LATO SENSU” FACULDADE INTEGRADA AVM OTIMIZAÇÃO DE RECURSOS EM TI UTILIZANDO VIRTUALIZAÇÃO Apresentação Candido de Mendes monografia como à requisito Universidade parcial para obtenção do grau de especialista em Gestão de Projetos. Por: Anderson de Souza Campos 3 AGRADECIMENTOS A Deus que sempre iluminou a minha caminhada. Aos Colegas de curso pelo incentivo e troca de experiências durante todos esses meses letivos. A todos os meus familiares e amigos pelo apoio e colaboração. 4 DEDICATÓRIA Aos familiares, professores e amigos que acreditaram, auxiliaram e incentivaram para vencer mais essa jornada. 5 RESUMO A capacidade de processamento computacional nos últimos anos tem aumentado de forma significativa, mas, isso não se traduz no total aproveitamento desses recursos na maior parte do tempo de execução dos sistemas computacionais. Desta forma, a utilização de sistemas computacionais virtualizados, tem se tornado interessante pela redução de custo, rapidez de instalações e atualizações da infra-estrutura e portabilidade que as máquinas virtuais oferecem. Este trabalho tem como objetivo explanar a tecnologia da virtualização de maneira a enfatizar seus pontos positivos e negativos através dos principais conceitos e técnicas. Apresentar as principais ferramentas que podem auxiliar na virtualização de sistemas, através de produtos disponíveis no mercado. E expor a revolução desta tecnologia no presente cenário de TI nas empresas, como uma vantagem competitiva. 6 LISTA DE ILUSTRAÇÕES Figura 1 - Monitor de Máquinas Virtuais do Tipo I............................................ 14 Figura 2 - Monitor de Máquinas Virtuais do Tipo II........................................... 15 Figura 3 - Virtualização de Hardware ............................................................... 17 Figura 4 - Virtualização do Sistema Operacional ............................................. 18 Figura 5 - Virtualização de Linguagens de Programação ................................ 18 Figura 6 - Estrutura da Emulação .................................................................... 20 Figura 7 - Estrutura da Virtualização ................................................................ 21 Figura 8 - Estrutura da Paravirtualização ......................................................... 22 7 LISTA DE TABELAS Tabela 1 – Resumo sobre técnicas de Virtualização ....................................... 23 Tabela 2 – Comparação entre os softwares de Virtualização .......................... 35 Tabela 3 – Comparação entre honeypots de alta e baixa interatividade.......... 43 8 LISTA DE ABREVIATURAS E SIGLAS CPD Centro de Processamento de Dados CPU Central Processing Unit IDS Intrusion Detection System PC Personal Computer SO Sistema Operacional TI Tecnologia da Informação UML User Mode Linux VM Virtual Machine VMM Virtual Machine Monitor VT Virtualization Technology 9 METODOLOGIA A metodologia da pesquisa foi desenvolvida de forma descritiva com um minucioso planejamento de pesquisa obtidos de diferentes fontes, buscando visualizar as principais ferramentas de virtualização no mercado e suas vantagens através da análise e reflexão detalhada, tendo como base bibliografias de estudiosos sobre o tema, pesquisa na internet e artigos de revistas especializadas para o tema que tem sido atualmente destaque no mundo da tecnologia da informação. De acordo com Pecorari (2011, p. 1): Presente cada vez mais no mundo de TI e solicitado por pequenas, médias e grandes empresas, sem distinção, a virtualização é tema de interesse crescente no mundo corporativo no decorrer dos anos. O número de adeptos vem crescendo de acordo com a demanda de mercado e, principalmente, com os serviços oferecidos pelas consultorias de tecnologia que disponibilizam o serviço de gestão da infraestrutura das empresas. O intuito foi demonstrar que as organizações que adotarem a virtualização, podem alcançar excelência na utilização de recursos, otimizando processos e administração, economizando energia elétrica com impacto sobre a natureza e o meio ambiente. 10 SUMÁRIO INTRODUÇÃO 11 CAPÍTULO I - CONCEITOS EM VIRTUALIZAÇÃO 13 CAPÍTULO II - BENEFÍCIOS E APLICAÇÕES DA VIRTUALIZAÇÃO 24 CAPÍTULO III – FERRAMENTAS PARA VIRTUALIZAÇÃO 29 CAPÍTULO IV – IMPLEMENTAÇÃO EM AMBIENTE PROFISSIONAL 36 CONCLUSÃO 47 BIBLIOGRAFIA CONSULTADA 48 ÍNDICE 51 11 INTRODUÇÃO No mundo da tecnologia da informação, a virtualização é um assunto que tem ganhando um enorme destaque, apesar de não ser exatamente uma novidade. No inicio da era da informação, os recursos dos computadores eram centralizados, equipados com CPU, memória, recursos de armazenamento, e normalmente localizado em um CPD. Esse arranjo permitia um gerenciamento relativamente simples, cuidando somente do sistema central. Com o processo de globalização, houve um espetacular avanço tecnológico nas diversas áreas e um crescente aumento do comércio mundial de servidores e estações de trabalho. Causando aumento dos custos de gerenciamento destes sistemas, consequentemente aumento do consumo de energia elétrica, complexidade do ambiente, custos com mão de obra e aumento de chances de ocorrerem falhas. Uma das grandes preocupações, segundo CAPPUCCIO (2007, p. 82), “está associada à redução do consumo de energia elétrica, na manutenção dos servidores, pois em pouco tempo não terá energia suficiente para suportar o grande número de equipamentos de alta densidade que hospedam”. A solução desse problema é a consolidação de servidores através da virtualização, reduzindo o acúmulo de servidores físicos, permitindo suporte total a seus negócios com menos hardware, menos consumo de energia e refrigeração de servidores e em necessidade de menos espaço físico. Desta maneira, a virtualização proporciona um alto grau de portabilidade e de flexibilidade permitindo que várias aplicações de sistemas operacionais diferentes, executem em um mesmo hardware. Tornando 12 interessante também o uso da virtualização em desktop1, que pode ser usada para definir ambientes experimentais sem comprometer o sistema operacional original da máquina. 1 Computador pessoal, estação de trabalho, terminal, ou outro dispositivo usado por um ou vários indivíduos em horários variados para executar diferentes funções computacionais, entrada de dados, etc. 13 CAPÍTULO I CONCEITOS EM VIRTUALIZAÇÃO A virtualização é uma técnica que combina ou divide recursos computacionais para prover um ou mais ambientes operacionais de execução, segundo Nanda e Chiueh (2005). A virtualização tem como meta principal permitir que múltiplos sistemas operacionais e aplicativos rodem simultaneamente em um mesmo item de hardware, permitindo que seja exibido um único sistema, muito embora haja vários. A divisão de recursos computacionais em múltiplas execuções criando múltiplas partições, isoladas umas das outras, chamadas máquinas virtuais ou servidores virtuais privados, unidos em um único servidor físico recebe o nome de virtualização. A utilização da virtualização possibilita um ambiente mais dinâmico e flexível, executando cargas de trabalho em um número menor de sistemas físicos, facilitando suporte e manutenção. Os ambientes criados através dessa técnica são chamados máquinas virtuais. Dentre os conceitos envolvidos no estudo de máquinas virtuais, o de VMM é um dos principais. O conceito de Virtual Machine Monitor (VMM), ou seja, Monitor de Máquina Virtual, também conhecido por hypervisor é um componente de software que hospeda as máquinas virtuais, responsável pela virtualização e controle dos recursos compartilhados pelas máquinas virtuais, tais como, processadores, dispositivos de entrada e saída, memória, armazenagem, escalonamento de qual máquina virtual vai executar a cada momento. Classicamente, os monitores de máquinas virtuais (VMM - Virtual Machine Monitor) rodam no modo mais privilegiado do sistema operacional, enquanto seus sistemas convidados rodam com privilégios reduzidos, onde o 14 VMM pode interceptar e emular todas as ações dos sistemas convidados que normalmente tenham que acessar ou manipular recursos de hardware. Segundo (LAUREANO, MAZIERO e JAMHOUR, 2004, p. 3) existem duas arquiteturas clássicas para a construção de sistemas de máquinas virtuais: • Tipo I (Figura 1), o monitor é implementado entre o hardware e os sistemas operacionais convidados; Figura 1 – Monitor de Máquinas Virtuais do Tipo I Fonte: (LAUREANO, 2006, p. 22) • Tipo II, (Figura 2), o monitor é implementado como um processo de um sistema operacional convencional subjacente, denominado sistema hospedeiro (host2 operating system). 2 Nome dado ao computador principal (anfitrião) de uma rede que comanda e controla as ações de outros computadores. 15 Figura 2 – Monitor de Máquinas Virtuais do Tipo II Fonte: (LAUREANO, 2006, p. 22) Porém, em termos de desempenho, a arquitetura do Tipo I leva uma grande vantagem sobre a do Tipo II, pois a sua camada de virtualização proporciona acesso direto ao hardware. 1.1 Visão Histórica O conceito de virtualização é antigo, data os anos 60, com o uso mais precoce realizado no antigo IBM 7044 CTSS (Compatible Time-Share System), no qual foi utilizado um mainframe3 IBM 704 M44/44X com implementação de chamadas supervisoras. O sistema operacional deste mainframe, na época chamado "Supervisor", executava duas máquinas virtuais, uma para o sistema e uma para execução de programas, servindo de base para outros computadores que viriam após ele. Com base nesta tecnologia, em 1966 foi lançado o mainframe IBM System/360 modelo 67, onde o hardware do equipamento era inteiramente acessado através de uma interface chamada VMM (Virtual Machine Monitor) 3 Computador de grande porte, dedicado normalmente ao processamento de um volume grande de dados, informações. 16 que funcionava diretamente no hardware básico do equipamento, permitindo então a execução de máquinas virtuais. Com essa funcionalidade, o antigo termo Supervisor foi então denominado hypervisor. Sendo um software que provê ambiente de virtualização para o sistema operacional rodando acima dele (CANDIDO, 2007, p.1-1). No início da década de 70 a IBM anunciou a série de mainframes System/370, onde cada máquina virtual era uma cópia exata de uma máquina real, porém com uma capacidade de memória reduzida, podendo um computador ser dividido em várias máquinas virtuais leves, utilizando recursos tanto quanto o original. Em 1972 anunciou o sistema operacional VM/370, que permitia a criação de múltiplas máquinas virtuais para os mainframes desta série. Estas foram as primeiras tentativas de virtualização. 1.2 Formas de Virtualização Segundo LAUREANO (2006, p. 24): A virtualização é a interposição do software (máquina virtual) em várias camadas do sistema. É uma forma de dividir os recursos de um computador em múltiplos ambientes de execução. Existem três formas de virtualização: virtualização do hardware, virtualização do sistema operacional e virtualização de linguagens de programação. 1.2.1 Virtualização do Hardware Nesta forma de virtualização, o sistema físico é exportado como uma abstração do hardware (Figura 3). Em seu livro, LAUREANO (2006, p. 24) afirma que nesse modelo, qualquer software escrito para a arquitetura (x86, por 17 exemplo) irá funcionar. Esse foi o modelo adotado na década de 1960 para o VM/370 nos mainframes IBM. Figura 3 – Virtualização de Hardware Fonte: (LAUREANO, 2006, p. 25) 1.2.2 Virtualização do sistema operacional Segundo LAUREANO (2006, p. 25), “a virtualização exporta um sistema operacional como abstração de um sistema específico” (Figura 4). A máquina virtual roda aplicações, ou um conjunto de aplicações, de um sistema operacional específico. 18 Figura 4 – Virtualização do Sistema Operacional Fonte: (LAUREANO, 2006, p. 25) 1.2.3 Virtualização de linguagens de programação Neste tipo de virtualização, é cria uma aplicação no topo do sistema operacional (Figura 5). LAUREANO (2006, p. 26) diz que “na prática, as máquinas virtuais são desenvolvidas para computadores fictícios projetados para uma finalidade específica. A camada exporta uma abstração para a execução de programas escritos para essa virtualização”. Figura 5 – Virtualização de Linguagens de Programação Fonte: (LAUREANO, 2006, p. 26) 19 1.3 Técnicas de Virtualização Em seu livro, SMITH e NAIR (2005, p. 38) afirmam que: A virtualização está sendo utilizada nas mais diversas áreas, e dependendo do hardware ou da necessidade do software que deve ser utilizado, as técnicas de virtualização podem variar. Portanto, existem similaridades entre as técnicas de virtualização, onde a diferença entre elas está no nível de abstração e nos métodos usados para a virtualização. As técnicas de virtualização se diferem na complexidade da implementação, suporte ao sistema operacional, nível de acesso aos recursos comuns e desempenho. Sendo emulação, virtualização e paravirtualização as três técnicas utilizadas. 1.3.1 Emulação A emulação é realizada por meio de um software que simula um computador real, criado essencialmente para transcrever instruções de um processador alvo para o processador no qual ele está rodando, utilizando os recursos reais quando necessários, da máquina que roda a máquina virtual. Segundo LAUREANO (2006, p. 18), a técnica de emulação “implementa todas as instruções realizadas pela máquina real em um ambiente abstrato de software, possibilitando executar um aplicativo de uma plataforma em outra”. Normalmente um emulador permite executar um SO sem a necessidade de modificações, pois o SO não está ciente que não está rodando em um hardware real. Podemos notar (Figura 6) que o emulador provê uma camada virtual que simula o hardware necessário para as aplicações e abstrai das aplicações o hardware real. As camadas de emulação e de hardware virtual fazem parte 20 de uma mesma camada, separadas apenas por suas características e rodando sobre o sistema operacional, formando uma camada base às aplicações. Figura 6 – Estrutura da Emulação Fonte: (LAUREANO, 2006, p. 26) 1.3.2 Virtualização Total A virtualização total é feita em nível de sistema operacional. Onde uma estrutura de hardware completa é virtualizado. De acordo com LAUREANO (2006, p.29): O sistema a ser virtualizado não sofre qualquer tipo de alteração, o que proporciona uma maior segurança de acesso entre máquinas virtuais, provendo isolamento das requisições e segurança para rodar múltiplas aplicações ou cópias do mesmo sistema operacional, no mesmo servidor. Em compensação, o sistema virtualizado é executado de forma mais lenta. 21 Figura 7 – Estrutura da Virtualização Fonte: (LAUREANO, 2006, p.29) Na Figura 7, vemos que embora a virtualização também seja uma camada de abstração como a emulação, é executada juntamente com o SO, e repassa instruções para o hardware real. Acima dessa camada rodam as máquinas virtuais (VM1, VM2) que suportam os sistemas operacionais convidados (SO1, SO2) independentes um do outro e que por sua vez também suportam aplicações independentes. 1.3.3 Paravirtualização Conforme LAUREANO (2006, p. 30), na paravirtualização, o sistema a ser virtualizado (sistema convidado) sofre modificações para que a interação com o monitor de máquinas virtuais seja mais eficiente. A paravirtualização também permite rodar diferentes sistemas operacionais em um único servidor. Na paravirtualização, é o próprio sistema operacional modificado que dá suporte à virtualização (camada de paravirtualização). Como podemos observar na Figura 8, o hypervisor é a camada de monitoração que roda em 22 conjunto à camada de paravirtualização, atuando como interface da comunicação entre as máquinas virtuais e o hardware. Figura 8 – Estrutura da Paravirtualização Fonte: (LAUREANO, 2006, p.30) 1.3.4 Relação entre a virtualização total e a paravirtualização A técnica de paravirtualização não simula um novo hardware para as aplicações, porém através de modificações no kernel4 possibilitam que as chamadas de sistema que se relacionam com o hardware sejam controladas pelo hypervisor. Na técnica de virtualização existe uma camada que controla a comunicação entre as máquinas virtuais e o sistema operacional, enquanto na paravirtualização, essa camada de virtualização é o próprio sistema operacional modificado para hospedar máquinas virtuais. 4 Responsável por fazer a interação entre as camadas de hardware e software, gerência os recursos do sistema e permite que os programas façam uso deles. 23 Segue uma visão geral dos tipos de virtualização em um resumo sobre as técnicas de virtualização já discutidas na tabela 1. Tipo Virtualização Emuladores Completa Para Descrição Vantagens Desvantagens O hypervisor fornece uma máquina virtual completa permitindo que aplicativos de outras arquiteturas executem no ambiente virtualizado. Simula hardware que não está disponível fisicamente. Baixa desempenho e densidade. O hypervisor fornece uma máquina virtual completa permitindo que hóspedes executem isoladamente. Flexibilidade. Executa diferentes versões de múltiplos sistemas operacionais de diversas origens. O SO hóspede não sabe que está sendo virtualizado. Pode ser causa de diminuição perceptível de desempenho em um hardware comum, particularmente para aplicativo com intensas operações de E/S. O hypervisor fornece uma máquina virtual completa, mas especializada para cada hóspede, que precisa ser modificado e executado em isolamento. Leve e rápida, desempenho próxima da nativa. Exige que os SO sejam alterados para utilizar hiperchamadas em vez de alguns comandos críticos. Permite que o SO coopere com o hypervisor – melhora as E/S e alocação de recursos. Permite arquiteturas de virtualização que não suportam a forma completa. A maior limitação da paravirtualização é o fato que o SO hóspede precisa ser personalizado para executar sobre o monitor da máquina virtual (VMM), que é o programa hospedeiro que permite que um único computador suporte diversos ambientes de execução idênticos. Isso tem impacto especialmente para SO antigos com códigos fechados que ainda não tem implementadas extensões para virtualização. Tabela 1 - Resumo Sobre Técnicas de Virtualização Fonte: (LAUREANO, 2006, p.31) 24 CAPÍTULO II BENEFÍCIOS E APLICAÇÕES DA VIRTUALIZAÇÃO A área de virtualização está chamando a atenção de grandes empresas da TI. Sendo demonstrado pelo grande número de empresas que surgem com soluções de gerência de ambientes virtualizados e pelo aumento nos investimento na área na busca de soluções de virtualização e aperfeiçoamento de técnicas já existentes para melhorar o desempenho das aplicações tradicionais, para que sejam executadas em ambientes virtualizados. Para SIQUEIRA (2007, p. 4): A primeira e mais óbvia vantagem da virtualização é a redução de custos. Com apenas uma máquina que possua os recursos suficientes é possível montar uma estrutura com vários servidores virtuais, dispensando a aquisição de várias máquinas. Operacionalmente também há vantagens, pois a administração se torna centralizada e o tempo total de manutenção é inevitavelmente reduzido. Embora existam diferentes níveis de virtualização, a maioria delas converge para um conjunto comum de aplicabilidade, vantagens e desvantagens. Permitindo as empresas alcançarem uma eficiência significativa em sua estrutura. 2.1 Aplicabilidade A virtualização pode ser usada em muitos cenários práticos, segundo Nanda e Chiueh (2005): a) Consolidação de servidores: centraliza múltiplos servidores em um único host físico com desempenho e isolação de falhas, aumentando a 25 eficiência, reduzindo os custos de manutenção e facilitando o gerenciamento dos recursos no ambiente operacional de TI. Outro ponto a ser levantado é que a consolidação permite ocupar menos espaço físico com servidores, propiciando menos gastos com eletricidade e com manutenção de máquinas. b) Consolidação de aplicações: permite que aplicações e sistemas operacionais executem em sistemas heterogêneos com máquinas de características diferentes, virtualizando o hardware. c) Configurações de múltiplos sistemas operacionais: executar múltiplos sistemas operacionais simultaneamente, fazendo que um número maior de aplicações possa ser executado ao mesmo tempo, tornando-se muito útil para realizar o desenvolvimento e testes de novas aplicações. d) Desenvolvimento de kernel: no kernel de uma máquina virtual podem ser feitos testes e modificações, obtendo ganhos de tempo e agilidade, sem a necessidade de uma máquina separada para testes. e) Ensino e aprendizagem: a virtualização pode ser usada no ensino de diversos SO, também na aprendizagem do funcionamento deles, pois pode ser facilmente recuperado caso ocorra algum erro durante o uso. f) Migração de software: facilita a migração de software e aumenta a mobilidade de softwares. g) Suporte de hardware para sistemas operacionais customizados: desenvolvimento de novos sistemas operacionais beneficiando-se do suporte ao hardware variado de existentes sistemas operacionais. h) Sandboxing: máquinas virtuais podem prover um ambiente seguro e isolado para a execução de aplicações não confiáveis, ou de fontes não seguras. 26 i) Honeypots e Honeynets: um honeypot é um sistema colocado em uma rede com o objetivo de ser comprometido. Uma honeynet é uma rede formada por vários honeypots. A grande vantagem de se utilizar virtualização em uma honeynet é não comprometer a rede real, sendo os ataques confinados às honeynets. Assim, quando um dos honeypots é comprometido, pode ser substituído por outro de forma mais fácil. 2.2 Benefícios A virtualização deixou de ser uma tendência e se tornou uma realidade no mundo corporativo, trazendo inúmeras vantagens a todos, já que pela economia de recursos e equipamentos também se trata de uma tecnologia verde (BR LINK, 2011, p.1-1): a) Redução de custos com hardware: é possível de ser alcançada com a consolidação de pequenos servidores em outros mais poderosos. Pois nos servidores físicos, em média, 80% do hardware se mantém ocioso, portanto somente 20% do hardware são realmente utilizados para as aplicações. Com a virtualização, o uso de hardware cresce para 70% em média, tornando mais eficiente o consumo do hardware para os servidores virtuais. b) Economia de espaço e energia: são utilizados muito menos servidores físicos, ganhando em espaço em sua estrutura física. Além disso, menos servidores ligados significam também menos consumo de energia e quanto menos máquinas ligadas, menor a necessidade de refrigeração. c) Alta disponibilidade: a virtualização de servidores permite agregar funcionalidades à estrutura da empresa, uma vez que o servidor virtual não depende mais de um servidor físico específico para funcionar, podendo "flutuar" para um servidor ativo, sem comprometer os serviços. 27 d) Encapsulamento: usado para manipular e controlar a execução do software na máquina virtual garantindo sua compatibilidade. Garante também que um completo ambiente de VM seja salvo em um simples arquivo, facilitando a realização de backup, mover e copiar. e) Disaster Recovery: a implantação de um programa de recuperação de desastres é uma realidade efetivamente possível e prática, com estruturação de serviços para replicação em sites remotos. f) Compatibilidade de software: a virtualização provê uma abstração de forma que todo o software escrito para ela será executado. A abstração de máquina virtual pode mascarar diferenças no hardware e software nas camadas abaixo da máquina virtual. Um exemplo é o slogan do Java “write once, run anywhere” (escreva uma vez, rode em qualquer lugar). g) Segurança: a abstração isola completamente a máquina hospedeira e outras máquinas virtuais existentes. Se uma máquina virtual tem problemas, todas as outras não são afetadas, executando o isolamento de dados e de desempenho. 2.3 Dificuldades A virtualização não traz apenas maravilhas, existem dificuldades que surgem com o processo de virtualização. Além do custo do processo de virtualização em si, existem outras dificuldades para a ampla utilização de máquinas virtuais em ambientes de produção (LAUREANO, 2006, p.35): a) Processador que não pode ser virtualizado: com exceção das novas tecnologias de virtualização da Intel e AMD, conhecidas respectivamente por Intel VT e AMD-V, a arquitetura dos processadores 32 bits não permite naturalmente o uso da virtualização pelo fato de não ter sido 28 concebida para executar múltiplos sistemas operacionais ao mesmo tempo. b) Diversidade de hardware: o desenvolvimento de equipamentos com as mais variadas características e hardware é uma das dificuldades. Sendo necessário um esforço de programação enorme para que o VMM reconheça a gigantesca variedade de hardware com drivers5 diferentes. c) Persistência de softwares: ao contrário de mainframes, que são configurados e controlados por administradores de sistema, os desktops e Workstations já vêm com um SO instalado e configurado. Nesse ambiente, é muito importante permitir que um usuário possa utilizar a tecnologia da virtualização sem perder a facilidade de continuar utilizando seu SO padrão e aplicativos. d) Custo de execução dos processos: dependendo do hardware que se está utilizando, o VMM pode haver um overhead6 gerado pela camada de virtualização. Ambientes com suporte a virtualização tendem a apresentar um overhead muito menor pelo fato de possuírem instruções específicas para interagir com as máquinas virtuais, desonerando assim o software monitor de VM. e) A principal desvantagem do uso de máquinas virtuais é o custo adicional de execução dos processos em comparação com a máquina real. Esse custo é muito variável, podendo chegar a 50% ou mais em plataformas sem suporte de hardware à virtualização, como os PCs de plataforma Intel. Esse problema inexiste em ambientes de hardware com suporte à virtualização, como é o caso de mainframes. 5 6 Pequenos programas que fazem a comunicação entre o S.O. de sua máquina e o Hardware. Custos adicionais em processamento ou armazenamento que reduz de forma significativa e indesejável, o desempenho dos sistemas de computação. 29 CAPÍTULO III FERRAMENTAS PARA VIRTUALIZAÇÃO Devido ao crescimento da área de virtualização, cada vez mais surgem ferramentas que fornecem à sua maneira, ambientes virtualizados para as mais diversas aplicações e sistemas. Existem soluções livres ou proprietárias, que concorrem pelo mercado de virtualização das grandes empresas que estão cada vez mais adotando dessa tecnologia. Para suprir essas necessidades, a cada dia surgem novos sistemas que dão suporte a utilização de máquinas virtuais, que lutam por uma fatia do mercado empresarial de tecnologia da informação. Atualmente as ferramentas para esse tipo de trabalho são inúmeras, dentre elas as mais utilizadas pelo mercado serão apresentadas. 3.1 VMWare O VMWare é uma opção de hypervisor, criado em 1998 pela VMware Inc. que é uma subsidiária da EMC Corporation, sendo um dos primeiros emuladores de sistemas operacionais baseados na arquitetura x86. Atualmente, o VMware está posicionado como líder em virtualização de servidores em plataformas x86 e tem como objetivo trazer tecnologia de máquinas virtuais desde ambientes desktop a ambientes de datacenter7 (VMware, 2011). 7 Edificação desenvolvida ou adaptada para hospedagem de sistemas de informação com características de última geração na segurança. 30 Em seu livro, Laureano e Maziero (2008, p.176) dizem que o VMware “é um software de virtualização total com licença proprietária, que provê uma camada de virtualização que suporta vários sistemas operacionais sobre um hardware”. Portanto, permite a emulação de vários sistemas operacionais ao mesmo tempo sobre um sistema virtualizado onde cada máquina virtual funciona como um computador pessoal completo, contendo processador, memória, disco, vídeo, som, unidades de disco. 3.2 Virtual PC O Virtual PC é um software de virtualização total com licença proprietária da Microsoft, lançado em dezembro de 2003 para virtualizar sistemas operacionais Windows ou emulá-los em sistemas baseados no PowerPC (Macintosh). O programa foi originalmente escrito em 1997 pela empresa Connectix que foi adquirida pela Microsoft posteriormente. Em julho de 2006, tornou-se freeware para desktops e usuários comuns. Foi projetado para fazer uso das vantagens da tecnologia nova de Intel chamada Intel Virtualization, assim aumentando o desempenho do sistema convidado e sendo de fácil instalação e rápida reconfiguração dos equipamentos. O Virtual PC tem como desvantagem o suporte ao Linux. Pois sua instalação suporta apenas no Windows XP e Windows 7 e como convidado apenas os sistema operacionais Windows XP, Windows Vista e Windows 7 (MICROSOFT, 2011). 31 3.3 Xen O Xen foi desenvolvido pelo Systems Research Group da Universidade de Cambridge, e é parte de um projeto maior chamado XenoServers, e depois adquirida pela Citrix Systems. É um software livre que proporciona maior integração com outras tecnologias, licenciado pela GPL8. Segundo Macagnani (2011, p.1), o Xen utiliza técnicas de paravirtualização para emular a arquitetura de processadores das famílias X86, X86-64, IA-64 e Power PC. Caracteriza-se por ter como base o Linux e permite compartilhar uma simples máquina para vários clientes rodando sistemas operacionais e seus respectivos programas. Provê uma camada chamada hypervisor que tem privilégios totais aos recursos, executando múltiplas máquinas virtuais com segurança em uma única máquina física, com desempenho próxima à nativa, ficando a seu cargo, a alocação de memória dos domínios virtuais, controlando os recursos de comunicação e de processamento das máquinas virtuais, gerenciando todo o acesso à memória e dispositivos. O Xen pode ser considerado uma tecnologia madura, sendo muito utilizado em sistemas de produção e acessível a um número cada vez maior de usuários, proporcionando ganhos de desempenho, o que o torna uma alternativa interessante para vários sistemas de computação, através de suas vantagens como custo e portabilidade. Atualmente, o ambiente Xen suporta os sistemas Windows, Linux e NetBSD. Várias distribuições Linux já possuem suporte nativo ao Xen. 8 Acrônimo para General Public License 32 3.4 Bochs O Bochs foi criado por Kevin Lawton como um produto comercial, foi adquirido pela empresa MandrakeSoft no ano 2000, que passou a distribuí-lo gratuitamente, sob licença GPL, escrito em C++. É um emulador multiplataforma da plataforma x86, de código aberto. Por ser um emulador multiplataforma, simula totalmente um computador da arquitetura x86 e pode executar SO compilados para essa plataforma, como se este rodasse numa máquina real, assim como os aplicativos executáveis escritos para rodar no SO que estiver rodando no Bochs. Pode fazer isso em qualquer computador que conte com um compilador de linguagem C, isso possibilita que ele faça a emulação da plataforma x86 em máquinas como Power PC da IBM e SPARC da Sun. O Bochs pode ser instalado em sistemas Linux e Windows, sendo capaz de executar a maioria dos sistemas operacionais dentro da emulação, incluindo Linux, DOS, Windows 95/98, Windows NT/2000/XP, Windows Vista e Windows 7. O Bochs não utiliza nenhuma técnica para acelerar a emulação, o que o torna mais lento, pois todas as instruções são executadas via software (LAUREANO, 2006). 3.5 QEmu Segundo Laureano e Maziero (2008, p.180) o QEmu é um hypervisor com virtualização completa através da emulação, de licença GPL e não requer alterações ou otimizações no sistema hospedeiro, para prover a 33 virtualização. É um hypervisor recursivo, ou seja, é possível chamar o QEmu a partir do próprio QEmu. O hypervisor QEmu oferece dois modos de operação: a) Emulação total do sistema: emula um sistema completo, incluindo processador e vários periféricos. Utilizado para executar diferentes sistemas operacionais; b) Emulação no modo de usuário: disponível apenas para o sistema Linux, executando processos compilados em diferentes plataformas de hardware. Apesar de a filosofia ser basicamente a mesma do Bochs, o QEmu consegue um desempenho melhor através de um processo de compilação das instruções da CPU emulada, transformando-as num formato intermediário de interpretação rápida. 3.6 User-Mode Linux O User-Mode Linux foi proposto por Jeff Dike em 2000, como uma alternativa de uso de máquinas virtuais no ambiente Linux. Para Laureano (2008, p.1), UML é um monitor de máquinas virtuais convidado, que executa como um processo sobre um sistema nativo Linux. Ele recria um sistema Linux completo a partir de uma imagem de sistema em disco. O resultado é um user space separado e isolado na forma de uma máquina virtual, que utiliza dispositivos de hardware virtualizados a partir dos serviços providos pelo sistema hospedeiro. Essa máquina virtual é capaz de executar todos os serviços e aplicações disponíveis para o sistema hospedeiro. 34 No UML, cada máquina virtual é vista como um processo do sistema Linux nativo subjacente. Todos os dispositivos físicos usados dentro da máquina virtual são virtualizados a partir de recursos do sistema nativo (LAUREANO, 2008, p.1): a) Os discos da máquina virtual correspondem a arquivos no sistema nativo; b) As interfaces de rede virtuais são providas por daemons9. executando no sistema nativo; Os usuários e processos da máquina virtual são distintos dos usuários e processos do sistema nativo, sem prejuízo para a segurança do sistema. O User-Mode Linux está disponível na versão 2.6 do núcleo Linux, ou seja, ele foi assimilado à árvore oficial de desenvolvimento do núcleo, portanto melhorias na sua arquitetura deverão surgir no futuro, ampliando seu uso em diversos contextos de aplicação. 3.7 Análise Comparativa entre Virtualizadores Abaixo veremos algumas características principais entre os softwares de virtualização abordados. A Tabela 2 mostra a comparação entre os softwares de virtualização citados como técnicas de virtualização utilizadas, tipo do sistema operacional anfitrião e convidado, utilização mais comum e o tipo de licença para cada software. 9 Acrônimo de Disk And Execution MONitor, é um programa de computador que roda de forma independente, ao invés de ser controlado diretamente por um usuário. 35 Nome Técnica Virtualização Plataforma disponível (hospedeiro) Plataforma suportada (hóspede) Windows DOS Linux Unix BSD Netware Solaris DOS Windows OS/2 Linux Unix BSD Windows XP (todos com modificações) Utilização Licença Acadêmico, desenvolvimento, aplicações de produção Proprietário Acadêmico, desenvolvimento, aplicações de produção Proprietário Acadêmico, desenvolvimento, aplicações de produção GPL VMware Virtualização Total Linux Windows Virtual PC Virtualização Total Windows XEN Paravirtualização NetBSD Linux Emulação Windows Linux MacOS Unix BeOS DOS Windows Unix BSD Linux Curiosos e desenvolvimento GPL QEMU Emulação Windows Linux MAC OS DOS Windows Unix BSD Linux Acadêmico, desenvolvimento, aplicações de produção GPL User Mode Linux Paravirtualização Linux Linux Acadêmico, desenvolvimento, aplicações de produção GPL Bochs Tabela 2 - Comparação entre os softwares de Virtualização Fonte: (LAUREANO, 2006, p.79) Podemos notar a grande variedade de softwares virtualizadores que estão disponíveis no mercado, com suporte aos diversos sistemas operacionais e plataformas, a maioria com licenças livres para utilização, alguns com ênfase acadêmica e em constante desenvolvimento. 36 CAPÍTULO IV IMPLEMENTAÇÃO EM AMBIENTE PROFISSIONAL A virtualização pode ser utilizada em diversos setores pelas organizações de TI, até mesmo por usuários domésticos trazendo benefícios em uma série de situações. Seu emprego clássico é na consolidação de servidores, executando vários serviços em uma mesma máquina física, mas cada um em uma máquina virtual separada. Além de permitir que o hardware seja melhor aproveitado, isso reduz investimento na aquisição e na manutenção de uma infra-estrutura física de rede (refrigeração, cabeamento, espaço físico, consumo de energia, etc.). Segundo Carissimi (2008, p.177) outra vantagem importante, é o fato de que uma máquina virtual pode ser facilmente migrada de uma máquina física a outra, o que possibilita uma rápida recuperação em casos de falhas e agiliza a manutenção. O desenvolvimento de software é outra situação em que a virtualização traz vantagens. É possível testar um produto em desenvolvimento sobre vários SO, e suas distintas versões, sem a necessidade de ter uma máquina física instalada com cada um dos sistemas operacionais. Outro uso interessante da virtualização é a possibilidade de construir ambientes de testes, onde se pode instalar, configurar e avaliar pacotes de software antes de colocar em produção, isso sem comprometer um sistema computacional físico. Nesse caso, é possível criar um ambiente virtual completo, com vários servidores com sistemas operacionais distintos e/ou serviços, e assim monitorar atividades de tentativas de invasão sem afetar um sistema físico. Existem diversas aplicações onde a virtualização pode ser interessante, mas tipicamente, elas são mais aplicadas na virtualização de 37 desktops, virtualização de servidores, virtualização como recursos de segurança e com implementação na área empresarial e educacional. 4.1 Virtualização de Servidores Hoje em dia as empresas vêm cada vez mais buscando a centralização e diminuição do número de servidores físicos em suas instalações. Esse processo é conhecido como consolidação de servidores. Devido aos anos de recessão que estamos sofrendo recentemente, cada vez mais é necessário reduzir custos e este fato vem mudando o cenário do mercado mundial de servidores, que está caminhando novamente para centralização de recursos. Em seu livro CARISSIMI (2008, p. 195) afirma que: O princípio básico é o melhor aproveitamento de recursos, invés de haver n servidores com percentual de utilização de x é possível ter um único servidor com um percentual de uso de aproximadamente n.x (n.x < 100). Ao invés de possuirmos vários servidores físicos, podemos possuir apenas alguns ou somente um, reduzindo drasticamente a complexidade. Para implementar uma consolidação de servidores, primeiramente devem-se considerar alguns pontos chaves (Intel, 2011): a) Avaliar os processos e as aplicações críticas. Onde aumentando o nível dos serviços, aumentariam os resultados. b) Verificar quais servidores está subutilizados e que poderiam compartilhar recursos. c) Algumas aplicações são más candidatas à consolidação. Como exemplo, as aplicações de alto desempenho que utilizam o servidor na maior parte do tempo. 38 Deve-se proceder a seguinte metodologia para cálculo de capacidade (Intel, 2011): a) Fazer um histórico dos dados das aplicações a serem consolidadas, capturando dados para consultas, uso de memória, entrada e saída, armazenamento ou qualquer outra informação relevante, em um ciclo de um dia, um mês, um ano etc. b) Através do histórico, mapear padrões de uso para descobrir aplicações que poderiam funcionar juntas, e combinando aplicações de picos em horários diferentes. c) Somar todos os picos de carga de trabalho de todos os serviços e aplicações a serem consolidadas para determinar a requisitos de capacidade computacionais necessárias (CPU, memória, disco, operações de entrada e saída etc.). d) Acrescentar uma margem de crescimento projetada para os próximos seis meses, dois anos ou eventual substituição de equipamentos. e) Políticas institucionais de utilização de servidores (por exemplo: nenhum servidor deveria estar funcionando normalmente acima de 80% da capacidade), deve-se adicionar também esta margem de segurança. f) Considerar no cálculo o overhead gerado da técnica de virtualização adotada. Neste caso a virtualização de servidores é uma grande alternativa para empresas de pequeno, médio e grande porte motivadas, em ordem de importância, pelas seguintes razões (CARISSIMI, 2008): a) Aumentar a taxa de utilização de servidores. b) Reduzir custos operacionais de datacenter. c) Melhorar os procedimentos de recuperação de desastres e de backup. d) Criar ambientes mais flexíveis para desenvolvimento e teste de software. e) Reduzir custos de administração de TI. 39 Haverá um melhor aproveitamento dos recursos computacionais, redução do custo total de propriedade e do custo operacional, a diminuição do consumo de energia elétrica reduzindo o impacto no meio ambiente, além do que, com o número de servidores físicos reduzidos, o espaço físico necessário para abrigá-los também ficará reduzido, garantindo vantagens como economia em administração, manutenção e refrigeração dos equipamentos. Além disso, a capacidade de executar softwares de diferentes sistemas operacionais em um mesmo hardware reduz o desperdício de capacidade de processamento que ocorre freqüentemente nos servidores em determinados horários ou dias do mês. A administração facilitada é outro benefício agregado e de grande importância no projeto de consolidação de servidores. 4.2 Virtualização de Desktops A consolidação de servidores é o uso clássico de virtualização, mas também traz enormes benefícios quando empregada em desktops. A virtualização de desktops é uma alternativa mais amigável em relação ao uso de servidores de terminais, pois garante a total compatibilidade das aplicações, uma maior familiaridade de uso para os usuários e o isolamento total dos ambientes, oferecendo uma forma simples para testar novas configurações ou executar programas que foram feitos para sistemas operacionais diferentes do nativo (CARISSIMI, 2008, p. 197). Em muitas empresas é comum o tempo de processamento dos desktops serem subutilizados. O horário comercial é de cerca de 9 horas diárias, ou seja, 45 horas por semana, mas uma semana tem um total de 168 horas (24 x 7), portanto, a taxa de utilização dos equipamentos é de aproximadamente 27%, segundo Carissimi (2008, p.198). Uma forma de 40 recuperar esse processamento é associar ao descanso de tela uma máquina virtual, dessa forma, quando o descanso de tela é ativado ele pode registrar uma máquina virtual em um servidor central e assim formar um cluster10 (agregado) de computadores virtuais. Esse uso é derivado de programas peerto-peer11 e existem vários projetos desenvolvidos nesse sentido. Normalmente a técnica emprega um horário a partir do qual o registro é feito e validado. Assim como na virtualização de servidores, a virtualização de desktops pode ser uma boa opção para empresas de todos os portes, trazendo como benefícios (Virtue IT, 2011): a) Gerenciamento centralizado; b) Instalações simplificadas; c) Facilidade para a execução de backups; d) Suporte e manutenção simplificados; e) Acesso controlado a dados sensíveis e à propriedade intelectual mantendo-os seguros dentro do datacenter da empresa; f) Independência de hardware; g) Disponibilização de novos desktops reduzida para alguns minutos; h) Migração de desktops para novo hardware de forma transparente; i) Maior disponibilidade e mais fácil recuperação de desktops; j) Compatibilidade total com as aplicações. Um processo de virtualização ideal de desktops prevê as seguintes etapas (Virtue IT, 2011): a) Análise e Avaliação - dos equipamentos e ativos envolvidos no processo possibilitando o desenvolvimento do projeto mais adequado para sua empresa; 10 Sistema onde dois ou mais computadores trabalham em maneira conjunta para realizar processamento pesado. 11 Arquitetura de sistemas distribuídos caracterizada pela descentralização das funções na rede, onde cada nodo realiza tanto funções de servidor quanto de cliente. 41 b) Planejamento - garante de forma eficaz e eficiente o projeto de virtualização, gerenciando todos os riscos envolvidos e garantindo o sucesso do projeto; c) Implementação - reflete diretamente na qualidade dos serviços e evita quaisquer surpresas; d) Treinamento - evita problemas e falhas causadas por erros na administração do ambiente. Deve ser realizado antes, durante ou após a execução da etapa de implantação; e) Acompanhamento e suporte - garante segurança ao administrador que irá assumir o ambiente virtualizado, com o objetivo de sanar quaisquer dúvidas que possam surgir no dia-a-dia. Seja qual for o ambiente que se pretende virtualizar, é importante fazer uma análise e avaliação dos equipamentos e ativos envolvidos no processo. Isto permite o mapeamento do ambiente, possibilitando o desenvolvimento do projeto mais adequado para a empresa, seguido de um bom planejamento, evitando quaisquer surpresas durante a etapa de implementação, que deve ser cuidadosamente executada e acompanhada pelo gerente de projetos. E para um gerenciamento seguro do ambiente implantado, o treinamento é fundamental, evitando problemas e falhas causadas por erros na administração do ambiente. Este treinamento pode ser realizado antes, durante ou após a execução da etapa de implantação. Outro ponto importante para que pretende virtualizar é o acompanhamento pós implantação. Tem um altíssimo valor nos projetos, pois garante segurança ao administrador que irá assumir o ambiente virtualizado e tem o objetivo de sanar quaisquer dúvidas que possam surgir no dia-a-dia e, também, garantir a entrega do projeto. 42 4.3 Virtualização como Recurso de Segurança Outra aplicabilidade muito interessante da virtualização a ser citada é na área de segurança de TI. Existem ferramentas no mercado que foram criadas com o intuito de servir de cobaia para os hackers12. São chamadas de honeypots. São recursos computacionais de segurança dedicados a ser sondado, atacado ou comprometido. De uma forma simplificada Hoepers, Steding-Jessen e Chaves (2007, p.1-1) afirmam que: Honeypots consiste em se colocar intencionalmente máquinas na internet de forma que elas sejam atacadas por crackers13. O intuito é monitorar as atividades, se precaver de ataques e tornar mais fácil a investigação de incidências de ataques e sua recuperação. O principal objetivo dessas ferramentas é a detecção e correção de falhas de segurança. As honeypots subdividem-se em dois tipos: baixa interatividade e alta interatividade Os honeypots de baixa interatividade oferecem baixo risco de comprometimento e são indicados para redes de produção, quando não há pessoal e/ou hardware disponível para manter uma honeynet, ou quando o risco de um honeypot de alta interatividade não é aceitável. Então são criados honeynets, que nada mais são do que uma rede composta de vários honeypots, especificamente projetado para pesquisa e obtenção de informações dos invasores, onde em um único hardware físico é possível se instalar várias máquinas virtuais, o que permite aumentar o número honeypots.(HOEPERS, STEDING-JESSEN e CHAVES, 2007) 12 Termo usado para designar quem elaboram e modificam software e hardware de computadores de forma legal, seja desenvolvendo funcionalidades novas, seja adaptando as antigas. 13 Termo usado para designar quem pratica a quebra de um sistema de segurança, de forma ilegal ou sem ética. 43 Os honeypots de alta interatividade são indicados para redes de pesquisa. Podem ser utilizados para os mesmos propósitos que os honeypots de baixa interatividade, mas introduzem um alto risco para instituição, e são justificáveis quando o objetivo é estudar o comportamento dos invasores, suas motivações, além de analisar detalhadamente as ferramentas utilizadas e vulnerabilidades exploradas. De acordo com Hoepers, Steding-Jessen e Chaves (2007, p.1-1) “para utilizar honeypots e honeynets como recurso de segurança, a implementação de uma arquitetura confiável é a base para esse sistema de detecção de intrusão utilizando virtualização.” Abaixo a tabela 3 mostra a comparação entre as características básicas dos honeypots de baixa e alta interatividade. Honeypot Características Alta Interatividade Baixa interatividade (Honeynet) Instalação Fácil Mais difícil Manutenção Fácil Trabalhosa Risco de comprometimento Baixo Alto Obtenção de informações Limitada Extensiva Necessidade de mecanismos de contenção Não Sim Atacante tem acesso ao SO real Não (em teoria) Sim Aplicações e serviços oferecidos Emulados Reais Atacante pode comprometer o honeypot Não (em teoria) Sim Tabela 3 - Comparação entre honeypots de alta e baixa interatividade Fonte: (HOEPERS, STEDING-JESSEN e CHAVES, 2007) 44 Segundo Hoepers, Steding-Jessen e Chaves (2007, p.1-1) é importante ressaltar que honeypots/honeynets devem ser utilizados como um complemento para a segurança da rede de uma instituição e não devem ser encarados como substitutos para: a) Boas práticas de segurança; b) Políticas de segurança; c) Sistemas de gerenciamento de correções de segurança (patches14); d) Outras ferramentas de segurança, como firewall e IDS. 4.4 Virtualização do Sistema de Ensino O uso da virtualização é amplamente visto em diversas áreas, tanto em setores distintos de TI quanto na sociedade. A força da virtualização também pode ter excelente emprego na área de ensino, como em faculdades e cursos profissionalizantes. Em instituições que ministram diversos tipos de cursos e que utilizam a tecnologia dos computadores, é comum a necessidade de possuir máquinas dedicadas a cada curso, gerando grandes custos de compra de equipamentos e manutenção. Sabemos também que é comum em processos de aprendizagem acontecer danos ao sistema operacional ou ferramentas instaladas, sendo necessária a reinstalação do SO, aplicativos, etc. Problemas como estes podem ser facilmente resolvidos com o uso dos conceitos de virtualização, onde poderiam ser executados vários sistemas operacionais em uma mesma máquina física, tornando o processo de ensino bastante prático e a custo reduzido. 14 Programa criado para atualizar ou corrigir um software. Esta técnica pode ser utilizada como uma das formas de distribuir uma liberação de software. 45 Um exemplo claro é utilização da virtualização em laboratórios, facilitando a aplicação de aulas práticas e também os custos inerentes a sua manutenção. Em disciplinas como sistemas operacionais ou redes, em que existe a necessidade de equipamentos dedicados, a reinstalação de sistemas operacionais diversos, a criação de redes, entre outros, a virtualização pode ser grande aliada, pois possibilita que, ao início de cada aula, o aluno carregue a partir de um servidor a imagem de todas as suas máquinas virtuais. Isso possibilita que o aluno continue suas atividades a partir do ponto onde parou na aula anterior e sem interferir na utilização do laboratório por alunos de outros cursos. A virtualização possibilita a criação de laboratórios multidisciplinares, com a criação das máquinas de acordo com o perfil do curso que está sendo freqüentado pelo aluno, e isto vale para qualquer disciplina e não apenas para as ligadas a TI (LAUREANO, 2006). Por isso a aplicação da virtualização em laboratórios de ensino tem por objetivo criar um ambiente que isole o estudante da máquina física com as vantagens da redução dos custos de manutenção, aumento da flexibilidade e aumento da segurança. Um exemplo real de aplicação da virtualização na educação é o intuito do Brasil ter o maior projeto de virtualização no mundo, que será implantado pelo governo federal através do ProInfo, Programa de Inclusão Digital do Ministério da Educação, que vai instalar 356.800 estações de trabalho em escolas públicas de todo o Brasil, atingindo 5.560 municípios através da tecnologia de virtualização, onde cada PC com Linux seja convertido em até 10 máquinas virtuais para usuários diferentes (COMPUTERWORLD, 2009, p.1-1). A economia é expressiva. Representa de imediato, 60% a menos nos custos iniciais e 80% de economia em energia no decorrer do ano e sem custo com licenciamento do sistema operacional, já que usa Linux. Serão 46 poupadas emissões de carbono no montante de 170.000 toneladas anuais de CO2 na natureza, o equivalente à retirada de 28.000 carros das ruas ou a plantação de 41.000 acres de árvores, o que torna a iniciativa além de tudo, verde (COMPUTERWORLD, 2009, p.1-1). 47 CONCLUSÃO Após abordagem da origem da virtualização, principais conceitos que são essenciais para um melhor entendimento, também foi possível perceber as características das técnicas de virtualização utilizadas. Além disso, foi descrito as principais características das ferramentas de virtualização mais utilizadas no mercado. A virtualização, sem dúvidas, é uma tecnologia impressionante. A solução definitiva para empresas que desejam diminuir custos sejam eles com equipamentos, recursos naturais ou mão de obra capacitada, já que um número menor de equipamentos requer menos mão de obra para gerenciar. Porém, cabe ao administrador de sistemas escolherem a que mais lhe convém. Por fim, podemos concluir que a tecnologia de virtualização, vem evoluindo muito e conseqüentemente, cada vez mais sendo utilizada pelos profissionais da área de TI ao longo dos anos e tem-se revelado uma alternativa interessante em diversos paradigmas da computação, por ser uma grande aliada na diminuição da complexidade dos ambientes, facilitando os trabalhos das equipes de suporte, aumentando a portabilidade dos ambientes, diminuindo os custos e aumentando a segurança e disponibilidade dos recursos para os usuários em empresas de diversos setores através da centralização e consolidação de servidores, desktops, otimizações de hardware e a segurança da informação. Portanto, nos próximos anos, a empresa que não adotar a prática de virtualização perderá a credibilidade com seus clientes, manutenção dos equipamentos, perda de rendimento em seus servidores e além de gastos exorbitantes com consumo de energia, indo contra a tendência mundial de uma economia verde que contribuí na redução do aquecimento global. 48 BIBLIOGRAFIA CONSULTADA BR LINK (São Paulo) (Org.). Virtualização de Servidores: Quais as principais vantagens da virtualização. Disponível em: <http://www.brlink.com.br/s/virtualizacao/virtualizacao-de-servidores>. Acesso em: 13 jun. 2011. CANDIDO, Caio Henrique Moura. História da Virtualização. Disponível em: <http://caiocandido.wordpress.com/2007/05/19/conceitos-de-virtualizacao/>. Acesso em: 07 jun. 2011. CAPPUCCIO, David. Riscos no Data Center. Info Corporate, São Paulo, n. 44, p.82-82, 10 maio 2007. CARISSIMI, Alexandre. Virtualização: da teoria a soluções. Porto Alegre: Sociedade Brasileira de Computação, 2008. COMPUTERWORLD. Projeto do MEC quer fornecer 350 mil máquinas virtuais para escolas do Brasil. Disponível em: <http://computerworld.uol.com.br/tecnologia/999/12/31/projeto-do-mec-querfornecer-350-mil-maquinas-virtuais-para-escolas-do-brasil/> Acesso em: 29 jul. 2011. HOEPERS, Cristine; STEDING-JESSEN, Klaus; CHAVES, Marcelo H. P. C.. Honeypots e Honeynets: Definições e Aplicações. Disponível em: <http://www.cert.br/docs/whitepapers/honeypots-honeynets/#ref-02>. Acesso em: 25 jul. 2011. INTEL (Usa). Virtualization. Disponível em: <http://www.intel.com/technology/virtualization/>. Acesso em: 18 jun. 2011. 49 LAUREANO, Marcos. Máquinas Virtuais e emuladores: Conceitos,Técnicas e Aplicações. São Paulo: Novatec, 2006. LAUREANO, Marcos. User-Mode Linux. Disponível em: <http://www.mlaureano.org/guias-e-tutoriais/configuracao-do-user-modelinux/>. Acesso em: 02 jul. 2011. LAUREANO, Marcos; MAZIERO, Carlos; JAMHOUR, Edgard. Proteção de detectores de intrusão através de máquinas virtuais. Disponível em: <http://www.mLAUREANO.org/projetos/deteccao-de-intrusao-em-maquinasvirtuais/>. Acesso em: 25 jun. 2011. LAUREANO, Marcos; MAZIEIRO, Carlos. Virtualização: Conceitos e Aplicações em Segurança. Porto Alegre: SBC, 2008. MACAGNANI, Bruno. Uma introdução ao Xen. Disponível em: <http://www.hardware.com.br/artigos/xen/>. Acesso em: 05 jul. 2011. MICROSOFT. Windows Virtual PC. Disponível em: <http://www.microsoft.com/brasil/windows/virtual-pc/>. Acesso em: 02 jul. 2011. NANDA, Susanta; CHIUEH, Tzi-cker. A Survey on Virtualization. New York: Universityat Stony Brook, 2005. PECORARI, Claudio. Além da Virtualização. Disponível em: <http://www.malima.com.br/article_read.asp?id=908>. Acesso em: 28 mai. 2011. SIQUEIRA, Luciano. Linux Pocket Pro - Virtualização. Porto Alegre: Linux New Media do Brasil, 2009. SMITH, James E.; NAIR, Ravi. The architecture of virtual machines. Computer, IEEE Computer Society Press, Los Alamitos, USA, v. 38, n. 5, p. 32–38, 2005. 50 SOURCE FORGE. Welcome to the Bochs IA-32 Emulator Project. Disponível em: <http://bochs.sourceforge.net/>. Acesso em: 03 jul. 2011. VIRTUE IT (Brasil). Virtualização. Disponível em: <http://www.virtueit.com.br/index.html#>. Acesso em: 16 jul. 2007. VMWARE. Virtualization Software. Disponível em: <http://www.vmware.com/br/virtualization/> Acesso em: 03 jul. 2011. 51 ÍNDICE FOLHA DE ROSTO 2 AGRADECIMENTO 3 DEDICATÓRIA 4 RESUMO 5 LISTA DE ILUSTRAÇÕES 6 LISTA DE TABELAS 7 LISTA DE ABREVIATURAS E SIGLAS 8 METODOLOGIA 9 SUMÁRIO 10 INTRODUÇÃO 11 CAPÍTULO I CONCEITOS EM VIRTUALIZAÇÃO 13 1.1 Visão Histórica 15 1.2 Formas de Virtualização 16 1.2.1 Virtualização do Hardware 16 1.2.2 Virtualização do sistema operacional 17 1.2.3 Virtualização de linguagens de programação 18 Técnicas de Virtualização 19 1.3.1 Emulação 19 1.3.2 Virtualização Total 20 1.3.3 Paravirtualização 21 1.3.4 Relação entre a virtualização total e a paravirtualização 22 1.3 CAPÍTULO II BENEFÍCIOS E APLICAÇÕES DA VIRTUALIZAÇÃO 24 2.1 Aplicabilidade 24 2.2 Benefícios 26 2.3 Dificuldades 27 52 CAPÍTULO III FERRAMENTAS PARA VIRTUALIZAÇÃO 29 3.1 VMWare 29 3.2 Virtual PC 30 3.3 Xen 31 3.4 Bochs 32 3.5 QEmu 32 3.6 User-Mode Linux 33 3.7 Análise Comparativa entre Virtualizadores 34 CAPÍTULO IV IMPLEMENTAÇÃO EM AMBIENTE PROFISSIONAL 36 4.1 Virtualização de Servidores 37 4.2 Virtualização de Desktops 39 4.3 Virtualização como Recurso de Segurança 42 4.4 Virtualização do Sistema de Ensino 44 CONCLUSÃO 49 BIBLIOGRAFIA CONSULTADA 50 ÍNDICE 53