Você está na página 1de 35

Captulo

4
Virtualizao: da teoria a solues
Alexandre Carissimi Instituto de Informtica Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15064 CEP 91501-970 Porto Alegre RS - Brasil

Abstract Virtualization is a technique which allows a computer system to be partitioned on multiples isolated execution environments similar to a single physical computer. Such environments are called virtual machines (VM). Each VM can be configured on an independent way having its own operating system, applications, Internet services and network parameters. It is possible to interconnect virtual machines as if they were a physical one. Some virtualization tools offer virtual network support like switches and routers. Firewalls and VPN can be also used among VMs. This work presents virtualizations techniques, its implementations issues and its use on IT infrastructures. We discuss the different virtualizations approaches, hardware support, tools, advantages and disadvantages on using virtualization as a business strategy. Resumo Virtualizao a tcnica que permite particionar um nico sistema computacional em vrios outros denominados de mquinas virtuais. Cada mquina virtual oferece um ambiente completo muito similar a uma mquina fsica. Com isso, cada mquina virtual pode ter seu prprio sistema operacional, aplicativos e servios de rede (Internet). possvel ainda interconectar (virtualmente) cada uma dessas mquinas atravs de interfaces de redes, switches, roteadores e firewalls virtuais, alm do uso j bastante difundido de VPN (Virtual Private Networks). objetivo deste minicurso fornecer os conceitos bsicos para compreender no que consiste a virtualizao, suas formas de implementao, compromissos e vantagens para uma infra-estrutura de TI.

174

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.1. Introduo
A virtualizao um assunto que tem sido atualmente destaque no mundo da tecnologia da informao (TI), apesar de no ser exatamente uma novidade. A introduo da linguagem de programao Java trouxe consigo a noo de mquina virtual, mas a origem das mquinas virtuais remonta ao incio dos anos 70. Nessa poca, era comum que cada computador (mainframe), mesmo de um nico fabricante, tivesse seu prprio sistema operacional, e isso se tornou uma das principais razes para o aparecimento das mquinas virtuais: permitir que software legado executasse nos caros mainframes. Na prtica, o software no inclua apenas a aplicao, mas sim todo o ambiente operacional sobre o qual ele executava. Essa abordagem foi usada com sucesso pela IBM que, na linha de mainframes 370 e seus sucessores, oferecia uma mquina virtual, portada para vrias de suas plataformas, sobre a qual as aplicaes executavam. Dessa forma era possvel executar, ou migrar, uma aplicao de uma plataforma para outra desde que houvesse uma verso de mquina virtual para a plataforma alvo. Uma mquina virtual nada mais que uma camada de software que oferece um ambiente completo muito similar a uma mquina fsica. Com isso, cada mquina virtual pode ter seu prprio sistema operacional, bibliotecas e aplicativos. medida que os computadores comearam a se tornar mais comuns, a quantidade de sistemas operacionais convergiu para algumas poucas famlias (Unix, Macintosh e Microsoft), cada uma com um pblico-alvo e um conjunto de aplicativos. Nesse contexto, a virtualizao deixava de ser um problema importante. No entanto, o aumento do poder computacional dos atuais processadores, a disseminao de sistemas distribudos e a onipresena das redes de computadores causaram, por vrias razes, o ressurgimento da virtualizao. Hoje em dia muito difcil imaginar um sistema computacional que no seja conectado em rede. Na prtica, essa conectividade faz com que os administradores de sistemas sejam responsveis por manter um conjunto grande e heterogneo de servidores, cada um executando uma aplicao diferente, que podem ser acessadas por clientes tambm heterogneos. comum encontrarmos em infra-estruturas de rede uma filosofia um servidor por servio por razes que variam desde suporte a heterogeneidade dos clientes segurana. Normalmente, nesse contexto, a carga de processamento de um servidor no explora todo o potencial disponibilizado pelo processador. H um desperdcio de ciclos de processamento e, por conseqncia, de investimento. A virtualizao surge como uma opo para contornar esse problema. Inicialmente, a virtualizao pode auxiliar a se trabalhar em um ambiente onde haja uma diversidade de plataformas de software (sistemas operacionais) sem ter um aumento no nmero de plataformas de hardware (mquinas fsicas). Assim, cada aplicao pode executar em uma mquina virtual prpria, possivelmente incluindo suas bibliotecas e seu sistema operacional que, por sua vez, executam em uma plataforma de hardware comum. Em outras palavras, isso no deixar de ser um retorno situao de executar software herdado em um sistema diferente daquele para o qual ele foi projetado. Assim, a virtualizao proporciona um alto grau de portabilidade e de flexibilidade permitindo que vrias aplicaes, de sistemas operacionais diferentes, executem em um mesmo hardware. Ao se executar mltiplas instncias de mquinas

Livro Texto dos Minicursos

175

virtuais em um mesmo hardware, tambm se est proporcionando um uso eficiente de seu poder de processamento. Essa situao comumente denominada de consolidao de servidores e especialmente interessante em data centers devido a heterogeneidade de plataformas inerente ao prprio negcio. Alm disso, em data centers, a diminuio de mquinas fsicas implica na reduo de custos de infra-estrutura fsica como espao, energia eltrica, cabeamento, refrigerao, suporte e manuteno a vrios sistemas. A flexibilidade e a portabilidade das mquinas virtuais tambm tornam interessante o uso da virtualizao em desktops. possvel imaginar, por exemplo, o desenvolvimento de produtos de software destinados a vrios sistemas operacionais sem ter a necessidade de uma plataforma fsica para desenvolver e testar cada um deles. Assim, as mquinas virtuais em desktops podem ser usadas para se definir ambientes experimentais sem comprometer o sistema operacional original da mquina, ou ainda, para compor plataformas distribudas como clusters e grades computacionais. Nos ltimos anos, dada a importncia e a gama de aplicaes em que a virtualizao pode ser empregada, houve um investimento macio nesta tecnologia por parte de fabricantes de processadores e no desenvolvimento de produtos de software. Os processadores mais recentes da Intel e da AMD contam no seu projeto com mecanismos e solues de hardware especialmente destinados a dar suporte a virtualizao. As mquinas virtuais, por emularem um ambiente computacional sobre outro impem algumas restries de implementao e de desempenho. aqui que entra o desenvolvimento dos produtos de software para a virtualizao. Basicamente, as mquinas virtuais podem ser implementadas como uma aplicao de um sistema operacional e executarem em modo usurio, ou serem uma camada de software posicionada entre o hardware da mquina e o sistema operacional. A primeira opo o que se denomina de mquina virtual de processo e a segunda de monitor de mquina virtual ou hypervisor [Smith e Nair, 2005]. Ainda, um monitor de mquina virtual pode prover virtualizao total ou para-virtualizao, dependendo se, respectivamente, o sistema operacional que executa na mquina virtual deve ou no ser adaptado para tal. A partir do momento que se define mquinas virtuais surge quase que imediatamente a necessidade de conect-las em rede. Todas as mquinas virtuais existentes provm interfaces de redes virtuais idnticas a suas similares reais, isso , possuem endereos MAC e podem ser interligadas em equipamentos de interconexo de redes, como switches e roteadores. Tipicamente, isso feito colocando a interface de rede fsica em modo promscuo e multiplexando seu uso entre as diferentes interfaces virtuais. Um passo adiante fornecer toda uma infra-estrutura virtual de rede, criando processos (daemons) que emulam switches e roteadores, ou incluindo esse tipo de suporte na prpria infra-estrutura de virtualizao. Com base no que foi mencionado at o momento possvel imaginar que a virtualizao oferece uma gama bastante grande de aplicaes. O objetivo deste trabalho apresentar os principais conceitos da virtualizao, discutir aspectos relacionados com sua utilizao e mostrar as principais ferramentas existentes para sua implantao. Para atingir esse objetivo este trabalho organizado em oito sees incluindo esta introduo.

176

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Inicialmente, a seo 4.2, fornece uma viso geral no que consiste a virtualizao e faz uma reviso de conceitos bsicos de sistemas operacionais necessrios para uma melhor compreenso da virtualizao e de sua implementao. A seo 4.3, por sua vez, apresenta a virtualizao sob o ponto de vista de redes de computadores abordando seu uso na implantao de servios Internet e na definio da infra-estrutura de rede. Atualmente existem vrias ferramentas que oferecem suporte a virtualizao, tanto solues proprietrias quanto em software livre, as mais comuns, VMware, Xen e Microsoft, so apresentadas na seo 4.4. A seo 4.5 ilustra o emprego da virtualizao atravs de estudos de casos, para isso foram selecionadas trs aplicaes significativas: consolidao de servidores, virtualizao em desktops e a definio de honeypots. A adoo da virtualizao em uma infra-estrutura de TI deve ser feita considerando uma srie de aspectos, pois ela afeta sobremaneira como novos servios podem ser agregados infra-estrutura de rede, na aquisio de novos equipamentos e muda a filosofia de administrao de sistemas. O objetivo da seo 4.6 discutir alguns desses aspectos de forma a orientar o leitor sobre os principais pontos a serem avaliados quando da anlise sobre adotar a virtualizao. A seo 4.7 complementa essa anlise abordando aspectos como segurana, gerenciamento e desempenho de mquinas virtuais. Por fim, a seo 4.8, que apresenta a concluso deste trabalho.

4.2. Virtualizao
Qualquer pessoa que atualmente use um computador sabe que existe algo denominado de sistema operacional que, de alguma forma, controla os diversos dispositivos que o compe. A definio clssica para sistema operacional, encontrada em vrios livros, a de uma camada de software inserida entre o hardware e as aplicaes que executam tarefas para os usurios e cujo objetivo tornar a utilizao do computador, ao mesmo tempo, mais eficiente e conveniente [Silberschatz, 2001]. A utilizao mais eficiente busca um maior retorno no investimento feito no hardware. Maior eficincia significa mais trabalho obtido pelo mesmo hardware. Isso obtido atravs da distribuio de seus recursos (espao em memria principal, processador, espao em disco, etc) entre diferentes programas. Cada programa tem a iluso de estar executando sozinho no computador quando na realidade ele est compartilhando com os demais. Uma utilizao mais conveniente do computador obtida, escondendo-se do usurio detalhes de hardware, em especial, dos perifricos de entrada e sada. Tipicamente, isso feito atravs da criao de recursos de mais alto nvel oferecido atravs de interfaces grficas. Por exemplo, os usurios usam espao em disco atravs do conceito de arquivos. Arquivos no existem no hardware. Eles formam um recurso criado a partir do que o hardware oferece. Genericamente, isso denominado de virtualizao de recursos. Um conceito importante em sistemas operacionais de processo. Um processo uma abstrao que representa um programa em execuo. Cada processo um ambiente de execuo isolado dos demais processos que executa sobre um processador lgico, isto , um processador virtual, vinculado a si no momento da criao do processo. Cabe ao ncleo do sistema operacional, atravs de seu escalonador, alternar os diferentes processadores lgicos (virtuais) sobre um processador fsico. A iluso de paralelismo

Livro Texto dos Minicursos

177

criada pelo chaveamento rpido entre os processos. Na realidade, os sistemas operacionais atuais possuem duas abstraes para unidade de execuo: processos e threads. Entretanto, continua vlida a noo de um processador virtual por unidade de execuo. Um estudo desses conceitos extrapola o escopo deste trabalho e o leitor mais interessado pode obter mais detalhes em [Silberschatz, 2001][Oliveira, Carissimi e Toscani, 2004].

Figura 4.1 Princpio bsico de mquinas virtuais

Em sua essncia, a virtualizao consiste em estender ou substituir um recurso, ou uma interface, existente por um outro, de modo a imitar um comportamento. Isso ilustrado genericamente na figura 4.1. Por exemplo, sobre o hardware do sistema computacional A posto uma camada de software, o sistema operacional X, que fornece a iluso de uma mquina virtual B para as aplicaes do sistema operacional X. No entanto, uma dessas aplicaes pode ser a implementao de uma mquina virtual C que, por sua vez, oferece um ambiente de execuo para aplicaes escritas para a mquina virtual C. Um exemplo prtico disso, a mquina virtual java (JVM Java Virtual Machine) que permite que aplicaes Java executem um ambiente virtual a JVM implementado para o sistema operacional GNU/Linux ou para o Windows. 4.2.1 Conceitos bsicos Para entender o que uma mquina virtual, interessante relembrar alguns aspectos fundamentais de sistemas operacionais. Um conceito importante em sistemas operacionais o de processo. Um processo uma abstrao que representa um programa em execuo. O processo representado por um espao de endereamento lgico composto por regies de texto, dados, pilha e heap (figura 4.2). A regio de texto onde residem as instrues do programa a serem executadas. A regio de dados mantm todas as variveis globais, inicializadas ou no.A pilha serve para armazenar o endereo de retorno de chamadas de funo, para a passagem de parmetros, alm de ser tambm a rea onde so armazenadas as variveis locais de uma funo. Por fim, a regio de heap que serve para a alocao dinmica de pores de memria.

178

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

A execuo de um processo acompanhada por dois registradores lgicos (virtuais): contador de programa (Program Counter - PC) e o apontador de pilha (Stack Pointer SP). O contador de programa indica a instruo a ser executada e o apontador de pilha onde devem ser armazenados o endereo de retorno de uma chamada de funo, seus parmetros e suas variveis locais. Cabe ao sistema operacional, atravs de seu escalonador e do dispatcher, mapear os registradores lgicos PC e SP para os registradores fsicos PC e SP e nicos do processador. Isso o que se denomina de chaveamento de contexto1. A alternncia entre os diversos PC e SP lgicos, dos diferentes processos, nos registradores PC e SP fsicos fornece a iluso de que vrios processos esto executando simultaneamente (figura 4.2). Portanto, um processo nada mais que um tipo de mquina virtual que executa um nico programa.

Figura 4.2 A abstrao de processo em um sistema operacional

Outro princpio importante em sistemas operacionais a sua estruturao em camadas hierrquicas com diferentes nveis de abstraes e interfaces. Um computador um sistema de computao relativamente complexo devido variedade de componentes de hardware e de software que o constitui e a sua interao. Entretanto, essa complexidade nunca foi um empecilho para o crescimento e a evoluo dos computadores em geral devido ao seu projeto de forma hierrquica, com diferentes nveis de abstrao e com interfaces bem definidas entre esses nveis. O uso de nveis de abstrao e interfaces, tanto para os componentes de software, como para os de hardware, permitiu que cada componente fosse visto como um subsistema independente oferecendo servios para os demais. Os detalhes internos de implementao, de cada um deles, no precisam ser conhecidos: basta conhecer as interfaces e os servios
O chaveamento de contexto mais complexo do que simplesmente agir sobre o PC e o SP, pois envolve o salvamento de estado de todos os registradores fsicos do processador e a atualizao de uma srie de tabelas internas do sistema operacional, mas para esta discusso, essa viso simplificada suficiente.
1

Livro Texto dos Minicursos

179

oferecidos. Tipicamente, um sistema de computao oferece trs tipos de interfaces: instrues de mquina (privilegiadas); instrues de mquina (no privilegiadas) e chamadas de sistema; e interface aplicativa de programao. A figura 4.3 ilustra essas interfaces.

Figura 4.3 Interfaces genricas de um sistema de computao

O elemento central de um computador seu processador. Cada processador tem um conjunto de instrues de mquina (ISA Instruction Set Architecture) que pode seguir um determinado padro. Por exemplo, Intel e AMD, fabricam processadores que implementam um mesmo padro ISA, o Intel IA-32 (x86). Os projetistas de software compilam seu programas para obter cdigos binrios para um determinado ISA. Portanto, o conjunto de instrues (ISA) uma interface entre o hardware e o software. Na realidade, as instrues de mquina so ainda divididas em dois grupos: privilegiadas e no-privilegiadas. Na prtica, isso cria uma diviso nesse nvel de interface que permite que apenas alguns programas, os com privilgios especiais, como o sistema operacional, possam executar todas as instrues, entre elas, as de manipulao de recursos de hardware, como entrada e sada e interrupes. Os programas de usurios executam apenas as instrues no-privilegiadas. A segunda interface composta pelas instrues de mquina no-privilegiadas e pelas chamadas de sistema, como as oferecidas por um sistema operacional. Essa interface possibilita que um programa de usurio execute instrues no-privilegiadas diretamente no processador, mas no permite o acesso aos recursos de hardware (instrues privilegiadas). As chamadas de sistema so uma forma de permitir que os programas de usurios acessem de forma indireta, e controlada, os recursos de hardware. Atravs delas, os programas de usurio executam, aps ter sido garantido a autenticidade e a validade da operao, operaes de acesso a recursos de hardware (tipicamente E/S). A terceira interface consiste nas chamadas a funes de biblioteca que, em geral, so denominadas de interface aplicativa de programao (API Application Program Interface). comum que as chamadas de sistema sejam ocultadas por uma API.

180

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Considerando essas interfaces, a implementao de mquinas virtuais pode ser feita de dois modos. Primeiro, possvel fazer um programa de aplicao que fornea um ambiente de execuo para outras aplicaes. Esse ambiente pode possuir um conjunto de instrues abstratas que so interpretadas para gerar as instrues de mquinas no-privilegiadas, as chamadas de sistema e de API de bibliotecas que correspondem ao abstrata desejada. o caso da mquina virtual java (JVM). possvel ainda que esse programa de aplicao emule chamadas de sistemas de outro sistema operacional, como ocorre quando se executa Linux em sistemas Windows com a ferramenta VMware player. Esse tipo de virtualizao o que se denomina de mquina virtual de processo (figura 4.4a) [Smith e Nair, 2005]. Uma abordagem alternativa fornecer uma camada de software entre o hardware e o sistema operacional protegendo o acesso direto deste aos recursos fsicos da mquina. Essa camada oferece como interface ao sistema operacional um conjunto de instrues de mquina que pode ser o mesmo do processador fsico, ou um outro. O ponto importante que essa interface deve estar disponvel sempre que o computador estiver ligado e que ela possa ser usada simultaneamente por diferentes programas. O resultado final que possvel ter diversos sistemas operacionais (programas) executando independentemente na mesma plataforma. Genericamente, essa mquina virtual referenciada como monitor de mquina virtual (Virtual Machine Monitor VMM), tambm conhecido como hypervisor, ou ainda, mquina virtual de sistema (figura 4.4b) [Smith e Nair, 2005].

Figura 4.4 Tipos de mquinas virtuais e sua relao com sistemas hspede e hospedeiro.

Um ponto importante a destacar que um processo uma entidade efmera, ou seja, ele existe apenas quando um programa est em execuo. Portanto, uma mquina virtual de processo s existe enquanto este estiver executando. J o monitor de mquina virtual (hypervisor) est presente sempre que o computador estiver ligado. O processo ou sistema que executa sobre uma mquina virtual denominado de hspede, enquanto o ambiente sobre o qual ele executa chamado de hospedeiro. A figura 4.4 resume, de forma esquemtica, as diferenas entre o uma mquina virtual de processo e monitor de mquina virtual e suas relaes com sistema hspede e sistema hospedeiro.

Livro Texto dos Minicursos

181

Na figura 4.4a, uma aplicao executa sobre um programa que implementa uma mquina virtual de processo (s vezes tambm chamado de runtime ou executivo). Nesse caso, a mquina virtual utiliza as funcionalidades providas pelo sistema operacional como chamadas de sistemas e funes de biblioteca e pelo prprio processador atravs de instrues no-privilegiadas. A aplicao emprega apenas a interface provida pelo ambiente (mquina) virtual. No outro caso, figura 4.4b, a aplicao executa usando as chamadas de sistemas e funes de bibliotecas providas por um sistema operacional, assim como as instrues no-privilegiadas oferecidas pelo monitor de mquina virtual. Ressalta-se que, nesse caso, o prprio sistema operacional executa as instrues oferecidas pelo monitor de mquina virtual, as quais podem ser as mesmas ou no do hardware (processador) subjacente. 4.2.2 Suporte de hardware para virtualizao Na seo anterior foi apresentado, sob o ponto de vista de software, no que consiste a idia da virtualizao. No entanto, da mesma forma que ocorre na implementao de sistemas operacionais convencionais, necessrio que o hardware do processador proveja mecanismos bsicos que auxiliem o software na execuo de tarefas consideradas essenciais. Em 1974, Popek e Goldberg [Popek e Goldberg, 1974], introduziram trs propriedades necessrias para que um sistema computacional oferecesse de forma eficiente suporte a virtualizao:

Eficincia: todas instrues de mquina que no comprometem o funcionamento do sistema devem ser executadas diretamente no hardware sem interveno da mquina virtual. Controle de recursos: uma mquina virtual deve ter controle completo sobre os recursos virtualizados sendo estritamente proibido que um programa executando sobre a mquina virtual os acesse diretamente. Equivalncia: um programa executando sobre uma mquina virtual deve exibir um comportamento idntico quele apresentado caso a mquina virtual no existisse e o programa acessasse diretamente uma mquina fsica equivalente. Duas excees so consideradas. Primeira, eventualmente, algumas instrues podem ter seu tempo de execuo aumentado. Segunda, pode haver problemas de conflito de acesso a recursos, os quais devem ser resolvidos de forma apropriada.

Essas propriedades se traduziram na classificao do conjunto de instrues de mquina de um processador (ISA) em trs grupos e em dois teoremas. As instrues de mquina so divididas em: privilegiadas, que se executadas por um programa em modo usurio causam excees (trap); sensveis de controle, que permitem a alterao de recursos do sistema; e sensveis comportamentais, cujo resultado ou comportamento dependem da configurao de recursos como, por exemplo, contedo de registradores internos ou modos de execuo do processador.

182

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

O primeiro teorema diz que um monitor de mquina virtual (VMM) pode ser implementado se as instrues sensveis de controle e comportamentais forem um subconjunto das instrues privilegiadas. Isso se traduz no fato que qualquer instruo que possa afetar o funcionamento da VMM deve passar por seu controle. O segundo teorema diz respeito a possibilidade de uma VMM executar uma instncia de si mesma. Para melhor compreender os problemas relacionados com o processador e a virtualizao interessante analisar a arquitetura x86. A arquitetura x86 prov quatro modos de operao para o processador, denominados de anis de proteo (rings) ou CPL (Current Privilege Level), identificados de 0 a 3. Nos sistemas operacionais convencionais (Microsoft Windows e UNIXes) para esse tipo de arquitetura apenas dois modos so usados. O ring 0, que detm os maiores privilgios de execuo, usado pelo sistema operacional, e o ring 3, de menor privilgio empregado pelos processos de usurio. Se um processo de usurio tentar executar uma instruo privilegiada ocorrer uma exceo (trap) que dever ser tratada adequadamente. Entretanto, a arquitetura x86, em especial o Pentium, possui dezessete instrues no privilegiadas [Robin e Irvine, 2000] que so sensveis, ou seja, o teorema 1 violado. Na prtica, a condio do teorema 1 suficiente, mas no necessria, pois possvel implementar mquinas virtuais para arquiteturas que no o respeitam pagandose o custo em desempenho. A virtualizao nessas arquiteturas feita tratando de forma apropriada as instrues consideradas como sensveis. Duas tcnicas so normalmente usadas. Primeira, as instrues sensveis so identificadas em tempo de execuo e geram um desvio para a VMM trat-las adequadamente. Segunda, o programa a ser executado na VMM modificado para que as instrues sensveis sejam substitudas para chamadas a VMM. Essa tcnica conhecida como para-virtualizao (seo 4.2.3). Entretanto, os fabricantes de processadores, AMD e Intel, desenvolveram extenses para a arquitetura x86 para suportarem a virtualizao. As extenses da AMD, denominada de AMD-V (AMD-Virtualization), codinome Pacfica, se aplica s arquiteturas x86 de 64 bits como o Athon, Turion, Phenom e as linhas mais recentes. A Intel apresenta suas extenses para as arquiteturas x86 de 32 e 64 bits. Essas extenses so conhecidas por IVT (Intel Virtualization Technology) ou pelo seu codinome, Vanderpool. As solues da AMD e da Intel foram desenvolvidas independentemente uma da outra e so incompatveis, embora sirvam para o mesmo propsito. A AMD implementa funes especiais no processador que so executadas por um hypervisor e que podem controlar, em seu nome, se determinados acessos de um sistema hspede so permitidos. A Intel introduziu mecanismos similares (virtual machines extensions) que complementam a idia do conceito de anis de proteo com dois novos modos: root e no-root. Esses modos so controlados pelo hypervisor (que executa em modo root) e que pode transferir a execuo de um sistema operacional hspede para o modo noroot no qual instrues do anel zero so executadas sem risco para o sistema.

Livro Texto dos Minicursos

183

Por fim, uma conseqncia importante dessa discusso de suporte de hardware que os softwares que implementam tcnicas de virtualizao podem apresentar problemas de compatibilidade, ou de desempenho, quando executados em determinados processadores. importante verificar se a ferramenta de virtualizao a ser empregada possui algum tipo de restrio quanto ao processador. 4.2.3 Virtualizao total e paravirtualizao A implementao de mquinas virtuais de sistema ou monitores de mquinas virtuais (VMM) pode ser obtida atravs de duas tcnicas: virtualizao total ou completa e a para-virtualizao. A virtualizao total (figura 4.5) consiste em prover uma rplica (virtual) do hadware subjacente de tal forma que o sistema operacional e as aplicaes podem executar como se tivessem executando diretamente sobre o hardware original. A grande vantagem dessa abordagem que o sistema operacional hspede no precisa ser modificado para executar sobre a VMM. No entanto, essa abordagem tem alguns inconvenientes. Primeiro, dada a diversidade de dispositivos existentes que compem um computador, muito difcil implementar uma mquina virtual que imite o comportamento exato de cada tipo de dispositivo. A soluo consiste em prover na VMM suporte a um conjunto genrico de dispositivos. Tipicamente, cada VMM possui um teclado e mouse do tipo PS/2, unidades de floppy, controladores IDE, cd-rom ATAPI, portas seriais e paralelas, uma placa grfica padro e as placas de redes mais comuns em ambientes PC. Sendo assim, pode-se ter uma subutilizao de um recurso de hardware real. Segundo, por no ser modificado, as instrues executadas pelo sistema hspede devem ser testadas na VMM para saber se elas so sensveis ou no, o que representa um custo de processamento. Terceiro, a implementao de VMM com virtualizao total deve contornar alguns problemas tcnicos devido a forma os sistemas operacionais so implementados. Por exemplo, um sistema operacional convencional (Linux ou Windows) implementa memria virtual atravs de paginao. H toda uma gerncia de alocao, liberao e controle de acesso s pginas que devem respeitadas. Grosso modo, necessrio converter o espao de endereamento do sistema hspede para um real, disputando recursos com outro sistema hspede. Tecnicamente, no h maiores empecilhos em se fazer isso, porm, esse tratamento tambm representa uma queda de desempenho. A para-virtualizao (figura 4.6) uma abordagem alternativa que surge como forma de contornar as desvantagens da virtualizao total. Nessa abordagem, o sistema hspede modificado para chamar2 a VMM sempre que for executada uma instruo ou ao considerada sensvel. Dessa forma, o teste por instruo no mais necessrio. Alm disso, na para-virtualizao os dispositivos de hardware so acessados por drivers da prpria VMM.
O termo normalmente empregado para tal hypercalll, ou seja, a substituio da chamada de uma instruo sensvel pela chamada a um tratador de interrupo de software (trap) com uma parametrizao adequada de registradores.
2

184

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Figura 4.5 Virtualizao total

Figura 4.6 Para-virtualizao

Para concluir, convm ressaltar alguns pontos importantes desta discusso. A virtualizao total permite que um sistema hspede execute em uma VMM sem necessitar nenhuma alterao, ao passo que com a para-virtualizao o sistema hspede precisa ser modificado para enxergar a VMM. Por outro lado, a para-virtualizao explora de maneira apropriada os recursos disponveis pelo hardware real da mquina e apresenta um melhor desempenho que a virtualizao total. Entretanto, face o atual suporte de hardware virtualizao presente nos processadores Intel e AMD, a virtualizao total e a para-virtualizao tm apresentado desempenhos semelhantes [XenSource 2008a]. A anlise apresentada em [XenSource 2008a] consistiu em executar benchmarks como SPECcpu2000, Passmark e Netperf, que juntos simulam cargas de trabalho similares as apresentadas por datacenters.

Livro Texto dos Minicursos

185

4.2.4 Emulao, simulao e virtualizao Ao iniciar o estudo sobre virtualizao, h dois conceitos que normalmente aparecem: simulao e emulao. Simulao, de acordo com dicionrio Houaiss da lngua portuguesa, o ato de representar com semelhanas certos aspectos de; imitar ou fingir. Sob o ponto de vista computacional, um sistema fsico, ou abstrato, pode ser descrito atravs de um modelo matemtico que representa certas caractersticas chaves para o entendimento de seu comportamento ou funcionamento. Um simulador um programa que implementa um modelo de sistema recebendo parmetros de entrada e condies iniciais de contorno e serve para auxiliar na predio e anlise de comportamento do sistema simulado. A simulao computacional tem sido uma tcnica bastante importante em vrias reas como fsica, qumica, geocincias, biologia, entre outras. Um tipo especial de simulao a interativa, onde um agente externo humano participa do lao de simulao introduzindo eventos e reaes que servem como parmetros de entrada para um modelo. Esse o caso de simuladores de vo, de pilotagem e da maioria dos jogos de computadores. J emulao, tambm segundo o Houaiss, em um de seus sentidos, o esforo para imitar ou tentar seguir o exemplo de algum. Em termos computacionais, entendese a capacidade de um programa de computador, ou de um dispositivo eletrnico, imitar outro programa ou dispositivo. Em si, um emulador um programa que cria uma camada de software entre uma plataforma3 hspede e a plataforma hospedeira a ser imitada. Dessa forma, um emulador capaz de executar os mesmos programas do sistema original (hspede) sobre outro sistema (hospedeiro), reproduzindo os mesmos resultados para as mesmas entradas. interessante salientar que no importa como o emulador faz isso, ou seja, seus estados internos, mas sim seu comportamento externo. Entretanto, R. Jain [Jain, 1991] define emulao como a simulation using hardware or firmware is called emulation e A. Singh [Singh, 2008] diz a simulator can be informally thought of as an accurate emulator. Da mesma forma, no existe uma definio consensual sobre o que virtualizao, uma usualmente empregada aquela dada em [Singh, 2008]: virtualizao um framework ou metodologia para dividir os recursos de um computador em mltiplos ambientes de execuo, aplicando um, ou mais conceitos, e tecnologias como particionamento de software ou hardware, tempo compartilhado, simulao completa ou parcial da mquina, emulao e qualidade de servios. De maneira pragmtica, virtualizao pode ser definida como uma tcnica que permite particionar um nico sistema computacional em vrios outros sistemas totalmente separados. Cada um desses sistemas capaz de oferecer um ambiente, denominado de mquina virtual, que estende ou substitui uma interface existente de modo a imitar o comportamento de um outro sistema.

Por plataforma se entende o conjunto composto pelo hardware e software de um sistema computacional, incluindo seu sistema operacional.

186

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.2.5 Outras tcnicas de virtualizao Um desafio para a implementao de mquinas virtuais de processo quando o sistema hspede possui um conjunto de instrues diferente do sistema hospedeiro. A forma mais direta de resolver esse problema atravs de interpretao. Um interpretador busca, decodifica, analisa, instruo por instruo, e traduz cada uma delas por seu equivalente no sistema hospedeiro. Apesar de vivel, o interpretador introduz um custo de processamento que impacta no desempenho. Para contornar esse problema surge a tcnica de traduo binria dinmica [Ung, 2000] a qual converte as instrues do sistema hspede para o sistema hospedeiro em blocos e as armazena em uma cache para reaproveitamento futuro. importante salientar que a tcnica de traduo binria dinmica usada mesmo quando o sistema hspede e o sistema hospedeiro possuem o mesmo conjunto de instrues. Nesse caso, a traduo ocorre no sentido de aes, convertendo uma ao do sistema hspede por sua ao equivalente no hospedeiro. Um exemplo a possibilidade executar Linux sobre Microsoft Windows e vice-versa. Outra tcnica de virtualizao que privilegia a portabilidade a de mquinas virtuais de linguagem de alto nvel. Nesse caso, a mquina virtual definida e implementada levando em conta um ambiente de desenvolvimento composto por uma linguagem de alto nvel e seu compilador. O cdigo compilado no corresponde a nenhuma arquitetura real existente, mas sim a mquina virtual definida. Para cada arquitetura real deve haver uma implementao especfica dessa mquina virtual, assim o cdigo compilado para esse sistema pode executar sobre qualquer sistema. Essa a abordagem da mquina virtual Java e da Microsoft Commom Language Infrastructure, base do .Net.

4.3. Virtualizao em ambientes de rede


At agora, a virtualizao tem sido apresentada principalmente como uma tcnica que permite executar mltiplos sistemas operacionais e suas aplicaes em mquinas virtuais sobre uma nica mquina fsica. Entretanto, o conceito de virtualizao mais amplo. Segundo a EMA (Enterprise Management Association), virtualizao a tcnica que mascara as caractersticas fsicas de um recurso computacional dos sistemas, aplicaes ou usurios que o utilizam [EMA, 2008]. Nesse contexto, encontramos o uso da virtualizao na implementao de desktops remotos, de discos virtuais, na computao em cluster e mesmo de dados como, por exemplo, atravs do uso de XML, SQL, JMS, entre outros. Em ambientes de rede, na forma como estamos acostumados a pensar, a tcnica de virtualizao encontra emprego na implantao de servios Internet e na prpria infra-estrutura de rede. Esses aspectos so detalhados a seguir.

Livro Texto dos Minicursos

187

4.3.1 Virtualizao de servios Internet Os servios Internet, em geral, foram, e ainda so, concebidos usando uma arquitetura multi-camadas (multi-tier system architecture). Nesse tipo de soluo, um servio dividido em vrias unidades funcionais e as mesmas so distribudas em vrias mquinas objetivando uma srie de benefcios, entre outros, balanceamento de carga, tolerncia a falhas, reaproveitamento de servidores e servios, etc. Um exemplo disso so os servidores web que acessam um banco de dados. O banco de dados no precisa estar na mesma mquina que o servidor web. Havendo um servidor de banco de dados nico, tanto o servidor web como um outro servio qualquer pode usufru-lo. Assim no se replica o servio de banco de dados e se evita que o servidor web atue tambm como um servidor de banco de dados. No entanto, essa abordagem trouxe como contra-partida a filosofia um servidor por servio. Rapidamente, os responsveis pelas reas de TI se deram conta do problema (e custo) em gerenciar diferentes mquinas fsicas, mesmo que tivessem o mesmo sistema operacional. Alm disso, h problemas relacionados com consumo de energia eltrica, refrigerao, espao fsico, segurana fsica, etc. Nesse contexto, a virtualizao surge como uma possibilidade de agregar os benefcios da componetizao de sofware com a reduo dos custos de manuteno de hardware e software. Assim, possvel manter a idia de um um servidor por servio sem ter um hardware especfico. Essa abordagem reforada pela lei de Zipf [Adamic, 2008] que pode ser sintetizada da seguinte forma: a freqncia de um evento proporcional a x, onde x um ranking de comparao de um evento a outro. Alguns estudos [Breslau, Cao, Fan, Philips e Shenker, 2008] mostraram que a freqncia de acesso a servidores web e outros servios Internet seguem uma distribuio Zipfian, o que, na prtica, se traduz pelo fato de que a maioria dos acessos a servios Internet para uma minoria deles. Portanto, conclui-se que uma minoria de servios est ativa enquanto a maioria est bloqueada a espera de requisies, o que, claramente, representa um desperdcio de recursos. Para exemplificar, imagine, entre outros, o uso dos servidores de autenticao, DHCP, impresso, arquivos, e-mail, web e DNS em sua rede corporativa. Ento por que no pensar na possibilidade de pr vrios servios em um nico servidor? Apesar de possvel, e muitas vezes, ser feito dessa forma, essa soluo traz inconvenientes. Primeiro, no h como fazer isso se os servios executam sobre sistemas operacionais diferentes. Segundo, quanto mais servios se tm em um mesmo sistema, mais se aumenta chance de um deles apresentar uma vulnerabilidade. Se essa vulnerabilidade for explorada, pode-se comprometer todo o conjunto de servios ao invs de apenas quele que apresenta o problema. Nesse contexto, a virtualizao surge como uma soluo interessante. possvel se instalar uma mquina virtual por servio, com todas essas mquinas virtuais executando sobre o mesmo hardware fsico. Assim se mantm os servios isolados entre si, se reduz o custo de manter computadores adicionais especficos e se evita a subutilizao do hardware. Essa abordagem de pr vrios servidores virtuais em uma mesma mquina fsica denominada de consolidao de servidores.

188

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.3.2 Virtualizao da infra-estrutura de rede Alm dos servios Internet e outros que constituem o que os usurios prcebem como sendo a rede, h a infra-estrutura fsica composta por equipamentos de interconexo e sua interligao. Uma forma de enxergar esses equipamentos v-los como mquinas com um sistema operacional especfico (runtime) dedicado a execuo de uma tarefa como roteamento, encaminhamento de pacotes (switches) e firewalls. Inclusive, muitos fabricantes desses equipamentos usam solues baseadas em linux embarcado. Portanto, por que no estender a idia de mquinas virtuais a esses equipamentos? A virtualizao de equipamentos de interconexo de redes inicia no suporte que as prprias mquinas virtuais oferecem para as interfaces de rede. As interfaces de redes virtuais se comportam exatamente como interfaces reais com endereos MAC distintos, suporte a unicast, multicast, broadcast e VLANs. Alm disso, cada mquina virtual tem seu prprio endereo IP. Portanto, uma mquina virtual se comporta, sob o ponto de vista de interconexo rede, como um sistema real, podendo ser interligado a switches e roteadores como se fossem mquinas fsicas distintas. Tipicamente, a placa de rede fsica programada para operar em modo promscuo e o driver de rede modificado para fazer a multiplexao e demultiplexao de seu uso pelas diferentes interfaces virtuais. comum se encontrar referncia ao par TUN/TAP. Eles nada mais so do que drivers de dispositivos virtuais disponveis para os sistemas operacionais atuais como o MacOs, o Windows 2000/XP/Vista, Linux e Unixes, em geral. Normalmente, eles so aparecem no contexto de redes privativas virtuais (VPN Virtual Private Network) ou em conjunto com o OpenSSH. Na realidade, TUN/TAP emulam, respectivamente, o comportamento da camada de rede e de enlace. O TAP permite a criao de bridges enquanto o TUN executa roteamento. Uma aplicao pode usar o driver TUN/TAP para enviar e receber dados. No envio, os dados so encaminhados para a pilha de protocolos de rede como se eles fossem oriundos de uma fonte externa. A recepo similar. Assim, com o uso dos drivers TUN/TAP, qualquer par de aplicaes podem enviar e receber dados como se eles estivem tratando com um disposito externo. Essa a base usada para prover uma comunicao em rede virtual. J os equipamentos de interconexo de redes, como switches e roteadores, no fazem parte naturalmente das mquinas virtuais, mas podem ser emulados da mesma forma. Atualmente existem duas formas de prover essa emulao. A primeira consiste em oferecer um produto completo que disponibilize, alm da mquina virtual, suporte para equipamentos de interconexo de rede virtuais. Essa a soluo adotada pela VMware (www.vmware.com), pela Microsoft (www.microsoft.com) e pela Citrix (www.citrix.com) em seus produtos destinados a clientes coorporativos. A segunda prover mquinas virtuais dedicadas a essa finalidade, como , por exemplo, o caso da Vyatta (www.vyatta.com) que oferece um produto compatvel com os hypervisors mais comuns no mercado. A soluo da Vyatta agrega uma camada de software suplementar que simula equipamentos de interconexo de redes. Na realidade, h uma terceira possibilidade que oferecer hardware especfico com suporte a virtualizao de equipamentos de interconexo, como o caso de alguns produtos da linha Catalyst da Cisco (www.cisco.com).

Livro Texto dos Minicursos

189

Portanto, possvel construir uma infra-estrutura de rede completa totalmente virtualizada. A arquitetura exata e as opes de projeto, como em uma rede real, dependem, caso a caso, em funo de requisitos da organizao. O importante a salientar que existe tecnologia para tal. 4.4. Ferramentas de virtualizao A virtualizao tem se tornado a grande revoluo da rea de TI nesses ltimos anos, basta ver o crescimento do volume de investimento das empresas nesse sentido e o crescimento das empresas que oferecem solues de virtualizao. Atualmente, existem disponveis vrias solues de virtualizao. Para ter uma idia, consulte a wikipedia ou o google fazendo uma busca por virtualizaition. Basicamente, existem solues comerciais, gratuitas, em software livre, integradas a sistemas operacionais, etc. Seria invivel, e fora do escopo deste trabalho, tecer comentrios sobre todas elas, por isso optou-se por apresentar aquelas que esto atualmente dominando o mercado da virtualizao: VMware e o Xen. Alm delas, h a resposta da Microsoft ao movimento mundial da virtualizao, que dado o parque de mquinas instaladas com esse sistema tambm foi escolhida para uma discusso mais detalhada. 4.4.1 VMware O VMware [VMware, 2008c] na realidade uma infra-estrutura de virtualizao completa com produtos abrangendo desde desktops a data centers organizados em trs categorias: gesto e automatizao, infra-estrutura virtual e virtualizao de plataformas. Cada categoria possui um conjunto de produtos especficos. Os produtos de gesto e automatizao tm por objetivo principal, como seu prprio nome induz, a permitir de uma forma automatizada e centralizada a gerncia de todos os recursos da infraestrutura virtual permitindo a monitorao do sistema, auxiliando na converso de sistemas fsicos em virtuais, na recuperao de desastres, entre outros. Os produtos de infra-estrutura virtual auxiliam a monitorao e alocao de recursos entre as mquinas virtuais de forma a atender requisitos e regras de negcios. Eles fornecem solues para alta-disponibilidade, backup, migrao de mquinas virtuais e atualizao de verses de softwares. Por fim, os produtos de virtualizao de plataformas, ou seja, aqueles destinados a criar mquinas virtuais como apresentado na seo 4.2.1. Essa categoria composta por oito produtos:

VMware ESX Server 3: a base para a criao de datacenters virtuais. O ESX server um hypervisor que virtualiza os recursos de hardware do tipo processador, memria, armazenamento e rede. Dessa forma, o ESX Server permite que um servidor fsico seja particionado em vrias mquinas virtuais e que cada uma seja vista como uma mquina fsica em uma infra-estrutura de rede convencional. VMware ESX Server 3i: possui as mesmas caractersticas e funcionalidades descritas anteriormente para o ESX Server 3. A diferena consiste na sua arquitetura interna e na forma como alguns procedimentos de gerenciamento so executados.

190

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

VMware Virtual SMP: permite que uma nica mquina virtual empregue mais de um processador fsico simultaneamente. Na atual verso, uma mquina virtual pode empregar at quatro processadores fsicos. VMware VMFS: um sistema de arquivos que permite que vrias mquinas virtuais acessem concorrentemente, para leitura e escrita, um mesmo meio de armazenamento. Alm disso, oferece uma srie de facilidades como adicionar e remover dinamicamente ESX servers da estrutura de um sistema de arquivos, adaptar tamanho de bloco para volume e para arquivos e recuperao de falhas. VMware Server: a verso gratuita dos produtos ESX Server. Seu objetivo essencial permitir que usurios testem o produto antes de adquiri-lo. Assim como as verses ESX, o VMware Server oferece a virtualizao de processador, memria, armazenamento e infra-estrutura de rede que so configurados atravs de ferramenta prpria no disponvel na verso gratuita. Para contornar o problema de configurao, ou seja, a criao do ambiente hspede, a VMware oferece uma srie de imagens de ambientes predefinidas em seu site. Essas imagens so denominadas de appliances e contemplam os servios de rede mais comuns (web, arquivos, impresso, DNS, etc). VMware Workstation: o ambiente que permite a criao de mquinas virtuais sobre o hypervisor. Isso significa que possvel carregar um sistema operacional qualquer nessa mquina virtual e executar as suas aplicaes. A configurao das mquinas virtuais para um determinado sistema operacional feita atravs de ferramenta especfica que parte integrante desse produto. VMware Fusion: a soluo VMware Workstation equivalente para o sistema operacional MacOS X. VMware Player: a verso gratuita do produto VMware Workstation. Assim como ocorria na verso server, o objetivo permitir que usurios testem o uso da virtualizao e no possvel definir (criar) o sistema hspede na mquina virtual a partir do zero. Novamente, em seu site, a VMware distribui uma srie de appliances (imagens de sistemas hspedes) que contemplam diferentes distribuies de linux e Windows Server 2003.

A figura 4.7 mostra de forma esquemtica a aplicao desses produtos na definio de uma infra-estrutura virtual completa (mquinas e rede). Os dois componentes essenciais so o produto ESX server que oferece a camada necessria para a virtualizao dos recursos de hardware (hypervisor) e as mquinas virtuais definidas sobre ele atravs do produto VMware workstation. Cabe ressaltar que a verso ESX Server oferece switches virtuais (com suporte a VLANs) para interligar as mquinas virtuais.

Livro Texto dos Minicursos

191

Figura 4.7 infra-estrutura virtual VMware

Para concluir a apresentao do VMware, alguns comentrios finais sobre o funcionamento do VMware Player e do VMware Workstation por serem bastante populares para as plataformas Intel 32-bits. A abordagem escolhida pelo VMware de executar como uma aplicao do sistema hospedeiro, ou seja, funcionam tambm como mquina virtual de processo. Dessa forma, o suporte para os diferentes dispositivos de entrada e sada fornecido pelo prprio sistema operacional hspede. Essa soluo denominada de Hosted Virtual Machine Architecture (HVMA). Na realidade, por questes de desempenho, o VMware no executa completamente em espao de usurio, pois instalado um driver de dispositivo especfico, (VMDriver) que permite que as mquinas virtuais acessem os drivers de dispositivo do sistema hspede. O VMDriver pe a placa de rede em modo promscuo e cria uma bridge ethernet virtual que recebe todos os quadros ethernet e os reencaminha para o sistema hspede ou para a mquina virtual especificada. Essa implementao tambm oferece NAT (Network Address Translation), de tal forma que cada interface virtual tenha o seu prprio endereo IP. 4.4.2 Xen O Xen [XenSource, 2008b] um monitor de mquina virtual (hypervisor ou VMM), em software livre, licenciado nos termos da GNU General Public Licence (GPL), para arquiteturas x86, que permite vrios sistemas operacionais hspedes serem executados em um mesmo sistema hospedeiro. O Xen originrio de um projeto de pesquisa da universidade de Cambridge, que resultou em um empresa, a XenSource inc, adquirida pela Citrix System em outubro 2007. O Xen implementa a virtualizao de uma forma um pouco diferente daquela apresentada na seo 4.2. Os dois principais conceitos do Xen so domnios e hypervisor. Os domnios so as mquinas virtuais do Xen e so de dois tipos: privilegiada (domnio 0) ou no-privilegiada (domnio U). O hypervisor tem por funo

192

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

controlar os recursos de comunicao, de memria e de processamento das mquinas virtuais, e no possui drivers de dispositivos. O hypervisor Xen, considerando suas caractersticas, no capaz de suportar nenhum tipo de interao com sistemas hspedes. Por isso, necessrio que exista um sistema inicial para ser invocado pelo hypervisor. Esse sistema inicial o domnio 0. As outras mquinas virtuais s podem ser executadas depois que ele for iniciado. As mquinas virtuais de domnio U so criadas, iniciadas e terminadas atravs do domnio 0. O domnio 0 uma mquina virtual nica que executa um ncleo linux modificado e que possu privilgios especiais para acessar os recursos fsicos de entrada e sada e interagir com as demais mquinas virtuais (domnios U). O domnio 0, por ser um sistema operacional modificado, possui os drivers de dispositivos da mquina fsica e dois drivers especiais para tratar as requisies de acesso a rede e ao disco efetuados pelas mquinas virtuais dos domnios U. A figura 4.8 mostra o relacionamento entre o hypervisor, o domnio 0 e as demais mquinas virtuais.

Figura 4.8 Componentes do Xen: hypervisor e domnios

A primeira verso do Xen de outubro de 2003 e, originalmente, o hypervisor foi implementado usando a tcnica da para-virtualizao, ou seja, era necessrio modificar os sistemas operacionais hspedes (domnios U) para torn-los conscientes do hypervisor. Essa deciso se justificava por questes de desempenho, mas limitou o emprego do Xen aos sistemas Unix, principalmente aqueles com filosofia de cdigo aberto. A partir da verso 3, o Xen passou a oferecer virtualizao completa, ou seja, permite o uso de sistemas operacionais no modificados, como os da famlia Microsoft Windows. Entretanto, isso s possvel se o processador oferecer suporte de hardware (Intel VT ou AMD-V).

Livro Texto dos Minicursos

193

Para oferecer suporte tanto para a para-virtualizao como para a virtualizao completa, o Xen distingue os domnios U entre para-virtualizados (domnios U-PV) e virtualizados (domnios U-HVM, de Hosted Virtual Machines). Os domnios U-PV tm conscincia de que no tem acesso direto ao hardware e reconhecem a existncia de outras mquinas virtuais. Os domnios U-HVM no tm essa conscincia, nem reconhecem a existncia de outras mquinas virtuais. Na prtica, isso se traduz no fato de que os domnios U-PV possuem drivers especficos para acesso a rede e a disco para interagirem com as suas contra-partidas no domnio 0. J as mquinas dos domnios UHVM no possuem esses drivers (no foram modificados) e iniciam como um sistema convencional procurando executar a BIOS. O Xen virtual firmware simula a existncia da BIOS executando todos os procedimentos esperados durante o boot normal de um ambiente PC compatvel. O compartilhamento do disco e as requisies de rede de um domnio U-HVM so feitos atravs de um daemon Qemu vinculado a cada instncia UHMV (O QEMU um emulador em software de cdigo livre). O hardware disponvel para as mquinas virtuais do domnio U-HVM so aquelas oferecidas pelo QEMU. 4.4.3 Virtualizao e Microsoft Atenta ao movimento da virtualizao, a Microsoft oferece uma gama de produtos para esse tipo de tecnologia. Esses produtos exploram o conceito da virtualizao, na sua forma mais ampla, para oferecer solues que sejam integradas e apropriadas infraestrutura de TI que se encontra hoje em dia. Basicamente:

Virtualizao de aplicaes: tambm denominada de SoftGrid, cujo objetivo fornecer aplicaes por demanda. Isso implica que se um determinado desktop necessita executar uma aplicao e a mesma no est disponvel nele, o sistema executar automaticamente a busca, instalao e configurao da aplicao. Virtualizao de apresentao: essa ferramenta separa e isola as tarefas de tratamento grfico (visualizao) e de E/S, permitindo que uma determinada aplicao seja executada em uma mquina, mas utilize recursos grficos e de E/S de outra. Gerenciamento da virtualizao: System Center Virtual Machine Manager um ambiente de gerenciamento que facilita as tarefas de configurao e de monitorao de um ambiente virtual. atravs dele que se realiza a administrao das contas de usurios e seus privilgios. Virtualizao de desktops (Virtual PC): permite a criao de mquinas virtuais em um sistema hospedeiro Microsoft Windows, cada uma com seu prprio sistema operacional. Basicamente destina-se quelas aplicaes onde necessrio executar software legado, criar ambientes de testes, treinamento, etc. Virtualizao de servidores: a soluo que permite criar mquinas virtuais em servidores. Nessas mquinas, questes ligadas segurana, tolerncia a falhas, confiabilidade, disponibilidade se tornam importantes. Portanto, a soluo de virtualizao de servidores, denominada de Hyper-V (ou viridian) foi projetada para enderear esses requisitos.

194

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

Desses produtos, dois tm especial interesse para o escopo deste trabalho, o virtual PC 2007 e o Windows Server 2008 Hyper-V, que sero comentados a seguir. O Virtual PC 2007 uma mquina virtual para famlia Windows que pode ser configurada para executar qualquer outro sistema operacional. Segundo a Microsoft, o principal objetivo do Virtual PC o desenvolvimento e teste de software para mltiplas plataformas. Dentro desse princpio, o Virtual PC oferece mecanismos para interconectar logicamente as diferentes mquinas virtuais. Cada mquina virtual tem seu prprio endereo MAC e endereo IP. Alm disso, o Virtual PC oferece um servidor de DHCP, um servidor NAT e switches virtuais. Dessa forma, possvel construir cenrios de rede usando mquinas virtuais. O virtual PC 2007 disponvel para download, assim como um white paper que ensina a configurar as mquinas virtuais e um ambiente de rede. Um ponto interessante a comentar em relao gratuidade do Virtual PC que, na FAQ do Virtual PC, a Microsoft alega que o que tem valor agregado no a mquina virtual em si, mas sim os ambientes de gerenciamento. A Microsoft j vinha atuando no segmento de virtualizao de servidores com o Microsoft Virtual Server 2005. A proposta do Windows 2008 Server Hyper-V ser a evoluo desse produto respondendo a novas demandas e explorando eficientemente as arquiteturas de 64 bits, processadores multicore e meios de armazenamento.O Windows 2008 o componente-chave da estratgia da Microsoft para atuar no segmento da virtualizao, no que ela denomina de datacenter-to-destktop virtualization strategy. Dentro dessa estratgia a Microsoft oferece todo um ambiente integrado de gerenciamento da virtualizao (monitorao, automatizao de procedimentos, migrao, recuperao de desastres etc). Entre as principais vantagens do Windows 2008 Server Hyper-V esto vrias ferramentas para automatizar o processo de virtualizao. Uma delas o Manager Physical-to-virtual (P2V) que auxilia na converso de servidores fsicos para virtuais. H tambm o Volume Shadow Copy Services que realiza automaticamente procedimentos de backup e de disponibilidade de forma que o sistema, como um todo, opere de forma homognea independente de falhas e de picos de carga. Isso feito por tcnicas de migrao de mquinas virtuais. Um ponto que recebeu especial ateno foi a segurana. Para isso, o Hyper-V usa mecanismos em hardware existentes nos atuais processadores, como o execute-disable-bit que reduz o sucesso de ataque de vrios tipos de vrus e vermes. O Hyper-V refora o aspecto de segurana atravs de um restrito controle de regras de permisses integrado com o Active Directory e com polticas de grupo. Alm disso, o Hyper-V permite que as mquinas virtuais usem, sem restrio alguma, as tcnicas e ferramentas de segurana tradicionalmente empregadas nas mquinas fsicas (firewalls, quarentena, anti-virus, entre outros).

Livro Texto dos Minicursos

195

4.5. Casos de uso


A virtualizao traz benefcios em uma srie de situaes. Seu emprego clssico na consolidao de servidores, ou seja, executar vrios servios em uma mesma mquina fsica, mas cada um em uma mquina virtual separada. Alm de permitir que o hardware fsico seja melhor aproveitado, isso reduz investimento na aquisio e na manuteno de uma infra-estrutura fsica de rede (refrigerao, cabeamento, espao fsico, consumo de energia etc). Uma vantagem importante o fato de que uma mquina virtual pode ser facilmente migrada de uma mquina fsica a outra, o que possibilita uma rpida recuperao em casos de falhas e agiliza a manuteno de parques de mquinas. Ainda, como cada mquina virtual um sistema totalmente isolado dos demais, a falha, ou comprometimento, de um servio no afeta os demais. O desenvolvimento de software uma outra situao em que a virtualizao traz vantagens. possvel testar um produto em desenvolvimento sobre vrios sistemas operacionais, e suas distintas verses, sem a necessidade de ter uma mquina fsica instalada com cada sistema operacional. Outro uso interessante da virtualizao a possibilidade de construir ambientes de testes, onde se pode instalar, configurar e avaliar pacotes de software antes de p-lo em produo, isso sem comprometer um sistema computacional fsico. Essa mesma caracterstica permite a construo de honeypots. Nesse caso, possvel criar um ambiente virtual completo, com vrios servidores, cada um com um sistema operacional distinto e/ou servios, e assim monitorar atividades de tentativas de invaso sem, novamente, afetar um sistema fsico. Na prtica, existem muitas aplicaes onde a virtualizao pode ser interessante, mas, tipicamente, elas se encaixam nas situaes descritas anteriormente. Nesta seo optou-se por elaborar um pouco mais essas trs situaes: virtualizao de servidores, virtualizao de desktops e uso de honeypots. 4.5.1 Virtualizao de servidores De acordo com uma pesquisa realizada pela Network World (www.networkworld.com), a virtualizao de servidores motivada, em ordem de importncia, pelas seguintes razes : aumentar a taxa de utilizao de servidores, reduzir os custos operacionais de datacenters, melhorar os procedimentos de recuperao de desastres e de backup, criar ambientes mais flexveis para desenvolvimento e teste de software e reduzir custos de administrao de TI. O princpio bsico o melhor aproveitamento de recursos: invs de haver n servidores com percentual de utilizao de x possvel ter um nico servidor com um percentual de uso de aproximadamente n.x (n.x < 100). Atualmente, uma organizao corporativa, por menor que seja, apresenta uma srie de servios Internet considerados essenciais, como servidores web, e-mail, etc. Muitas dessas organizaes, por questes que variam desde investimentos segurana, optam por hospedar seus servidores em data centers. Porm, isso no invlida dois pontos importantes. Primeiro, o problema de manter servidores, que passa a ser dos data centers. Segundo, apesar de terceirizar alguns servios Internet, comum manter na rede local da organizao alguns servios como DHCP, impresso, autenticao,

196

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

arquivos e aqueles de aplicaes relacionados com o negcio da empresa (softwares de ERP, por exemplo). Inicialmente, vamos discutir o caso da pequena e mdia organizao e seus servidores. Nesse contexto, comum os servidores serem mquinas ultrapassadas e intocveis. Afinal, se os servios executados no excedem a capacidade dessas mquinas, por que investir em equipamentos novos? Alm disso, atualizar mquinas implica em mexer em sistemas que, bem ou mal, esto funcionando. Entretanto, essa situao traz um risco inerente: um hardware est sujeito a falhas, principalmente discos, e, muitas vezes, para equipamentos ultrapassados, os contratos de manuteno no so mais vlidos e as peas de reposio simplesmente inexistem. uma questo de tempo ter um problema (grave) de indisponibilidade de servios. Para esses casos, uma soluo possvel adquirir apenas um nico equipamento novo e instalar nele tantas mquinas virtuais quanto servios houver. claro que se deve dimensionar a capacidade total de processamento desse novo servidor em relao carga de servios que ele receber. A vantagem trocar um parque de mquinas ultrapassadas e, eventualmente, subutilizadas, por uma mquina mais nova e bem utilizada. Os servios que executam nas mquinas mais antigas podem ser migrados, um a um, para uma mquina virtual na nova mquina, facilitando o processo de transio. Dependendo da soluo de virtualizao escolhida, h ferramentas que auxiliam nessa migrao. A notar, ainda, que cada mquina virtual tem seu prprio sistema operacional, portanto, possveis pr no novo equipamento os servios, ou aplicaes, que executam em diferentes sistemas operacionais como, por exemplo, Microsoft Windows e Linux. Futuramente, se for necessrio uma nova atualizao de hardware, basta parar as mquinas virtuais, fazer uma imagem delas e as inicializar novamente, sem necessitar reinstalar e reconfigurar softwares especficos. Para o caso de data center, as vantagens discutidas anteriormente tomam uma envergadura maior. Em um data center, pela sua prpria natureza, comum haver diferentes sistemas operacionais e, eventualmente, mais de uma verso de um mesmo sistema operacional devido a necessidades especificas de produtos que seus clientes executam. Sem virtualizao, cada sistema operacional (e verso) precisaria de um hardware dedicado. Isso representa custo de instalao, manuteno, refrigerao, energia e suporte tcnico para administr-los. J com a virtualizao, um nico hardware, dimensionado adequadamente, pode manter vrios sistemas operacionais de forma mais econmica. Os procedimentos de migrao e de tolerncia a falhas so importantes em data center. A migrao pode ser usada no momento de atualizar parques de mquinas movendo um servio (cliente) para outro enquanto a troca feita. A migrao ainda til como mecanismo de balanceamento de carga, movendo servios de uma mquina a outra at homogeneizar a carga do sistema. Isso evita que certos sistemas fiquem sobrecarregados enquanto outros esto ociosos. Novamente, a noo de imagem de uma mquina virtual auxilia nessas tarefas. Um ponto a ressaltar que no caso de data center, a virtualizaao no a nica alternativa. Muitos fabricantes oferecem linhas de servidores de alto-desempenho que

Livro Texto dos Minicursos

197

oferecem vantagens similares s da virtualizao. Por exemplo, existe disponvel no mercado mquinas NUMA de at 72 processadores que podem ser particionados via hardware em at 18 domnios de 4 processadores. Assim, uma nica mquina fsica pode ser configurada para operar como se fosse 18 mquinas fsicas distintas, cada uma com seu prprio sistema operacional. H tambm a opo de servidores blade. Nesses casos, a queda de um n (blade) pode ser sanada com a instalao fsica de outro blade. Os sistemas de gerenciamento de servidores blade oferecem software de gerenciamento para facilitar o backup, instalao e reconfigurao de blades. Decidir qual soluo funo do gerente de TI ponderando vantagens e desvantagens em funo do investimento e retorno esperados. 4.5.2 Virtualizao de desktops A consolidao de servidores o uso clssico de virtualizao, mas ela tambm traz uma srie de benefcios quando empregada em desktops. Inicialmente, a virtualizao oferece uma forma simples para testar novas configuraes ou executar programas que foram feitos para sistemas operacionais diferentes do nativo. Dessa forma, um usurio que deseja testar um software, ou abrir um programa, que no foi desenvolvido para seu sistema operacional pode lanar mo desse recurso. H uma srie de ferramentas para o uso de virtualizao em desktops, onde entre elas, se destacam os produtos da VMmare e o Virtual PC por serem de fcil instalao e uso. Talvez a situao recm descrita no parea um caso comum, mas h um tipo de usurio que pode se beneficiar de executar programas hspedes em diferentes sistemas operacionais hospedeiros: projetistas de software. As mquinas virtuais permitem isso de maneira bastante simples, o que interessante em fases de desenvolvimento e depurao de software. Um outro ponto, vinculado a depurao de sistemas, a facilidade que as mquinas virtuais tm de quando finalizadas registrar uma espcie de instantneo (snapshot) de seu estado. Isso permite que uma anlise seja parada e retomada mais tarde a partir do mesmo ponto. Em organizaes de um determinado porte comum o tempo de processamento dos desktops ser subutilizado. Por exemplo, o horrio comercial de cerca de 9 horas dirias, ou seja, 45 horas por semana, mas uma semana tem um total de 168 horas (24 x 7), portanto, a taxa de utilizao dos equipamentos de aproximadamente 27%. Uma forma de recuperar esse processamento associar ao descanso de tela uma mquina virtual, dessa forma, quando o descanso de tela ativado ele pode registrar uma mquina virtual em um servidor central e assim formar um cluster (agregado) de computadores virtuais. Esse uso derivado de programas peer-to-peer, como seti@home. Existem vrios projetos desenvolvidos nesse sentido. Normalmente, a tcnica emprega um horrio a partir do qual o registro feito e validado, por exemplo, s 20 horas, quando se espera no haver mais nenhum colaborador na organizao, e, no incio da manh (6 horas) feito um salvamento do estado da computao (checkpoint) da mquina virtual e, em seguida, a mquina liberada para seu uso convencional. Outra utilizao interessante da virtualizao em laboratrios de treinamento e de ensino como aqueles encontrados em universidades. Para algumas disciplinas

198

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

necessrio ter ambientes com diferentes sistemas operacionais. Apesar de ser possvel, e comum, se configurar um PC compatvel com mltiplos boots, essa soluo nem sempre a mais adequada. Primeiro, dependendo dos sistemas operacionais, questes prticas afetam a ordem de instalao e de configurao dos diversos sistemas. Segundo, e talvez mais importante, comum haver cursos e treinamentos onde o participante necessita ter acessos administrativos. Nesses casos, mesmo mudando as senhas de administrador (root) a cada sesso, h a possibilidade de se corromper o sistema operacional e instalar rootkits, backdoors, sniffers de teclado, e todo um conjunto de malwares, alm de ser possvel, por exemplo, montar a partio dedicada a um outro sistema operacional e provocar danos. As mquinas virtuais de processo so as mais indicadas para essas aplicaes. O participante de uma disciplina pode usar um ambiente virtual para fazer todos os experimentos e, por rodar de forma confinada em um processo, suas aes como administrador no afetam o sistema nativo. Ao finalizar o processo (mquina virtual) no h nenhum vestgio permanente do que foi feito. Um detalhe, havendo necessidade de preservar arquivos de uma aula a outra, as mquinas virtuais oferecem formas de comunicao (ftp, telnet, scp etc) e armazenamento (usb) que possibilitam a cpia e o salvamento de arquivos. Um comentrio para concluir esta seo. importante lembrar que as mquinas virtuais so imagens que so facilmente instaladas, o que permite restaurar uma mquina para um sistema padro de forma bastante simples e rpida. Para se ter uma ordem de grandeza, nos atuais PC, o tempo de inicializao de uma mquina virtual VMware, com um sistema hspede Linux, em ambientes hospedeiros Microsoft Windows, de cerca de 70 segundos. 4.5.3 Honeypots De uma forma simplista, honeypot consiste em se colocar intencionalmente mquinas na Internet de forma que elas sejam atacadas por crackers. O intuito monitorar as atividades desses, se precaver de ataques e tornar mais fcil a investigao de incidncias de ataques e sua recuperao. O problema com honeypots que dependendo do tipo de ao sofrida pode haver o comprometimento da mquina (sistema operacional). Nesses casos, a soluo passa por reinstalar o sistema. Outra caracterstica do uso de honeypots que eles normalmente so compostos por mquinas destinadas a essa finalidade que so postas em segmentos de redes especficos, o que aumenta os investimentos tanto em nvel de hardware como de suporte de TI. A virtualizao surge como uma opo interessante para se implementar honeypots por vrias razes. Primeira, o comprometimento de um sistema operacional resolvido apenas com a remoo da mquina virtual e a instanciao de uma nova. Segunda, em um mesmo hardware fsico possvel se instalar vrias mquinas virtuais, cada uma com um sistema operacional diferente, o que permite aumentar o nmero de mquinas iscas. Por fim, com o uso de softwares de emulao de equipamentos de rede se pode definir uma infra-estrutura de rede virtual, com firewalls, proxies, roteadores etc, em uma nica mquina. Note que isso no imprescindvel, pois as ferramentas de virtualizao oferecem normalmente suporte a interfaces de redes

Livro Texto dos Minicursos

199

virtuais, com endereos MAC e IP distintos, e a VLANs, o que permite interconectar as mquinas virtuais em equipamentos de interconexo fsicos sem maiores problemas. Uma outra situao, associada com a idia de honeypot, a possibilidade de se executar softwares de origens no confiveis em um ambiente onde os prejuzos so minimizados. Isso interessante para abrir arquivos attachment suspeitos ou verificar malwares. Vale a pena salientar que as ferramentas tradicionais existentes para honeypots podem ser utilizadas sem restries alguma em ambientes virtualizados, pois elas so aplicaes para um sistema operacional. Uma boa referncia para ferramentas de honeypot www.honeyclient.org.

4.6. Planejando solues com virtualizao


Na seo anterior foram apresentadas situaes onde a virtualizao pode ser empregada para trazer benefcios, porm o sucesso de sua implantao depende de uma anlise mais criteriosa quanto ao seu emprego. importante ter conscincia que a virtualizao uma deciso sobre a arquitetura da infra-estrutura de TI e no apenas mais um projeto de implantao de um novo sistema operacional ou de um aplicativo. Portanto, a adoo da virtualizao deve ser vista como um projeto de longo termo e no como modismo passageiro, pois, para obter o melhor resultado, necessrio avaliar e investir em uma boa soluo e na capacitao da equipe de TI. Alm disso, importante salientar que com o tipo de mudana que a virtualizao traz possvel se encontrar resistncias culturais e desconfianas quanto a sua implantao. O objetivo desta seo levantar uma srie de aspectos para auxiliar e orientar na implantao de solues baseadas em virtualizao. Inicialmente, no existe um manual de Como implementar virtualizao em minha empresa, mas muitos procedimentos gerenciais usuais podem ser aplicados com sucesso. Uma analogia interessante a da segurana da informao luz da norma ISO 17799. Os vrios livros, manuais e artigos que tratam da segurana da informao fazem referncia a dois pontos fundamentais: apoio e comprometimento dos nveis gerenciais e pensar a soluo como um todo. Depois vm, mas no menos importantes, uma srie de aspectos como identificao de ativos, proprietrios de dados, anlise de riscos etc. Todos esses pontos so vlidos para a virtualizao. A virtualizao um projeto que implica em uma mudana de paradigma, e como tal, importante contar com o apoio de nveis hierrquicos superiores. Seu emprego modificar a forma pela qual os equipamentos sero comprados e como novos sistemas sero instalados. Uma recomendao comum planejar a virtualizao como um todo, mas implant-la passo a passo. Isso permite que as pessoas adquiram confiana na soluo e possibilita que se tenha, em curto prazo (cerca de seis meses), um ROI (Returns on Investiment) mensurvel. Uma forma de fazer isso iniciar consolidando servidores que no sejam fundamentais para o negcio. O fato de demonstrar que servidores como, por exemplo, DHCP, DNS, impresso, executam em uma nica mquina fsica, sem comprometer desempenho e segurana, e que, eventualmente, cada um executa um sistema operacional diferente algo que se torna

200

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

um carto de visita para a soluo. Esse carto de visitas pode auxiliar na conquista dos nveis hierrquicos superiores. Mas, ao menos existe um road map para a implantao da virtualizao? A resposta sim e, novamente, nada mais do que uma adaptao de tcnicas j conhecidas. possvel identificar quatro fases: avaliao do sistema; planejamento e projeto; execuo; e, gerenciamento e manuteno. A fase de avaliao do sistema consiste em um inventrio de todos os sistemas, hardware e software, existentes na infra-estrutura a ser virtualizada. O objetivo descobrir todos os servios, os equipamentos e sistemas operacionais empregadosno dia-a-dia. importante identificar a percepo que as pessoas tm da infra-estrutura de rede, a carga de trabalho dos servidores e o desempenho de cada um deles. A viso que os usurios tm da rede no deve ser subestimada, pois so eles os clientes finais, os proprietrios dos dados e os que executam tarefas dirias usando a infra-estrutura de rede. A melhor forma de se obter essa viso atravs de entrevistas com os responsveis das diversas reas. O objetivo entender o fluxo de informao e procedimentos feitos quotidianamente e como a virtualizao pode afet-los. A seguir, preciso levantar a taxa de utilizao dos recursos fsicos como, processador, memria RAM, armazenamento e trfego de rede. Isso permitir dimensionar equipamentos e dividir adequadamente servios de forma a utilizar eficazmente os recursos e a manter um equilbrio de carga. A etapa de planejamento e projeto consiste em mapear a infra-estrutura fsica em uma virtual com base nas informaes levantados na avaliao do sistema. Fazem parte do planejamento e projeto identificar qual a melhor tecnologia de virtualizao e o produto a ser empregado para atingir os objetivos propostos. Entre outros, so critrios a serem adotados: soluo em software livre ou proprietrio? Qual a sua robustez? Avaliao de continuidade da empresa ou da comunidade que desenvolve a desenvolve? Suporte tcnico? Atualizao? Curva de aprendizado? Ferramentas de gerenciamento? Na seqncia, necessrio dividir os servios em mquinas considerando quanto cada um deles consome de recursos de processamento e de rede. importante definir planos de contingncia e a sistematizao de procedimentos como configuraes padres, backups de dados e das mquinas virtuais, registro de incidentes de segurana, atualizaes dos sistemas operacionais hspedes e hospedeiros, assim como da prpria soluo de virtualizao. Como toda etapa de planejamento, aqui deve ser estabelecido um cronograma fsico de tarefas. A terceira etapa consiste na execuo. A recomendao bvia implementar um servio por vez iniciando pelos menos sensveis. Vrias das solues de virtualizao possuem assistentes (wizards) denominadas de P2V (physical to Virtual) para auxiliar nessa etapa. Para cada mquina virtual (servio) instalado interessante fazer uma avaliao de seu comportamento e desempenho comparando-o com aquele apresentando na mquina fsica. Os dados obtidos nessa nova avaliao podem, eventualmente, alterar o projeto inicial. Esse ciclo de refinamento normal.

Livro Texto dos Minicursos

201

Por fim, a ltima etapa, gerenciamento e manuteno. Uma vez implantada a infra-estrutura virtual necessrio garantir seu funcionamento de forma adequada. Para tal, o sistema como um todo deve ser monitorado, atualizado, sofrer procedimentos de salvamento e restaurao de cpias de segurana. O funcionamento em produo do sistema, sem dvida, trar lies importantes que realimentaro atividades futuras como planejamento de novas capacidades, planos de investimento, treinamento, entre outros. De forma mais pragmtica, que tipos de aspectos e recomendaes gerais se deve cuidar quando da implantao da virtualizao? Bom, cada caso um caso, mas h alguns pontos comuns que podem ser comentados:

Ao consolidar os servidores a tendncia deix-los em uma mesma rede j que esto em uma mesma mquina fsica. Isso considerado um erro. Mesmo que as mquinas virtuais estejam em uma mesma mquina fsica recomendvel manter a segmentao da rede criando diferentes redes de permetro. O prprio hypervisor pode ser um problema para a segurana e convm lembrar disso ao colocar fisicamente a mquina na rede. A consolidao de servidores no a nica forma de virtualizao. Os desktops podem usufruir dessa tecnologia para desenvolvimento e teste de software, instalao de laboratrios de treinamentos, teste de software de terceiros, definio de clusters virtuais, etc. Alm disso, existem produtos de interconexo de rede que oferecem switches virtuais, ou seja, a rede em si pode usufruir da virtualizao. Existem gamas de servidores que foram projetados visando um alto desempenho de processamento, com um armazenamento de grande quantidade de dados e com acesso a dados em alta vazo. Por exemplo, h vrias opes de servidores empregando tecnologia fiber channel interconectar processadores com mdulos de E/S. Lembrar que virtualizar nem sempre a melhor (ou nica) soluo. Adquirir novos equipamentos tendo em vista a virtualizao. Isso implica em verificar o uso de tecnologias de processadores como IVT (Intel) ou AMD-V (AMD) para obter um melhor desempenho e segurana dos hypervisors. Se a infra-estrutura de rede tambm for virtualizada, no esquecer de incluir sua arquitetura e seus parmetros de configurao no backup. Estabelecer planos de contingncia para o caso de recuperao de desastres. Isso inclui listar os vrios sistemas operacionais envolvidos e as aplicaes fundamentais para o negcio. No negligenciar procedimentos de backups e testes regulares de seu contedo. Afinal um m backup mal feito, ou corrompido, pior do que no ter, pois passa a falsa noo de segurana.

Por fim, um ponto muito importante. Como a virtualizao permite que em uma mesma mquina fsica executem diferentes sistemas operacionais necessrio que equipes que esto evangelizadas em diferentes sistemas operacionais sejam integradas. Como sempre, o fator humano no deve ser negligenciado sob pena de se comprometer soluo como um todo. importante investir em formao, integrao e quebrar preconceitos que existem entre defensores de um e outro sistema operacional.

202

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

4.7. Sistemas virtuais, problemas reais


At o presente momento a virtualizao foi colocada como uma panacia para vrios problemas. Entretanto, existem aspectos a serem avaliados antes de se optar pela virtualizao. Basicamente, so trs pontos a serem melhor elaborados: segurana, gerenciamento e desempenho. Inicialmente, o hypervisor uma camada de software e, como tal, est sujeito a vulnerabilidades. Segundo Neil MacDonald, especialista de segurana da Gartner, hoje em dia, as mquinas virtuais so menos seguras que as mquinas fsicas justamente por causa do hypervisor. Mas h muita controvrsia nesse campo. Alm disso, h a questo da disponibilidade de servios que ocorre com o comprometimento, logicamente ou fisicamente, da mquina fsica que hospeda vrios servidores virtuais, j que todos seriam afetados simultaneamente. verdade que as solues corporativas, como o ESX Server e o Citrix Enterprise, permitem toda uma monitorao dos sistemas, replicao, migrao e backup dos sistemas virtualizados, que diminuem o tempo de recuperao em caso de problemas, mas algo a ser avaliado. Um outro argumento freqentemente empregado em favor da disponibilidade que um pool de mquinas virtuais similar a um rack com vrios servidores fsicos, com a vantagem de ter uma flexibilidade e uma portabilidade maior que estes ltimos. O segundo aspecto diz respeito ao gerenciamento das mquinas virtuais. Os ambientes virtuais necessitam ser instanciados, monitorados, configurados, mantidos e salvos. Novamente, existem produtos, como os apresentados na seo 4.4, que integram essas solues. A Network World (www.networkworld.com), no ms de setembro de 2007, realizou uma avaliao das plataformas de gerenciamento oferecidas pela VMware, Microsoft e XenSource (Citrix) e concluiu que a plataforma VMware a mais flexvel e de fcil utilizao, porm ainda h espao para melhorias. Alm disso, h um aspecto de gerenciamento relacionado com a segurana que falho em todas essas plataformas: a correlao de eventos e aes feitas como root em ambientes virtuais. Ainda, segundo o Gartner, existem cerca de 50 companhias (setembro 2007) que oferecem produtos de gerenciamento para mquinas virtuais. Por fim, mas no menos importante, a questo desempenho que pode ser formulada de duas formas. Primeira, qual o custo de processamento introduzido pela camada de virtualizao? Segunda, quantas mquinas virtuais so possveis sem comprometer uma qualidade de servio (escalabilidade)? Para responder esses questionamentos, vrios estudos foram feitos e se encontram disponveis na Internet, porm, muitos deles so especficos a uma determinada situao e soluo. Atento a essa necessidade, e como forma de sistematizar e fornecer uma metodologia padro para avaliar o desempenho de mquinas virtuais, foi criado o SPEC Virtualization Commitee (www.spec.org/specVirtualization). O objetivo desse comit desenvolver benchmarks para avaliar o desempenho de servidores em data centers. No momento da redao deste trabalho4, a liberao para primeira verso de benchmark est prevista para o segundo semestre de 2008.

Maro de 2008.

Livro Texto dos Minicursos

203

Enquanto no h um benchmark especfico para avaliar a virtualizao, os estudos feitos at agora costumam empregar benchmarks existentes que simulam cargas de processamento, de entrada e sada, e de trfego na rede. A partir de uma avaliao feita pela VMware [VMware 2008a] e posteriormente questionado e reconduzido pela Xen Source [XenSource2008a], se popularizaram os seguintes benchmarks: SPECcpu2000, focado em aplicaes computaes intensivas; o Passmark, que gera uma carga de trabalho para testar os principais subsistemas que compem um sistema operacional; NetPerf, para avaliar o desempenho no envio e recepo de dados via rede; SPECjbb2005 que representa um servidor e sua carga; e a compilao do pacote SPECcpu2000 INT. A tabela 4.1 sumariza os resultados obtidos pela VMware e pela Xen Source feitos com esses benchmarks:
Tabela 4.1 Resumo das concluses sobre anlise de desempenho (VMware versus XenSource) Benchmark SPECcpu2000 Estudo VMware Dependendo da carga, o ESX Server tem um sobre-custo entre 0 a 6% contra 1 a 12% do Xen 3.0.3 em relao ao sistema nativo. Em funo do teste, o ESX Server gera de 4 a 18% de sobre-custo contra 6 a 41% do Xen 3.0.3 em relao ao sistema nativo. Estudo Xen Source O ESX Server tem um sobre-custo de 2% e o Xen 3.2 de 3% em relao ao sistema nativo.

Passmark

Apresentam desempenho similar com uma variao de um em relao ao outro na faixa de 0.5% e, em funo do teste, ambos tem um desempenho entre 80 a 95% do apresentado pelo sistema nativo. Desempenho similares e prximos do sistema nativo (98-99%). No teste com mais de um cliente h diferenas em favor do Xen (90%) Desempenho similares e prximos ao sistema nativo (96-98%). Obs.: A verso 3.2 do Xen oferece suporte a mquina SMP. ESX server tem um desempenho de cerca de 92% em relao ao sistema nativo, enquanto o do Xen 86%

Netperf

O ESX Server fornece desempenho prximo ao sistema nativo (98%), ao passo que o Xen 3.0.3 atinge apenas 2 a 3% dessa capacidade. O ESX Server corresponde a 91% do sistema nativo. No foi possvel fazer esse experimento com o Xen 3.0.3 por ele no ter suporte a mquinas SMP. O ESX Server oferece um desempenho de 90% contra 68% do oferecido pelo Xen 3.0.3, em comparao ao sistema nativo.

SPECjbb2005

Compilao

Abstraindo o fato de que os resultados da tabela 4.1 foram obtidos com equipamentos e softwares de verses diferentes e de terem sido feitos por entidades que tinham o intuito de vender seu produto, o importante a ressaltar o impacto da virtualizao em relao a um sistema nativo. Os nmeros fornecidos do uma idia do sobre-custo introduzido pela virtualizao. A concluso que, em geral, esse sobrecusto no muito significativo, portanto, seu uso no tem um impacto importante sobre a realizao de um servio.

204

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

A nosso conhecimento, no foram feitos benchmarks para avaliar a escalabilidade de hypervisors. Vale lembrar ainda que os benchmarks empregados foram desenvolvidos para um contexto e empregados em outro. Em todo caso, h uma movimentao geral entre os fornecedores de solues para virtualizao em reduzir, otimizar e melhorar o desempenho de seus produtos.

8. Concluses
A virtualizao a nova onda de revoluo na rea de TI. Isso confirmado por anlises econmicas conduzidas pela Gartner, pela criao e pela evoluo de associaes como a EMA (Enterprise Management Association) e pelo crescimento exponencial de empresas como VMware e a Citrix, entre outras. Ainda, o IDC prev que o crescimento do mercado e dos investimentos em virtualizao subir de U$6.5 bilhes para U$15 bilhes em 2011. No por nada que a Citrix desembolsou, em outubro de 2007, U$500 milhes para adquirir a XenSource. A virtualizao uma tcnica que permite que um sistema computacional (o hospedeiro) execute vrios outros denominados de mquinas virtuais (hspedes). Cada mquina virtual, por si s, um ambiente de execuo isolado e independente das demais. Com isso, cada mquina virtual pode ter seu prprio sistema operacional, aplicativos e servios de rede (Internet). O sistema operacional do hspede pode ser diferente daquele utilizado pelo hospedeiro. A virtualizao no um conceito recente, remonta da dcada de 60, e existem vrias tcnicas para implement-la, onde se destacam as mquinas virtuais de processo e o monitor de mquina virtual. Uma mquina virtual de processo nada mais que uma aplicao que executa sobre um sistema operacional A e que emula o comportamento de um sistema operacional B. Assim, aplicaes desenvolvidas para o sistema B podem executar sobre um sistema A. importante salientar que essa tcnica de implementao permite que binrios de um processador sejam interpretados e substitudos por cdigo equivalente de outro processador. Portanto, alm de emular sistema operacional possvel emular processadores. As desvantagens dessa tcnica so basicamente duas: desempenho e desperdcio de capacidades do hardware fsico. O desempenho sacrificado j que h uma traduo de um sistema a outro, alm de executarem em modo de usurio. O desperdcio de capacidades fsicas do hardware vem do fato que as mquinas virtuais de processo oferecem dispositivos de E/S genricos e simples. O exemplo tpico so placas de vdeo. Por executarem como uma aplicao, ao terminar o processo mquina virtual, nenhum rastro permanece no sistema. Os monitores de mquinas virtuais, mais conhecidos pelo acrnimo VMM (Virtual Monitor Machine) ou hypervisor, surgem para resolver as desvantagens das mquinas virtuais de processos. Eles so implementados como uma camada de software entre o hardware e o sistema operacional, oferecendo uma mquina virtual para este. Dessa forma eles conhecem e exploram eficientemente os dispositivos fsicos de E/S. O desempenho tende a ser melhor por no executarem em modo usurio, o que evita chaveamentos de contexto. Existem duas tcnicas usadas nos hypervisors: virtualizao total e para-virtualizao. A diferena essencial se o sistema operacional hspede precisa ser modificado (para-virtualizao) ou no (virtualizao total) para executar sobre o hypervisor.

Livro Texto dos Minicursos

205

Assim como j aconteceu no passado com a multiprogramao, o projeto dos processadores mais recentes tem considerado mecanismos em hardware para auxiliar na virtualizao. o caso dos fabricantes AMD e Intel que desenvolveram extenses para a arquitetura x86 suportar virtualizao, respectivamente, AMD-Virtualization (AMD-V, codinome Pacfica) e Intel Virtualization Technology (IVT, condinome Vanderpool). O uso tpico da virtualizao na consolidao de servidores, isso , permitir que vrios servidores executem simultaneamente em um nico hardware fsico, mas cada um em sua prpria mquina virtual. Como cada mquina virtual um ambiente isolado, completo, os servidores podem ser de sistemas operacionais diferentes e, um eventual comprometimento de um no afeta os demais. Alm disso, a consolidao de servidores reduz custos com aquisio de equipamentos, e com infra-estrutura fsica como espao, energia, cabeamento, refrigerao e custos de gerenciamento e manuteno. Isso especialmente interessante em data centers. Entretanto a virtualizao pode ser empregada com sucesso em vrias outras situaes como ambientes de desenvolvimento e teste de produtos, laboratrios de treinamento de cursos de redes e de sistemas operacionais, criao de clusters ou grades computacionais virtuais e servir de base para implantao de mecanismos de segurana (honeypots). Apesar de muitas vezes se associar virtualizao a sistemas operacionais hspedes e a consolidao de servidores, ela algo mais amplo. Segundo a EMA [EMA, 2008] virtualizar mascarar caractersticas fsicas de recursos computacionais dos sistemas operacionais, aplicaes e usurios. Nesse ponto entra a possibilidade mascarar a infra-estrutura de rede. H muito tempo, os sistemas operacionais j oferecem suporte a definio de interfaces de redes virtuais, permitindo que uma mesma placa de rede funcione como se fosse vrias. De forma natural, cada mquina virtual possui sua prpria placa de rede (virtual) com seu prprio endereo IP e endereo MAC. O prximo passo foi permitir que essas mquinas virtuais fossem interconectadas entre si usando equipamentos de interconexo tambm virtuais. Surgem assim switches e roteadores virtuais, permitindo que se faa (virtualmente) a definio de redes de permetro e segmentao de redes. Como a virtualizao consiste basicamente em se pr uma camada de software a mais em um sistema computacional a questo sobre quanto isso afeta o desempenho final imediata. Estudos feitos pela VMware e pela XenSource apontam para um queda de desempenho, em geral, entre 2% e 10%, com algumas situaes impondo perdas maiores. Cabe ressaltar que esses resultados foram obtidos usando benchmarks genricos. Porm, atento a esse aspecto, os fabricantes esto investindo muitos esforos no sentido de reduzir a queda de desempenho e para que haja uma forma padro, e isenta, de avaliar, h um comit especfico (SPEC Virtualization Comitee) trabalhando na definio de uma sute de benchmark para a virtualizao. A primeira verso dessa sute esperada para a segunda metade de 2008. Para finalizar, um ponto interessante. Segundo a Microsoft (em seu site technet) o valor de mercado da virtualizao no est na pilha necessria para implement-la, isso , no conjunto sistema operacional mais hypervisor, mas sim no desenvolvimento de sistemas de gerenciamento para ambientes virtuais. Essa opinio reforada por um outro estudo do Gartner que aponta um crescimento em start-ups oferecendo solues

206

26 Simpsio Brasileiro de Redes de Computadores e Sistemas Distribudos

de gerenciamento para ambientes virtuais. Fazem parte do gerenciamento, as solues de segurana. Um tpico, entre outros, que est em aberto como correlacionar as atividades de root em um hypervisor com as diferentes mquinas virtuais. Questes relacionadas com desempenho, migrao de mquinas virtuais, facilidades de backup, recuperao de falhas, configurao automtica, tambm no esto totalmente fechadas.

Referncias
Adamic, A. L. Zipf, Power-laws and Pareto a ranking tutorial. Information Dynamics Lab, HP Labs. (http://www.hpl.hp.com/research/idl/papers/ranking), acesso fevereiro 2008. Adams, K.; Agesen, O. A comparaison of software and hardware techniques for x86 virtualization, ASPLOS06, San Jose, California, USA. 2006. Baratz, A.; Virtual Machines shootout: VMWare vs. Virtual PC, Ars Technica. August, 2004 (http://arstechnica.com/reviews/apps/vm.ars) Acesso novembro 2007. Barham, P.; Dragovic, B.; Fraser, K.; Hand, S.; Harris, T.; Ho, A.; Neugebauer, R.; Pratt, I.; Warfield, A. Xen and the Art of Visualization. In. Proc. 19th ACM Symp. On Operating System Principles (SOSP03), 2003. Breslau, L.; Cao, P.; Fan, L. ; Philips, G. And Shenker, S. Web Caching and Zipf-like Distributions: Evidence and Implications. INFOCOM, 1999, pp. 126-134. EMA, Entreprise Management Solutions. (http://www.emscorporation.com). Acesso maro de 2008. Goldberg, R.P. Survey of virtual machine research. IEEE Computer, pp. 34-35, june 1974. Jain, R. Art of Computer Systems Performance Analysis. John Willey. 1991. Henessy, J.L.; Patterson, D.A. Computer Architecture: A quantitative approach. 4th edition. Morgan Kauffman Publishers, 2007. LinuxServer (http://linux-vserver.org). Acesso em maro de 2008. Microsoft. Microsoft Virtual PC (http://www.microsoft.com/Windows/virtualpc), acesso novembro 2007. Microsoft. Microsoft Virtual Server (http://www.microsoft.com/windowsserversystem/virtualserver), acesso novembro 2007. Neiger, G.; Santoni, A. et alli Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization, Intel Technology Journal, v. 10, pp. 166-179, 2006. Oliveira, R..; Carissimi, A.; Toscani, A.; Sistemas Operacionais. Editora Sagra-Luzzato, 3a edio, 2004. Popek, G.; Goldberg, R. Formal requirements for virtualizable 3rd generation architectures. Communications of the ACM, v.17, n.7, pp. 412-421, 1974.

Livro Texto dos Minicursos

207

Robin, J.S.; Irvine, C.E. Analysis of the Intel Pentiums Ability to Support a Secure Virtual Machine Monitor. Proc. 9th USENIX Security Simposium, 2000. Rose, R. Survey of Virtualization Techniques. (http://www.robertwrose.com). Acesso em fevereiro 2008. Silberchatz, A.; Galvin, P; Sistemas Operacionais. (1a edio). Campus, Rio de Janeiro, 2001. Singh, A.An introduction to virtualization(http://www.kernelthread.com/publications) Acesso fevereiro 2008. Smith, J.E, Nair, R. The architecture of virtual machines. IEEE Computer, v.38, n.5, pp. 32-38, 2005. Uhgli, R.; Neiger, G. et alli Intel Virtualization Technology. Computer Journal, v.38, pp. 48-56. 2005. Ung, D.; Cifuentes, C. Machine-adaptable dynamic binary translation. ACM SIGPLAN Notices, ACM Press New York, NY, USA, vol. 35, 7, july 2000, pp 41-51. VMWare (2008a) A Performance Comparison (http://www.vmware.com). Acesso janeiro 2008. of Hypervisors

VMWare (2008b) VMWare virtual networking concepts (http://www.vmware.com) Acesso fevereiro 2008. VMWare (2008c), VMWare (http://www.vmware.com) Wikipedia. Comparaison of virtual machines Wikipedia, The Free Encyclopedia, Acesso novembro 2007. Xen Source (2008a), A Performance Comparaison of Commercial Hypervisors (http:/blogs.xensources.com/rogerk/wp-content/uploads/2007/03/hypervisor_performance_comparaison_1_0_5_with_esx-data.pdf). Acesso fevereiro 2008. Xen Source (2008b), Xen Source (http://www.xensource.com). Acesso fevereiro 2008.

Você também pode gostar