ESCOLA SUPERIOR ABERTA DO BRASIL – ESAB CURSO DE PÓS-GRADUAÇÃO LATO SENSU EM SISTEMAS DE TELECOMUNICAÇÕES FÁBIO MASSALINO VIRTUALIZAÇÃO DE SERVIDORES E SUAS PRINCIPAIS FERRAMENTAS VILA VELHA – ES 2012 FÁBIO MASSALINO VIRTUALIZAÇÃO DE SERVIDORES E SUAS PRINCIPAIS FERRAMENTAS Monografia apresentada ao Curso de PósGraduação em Sistemas de Telecomunicações da Escola Superior Aberta do Brasil como requisito para obtenção do título de Especialista em Sistema de Telecomunicações, sob orientação da Profa. Me. Janaina Costa Binda. VILA VELHA – ES 2012 DEDICATÓRIA Dedico este trabalho a Zeliha Taner Massalino, minha amada esposa (in memoriam), cuja docilidade e companheirismo foram fontes de inspiração para a conclusão deste. LISTA DE FÍGURAS Figura 1 – Arquitetura de um sistema tradicional ...................................................... 12 Figura 2 – Arquitetura de um sistema virtualizado – hosted ...................................... 13 Figura 3 – Arquitetura de um sistema virtualizado – bare-metal ............................... 14 Figura 4 – Particionamento por hardware ................................................................. 24 Figura 5 – Particionamento por software do tipo hosted ........................................... 27 Figura 6 – Particionamento por software instalado nativamente no hardware .......... 28 Figura 7 – Particionamento de aplicação .................................................................. 29 Figura 8 – Particionamento de recursos .................................................................... 30 Figura 9 – Particionamento de serviços .................................................................... 31 Figura 10 – Os componentes da arquitetura do VMware ESXi ................................. 36 Figura 11 – A console de administração DCUI.......................................................... 38 Figura 12 – A tela inicial do vSphere Client ............................................................... 39 Figura 13 – A tela de configuração do ESXi .............................................................. 40 Figura 14 – Os componentes do VMware VirtualCenter Server ................................ 41 Figura 15 – Hyper-V como um recurso do Windows Server 2008............................. 45 Figura 16 – Ferramenta de gerenciamento do Windows Server 2008 ...................... 48 Figura 17 – Ferramenta de gerenciamento do Hyper-V ............................................ 49 Figura 18 – Ferramenta System Center Virtual machine Manager – SCVMM 2008 . 51 RESUMO A virtualização de servidores na plataforma x86 tem sido a solução na maioria das empresas para a consolidação de servidores, utilizando-se melhor os recursos disponíveis e simplificando seu gerenciamento e as soluções comerciais de empresas como VMware, Microsoft, Citrix, RedHat e Oracle garantem altadisponibilidade em ambientes virtualizados, além de diversas ferramentas que permitem executar tarefas rotineiras como ligar/desligar servidores, como mais complexas como mover estes servidores virtuais entre servidores físicos, balanceamento de cargas e backup destes. Neste trabalho apresenta-se um levantamento da bibliografia que trata deste assunto apresentando as características deste processo, apresentando suas vantagens e desvantagens, a origem da virtualização e os tipos principais. Após, apresenta as características das soluções comerciais mais utilizadas para virtualização na plataforma x86: VMware vSphere, Microsoft Hyper-V, Citrix Xen e outras disponíveis, tais como as soluções da empresa RedHat e Oracle. Esta analise visa apresentar os pontos fortes e fracos de cada solução procurando identificar onde cada solução apresenta-se como a melhor escolha. Palavra-chave: Virtualização. Hypervisor. Servidores. SUMÁRIO LISTA DE FÍGURAS ................................................................................................... 4 RESUMO..................................................................................................................... 5 INTRODUÇÃO ............................................................................................................ 8 1 O QUE É VIRTUALIZAÇÃO .................................................................................. 11 1.1 PORQUE VIRTUALIZAR? .............................................................................. 14 1.2 BENEFÍCIOS DA VIRTUALIZAÇÃO ............................................................... 15 1.3 QUANDO UTILIZAR A VIRTUALIZAÇÃO ...................................................... 15 1.4 QUANDO NÃO UTILIZAR A VIRTUALIZAÇÃO .............................................. 17 1.5 HISTÓRIA DA VIRTUALIZAÇÃO ................................................................... 17 2 TIPOS DE VIRTUALIZAÇÃO ................................................................................ 23 2.1 PARTICIONAMENTO DE HARDWARE ......................................................... 23 2.1.1 Vantagens ............................................................................................... 24 2.1.2 Desvantagens ......................................................................................... 25 2.2 PARTICIONAMENTO LÓGICO ...................................................................... 25 2.2.1 Particionamento por software ............................................................... 26 2.2.2 Particionamento de aplicações ............................................................. 28 2.2.3 Particionamento de recursos ................................................................ 30 2.2.4 Particionamento de serviços................................................................. 31 2.2.5 Sistemas Operacionais e ambientes Runtime ..................................... 32 3 A PLATAFORMA VMWARE SPHERE .................................................................. 34 3.1 A ARQUITETURA ESXI.................................................................................. 36 3.2 FERRAMENTAS DE GERENCIAMENTO ...................................................... 39 3.3 VMWARE VIRTUALCENTER SERVER ......................................................... 41 3.3.1 Recursos do ESX/ESXi com o uso do vCenter .................................... 42 3.3.2 Recursos disponíveis no vCenter através de plug-ins ....................... 43 4 A PLATAFORMA MICROSOFT HYPER-V ........................................................... 45 4.1 CARACTERÍSTICAS DO HYPER-V ............................................................... 46 4.2 GERENCIANDO O HYPER-V ........................................................................ 47 4.3 SYSTEM CENTER VIRTUAL MACHINE MANAGER 2008 ............................ 49 4.3.1 Componentes do SCVMM ...................................................................... 50 4.4 Ambiente de alta-disponibilidade com Hyper-V .............................................. 51 5 PLATAFORMA XEN .............................................................................................. 53 5.1 CARACTERÍSTICAS DO XEN ....................................................................... 54 5.2 PARAVIRTUALIZAÇÃO COM XEN ................................................................ 55 6 OUTRAS PLATAFORMAS DISPONÍVEIS ............................................................ 57 6.1 RED HAT ........................................................................................................ 57 6.2 KERNEL-BASED VIRTUAL MACHINE........................................................... 59 6.3 ORACLE VM SERVERS................................................................................. 60 6.3.1 Características do Oracle ...................................................................... 60 CONCLUSÃO ........................................................................................................... 62 REFERÊNCIAS ......................................................................................................... 64 8 INTRODUÇÃO A virtualização de servidores na plataforma X86 é um dos assuntos mais abordados entre os gestores de TI nas empresas, independente de seu tamanho ou setor que atua. Garantir disponibilidade dos recursos computacionais o maior tempo possível, facilidade no gerenciamento, melhor utilização de hardware, economizar, tanto em investimentos na compra de equipamentos quanto na manutenção dos mesmos, têm sido a grande preocupação destes. As soluções comerciais de virtualização de servidores disponíveis atendem as necessidades das empresas? A consolidação de vários servidores em um mesmo hardware físico; a capacidade de servidores serem automaticamente transferidos para outros servidores físicos; a redução de consumo de energia e de custos com equipamentos físicos são os motivadores para a elaboração do presente trabalho, que busca apresentar como a virtualização de servidores pode ser uma vantagem competitiva para as empresas. O objetivo deste trabalho é apresentar os conceitos referentes à virtualização de servidores e as soluções comerciais disponíveis atualmente e apresentando as vantagens e desvantagens deste ambiente e quando utilizar. Os objetivos específicos são: explicar o que é a virtualização e as semelhanças e diferenças em relação a servidores físicos; apresentar os recursos que tornam a virtualização um diferencial competitivo, tais como alta-disponibilidade, gerenciamento centralizado e as soluções comerciais mais utilizadas no mercado. Neste contexto é apresentado o que é virtualização; justificando o porquê de se virtualizar, os benefícios, quando utilizar ou não e a historia da virtualização de servidores na plataforma x86. A partir do entendimento do que é virtualização, apresentam-se os tipos de virtualização mais comuns: por particionamento de hardware e particionamento lógico. 9 Em seguida, apresenta as soluções comerciais mais utilizadas no mercado para virtualização de servidores na plataforma x86. A primeira plataforma a ser analisada é a VMware vSphere, apresentando sua arquitetura, características que garantam recursos como alta-disponibilidade, balanceamento de carga entre os servidores físicos (hosts), gerenciamento centralizado através da ferramenta VMware vCenter e outros recursos possíveis através do uso de plug-ins, tais como conversão P2V (física para virtual) e gerenciador de atualização de software O Hyper-V da Microsoft é apresentado como uma solução para ambientes com servidores com o sistema operacional Windows Server, pois o mesmo permite uma melhor integração e através do System Center Virtual Machine Manager, gerenciase de forma centralizada não somente maquinas virtuais sobre esta plataforma, mas também de outras como o VMware.. A plataforma Citrix Xen é uma solução voltada para o mundo open-source, com produtos desenvolvidos tanto pela comunidade open-source quanto pela Citrix, com recursos de alta-disponibilidade, balanceamento de cargas e outras características encontradas nos concorrentes. Vale ressaltar o esforço dos desenvolvedores deste produto no sentido de garantir que as maquinas virtuais possuam desempenho semelhante ao modo nativo, através da técnica da paravirtualização. Outras plataformas disponíveis são apresentadas, tais como o Red Hat Enterprise Virtualization for Server, indicado para empresas que utilizam como base para seus sistemas operacionais o Red Hat, pois embora o Red Hat Enterprise Virtualization for Server permite hospedar maquinas virtuais de diversos sistemas operacionais; as maquinas virtuais com este SO apresentam desempenho próximo ao do servidor físico; e o Oracle VM Servers, cuja solução é a única plataforma de virtualização homologada para o famoso servidor de banco de dados Oracle, pois foi desenvolvido para prover o melhor desempenho para altas cargas de entrada/saída. 10 Através da consulta de livros dedicados aos temas acima, elaborou-se a revisão bibliográfica, onde foram apresentadas as características de cada solução comercial, no intuito de fazer comparativos entre as mesmas e suas similaridades. 11 Capítulo 1 1 O QUE É VIRTUALIZAÇÃO Segundo Buytaert et al. (2007), virtualização é um framework ou metodologia da divisão de recursos de um hardware de computador em múltiplos ambientes de execução, aplicando um ou mais conceitos ou tecnologias tais como particionamento de hardware ou software, tempo compartilhado, simulação de maquina completa ou parcial, emulação, qualidade de serviço e muitos outros. A tecnologia da virtualização consiste em fazer um computador físico comportar-se como se fosse um ou mais computadores, onde cada um destes computadores virtualizados acessem a mesma arquitetura básica de um computador físico genérico (BUYTAERT et al., 2007). Existem vários meios de se realizar isto, cada um com seus prós e contras. A ênfase deste trabalho consiste em analisar a virtualização de servidores baseada em software, embora existam outras formas, conforme mencionado no paragrafo anterior. Para permitir que um computador físico se comporte como sendo mais de um computador, as características físicas do hardware precisam ser recriadas através do uso de software. Pode-se dizer que a virtualização consiste então, em transformar o hardware em software. Isto é realizado através de uma camada de software chamada abstração. Um exemplo do uso desta camada de abstração é o HAL (Windows Hardware Abstraction Layer); através desta camada, o sistema operacional Microsoft Windows provê um meio comum em que todos os drivers e softwares possam se comunicar com o hardware em um formato comum. Isto torna mais fácil o desenvolvimento de drivers e softwares, pois não é preciso desenvolver versões especificas para cada fabricante de hardware. 12 Em um ambiente de virtualização, é a camada de abstração que irá recriar as características físicas do hardware, para tornar possível vários computadores utilizar-se dos mesmos recursos físicos (MARSHALL; REYNOLDS; MCCRORY, 2006). Conforme Buytaert et al. (2007), virtualização é um conceito que permite que os recursos do computador sejam divididos ou compartilhados em vários ambientes simultaneamente. Estes ambientes podem interagir-se ou serem totalmente isolados entre si. Este ambiente pode estar consciente ou não de que esteja sendo executado em um ambiente virtual. Estes ambientes são conhecidos como Máquinas Virtuais (VMs– virtual machines). VMs são ambientes em que neles executem sistemas operacionais - SO (Linux, Windows, etc.). De acordo com Buytaert et al. (2007), estes sistemas operacionais são conhecidos como sistemas operacionais convidados. Algo a ressaltar é que geralmente as instruções para a VM são passadas diretamente para o hardware físico, o que torna o ambiente muito mais rápido e mais eficiente do que emulação. Para melhor entendimento de um ambiente virtualizado, primeiramente é necessário entender como funciona um típico computador físico, conforme Marshall, Reynolds e Mccrory (2006). Este possui um conjunto de dispositivos de hardware em que é instalado um sistema operacional (Windows, Linux, etc.) e uma ou mais aplicações são instaladas neste SO. A figura 1 ilustra este ambiente. Figura 1 – Arquitetura de um sistema tradicional Fonte: Marshall, Reynolds e Mccrory (2006) 13 Em um ambiente virtualizado, o arranjo é ligeiramente diferente, pois o SO tem uma plataforma virtualizada em que um ou mais VMs são criadas, cada uma com um conjunto de hardware separado e capaz de ter um SO e aplicações instaladas conforme mostra a figura 2. Esta arquitetura é conhecida como arquitetura hosted (MARSHALL; REYNOLDS; MCCRORY, 2006). Figura 2 – Arquitetura de um sistema virtualizado – hosted Fonte: Marshall, Reynolds e Mccrory (2006) Soluções comerciais que utilizam este tipo de arquitetura são o VMware Server, VMware Fusion, Parallel Inc. Parallels Workstation, Oracle VM VirtualBox e Microsoft Windows Virtual PC. Outro arranjo em ambiente virtualizado é um em que a plataforma de virtualização é instalada diretamente em um hardware de computador. Esta forma de virtualização provê uma plataforma em que uma ou mais maquinas virtuais possam ser criadas, cada uma sendo capaz de ter seu sistema operacional e aplicações sendo executadas sobre este (MARSHALL; REYNOLDS; MCCRORY, 2006). A figura 3 ilustra este exemplo. 14 Figura 3 – Arquitetura de um sistema virtualizado – bare-metal Fonte: Marshall, Reynolds e Mccrory (2006) Esta arquitetura é conhecida como arquitetura bare-metal ou hypervisor, e é a mais utilizada em ambientes de produção, pois apresenta um desempenho superior em relação ao tipo hosted, pois atua diretamente no hardware físico (MARSHALL; REYNOLDS; MCCRORY, 2006). Soluções comerciais que utilizam este tipo de arquitetura são: VMware ESX/ESXi, Microsoft Hyper-V, Cytrix XenServer e Oracle VM Server. 1.1 PORQUE VIRTUALIZAR? A razão mais comum para virtualizar, segundo Victor et al. (2011), é a consolidação de servidores. Hoje em dia o gerenciamento de servidores apresenta grandes desafios: Devem permitir adicionar capacidade de processamento enquanto deve minimizar custos operacionais, que inclui energia elétrica e sistemas de refrigeração. Em datacenters que estão realmente cheios, estes requerimentos obrigam utilizar a capacidade de processamento ociosa nos servidores e aumentar a densidade da carga de trabalho de novos sistemas (VICTOR et al., 2011). 15 A consolidação de servidores não é o mesmo conceito da utilização de vários programas em um único servidor, onde apenas um programa é executado por vez. Vários servidores executando ao mesmo tempo, permite a utilização de várias aplicações ao mesmo tempo. Qual custo é maior: Cinco computadores executando cinco aplicações ou apenas um computador executando cinco aplicações ao mesmo tempo? Obviamente, um computador executando cinco aplicações ao mesmo tempo terá um custo maior e levará mais tempo para a conclusão do que a outra opção. 1.2 BENEFÍCIOS DA VIRTUALIZAÇÃO O uso da virtualização de servidores de acordo com Buytaert et al. (2007), traz os seguintes benefícios: a) redução de custos: com o uso da virtualização, vários servidores utilizando o mesmo hardware físico impactam em redução de custos com equipamentos, gastos com energia elétrica, refrigeração, etc.; b) portabilidade: capacidade de ter uma plataforma de hardware consistente ao invés de ter hardware real de diferentes fabricantes; c) gerenciamento: ambientes virtuais podem ser gerenciados facilmente e oferece acesso ao hardware virtual; e d) eficiência: quando a virtualização é implantada correta. 1.3 QUANDO UTILIZAR A VIRTUALIZAÇÃO De acordo com Buytaert et al. (2007), utiliza-se a virtualização de servidores para: 16 a) consolidação de servidores: Permite que muitos servidores físicos sejam virtualizados e hospedados em poucos servidores físicos. Muitos servidores hoje possui uma utilização baixa de seus recursos, em faixa de 8 a 12% de sua utilização; b) suporte a aplicações legadas: Permite que sistemas operacionais e aplicações que foram descontinuadas e sem suporte a hardwares novos, possam ser facilmente migrados para hardwares mais recentes sem riscos de incompatibilidade; c) suporte a sistemas operacionais múltiplos: este é um beneficio em ambientes onde o desenvolvimento e testes em vários sistemas operacionais são necessários; d) demostrar softwares: Realizar demonstrativos de softwares que podem ser executados de uma maneira eficiente e sem grandes esforços para sua implantação; e) desenvolvimento, testes e depuração: Devido ao fato do forte isolamento entre os vários SO em um ambiente virtualizado, torna-se fácil executar testes em softwares e análise de erros; f) treinamento técnico e E-Learning: Em muitas salas de aulas avançadas, tornam-se necessários diversos computadores para cada estudante. Com o uso da virtualização, companhias podem reduzir o numero de computadores exigidos para cada sala de aula e o tempo necessário para prepará-los para a próxima turma; g) continuidade de negócios: Virtualização pode ajudar uma empresa a alcançar os 99,999% de disponibilidade, ajudando a eliminar os „downtimes’ planejados, entregando alta-disponibilidade, soluções de recuperação de desastres e ajudar com as soluções de backup;e h) HoneyPot: Máquinas virtuais podem ser facilmente configuradas para serem HoneyPot, ou seja, máquinas com o objetivo especifico de serem alvos para ataques que a rede ou determinadas aplicações podem sofrer, prevenindo com isto, que aplicações de produções possam ser comprometidas. 17 1.4 QUANDO NÃO UTILIZAR A VIRTUALIZAÇÃO Segundo Buytaert et al. (2007), não se utiliza a virtualização quando: a) testes em virtualização da plataforma x86: Não se pode testar virtualização dentro de um ambiente virtualizado. Isto irá tornar o ambiente não usável. Esta é uma limitação da plataforma x86; b) jogos no computador: Os requerimentos para execução de jogos de computador são extremamente grandes e ter a camada de virtualização entre o hardware e o jogo pode impactar no desempenho do mesmo; c) hardware e periféricos especializados: Não há meios de poder colocar em ambientes virtualizados periféricos de hardware customizado. Isto porque não há emulação ou representação destes dispositivos em ambiente virtualizado; d) testes de performance: A sobrecarga devido a camada de virtualização irá causar resultados errôneos na execução de testes de performance; e e) depurar drivers de hardware: Devido ao fato de todas as maquinas virtuais terem o mesmo hardware, não há como testar ou depurar drivers de hardware nesta plataforma. 1.5 HISTÓRIA DA VIRTUALIZAÇÃO Segundo Marshall, Reynolds e Mccrory (2006), o conceito de virtualização vem sendo discutido desde a década de 1950, embora se tornou de fato uma tendência com o uso na plataforma x86, na década de 1980. No inicio da década de 1960, a IBM introduziu o conceito de “Time Sharing” (tempo compartilhado), que foi a direção inicial para a virtualização. Hoje muitas pessoas associam o termo “Time Sharing” com mainframes, mas possivelmente a plataforma x86 foi introduzida a virtualização neste mesmo 18 conceito, mas sobre o nome de computação “On-Demand”. Em 1964, IBM introduziu o IBM System/360, que tinha capacidade limitada de virtualização e foi arquitetada pelo legendário Gene Amdahl. Mais tarde em 1964, o CP-40 foi lançado e houve a primeira menção de máquinas virtuais e memória virtual. Em 1965, o System/360 Modelo 67 foi desenvolvido, juntamente com o TSS (Time Sharing System). Este foi seguido em 1967 por outro lançamento do CP-40 e CMS, que colocou em produção um sistema suportando 14 VMs, cada uma com 256k de memória virtual (MARSHALL; REYNOLDS; MCCRORY, 2006). Uma nova iteração do CP-40 chamada CP-67 Versão 1 foi lançada em 1968. Esta possuía uma capacidade e estabilidade superior em relação ao antecessor. O CP-67 Versão 2 em 1969 ganhou um novo agendador e suporte a PL/I. Em 1970 a versão 3 do CP-67 tinha suporte a reserva de armazenamento que garantia melhor performance e adição de instrução SLT (MARSHALL; REYNOLDS; MCCRORY, 2006). Finalmente em 1971, a versão 3.1 do CP-67 foi liberada com melhorias no desempenho de I/O. Em 1972, o System/370 Advanced Function foi liberado e possuía um novo hardware de relocação de endereços e suporte a quatro novos sistemas operacionais: VM/370, DOS/VS, OS/VS1 e OS/VS2. Como a tecnologia da virtualização começou a tornar-se popular na comunidade IBM, a MVMUA (Associação Metropolitana de Usuários de Maquinas Virtuais) foi fundada em Nova York, em 1973. A introdução do VM/370 Release 2 em 1974 continha a primeira iteração do VMA (Virtual machine Assist) Microcode. Também em 1974, Gerald J. Popek e Robert P. Goldberg criou um conjunto de requerimentos formais para arquiteturas, intitulado “Formal Requirements for Virtualizable Third Generation Architectures” (MARSHALL; REYNOLDS; MCCRORY, 2006). Durante o período de 1974 a 1987, não houve avanços nesta área. Mas com o avanço da internet houve grande necessidade pelo suporte TCP/IP. Em 1987, a VM TCP/IP também conhecida como FAL tornou o TCP/IP disponível para máquinas virtuais (MARSHALL; REYNOLDS; MCCRORY, 2006). Durante as décadas de 1980 a 1990, a necessidade de virtualização foi abandonada devido ao fato do crescimento da plataforma x86, com o uso de minicomputadores e de baixo-custo 19 (MARSHALL; REYNOLDS; MCCRORY, 2006). Ao invés de compartilhar recursos de forma centralizada, baseada no modelo de mainframes, as organizações passaram a adotar os sistemas distribuídos de baixo custo (MARSHALL; REYNOLDS; MCCRORY, 2006). De acordo com Buytaert et al. (2007), a grande adoção do Linux e Windows como sistemas operacionais emergentes em servidores estabilizou a plataforma x86 como um novo padrão da indústria. Entretanto, a crescente demanda e o forte crescimento de servidores x86 e ambientes desktop apresentou um novo conjunto de infraestrutura de TI e desafios operacionais para este cenário. Em 1988, uma pequena companhia chamada Connectix Corporation foi fundada e provia soluções para sistemas da Apple Macintosh (MAC). A Connectix começou a tornar-se conhecida por suas soluções inovadoras para resolver problemas que a Apple não podia ou não queria resolver (BUYTAERT et al., 2007). A experiência com a plataforma MAC e PC levou a Connectix a criar um produto chamado Connectix Virtual PC 1.0 para MAC. O Virtual PC 1.0 foi uma verdadeira façanha de programação que incorporou um mecanismo de tradução de binários para traduzir instruções de um processador Intel x86 virtual para um processador PowerPc físico utilizado no MAC (BUYTAERT et al., 2007). Este exemplo de emulação levou a Connectix à tecnologia da virtualização. Em 1998, uma companhia chamada VMware foi fundada por Diane Greene e seu marido, Dr. Mendel Rosenblum junto com dois estudantes da Universidade de Stanford e um colega de trabalho de Berkley (MARSHALL; REYNOLDS; MCCRORY, 2006).. Em outubro de 1998, estes fundadores patentearam uma nova tecnologia de virtualização baseadas em pesquisas conduzidas na universidade de Stanford. Esta patente foi obtida em 28 de maio de 2002 (MARSHALL; REYNOLDS; MCCRORY, 2006). A VMware introduziu a plataforma “VMware Virtual Plataform” em 8 de fevereiro de 1999. Este produto é considerado por muitos como sendo o primeiro produto 20 comercial para virtualização na plataforma x86. Mais tarde, este produto tornou-se o VMware Workstation (MARSHALL; REYNOLDS; MCCRORY, 2006). Em 2000, a VMware lançou sua primeira plataforma de virtualização para servidores, o VMware GSX Server 1.0. Este produto era instalado sobre sistemas operacionais Windows ou Linux. No ano seguinte, com o lançamento do VMware ESX Server 1.0, houve uma melhoria significativa, pois este era instalado diretamente no bare-metal e provia maior estabilidade e alta-performance por possuir um nativo hypervisor, também conhecido como Virtual machine Monitor (VMM). De 2002 até os dias atuais, o VMware continuou a liberar versões de atualizações de ambos os produtos: GSX Server (ultimamente chamado de VMware Server) e plataforma ESX, adicionando novas capacidades e aumento de performance (MARSHALL; REYNOLDS; MCCRORY, 2006).. A Connectix criou um relacionamento com a Microsoft que consistia na inclusão de pacotes do sistema operacional Microsoft com o Connectix Virtual PC para produtos Mac. E mais tarde, eles providenciaram a tecnologia de emulação PocketPC embutida na aplicação Visual StudioNET da Microsoft. No começo de 2003, ela entrou no campo da virtualização de servidores x86 com sua versão “release candidate” do Connectix Virtual Server. Entretanto, o Connectix Virtual Server nunca entrou no mercado, porque a Microsoft adquiriu os direitos de propriedade intelectual do Virtual PC para Mac e Windows como também do Connectix Virtual Server (MARSHALL; REYNOLDS; MCCRORY, 2006).. O plano de virtualização da Microsoft focava-se no suporte a aplicações legadas, consolidação de servidores e automação de desenvolvimento de softwares e ambientes de teste. Eles liberaram seus primeiros produtos de virtualização, o Microsoft PC 2004, no dia 02 de dezembro de 2003. Devido ao fato de aprimorar a segurança, o projeto acabou tendo atrasos e em meados de 2004 foi liberadas duas versões, o Microsoft Virtual Server 2005 Standard Edition e o Microsoft Virtual Server 2005 Enterprise Edition (MARSHALL; REYNOLDS; MCCRORY, 2006).. Assim como Connectix, a VMware também foi adquirida. A companhia foi adquirida pela EMC Corporation em nove de janeiro de 2004, embora continuasse atuando como uma subsidiaria independente, sendo ainda dirigida pela CEO Diane Greene. 21 Em agosto de 2007, a EMC tornou a VMware pública e vendeu cerca de 10 % da companhia, ganhando algo em torno de um bilhão de dólares (MARSHALL; REYNOLDS; MCCRORY, 2006).. Enquanto isto, outra tecnologia de virtualização de servidores estava sendo desenvolvida: a Xen (MARSHALL; BEAVER; MCCARTY, 2009). Este projeto foi descrito primeiramente em um ensaio apresentado na SOSP em 2003. Em outubro do mesmo ano, a versão 1.0 foi liberada. Originalmente, a Xen foi desenvolvida pelo “Systems Research Group” no laboratório de computação da universidade de Cambridge, como parte do projeto XenoServers, e foi fundada pelo UK-EPSRC. Desde então, Xen ganhou maturidade e se tornou um projeto que possibilitou pesquisas para melhorar técnicas para virtualizar recursos tais como CPU, memoria, discos e redes. Ian Pratt, professor sênior de Cambridge, liderou o projeto e ajudou a fundar a XenSource, Inc., uma companhia responsável pelo desenvolvimento do projeto Xen open-souce e também criou e vendeu uma versão do software comercial e empresarial. Contribuidores deste projeto incluem empresas como AMD, HP, IBM, Intel, Novell, RedHat e XenSource (MARSHALL; REYNOLDS; MCCRORY, 2006).. Conforme Williams e Garcia (2007), em 2006, XenSource liberou a primeira versão do XenEnterprise 3.0, um produto baseado no Xen v3.0.3 e criado para competir diretamente com o produto VMware ESX. Em agosto de 2007, XenSource Anunciou a liberação do XenEnterprise v4, baseada no Xen 3.1, que estava mais estável e tentou ser competitiva com produtos concorrentes como o VMware ESX. Neste mesmo mês, a Citrix anunciou que iria fazer como a EMC e a Microsoft em relação à plataforma de virtualização e adquiriu a XenSource por aproximadamente 500 milhões de dólares. Com a tecnologia de hypervisor como VMware ESX e Xen começou a dominar a plataforma de virtualização de servidores, a Microsoft passou a focar em algo mais competitivo do que o Microsoft Virtualx Server. Com o desenvolvimento do Longhorn ou Windows Server 2008, a companhia iniciou o desenvolvimento da sua própria tecnologia de hypervisor, originalmente chamada Viridian e depois chamada HyperV (MORIMOTO; GUILLET, 2009). 22 Fabricantes de chips como Intel e AMD continuaram a introduzir novas tecnologias para prover melhor suporte para virtualização na camada de hardware. Estas tecnologias incluem processadores multinúcleos, tecnologia de virtualização Intel (originalmente conhecida como Vanderpool e Silvervale), e AMD-V/SVM (originalmente conhecida como Pacifica). Estas tecnologias de virtualização no nível de hardware permitiram plataformas de virtualização tornarem-se mais eficientes. As tecnologias Intel-VT e AMD-V interceptaram estas instruções e passaram a controlar o hypervisor para não haver a necessidade de uma camada de software complexa podendo ocasionar problemas de desempenho. As instruções de virtualização adicionadas nos processadores AMD e Intel têm ajudado a criar novas plataformas de virtualização desde que tecnologias adicionais têm removido uma das barreiras de entrar no mercado da virtualização (MARSHALL; REYNOLDS; MCCRORY, 2006). 23 Capítulo 2 2 TIPOS DE VIRTUALIZAÇÃO Atualmente existem diversas tecnologias e formas de virtualização na plataforma x86 (VICTOR et al., 2011). O conjunto de tecnologias de virtualização utilizado nos sistemas de servidores empresariais é geralmente referido como tecnologias de particionamento. Como mencionado no capitulo anterior, o foco deste trabalho é a virtualização de servidores através de software („partitioning software‟), mas é importante salientar que existem outras formas, tais como „hadware partitioning’, por aplicação, recursos e serviços, assim como tipos de virtualização por sistema operacional em ambientes „runtime‟. 2.1 PARTICIONAMENTO DE HARDWARE Segundo Marshall, Reynolds e Mccrory (2006), particionamento de hardware referese à tecnologia de hardware altamente especializado, que permitem que os recursos de um único computador sejam divididos em múltiplas partições, as chamadas „hard partitions‟, onde cada uma pode hospedar uma instância de um sistema operacional. A figura 4 ilustra como funciona a virtualização por particionamento por hardware. Particionamento por hardware existe a um bom tempo, originando dos sistemas mainframes da IBM. Nos dias atuais existem diversas tecnologias de particionamento por hardware disponíveis, cada qual implementação proprietária e requer hardware e software específicos para serem utilizados. Em algumas implementações, somente um ou dois sistemas operacionais muito específicos possui suporte. Geralmente todos os componentes requeridos são disponíveis de 24 um único fornecedor, devido a sua natureza proprietária (MARSHALL; REYNOLDS; MCCRORY, 2006). Figura 4 – Particionamento por hardware Fonte: Marshall, Reynolds e Mccrory (2006) 2.1.1 Vantagens As vantagens, de acordo com Marshall, Reynolds e Mccrory (2006), do particionamento de hardware em relação ao por software, são: a) grande eficiência no compartilhamento de recursos e gerenciamento de capacidade. Estes sistemas são mais eficientes do que o particionamento por software porque o gerenciamento de recursos entre as „hard partitions‟ são mantidos utilizando componentes de hardware separados (memory, storage, chips, etc.); b) o software especializado (geralmente chamado de microcode) que executa o gerenciamento de recursos reside em componentes de hardware gerenciados por recursos especializados. Com isto, o desempenho disponível em cada „hard partition‟ é maximizada e não ocorre sobrecarga; 25 c) isolamento elétrico: Esta característica de isolamento elétrico entre as „hard partitions‟ permite que falhas ocorridas em uma partição não afetem as demais;e d) alta escalabilidade: Pelo fato de somente hardware altamente especializado permitir o particionamento por hardware, estes mesmos apresentam uma alta escalabilidade e robustez. 2.1.2 Desvantagens Segundo Marshall, Reynolds e Mccrory (2006), as desvantagens do particionamento de hardware em relação ao por software, são: a) preço alto: Devido a possuir hardware e software proprietário, os custos de aquisição, suporte são elevados e o cliente acaba sendo „refém‟ do fornecedor; b) suporte limitado de vários sistemas operacionais; c) baixa portabilidade: Devido a cada fornecedor possuir tecnologia proprietária, a portabilidade de bases instaladas nas „hard partitions‟ fica limitada a somente hardwares do mesmo proprietário. Alguns fornecedores e suas tecnologias atuais. - HP – nPartition - IBM – LPAR e DLPAR - Sun Microsystem – Dynamic System Domain - Unisys – Dynamic Partitioning 2.2 PARTICIONAMENTO LÓGICO 26 Particionamento lógico refere-se à separação de ambientes de execução em um sistema computacional usando software (MARSHALL; REYNOLDS; MCCRORY, 2006). Particionamento lógico inclui particionamento por software, particionamento de recursos e particionamento de serviços. 2.2.1 Particionamento por software Conforme Marshall, Reynolds e Mccrory (2006), particionamento por software é uma tecnologia baseada em software que permite um computador físico ser dividido em múltiplas partições (chamadas de „soft partitions‟ ou máquinas virtuais), cada qual, hospedando sua própria e isolada instância de um sistema operacional. Seu comportamento é semelhante ao particionamento de hardware, pois múltiplas instâncias podem coexistir em um único servidor físico, com a diferença que, pelo particionamento por software, o isolamento de cada partição e o gerenciamento dos recursos compartilhados é realizado por uma camada especial de software chamada „Virtual machine Monitor‟ (VMM) ou Hypervisor (MARSHALL; REYNOLDS; MCCRORY, 2006). O VMM, assim como os sistemas operacionais de cada „soft partition‟, consomem recursos do mesmo conjunto de hardware, ou seja, a VMM utiliza-se de recursos de hardware, o que ocasiona degradação de desempenho, se comparado com o particionamento de hardware. Esta degradação varia de acordo com cada implementação, mas sempre causa impacto no desempenho de cada Máquina Virtual (MARSHALL; REYNOLDS; MCCRORY, 2006). Existem dois tipos de particionamento por software de acordo com Marshall, Reynolds e Mccrory (2006): a) hosted: Neste tipo de implementação (conforme figura 5), a camada de virtualização é um aplicativo que é instalado em um sistema operacional. As 27 vantagens deste tipo de implementação é utilizar a capacidade de gerenciamento de recursos do sistema operacional utilizado, sua compatibilidade de hardware, APIs e desenvolvimento relativamente mais simples, assim como seu suporte. Como desvantagens, irá apresentar as mesmas deficiências e ineficiências do sistema operacional em que a mesma está hospedada; degradação de desempenho devido ao consumo de recursos que o sistema operacional que hospeda este apresenta. Algumas tecnologias deste tipo de implementação inclui Microsoft Virtual Server, Oracle VM VirtualBox e VMware GSX Server, em ambiente Windows e o VMware GSX Server e Oracle VM VirtualBox para Linux; Figura 5 – Particionamento por software do tipo hosted Fonte: Marshall, Reynolds e Mccrory (2006) b) bare-metal ou Hypervisor: Conforme ilustra a figura 6, neste tipo, a camada de virtualização é instalada diretamente no hardware, com isto, apresenta um melhor desempenho, pois por não apresentar um sistema operacional intermediando, o gerenciamento dos recursos computacionais se torna mais eficiente. Atualmente, o VMware ESX Server é a implementação mais madura de um sistema de particionamento por software instalado nativamente em arquitetura baseada em x86, embora podemos citar outras tecnologias como Cytrix XenServer, Microsoft Hyper-V e Oracle VM Server. 28 Figura 6 – Particionamento por software instalado nativamente no hardware Fonte: Marshall, Reynolds e Mccrory (2006) Sistemas de particionamento por software utiliza-se de combinação de emulação, simulação e „pass-through‟ (passar através) em seus métodos de abstração de hardware. Cada máquina virtual „enxerga‟ seu próprio conjunto de recursos de hardware que irá consumir. 2.2.2 Particionamento de aplicações Particionamento de aplicações é uma tecnologia baseada em software que permite que recursos do sistema operacional em que uma aplicação dependa de estar executando em um ambiente alternativo em um sistema operacional sem o conhecimento da mesma (MARSHALL; REYNOLDS; MCCRORY, 2006). O aplicativo isolado pode ser executado em múltiplas instâncias simultaneamente em um mesmo sistema operacional, por um ou mais usuários, sem uma instância de aplicação interferindo em outra. Cada instância não tem conhecimento da existência de outras, e esta implementação não requer nenhuma mudança no aplicativo para que possa ser hospedado em um sistema de particionamento de aplicações. 29 A grande vantagem de um sistema de particionamento de aplicações, segundo Marshall, Reynolds e Mccrory (2006), é que qualquer aplicação, independente de ser usada por um ou mais usuários, pode ser gerenciada de forma centralizada e ser disponível de forma distribuída. Um único servidor pode executar muitas instâncias desta aplicação e cada estado da instância desta aplicação é escrito em um container separado. Cada container é automaticamente controlado pelo sistema de particionamento de aplicações. O particionamento de aplicações pode consolidar uma única aplicação para múltiplos computadores desktops e servidores em um único servidor e a aplicação pode ser gerenciada como uma única instância desta aplicação. O próprio sistema operacional não é completamente abstraído desta aplicação, somente certos subcomponentes, tais como sistema de arquivos, portanto somente aplicações executam normalmente em um sistema operacional começando a usar são permitidos para ser hospedado em um sistema de particionamento de aplicações. A figura 7 ilustra este exemplo (MARSHALL; REYNOLDS; MCCRORY, 2006). Figura 7 – Particionamento de aplicação Fonte: Marshall, Reynolds e Mccrory (2006) 30 2.2.3 Particionamento de recursos De acordo com Marshall, Reynolds e Mccrory (2006), particionamento de recursos é uma tecnologia baseada em software que abstrai como certos recursos do sistema operacional são alocados para instâncias de aplicações ou processos individuais executando em um sistema operacional (A figura 8 ilustra este tipo de particionamento). Esta tecnologia é usada para controlar consumo de recursos de aplicações e processos, permitindo maior controle granular que os providos pelo sistema operacional (MARSHALL; REYNOLDS; MCCRORY, 2006). Figura 8 – Particionamento de recursos Fonte: Marshall, Reynolds e Mccrory (2006) Os sistemas de particionamento de recursos permitem também que o consumo de recursos possa ser controlado não somente no nível de aplicações ou recursos, mas também por uma combinação de aplicações ou processos e contas de usuários (MARSHALL; REYNOLDS; MCCRORY, 2006). Este tipo de virtualização permite também habilitar qualidade de serviço no sistema operacional, pois as instâncias de aplicações ou processos podem passar parâmetros, que permitem níveis mínimos e máximos de utilização de recursos tais como CPU, memoria e I/O de discos para serem efetivamente controladas e gerenciadas (MARSHALL; REYNOLDS; MCCRORY, 2006). Assim, como o particionamento de aplicações, este não abstrai o sistema operacional inteiro, ao 31 invés disto, somente aplicações que devam ser controladas pelo sistema de particionamento de recursos são abstraídas. 2.2.4 Particionamento de serviços Conforme Marshall, Reynolds e Mccrory (2006), o particionamento de serviços é uma tecnologia baseada em software em que uma única instância da aplicação prove múltiplas e isoladas instâncias de um serviço (conforme figura 9). Figura 9 – Particionamento de serviços Fonte: Marshall, Reynolds e Mccrory (2006) Cada instância do serviço aparece para os consumidores do serviço como sendo uma instância de aplicação dedicada (e geralmente oferece uma instância de servidor dedicada) (MARSHALL; REYNOLDS; MCCRORY, 2006). Neste tipo de virtualização, a abstração ocorre no topo da instância da aplicação, que permite que múltiplas instâncias desta aplicação possam coexistir. De acordo com Marshall, Reynolds e Mccrory (2006), o nível de isolação entre estas instâncias pode variar conforme a implementação; ocorrendo casos em que há completo isolamento entre as instâncias até o caso em que não há isolamento. 32 Exemplos comuns deste tipo de virtualização são servidores de banco de dados e web. Em um servidor de banco de dados, uma única instância é executada em um sistema operacional. Esta instância pode conter diversos bancos de dados. Com o particionamento de serviços, cada banco de dados pode ser configurado para aparecer para os consumidores do serviço somente como o único do servidor, embora possa ter mais de vinte bancos de dados sendo executados simultaneamente (MARSHALL; REYNOLDS; MCCRORY, 2006). Outro exemplo são os servidores web modernos que permitem múltiplos „web sites’ virtuais para serem criados e hospedados simultaneamente de uma única instância da aplicação (MARSHALL; REYNOLDS; MCCRORY, 2006). Cada „web site‟ é isolado um do outro e aparece como se estivesse hospedado em seu próprio servidor dedicado, quando na realidade podem ter mais de cem „web sites‟ rodando simultaneamente de uma instância de aplicação de servidor web. 2.2.5 Sistemas Operacionais e ambientes Runtime Embora não seja usualmente descrito como um tipo de tecnologia de virtualização, sistemas operacionais são na verdade um dos tipos mais comuns de tecnologias de virtualização. Pode-se dizer que um sistema operacional é uma maquina virtual implementada em software usada para abstrair os recursos do hardware do computador (MARSHALL; REYNOLDS; MCCRORY, 2006). Aplicativos que residem e executam dentro deste sistema operacional, utilizam-se das facilidades deste SO para acessar o hardware ao invés deste próprio acessar o hardware, geralmente através do modulo chamado driver de dispositivo (MARSHALL; REYNOLDS; MCCRORY, 2006). Alguns frameworks de programação incluem um ambiente runtime designado para rodar no topo do sistema operacional. Softwares escritos para serem executados neste ambiente rodam no topo do sistema operacional como também dependem deste ambiente runtime (ou maquinas virtuais como são chamados) para executar 33 as tarefas. Este tipo de virtualização não prove um ambiente de execução completo e depende do sistema operacional e seus recursos para executar seu trabalho (MARSHALL; REYNOLDS; MCCRORY, 2006). Exemplos incluem o framework Microsoft .Net e o Sun Java. 34 Capítulo 3 3 A PLATAFORMA VMWARE SPHERE A companhia VMware surgiu em 1998 para prover soluções em virtualização de servidores na plataforma x86 (MISHCHENKO, 2011). Em 1999, liberou a versão VMware Workstation, que permitia executar vários sistemas operacionais sobre um sistema desktop. Isto permitia que alguém do suporte técnico que precisasse testar várias versões de sistemas operacionais, tivesse como realizar isto sem a necessidade de diversos computadores ou estar reinstalando cada versão (MISHCHENKO, 2011). Em 2001, a VMware lançou duas versões: a VMware GSX Server e ESX Server. A VMware GSX Server era semelhante a VMware Workstation, ou seja, um aplicativo executado sobre um sistema operacional (Windows ou Linux), com a diferença que era instalada em um computador servidor ao invés de um computador desktop. Mais tarde, esta versão foi renomeada para VMware Server (MISHCHENKO, 2011). A VMware ESX Server também foi lançada como uma solução centralizada para hospedar maquinas virtuais, mas com a arquitetura diferente em relação ao VMware GSX Server. De acordo com Mishchenko (2011), o ESX Server é instalado diretamente no hardware do servidor, proporcionando uma maior performance, pois não há camadas intermediarias entre o hardware e a plataforma de virtualização, elimina vulnerabilidades de segurança e a necessidade de um maior gerenciamento exigido por sistemas operacionais como Windows e Linux. A camada de virtualização, ou hypervisor, do VMware é denominada VMkernel, desenvolvida especificamente para hospedar maquinas virtuais, eliminando consumo significativo de recursos e potencias brechas de segurança (MISHCHENKO, 2011). 35 A VMware ESX também introduziu o formato de partição denominado VMFS: „VMware Virtual machine File System‟. Em sua primeira versão, este formato apenas otimizava as operações das máquinas virtuais. Já na versão 2, conforme Mishchenko (2011), a VMware implementou capacidade de clusterização. Com esta capacidade, o mesmo volume podia ser acessado por vários hosts, implementando o bloqueio por arquivo. A capacidade do sistema de arquivos VMFS e as características da plataforma ESX permitiu o lançamento do VMware VirtualCenter Server, hoje conhecido por vCenter. O VirtualCenter Server possibilita o gerenciamento centralizado dos hosts ESX e inclui características inovadoras como o vMotion, que permite a migração de maquinas virtuais entre os hosts ESX, sem interrupção e clusters de alta disponibilidade (MISHCHENKO, 2011). Em 2007, a VMware lançou a segunda geração da plataforma de virtualização baremetal, denominada ESXi (ESX integrada). A ESXi 3.5 foi lançada na VMworld 2007, onde foi distribuído em um pen-drive de 1GB. O ESXi foi inicialmente desenvolvido para ser armazenado nas memórias de somente leitura, ROM, dos servidores, ou seja, de uma forma embutida, para tornar o nível da camada de virtualização livre de ataques, a instalação de patches menos frequentes e diminuição de consumo de energia, pois não necessitava de discos rígidos para serem instalados. Mas o uso da plataforma ESXi popularizou-se de duas formas: a embutida, em dispositivos de memoria flash, dentro dos servidores e a forma instalada (MISHCHENKO, 2011). A grande diferença em relação à versão ESX, que esta não possui a console de serviço baseada em Linux, que era necessária para gerenciar o ESX. Isto proporcionou uma redução significativa no tamanho da instalação do ESX, que exigia cerca de 1.1 gigabyte de espaço em disco para cerca de 90 megabyte, na ESXi, por isto a opção de se instalar em memorias flash (MISHCHENKO, 2011). 36 3.1 A ARQUITETURA ESXI Segundo Mishchenko (2011), a tecnologia por trás da arquitetura VMware ESXi representa a nova geração da plataforma de virtualização do VMware, que é a fundação dos produtos de virtualização da VMware. Através de funcionalidades equivalentes do ESX, esta plataforma elimina a necessidade de uma console de serviço baseada em Linux, reduzindo significativamente seu tamanho. O ponto central do ESXi é o VMkernel, como mostrado na figura 10. Este é o responsável por controlar o acesso do hardware para o host ESXi. Todos os demais processos são executados sobre o VMkernel (MISHCHENKO, 2011). Figura 10 – Os componentes da arquitetura do VMware ESXi Fonte: Mishchenko (2011) O VMkernel é um sistema operacional baseado em POSIX (acrônimo para o nome denominado: Portable Operating System Interface, que pode ser traduzido como Interface Portável entre Sistemas Operacionais), que é uma família de normas definidas pelo IEEE e designada formalmente que tem como objetivo garantir a portabilidade do código-fonte de um programa a partir de um sistema operacional que atenda as normas POSIX para outro sistema POSIX, desta forma 37 as regras atuam como uma interface entre sistemas operacionais distintos (MISHCHENKO, 2011). O VMkernel foi desenvolvido pela VMware e é similar a qualquer outro sistema operacional em que este usa a criação de processos, sistemas de arquivos e threads, mas com a diferença de que o objetivo do VMkernel é somente executar maquinas virtuais, ou seja, o hypervisor foca no agendamento de recursos, drivers de dispositivos e pilhas de Entrada/Saída (MISHCHENKO, 2011). A comunicação com o VMkernel é feita através de APIs VSphere. De acordo com Mishchenko (2011), as ferramentas utilizadas para este gerenciamento são o vSphere Client, vCenter Server, vCLI e outras aplicações, desenvolvidas por terceiros, que se comunicam através destas APIs. Numerosos processos são executados sobre o VMkernel, que provem gerenciamento de acesso, monitoramento de hardware, assim como também um compartimento de execução em que uma maquina virtual opera (MISHCHENKO, 2011). Estes processos são conhecidos como processos “user world”, e operam similarmente como aplicações em um sistema operacional qualquer, exceto que foram desenvolvidos para prover função de gerenciamento especifica para a camada de virtualização (MISHCHENKO, 2011). O processo VMM („Virtual machine Monitor‟, que pode ser livremente traduzido como monitor de maquina virtual) é o responsável por fornecer um ambiente de execução em que o sistema operacional convidado opera e interage com o conjunto de hardware virtual que é apresentado a este (MISHCHENKO, 2011). Cada processo VMM tem um processo ajudante correspondente conhecido como VMX e cada máquina virtual tem um de cada processo . O processo hostd provê uma interface programática para o VMkernel. Esta é usada pela API do vSphere e para o vSphere Client quando utilizado para se conectar diretamente ao host. Este processo gerencia usuários e grupos locais como também avalia os privilégios para os usuários que interagem com o host. O hostd também 38 funciona como proxy reverso para todas as comunicações com o host ESXi (MISHCHENKO, 2011). Conforme Mishchenko (2011), o VMware ESXi conta com o sistema CIM (Commom Information Model, que pode ser traduzido como modelo de informação comum) para monitorar o status do hardware. Este provê um conjunto de APIs para aplicações remotas poderem consultar o status do hardware do host ESXi. Com isto, fornecedores de hardware são aptos a desenvolver seu plug-in CIM especifico para realizar este monitoramento. O processo DCUI (Direct Console User Interface) prove uma console de gerenciamento local para ESXi. O DCUI aparece como uma interface parecida com a BIOS, como mostrada na figura 11 (MISHCHENKO, 2011). Figura 11 – A console de administração DCUI Fonte: Mishchenko (2011) O processo vpxa é responsável pela comunicação com o vCenter Server. Este processo roda dentro de um contexto de segurança do vpxuser. Comandos e consultas realizadas do vCenter Server são recebidas por este processo antes de ser encaminhadas ao processo hostd. O processo agente é instalado e executado quando o host ESXi é ligado em um cluster de alta disponibilidade (MISHCHENKO, 2011). 39 3.2 FERRAMENTAS DE GERENCIAMENTO Como mencionado anteriormente, a arquitetura ESXi é uma plataforma bem enxuta, onde somente processos indispensáveis ao funcionamento do host são executados neste. O gerenciamento local é feito pela DCUI, que permite realizar operações básicas no host: configurar senha do administrador (root), configurar endereço IP da placa de rede para gerenciamento de trafego, reiniciar serviços de gerenciamento do host, reiniciar ou desligar o host. Para poder interagir com o ambiente de virtualização, utilizar os recursos disponíveis da plataforma ESXi, é necessário aplicações que são executadas remotamente para realizar este gerenciamento. Independente se irá gerenciar diretamente o host ESXi, ou este gerenciamento irá ser feito através do vCenter Server, a ferramenta mais utilizada para tal, é o vSphere Client. A figura 12 mostra a tela principal do vSphere Client. Figura 12 – A tela inicial do vSphere Client Fonte: Mishchenko (2011) 40 Através desta console, é possível verificar as informações e status referentes aos componentes de hardware do host (processador, disco, memória, etc), acessar e gerenciar as máquinas virtuais. A maioria dos elementos disponíveis para configurar o host está na aba Configuration (figura 13). Estas opções estão disponíveis tanto acessando diretamente o host como pelo vCenter Server (MISHCHENKO, 2011). Figura 13 – A tela de configuração do ESXi Fonte: Mishchenko (2011) Esta aba permite verificar o status dos diversos componentes do hardware do host. As opções são exibidas de acordo com o „Common Information Model‟ (CIM) instalado no host. Também permite obter informações sobre o processador, tais como o modelo deste, o numero de soquetes, núcleos por soquete, e se o recurso Hyperthreading está habilitado (MISHCHENKO, 2011). Exibe também algumas sobre a placa-mãe do host, incluindo o nome do fabricante, modelo, e a versão da BIOS assim como, o total de memória disponível para o host, as configurações atuais das redes e armazenamento, gerenciamento de energia, licenciamento, sincronização do relógio do host com os servidores de tempo disponíveis na internet, além de configurações avançadas (MISHCHENKO, 2011). 41 3.3 VMWARE VIRTUALCENTER SERVER O VMware VirtualCenter, é a console de gerenciamento centralizado utilizado em ambientes VMware para configurar, provisionar e gerenciar ambientes virtualizados nas empresas. Através do vCenter, tecnologias como vMotion, alta disponibilidade e agendador de distribuição de recursos são habilitadas, assim como outras tecnologias, como segue abaixo (KHNASER, 2011): a) VMware Update Manager: Uma ferramenta automatizadora utilizada para gerenciar atualizações dos hosts ESX/ESXi e máquinas virtuais; b) VMware vCenter Converter: Ferramenta de conversão que permite migrar um servidor físico ou virtual para uma máquina virtual; c) VMware vCenter Guided Consolidation: Ferramenta utilizada para analisar uma infraestrutura de servidores físicos e recomendar os servidores físicos que são bons candidatos para serem convertidos para máquinas virtuais. A estrutura do vCenter é exibida conforme a figura 14: Figura 14 – Os componentes do VMware VirtualCenter Server Fonte: Khnaser (2011) 42 Os componentes do VMware VirtualCenter Server são (KHNASER, 2011): a) núcleo: O módulo principal do vCenter, o núcleo permite as máquinas virtuais serem provisionadas, agendador de tarefas, registra eventos, etc.; b) serviços distribuídos: O modulo que habilita recursos como vMotion, alta disponibilidade e agendador de distribuição de recursos; c) serviços adicionais: O modulo onde módulos independentes atuam, tais como VMware Converter Enterprise e Update Manager; d) interface do banco de dados: O canal que conecta ao servidor de banco de dados que prove ao vCenter um repositório central para todos seus dados; e) gerenciamento de host ESX/ESXi: A interface que permite ao vCenter conectar aos hosts ESX/ESXi e gerencia-los; f) interface do Active Directory: O canal que é estabelecido com um domínio do active directory para estender suporte a usuários e grupos para o vCenter; g) vSphere Application Programming Interface (API) e vSphere Software Development Kit (SDK): O código de programação que prove um framework para desenvolver aplicações customizadas. 3.3.1 Recursos do ESX/ESXi com o uso do vCenter De acordo com Khnaser (2011), o vCenter permite: a) gerenciamento em larga escala: Na versão 4.1, um vCenter é capaz de gerenciar até 1000 host e até 10000 máquinas virtuais ligadas; b) implantação com o uso de assistentes: Possui assistentes que auxiliam na criação de máquinas virtuais, tornando o trabalho fácil; c) modelos de máquinas virtuais editáveis: Permite salvar uma máquina virtual como um modelo (template), o que facilita na criação de novas máquinas virtuais utilizando este padrão. O modelo permite atualizações e correções de falhas; 43 d) clonagem de máquinas virtuais: Permite clonar uma máquina virtual para realizar um backup completo ou criar um novo servidor quando necessário; e) migração “ao vivo” – vMotion: vMotion é uma tecnologia que permite migrar uma máquina virtual de um servidor físico para o outro, sem interrupção dos serviços, ou seja, usuários que estejam utilizando esta máquina virtual nem perceberão esta migração; f) Distributed Resource Scheduler (DRS): O DRS, agendador de recursos distribuídos, é um recurso que monitora constantemente os servidores físicos do VMware ESXi cluster, balanceando as cargas entre todos os servidores, através do vMotion, para migrar máquinas virtuais de um host para outro host para manter o balanceamento. Pode ser configurado de diversas formas, desde uma simples recomendação de migração até para uma politica de migração automatizada agressiva; g) Distributed Power Management (DPM): O gerenciamento de energia distribuída monitora a carga das máquinas virtuais, verificando quando é possível distribuir as máquinas virtuais através do cluster DRS, de maneira que, quando a carga for baixa, possa desligar servidores físicos ociosos, para diminuir o consumo de energia elétrica, ligando automaticamente, quando a carga aumentar e for necessário religar estes servidores físicos; e h) alta disponibilidade (HA – High availability): O HA é um recurso que permite reiniciar todas as máquinas virtuais em um host que teve falha em outro membro deste cluster. 3.3.2 Recursos disponíveis no vCenter através de plug-ins Os recursos disponíveis no vCenter, de acordo com Khnaser (2011) são: a) conversão física para virtual: Esta funcionalidade permite gerenciar múltiplas conversões de máquinas físicas para virtuais utilizando o vCenter Console; 44 b) plug-in para consolidação: Através do uso de assistentes, o plug-in de consolidação irá automaticamente descobrir servidores físicos e analisar sua performance para verificar a viabilidade de conversão para máquina virtual; e c) plug-in para gerenciamento de atualização: Esta funcionalidade automaticamente escaneia e atualiza os servidores ESX/ESXi como também máquinas virtuais Linux e Windows. Esta funcionalidade também reduz o downtime através da realização de snapshots antes de executar, com a opção de desfazer as atualizações. A integração do DRS com o Update Manager proporciona um downtime igual a zero quando atualiza hosts ESX/ESXi. 45 Capítulo 4 4 A PLATAFORMA MICROSOFT HYPER-V Segundo Morimoto e Guillet (2009), a tecnologia Hyper-V foi apresentada com o lançamento do Windows Server 2008, para concorrer com outras tecnologias de virtualização, tais como VMware e XenServer. O kernel do Windows Server 2008 foi reescrito para que esta versão do sistema operacional provesse melhorias em relação à tecnologia de virtualização. A Microsoft, conforme Morimoto e Guillet (2009), com o Hyper-V, simplificou o processo de adição de virtualização no ambiente corporativo, pois para adicionar este recurso, basta abrir a ferramenta de gerenciamento do servidor e adicionar esta opção, sem a necessidade de instalação de programas adicionais (figura 15). Figura 15 – Hyper-V como um recurso do Windows Server 2008 Fonte: Morimoto e Guillet (2009) 46 4.1 CARACTERÍSTICAS DO HYPER-V Segundo Morimoto e Guillet (2009), as características do Hyper-V são: a) executado em ambiente Windows: Diferente de outras plataformas de virtualização, que são executadas em plataformas proprietárias ou outros sistemas operacionais, como o Linux, o Hyper-V é executado na plataforma Windows, familiar para a maioria dos administradores de redes. Isto torna rápido o aprendizado desta ferramenta, pois não necessita de aprender um novo sistema operacional, ferramentas de gerenciamento ou especializadas. A ferramenta de gerenciamento do Hyper-V é simplesmente como qualquer outra ferramenta administrativa no Windows. Portanto, a criação de máquinas virtuais, o monitoramento destas e o seu gerenciamento é um processo familiar para os administradores de TI; b) suporte de aplicações Microsoft nesta plataforma de virtualização: Uma preocupação quando se virtualiza o ambiente é o suporte que eles receberão de seus fornecedores de software (Microsoft, IBM, Oracle, etc). Enquanto todos dao suporte a suas aplicações em sistemas de hardware físico, não necessariamente garantem este suporte em sistemas virtualizados; c) com o lançamento do Hyper-V, a Microsoft anunciou suporte total de suas aplicações em ambientes sendo executado sobre o Hyper-V. Produtos como o Exchange 2007 SP1, Microsoft Office SharePoint 2007 SP1 são diretamente suportados; d) Microsoft Hyper-V prove suporte a máquinas virtuais não-Windows: Com o lançamento do Hyper-V, a Microsoft preocupou-se em garantir que o Hyper-V não irá prover suporte somente para máquinas virtuais com o Windows (como Windows Server 2003 e 2008), mas também VMs com o Linux. Garantindo suporte para VMs com um variado tipo de sistemas operacionais, a Microsoft está permitindo que organizações para consolidar seus sistemas tanto Windows como não-Windows em poucos servidores hosts Hyper-V; e) Hyper- V é uma plataforma de virtualização bare-metal: Antes do Hyper-V, as tecnologias de virtualização do Microsoft eram plataforma de virtualização baseada em host, ou seja, eram executadas sobre o sistema operacional e os 47 recursos exigidos pelas máquinas virtuais eram compartilhados com os recursos do sistema operacional host, ou seja, um evento no servidor host que causasse uma falha era repassada para as máquinas virtuais também. Com a adoção do Hyper-V, os sistemas operacionais das VMs comunicam-se diretamente com o hardware sem ter que passar pelo sistema operacional host. Isto garante maior independência, escalabilidade, melhor performance e maior confiabilidade; e f) disponível somente em plataforma x64 bits: O Hyper-V foi lançado na versão do Windows Server 2008, na plataforma de x64 bits, disponível somente nas versões Standard, Enterprise e Datacenter. 4.2 GERENCIANDO O HYPER-V O Hyper-V possui diversas ferramentas que gerenciam e administram os servidores host e as VMs (MORIMOTO e GUILLET, 2009). Estas ferramentas incluem a console de administração do Hyper-V e a console de gerenciamento de servidor do Windows 2008. A ferramenta de gerenciamento de servidor é uma interface que permite centralizar toda a administração dos serviços do Windows server 2008 (MORIMOTO e GUILLET, 2009). Nesta console, estão acessíveis não somente as configurações do Hyper-V, mas de outros servidores, como DNS. DHCP, arquivos, etc., como é possível verificar na figura 16. 48 Figura 16 – Ferramenta de gerenciamento do Windows Server 2008 Fonte: Morimoto e Guillet (2009) A console de administração do Hyper-V é dedicada somente ao gerenciamento do Hyper-V (conforme ilustra a figura 17). É possível realizar o gerenciamento tanto do servidor local, como de forma remota, bastando informar o endereço do servidor que se pretende gerenciar (MORIMOTO; GUILLET, 2009). 49 Figura 17 – Ferramenta de gerenciamento do Hyper-V Fonte: Morimoto e Guillet (2009) Através destas ferramentas, pode-se configurar os switches virtuais de rede, os hosts e o gerenciamento das máquinas virtuais, tais como discos, memória, CPU, etc. 4.3 SYSTEM CENTER VIRTUAL MACHINE MANAGER 2008 O System Center Virtual machine Manager 2008(SCVMM 2008) propõe ser uma interface de gerenciamento comum para o datacenter virtualizado (MORIMOTO e GUILLET, 2009). Isto porque permite não somente gerenciar ambientes Microsoft, mas também VMware e XenServer, através de plug-ins de terceiros. De acordo com Morimoto e Guillet (2009), o SCVMM 2008 utiliza uma abordagem holística para gerenciar a infraestrutura virtual, examinando e classificando os hosts de virtualização. Através de uma série de critérios, indica qual o melhor host para 50 hospedar determinada máquina virtual. Este é uma aplicação que administradores podem usar para gerenciar um grande numero de VMs através de uma infraestrutura virtual (MORIMOTO; GUILLET, 2009). 4.3.1 Componentes do SCVMM Conforme Morimoto e Guillet (2009), o SCVMM é composto por uma série de componentes, como mostrados a seguir: a) serviço VMM: O núcleo do SCVMM. Uma aplicação que é instalada em versões do Windows Server 2003 SP1 ou posterior; b) banco de dados SQL Server. Este banco contem todos os objetos do VMM. c) agente local: Componente instalado nos servidores hosts do Hyper-V, responsável por comunicar-se com o serviço VMM; d) Library Servers: Servidores que funcionam como repositórios de recursos para o ambiente VMM; e e) console administrativa: Interface em que o administrador interage com o serviço VMM. Pode-se interagir através de interface gráfica ou linha de comando para gerenciar a infraestrutura física e virtual. O administrador pode gerenciar hosts rodando Hyper-V, VMware ESX e Microsoft Virtual Server. A console do VMM 2008 (figura 18) possui o padrão de outros produtos Microsoft de gerenciamento de sistemas, como o System Center Configuration Manager 2007 (SCMM 2007) e o System Center Operation Manager 2007 (SCOM 2007). 51 Figura 18 – Ferramenta System Center Virtual machine Manager – SCVMM 2008 Fonte: Morimoto e Guillet (2009) 4.4 AMBIENTE DE ALTA-DISPONIBILIDADE COM HYPER-V Para garantir a disponibilidade dos serviços em um ambiente virtualizado, torna-se necessários mecanismos de prevenção a falhas e recuperação de desastres. Em ambientes Hyper-V, existem quatro formas de se garantir que não haja interrupção conforme Morimoto e Guillet (2009): a) utilizando funcionalidades de alta-disponibilidade nativas nas aplicações a serem protegidas: Algumas aplicações possuem recursos que garanta altadisponibilidade, não sendo necessário investir em outras opções. Por exemplo, controladores de domínios Windows replicam informações entre si, ou seja, não há a necessidade de implantar mecanismos que protejam um servidor controlador de domínio, pois caso este pare de funcionar, outro controlador assume esta função. Outras aplicações que possui este 52 comportamento são: servidores de catalogo global do Active Directory, servidores web com balanceamento de carga, servidores DNS, etc; b) clusterização da máquina virtual. Existe a opção de clusterizar aplicações tais como servidores de correio Exchange, SQL Server. Estas aplicações são instaladas em máquinas virtuais dispersas em hosts diferentes, e caso algum host pare de funcionar, a aplicação clusterizada passa a funcionar automaticamente em outro host, garantindo alta-disponibilidade; c) clusterização do host: Através da criação de cluster do host, ou seja, a criação de um cluster Hyper-V, garante que todas as máquinas virtuais de um host que apresente falhas, seja automaticamente reiniciada em outro host. Isto é possível através do uso de um storage compartilhado. Esta solução é indicada para aplicações que não possuam mecanismos de alta- disponibilidade nativos; e d) adquirindo uma aplicação de terceiros para alta-disponibilidade e recuperação de desastres: Esta é uma estratégia utilizada quando há uma necessidade de disponibilidade mais alta do que as soluções apresentadas anteriormente e é necessária a aquisição de ferramentas especializadas para este caso. 53 Capítulo 5 5 PLATAFORMA XEN O Xen é um hypervisor de plataforma aberta (open-source), para arquiteturas de processadores de 32 ou 64 bits (BUYTAERT et al., 2007). É uma plataforma de virtualização tipo bare-metal, que habilita executar diversos tipos de sistemas operacionais em um mesmo computador host ao mesmo tempo. As máquinas virtuais são executadas com segurança e eficiência com desempenho próximo do nativo. Conforme Buytaert et al. (2007), o projeto Xen originou-se de um projeto de pesquisa do Grupo de Pesquisa de sistemas (Systems Research Group) no Laboratório de Computação da Universidade de Cambridge e foi baseado no XenoServers do Conselho de Pesquisas dos Engenheiros e Cientistas de Física do Reino Unido. O objetivo do projeto foi prover uma infraestrutura publica a nível global e acessível para propósitos de computação distribuída, com uma dedicação especial para pesquisas de sistemas, e liderados pelo pesquisador sênior Ian Pratt, o projeto produziu o hypervisor Xen como uma tecnologia de núcleo (BUYTAERT et al., 2007). O Xen foi liberado para o público utilizando uma abordagem de dois passos: Primeiramente, Ian Pratt, juntamente com outros colaboradores liberaram um ensaio intitulado “Xen and the Art of Virtualization” (em tradução livre seria Xen e a Arte da Virtualização), no Simpósio bi-anual de Princípios de Sistemas Operacionais, descrevendo o hypervisor e a abordagem para trazer virtualização para a arquitetura x86 em outubro de 2003 (BUYTAERT et al., 2007). Ao mesmo tempo, a versão 1.0 tornou-se disponível para download. Desde então, Xen cresceu e tornou-se maduro, 54 sendo peça-chave em muitas implementações. Xen também é tecnologia base para uma abordagem de mudança para modelos de hospedagem e Software como um serviço (SaaS) (WILLIAMS; GARCIA, 2007). O desenvolvimento do Xen na comunidade open-source é agora liderada pela XenSource, fundada por Pratt. Através de um canal para soluções comerciais para empresas baseadas na tecnologia Xen, XenSource é muito comprometida para o crescimento da comunidade Xen, promovendo e inspirando desenvolvedores para que o hypervisor Xen tenha este estado atual, e dedicando esforços próprios para o desenvolvimento deste também (BUYTAERT et al., 2007). 5.1 CARACTERÍSTICAS DO XEN O Xen oferece um conjunto de funcionalidades a nível empresarial, tornando-o um excelente candidato para implementações grandes executando aplicações criticas como também em pequenos e médios negócios. Para Williams e Garcia (2007), estas características incluem: a) máquinas virtuais com performance comparada a nativa; b) suporte a convidados Linux, Windows e Solaris; c) conversão P2V (Física para Virtual) e V2V (Virtual para Virtual); d) suporte a storage compartilhado do tipo SAN , iSCSI e NAS; e) gerenciamento de multi-servidores centralizado; f) arquitetura de gerenciamento distribuída flexível; g) suporte total em plataforma x86 (32 bits), x86 (32 bits) com PAE – Extensão de endereço físico (Physical Address Extension), e x86 com extensões 64 bits; h) gerenciamento dinâmico de memória - Controle automático de alocação de memória entre as máquinas virtuais evitando o uso de swap; i) scheduler BVT – Balanceamento de CPU para cada máquina virtual no processador central. O XEN toma decisões de balanceamento de carga 55 otimizando o processamento, se uma máquina virtual estiver ociosa o XEN transfere a carga do processador para uma outra máquina virtual, conforme o peso atribuído para cada máquina virtual; j) transferência de disco e partições para as máquinas virtuais: com o XEN é possível exportar dispositivos (HDs, partições, etc..) para as máquinas virtuais de forma simples e segura, através dos protocolos de rede padrão (NFS, iSCSI, NBD, etc.); k) VBD: No XEN é possível transformar espaço livre, partição, LVM e NFS em discos rígido para as máquinas virtuais; e l) migração de Máquina Virtual para Máquina Real : XEN realização a migração de máquinas virtuais, para um máquina física em tempo real, não havendo a necessidade de parar ou reinicializar sua máquina ou serviço. O Xen foi inicialmente desenvolvido para a arquitetura x86, mas foi feito suporte para arquiteturas como Itanium e Itanium 2 (IA-64) e IBM PowerPC. 5.2 PARAVIRTUALIZAÇÃO COM XEN De acordo com Williams e Garcia (2007), o Xen possui uma maneira simples de trabalhar em uma arquitetura complexa como o x86. Uma das maneiras para conseguir isto, foi separar os “Como”, “Quando” e “O que”. Outras implementações de hypervisor da plataforma x86 colocam a carga toda por conta do hypervisor; enquanto oferecem um alto grau de flexibilidade e sucesso, sacrificam a performance. Entretanto, os desenvolvedores do Xen preocuparam-se em otimizar o hypervisor no sentido de possuir um baixo nível de complexidade, tais como agendador de CPU e controle de acesso (WILLIAMS; GARCIA, 2007) Como resultado desta metodologia da arquitetura, conforme Williams e Garcia (2007), o ponto de demarcação começou a ser a questão de controle e gerenciamento. O foco do hypervisor são as operações de controle básico (o mecanismo, ou o “Como”), deixando o poder de decisão (as politicas, ou “O que” ou 56 “Quando”) para os sistemas operacionais convidados. Isto se adequa bem com a natureza do monitor da máquina virtual (VMM), onde o hypervisor somente se encarrega das tarefas que requerem acesso privilegiado direto. Resumindo, o Xen apresenta uma abstração da máquina virtual que é muito semelhante à plataforma de hardware, sem criar uma copia exata disto. Esta técnica é o núcleo do que é chamado de paravirtualização (WILLIAMS; GARCIA, 2007). 57 CAPÍTULO 6 6 OUTRAS PLATAFORMAS DISPONÍVEIS Além das plataformas de virtualização apresentadas anteriormente: VMware vSphere, Microsoft Hyper-V e Citrix Xen, existem outras plataformas disponíveis comercialmente. Neste capitulo irá apresentar três soluções: a Red Hat Virtualization for Server, Kernel-Based Virtual Machine e a Oracle VM Server. 6.1 RED HAT Segundo Victor et al. (2011), a Red hat é um sistema operacional da plataforma Linux e sua primeira versão foi lançada em 1994 e o seu ciclo de vida encerrou-se em 2003 (a ultima versão foi a 9). Foi substituído pelo Red hat Enterprise Linux (RHEL), atualmente na versão 6. Assim como a maioria dos sistemas operacionais modernos, o Red hat Enterprise Linux possui suporte para virtualização. Este suporte era provido na forma de KVM ou do Xen. Com o lançamento do RHEL 6 o suporte ao Xen foi removido, deixando somente o KVM como opção inclusa no RHEL. Em adição ao KVM, outras soluções de terceiros são disponíveis para esta plataforma, tais como VMware e Oracle VirtualBox (VICTOR et al., 2011). O “Red hat Enterprise Virtualization for Server”, conforme Victor et al. (2011), consiste de dois componentes: 58 a) Red hat Enterprise Virtualization Manager for Servers: Um completo sistema de gerenciamento para virtualização de servidores que prove capacidades avançadas para hosts e convidados (figura 19); e b) Red hat Enterprise Virtualization Hypervisor: Um hypervisor moderno baseado no KVM – kernel-based Virtual machine virtualization technology, que pode ser implementado tanto como um hypervisor do tipo bare-metal, ou como um aplicativo do RHEL 5.4 ou posterior (tipo hosted). Conforme Red Hat (2011), o Red hat oferece suporte para dois tipos de máquinas virtuais: convidados para-virtualizados e convidados com virtualização completa. No primeiro caso, a performance é próxima do servidor físico, mas somente VMs com o Red hat Enterprise Linux versão 4 ou posteriores, têm suporte a este tipo de virtualização. No segundo caso, permite uma gama maior de sistemas operacionais sendo executados como convidados. Algumas características do Red hat Enterprise Virtualization for Servers de acordo com Red Hat (2011): a) compatível com o formato OVF (Open Virtualization Format). Permite importar e exportar VMs do Red hat no formato OVF, com isto, é possível utilizar VMs de outras plataformas de virtualização ou exportar VMs para estes; b) ferramentas de conversão Física-Para-Virtual (P2V) e Virtual-Para-Virtual (V2V): Importa convidados Red hat Enterprise Linux de outras plataformas: Xen ou VMware; c) a habilidade para realizar migração “a quente” (live migration) das máquinas virtuais, sem interrupção dos serviços; d) alta-disponibilidade: Máquinas virtuais criticas reiniciam automaticamente em um outro host em caso de falha de hardware. É possível priorizar as VMs para em caso dos hosts que permanecerem ligados não conseguirem executar todas as VMs, as criticas terem prioridade de execução; e) controle de manutenção: Permite hosts serem atualizados e realizarem manutenção enquanto máquinas virtuais estão sendo executadas; f) agendador do sistema: Permite migrar máquinas virtuais entre os hosts para balanceamento de carga; 59 g) economia de energia: Permite consolidar as VMs em um numero pequeno de hosts em horário de pouca carga e desligar hosts ociosos, economizando com isto energia; h) realizar backups e restaurações de forma fácil das máquinas virtuais; i) a capacidade de executar máquinas para-virtualizadas de 32 bits em hardware baseado na arquitetura x86 rodando em modo de 64 bits; j) a habilidade de gerenciar facilmente máquinas virtuais e sistemas operacionais convidados através do uso de ferramentas em modo gráfico; e k) virtualização completa provê abstração completa entre o hardware e o sistema operacional convidado. Neste cenário, o sistema operacional prove um ambiente físico completo. 6.2 KERNEL-BASED VIRTUAL MACHINE O KVM – Kernel-based Virtual machine, conforme Victor et al. (2011), é uma solução de virtualização completa (full virtualization) para Linux na plataforma x86, que precisa de suporte de instrução de hardware para virtualização (Intel CT ou AMD-V). Usando KVM, é possível executar múltiplas máquinas virtuais rodando imagens não modificadas do Linux ou Windows. Cada máquina virtual tem seu hardware privado virtualizado: placa de rede, discos, adaptadores gráficos, etc (VICTOR et al, 2011). O projeto KVM representa a mais recente geração de virtualização open-source. O KVM está implementado como um módulo do kernel carregável que converte o kernel do Linux em um hypervisor do tipo bare-metal. O KVM depende de recursos de virtualização do processador, tais como Intel VT-X ou AMD-V habilitados e usa as características para virtualização da CPU (VICTOR et al, 2011). Em uma arquitetura KVM, conforme Victor et al. (2011), uma máquina virtual é implementada em um processo Linux e, portanto, é agendado pelo agendador do 60 Linux. A emulação dos dispositivos é gerenciada por uma versão modificada do QEMU que prove BIOS emulada, barramento PCI, USB e um conjunto padrão de dispositivos tais como IDE, controladoras de disco SCSI e placas de rede. Para prover a segurança e isolação para a máquina virtual executando como um processo Linux, o modelo de segurança padrão do Linux (SELinux) é usado. O kernel do Linux utiliza o SELinux para adicionar controle de acesso obrigatório e segurança multi-nível e multi-categoria como também prove aplicação de politica (VICTOR et al, 2011). 6.3 ORACLE VM SERVERS Segundo Victor et al. (2011), Oracle VM Server é uma plataforma de virtualização de baixo-custo e solução de gerenciamento da Oracle que utiliza o hypervisor Xen.Foi desenvolvido para prover a melhor performance para altas cargas de Entrada/Saída. O gerenciador desta plataforma de virtualização é uma máquina para-virtualizada Oracle Enterprise Linux. O Oracle VM prove uma solução de gerenciamento via browser que permite criar, clonar, compartilhar, configurar, iniciar e migrar VMs entre pools de Oracle VM servers (VICTOR et al, 2011). A plataforma Oracle VM é o único hypervisor certificado pela Oracle para softwares dela, como o banco de dados Oracle, Cluster Oracle Real Aplication (RAC), etc (VICTOR et al, 2011). 6.3.1 Características do Oracle 61 Segundo Victor et al. (2011), o Oracle VM Server: a) permite convidados das plataformas Windows, Linux e Solaris; b) rápido desenvolvimento de aplicações Oracle utilizando modelos de máquinas virtuais pré-configuradas; c) características avançadas de alta-disponibilidade tais como gerenciamento de alta-disponibilidade das VM, migração “quente” segura e balanceamento de carga entre os hosts; d) gerenciamento de recursos de Entrada/Saída das máquinas virtuais; e) conversão P2V (Físico para Virtual) e V2V (Virtual para Virtual); f) certificação oficial para produtos Oracle baseados em testes do mundo real; g) suporte a nível empresarial; h) gerenciamento de multi-servidores centralizado gerenciador Oracle Enterprise; e i) suporte a storage compartilhado SAN, iSCSI e NAS. com Oracle VM ou 62 CONCLUSÃO As soluções comerciais de virtualização de servidores disponíveis atendem as necessidades das empresas? Analisando as soluções comerciais mais difundidas: VMware, Citrix Xen e Microsoft Hyper-V, nota-se o esforço de cada uma delas no sentido de garantir as seguintes funcionalidades: Melhor utilização dos recursos de hardware: Através da consolidação dos servidores, a utilização dos recursos de hardware é otimizada, garantindo um melhor aproveitamento dos recursos. Disponibilidade: Através de recursos que estas soluções apresentam, o tempo de indisponibilidade dos recursos tem se tornado o menor possível, garantindo com isto, maior confiabilidade. Heterogeneidade: As soluções têm procurado ter suporte para vários ambientes operacionais: Windows. Linux, Solaris, etc. Com isto, a adoção destas soluções não geram impactos grandes em sua implantação, pois as soluções permitem que se virtualizem o ambiente sem a necessidade de trocas de sistemas operacionais. Gerenciamento: As soluções têm procurado oferecer ferramentas que garantam o gerenciamento do ambiente virtualizado, de forma prática e que permitam se adaptar a realidade de cada empresa. Embora a solução VMware mostrou-se a mais madura, pois apresentam recursos poderosos no gerenciamento de ambientes virtualizados, garantindo uma performance das máquinas virtuais próximas a dos servidores físicos e, alta disponibilidade; as demais soluções mostraram-se excelentes opções para a virtualização de ambientes empresariais. De um lado, a Microsoft, com sua solução comercial, o Hyper-V, é uma solução para ambientes em que os administradores de TI com experiência em soluções Microsoft possam estar gerenciando sem grandes esforços, pois encontrarão grande familiaridade na utilização desta ferramenta de gerenciamento, outras soluções como o Xen, que por ser de código aberto e possuir 63 inúmeros contribuidores ao redor do mundo, é uma solução robusta e apropriada em ambientes heterogêneos. Outras soluções como da Red hat e Oracle, mostram-se eficientes em ambientes específicos. Em parques tecnológicos em que o ambiente utiliza-se de soluções da RedHat, a solução de virtualização da Red hat é uma excelente candidata, pois possui uma grande integração com os demais produtos da Red hat, garantindo um maior desempenho. A solução da Oracle, Oracle VM Server é adequada em ambientes que se utilizam de outras soluções desta empresa, principalmente o famoso banco de dados da Oracle. Somente o Oracle VM Server é homologado para virtualizar ambientes que utilizam soluções comerciais da Oracle. Analisando as soluções comerciais citadas acima, conclui-se que elas atendem as necessidades das empresas, referentes a questões como alta-disponibilidade, melhor utilização dos recursos computacionais, embora para cada realidade exista uma solução que melhor se adeque a necessidade. 64 REFERÊNCIAS BUYTAERT, Kris, DITTNER, Rogier, GARCIA Juan R. et al. The Best Damn Server Virtualization. Book Period. Syngress Publishing Inc, 2007. KHNASER, Elias. VCP4 Exam Cram: Vmware Certified Professional VCP-410 Exam – Secound Edition. Pearson IT Certification, 2011. MARSHALL, David, BEAVER, Stephen S., MCCARTY, Jason W. VMware ESX Essentials in the Virtual data Center. Auerbach Publications, 2009. ______, REYNOLDS, Wade A, MCCRORY, Dave. Advanced server virtualization – Vmware and Microsoft Platforms in the Virtual Data Center. Auerbach Publications, 2006. MISHCHENKO, Dave. VMware ESXi: Planning, Implementation, and Security. Cengage Learning, 2011. MORIMOTO, Rand, GUILLET, Jeff. Windows Server 2008 Hyper-V – Unleashed. Sams Publishing, 2009. RED HAT. Red Hat Enterprise Virtualization for Servers: Features & benefits. Disponível em: <http://www.redhat.com/virtualization/rhev/server/features-benefits/>.Acesso em: 15 nov. 2011. VICTOR, Jeff, SAVIT, Jeff, COMBS, Gary et al. Oracle Solaris 10 System Virtualization Essentials. Pearson Education Inc, 2011. WILLIAMS, David E.,GARCIA, Juan. Virtualization with Xen. Syngress Publishing Inc, 2007.