Virtualização Fabiano Muchalski – [email protected] Rodolfo Bertelli Cavalcante – [email protected] Resumo: Neste artigo é apresentado o tema virtualização, abordando as máquinas virtuais, terminologias, definições e características. Também são explicados os tipos, limites, vantagens e desvantagens da virtualização. Palavras-chave: Virtualização, máquinas virtuais, emulação, virtualização completa, paravirtualização. 1 Introdução 3 Terminologia Virtualização segundo a EMA (Enterprise Management Association) é a técnica que “mascara” as características físicas de um recurso computacional dos usuários, das aplicações ou dos sistemas que os utilizam. A virtualização em uma definição generalizada é um processo que permite a execução de múltiplos sistemas operacionais e de suas aplicações em máquinas virtuais sobre uma máquina física. Mas também encontramos a virtualização na implementação de desktops remotos, de discos virtuais, na computação em cluster e mesmo em dados como, por exemplo, por meio do uso de SQL, entre outros. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). O processo ou sistema operacional que executa sobre uma máquina virtual é denominado de hóspede ou convidado, enquanto a plataforma subjacente onde a máquina virtual executa é denominada hospedeiro ou sistema nativo. A camada de virtualização que implementa a máquina virtual é genericamente denominada de runtime (ou executivo) para as máquinas virtuais de processo, e de VMM (monitor de máquina virtual), ou hipervisor (hypervisor), para as máquinas virtuais de sistema. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). 2 Máquinas Virtuais Conceitualmente um sistema de computação é formado por camadas. O hardware é o nível mais baixo em todos os sistemas. O kernel executando no próximo nível utiliza instruções de hardware para criar um conjunto de chamadas ao sistema para uso por camadas externas. Os programas de sistema acima do kernel, portanto, são capazes de usar as chamadas ao sistema ou as instruções de hardware. Os programas de sistema, por sua vez, tratam o hardware e as chamadas ao sistema como se ambos estivessem no mesmo nível. Alguns sistemas levam esses esquemas a um passo adiante, permitindo que os programas de sistema sejam chamados facilmente pelos programas aplicativos. Os programas aplicativos podem visualizar tudo abaixo deles na hierarquia como se os últimos fossem parte da máquina propriamente dita. Essa abordagem em camadas é levada ao conceito de máquina virtual. Usando as técnicas de escalonamento de CPU e de memória virtual um sistema operacional pode criar a ilusão de que um processo tem o seu próprio processador com sua própria memória virtual. (SILVERSCHATZ, GALVIN, GAGNE, 2000). 4 Definições e Características Os primeiros conceitos que se deve ter em sobre virtualização são de instruções privilegiadas e não privilegiadas. As instruções não privilegiadas são aquelas que não modificam a alocação ou o estado de recursos compartilhados por vários processos simultâneos, tais como processadores, memória principal e registradores especiais. Em oposição a essas instruções, temos as instruções privilegiadas, que podem alterar o estado e a alocação desses recursos. Um computador pode operar em dois modos distintos, o modo de usuário, no qual as aplicações normalmente são executadas e não é possível executar instruções privilegiadas, ou o modo de supervisor, que tem controle total sobre a CPU, podendo executar tanto as instruções não privilegiadas como as privilegiadas. O sistema operacional é executado neste modo. Uma máquina na qual é feita a virtualização pode contar com apenas um SO hospedeiro sendo executado por vez e diversos SOs hóspedes. O VMM é responsável pela virtualização e controle dos recursos compartilhados pelas máquinas virtuais, tais como, processadores, dispositivos de entrada e saída, memória.. Também é função do VMM escalonar qual máquina virtual vai executar a cada momento. O VMM é executado no modo de supervisor e as máquinas virtuais são executadas em modo de usuário, assim, quando estas tentam executar uma instrução privilegiada, é gerada uma interrupção e o VMM se encarrega de emular a execução desta instrução. (MENEZES, MATTOS, 2008). 4.1 Máquina Virtual de Processo É aquela que fornece um ambiente de execução para apenas uma aplicação por meio de uma ABI virtual. A máquina virtual de processo é criada sobre demanda e só existe quando o processo esta sendo executado. A linguagem de programação Java e sua máquina virtual JVM (Java Virtual Machine) é um bom exemplo dessa concepção, a JVM é uma máquina virtual de processo que possui código binário específico, os bytecodes, para os quais uma aplicação Java é compilada. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). 4.2 Máquina Virtual de Sistema Oferece um ambiente de execução completo onde pode coexistir um sistema operacional e vários processos. Uma máquina física pode executar múltiplos sistemas operacionais hóspedes, um em cada máquina virtual. Existem dois tipos de implementação de máquinas virtuais de sistema: hipervisores do tipo I e do tipo II (Goldberg, 1973; IBM Corporation, 2005). 4.2.1 Hipervisores tipo I ou nativo Os hipervisores tipo I, ou nativos, são aqueles que executam diretamente sobre o hardware de uma máquina real e as máquinas virtuais são postas sobre ele. Sua função básica é compartilhar os recursos de hardware de uma máquina real entre as diferentes máquinas virtuais de forma que cada uma delas tenha a ilusão de que esses recursos são privativos a ela. Exemplo: Xen e VMware. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). A figura abaixo mostra as camadas desse tipo de máquina virtual: Aplicação Aplicação SO1 SO2 Hipervisor (VMM) Hardware 4.2.2 Hipervisores tipo II ou hóspedes Hipervisores tipo II, ou hóspedes, são caracterizados por executar sobre um sistema operacional nativo como se fosse um processo deste. Nesse caso, o que o hipervisor oferece é uma camada de virtualização composta por um sistema operacional hóspede, possivelmente diferente do sistema operacional nativo, e por um hardware virtual criado sobre os recursos de hardware oferecidos pelo sistema operacional nativo. Exemplo: VMware Player, VirtualBox e o MS VirtualPC. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). A figura abaixo mostra as camadas desse tipo de máquina virtual: Aplicação Aplicação SO1 SO2 Sistema operacional Hardware 5 Técnicas de Virtualização e Emulação As técnicas mais utilizadas para virtualização atualmente são a paravirtualização e virtualização total (completa). Um problema nas implementações das máquinas virtuais está no que fazer quando um sistema hóspede executa instruções privilegiadas, sendo estas exclusivas do sistema nativo. Em 1974, Popek e Goldberg classificaram o conjunto de instruções de um processador em três grupos: Privilegiadas, que se executadas por um programa em modo usuário causam exceções; Sensíveis de controle, que permitem a alteração de recursos do sistema; Sensíveis comportamentais, cujo resultado ou comportamento depende da configuração de recursos. Popek e Goldberg, então propuseram o seguinte teorema: Um monitor de uma máquina virtual pode ser implementado de forma adequada sempre que as instruções sensíveis comportamentais forem um subconjunto das instruções privilegiadas. A virtualização é possível mesmo em processadores que não seguem a restrição acima, mas ao custo de um pior desempenho. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). 5.1 Virtualização Completa Virtualização completa consiste em prover uma réplica (virtual) do hardware subjacente de tal forma que o sistema operacional e as aplicações possam executar como se tivesse executando diretamente sobre o hardware, a grande vantagem é que o sistema operacional hóspede não precisa ser modificado para executar sobre o monitor de máquina virtual ou hipervisor. Porém todas as instruções executadas pelo sistema hóspede devem ser testadas na máquina virtual para saber se elas são sensíveis ou não, o que representa um custo de processamento. O segundo inconveniente de virtualização completa é a dificuldade em se implementar uma máquina virtual que imite o comportamento exato de cada tipo de dispositivo, dada a grande diversidade de dispositivos existentes. Por fim, a implementação de uma máquina virtual de processo deve contornar alguns problemas técnicos relativos à implementação da gerência de memória. Há toda uma gerência de alocação, liberação e controle de acesso às páginas que devem ser respeitadas. É necessário “converter” o espaço de endereçamento do sistema hóspede para o do sistema nativo disputando recursos com outros eventuais sistemas hóspedes, porém, esse tratamento também representa uma queda de desempenho. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). A figura abaixo mostra a representação da virtualização completa: Ap. 1 Ap. n Ap. 1 Ap. n Sistema Sistema Operacional 1 Operacional 2 (original) (original) VMM (Virtual Machine Monitor) Hardware 5.2 Paravirtualização A paravirtualização é uma abordagem alternativa para contornar os problemas de desempenho da virtualização total. A vantagem é que as instruções de usuário (user ISA) não precisam ser alteradas e podem ser executadas diretamente sobre o processador nativo. Ao preservar o user ISA, todas as aplicações que foram desenvolvidas para o sistema hóspede podem ser executadas sem alterações. Outra vantagem da paravirtualização é que ela provê aos sistemas hóspedes acessos aos recursos de hardware a partir dos drivers instalados no próprio hipervisor. Dessa forma, os sistemas hóspedes podem usar os recursos reais da máquina e não apenas dispositivos genéricos como era o caso na virtualização total. A máquina virtual apenas gerencia o compartilhamento do hardware e monitora as áreas de memória e de disco alocadas para cada um dos sistemas hóspedes. Assim, a máquina virtual pode informar ao sistema operacional hóspede qual a área de memória física que está alocada para ele e com isso, a gerência de memória do hóspede é capaz de traduzir diretamente as páginas virtuais em quadros físicos, sem necessitar de uma etapa adicional de conversão. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). A figura abaixo mostra a representação da paravirtualização: Ap. 1 Ap. n Ap. 1 Ap. n Sistema Sistema Operacional 1 Operacional 2 (modificado) (modificado) VMM (Virtual Machine Monitor) Hardware 6 Vantagens e Desvantagens Existem diversas vantagens na virtualização, a seguir serão citadas as principais: Segurança: Usando máquinas virtuais, pode ser definido qual é o melhor ambiente para executar cada serviço e assim, a vulnerabilidade de um serviço não prejudica os demais. Confiança e disponibilidade: A falha de um software não prejudica os demais serviços. Custo: A redução de custos é possível de ser alcançada com a consolidação de pequenos servidores em outros mais poderosos. Essa redução pode variar de 29% a 64%. Adaptação às diferentes cargas de trabalho: Variações na carga de trabalho podem ser tratadas facilmente. Balanceamento de carga: Toda a máquina virtual está encapsulada no VMM, facilitando trocar a máquina virtual de plataforma, a fim de aumentar o seu desempenho. Suporte a aplicações legadas: Quando uma empresa decide migrar para um novo Sistema Operacional é possível manter o sistema operacional antigo sendo executado em uma máquina virtual, o que reduz os custos com a migração. A virtualização também pode ser útil para aplicações que são executadas em hardware legado, que está sujeito a falhas e tem altos custos de manutenção, assim, é possível executar essas aplicações em hardwares mais novos, com custo de manutenção mais baixo e maior confiabilidade. Por outro lado, existem as desvantagens da virtualização, sendo as principais: Segurança: Segundo Neil MacDonald, especialista de segurança da Gartner, hoje em dia, as máquinas virtuais são menos seguras que as máquinas físicas justamente por causa do VMM, pois se o sistema operacional hospedeiro tiver alguma vulnerabilidade, todas as máquinas virtuais que estão hospedadas nessa máquina física estão vulneráveis. Gerenciamento: Os ambientes virtuais necessitam ser instanciados, monitorados, configurados e salvos, gerando uma necessidade de grande investimento. O VMWare é a plataforma mais flexível e fácil de usar, mas ainda apresenta falhas que comprometem a segurança. Desempenho: a introdução de uma camada extra de software entre o sistema operacional e o hardware gera um custo de processamento superior ao que se teria sem a virtualização. Também não se sabe quantas máquinas virtuais podem ser executadas por processador, sem que haja o prejuízo da qualidade de serviço. (MENEZES, MATTOS, 2008). 7 Ferramentas de Virtualização Existem no mercado algumas ferramentas para realizar virtualização, abaixo são listadas as principais. 7.1 VMware Player • Objetivo de permitir que usuários tenham contato com a virtualização. • A estratégia adotada é de virtualização total. • Instala um driver específico chamado (VMDriver) que permite que as máquinas virtuais acessem os drivers de dispositivo do sistema hóspede. • Disponível gratuitamente para os sistemas operacionais Windows e Linux com versão comercial (VMware Fusion) para o MacOS X. • A VMware Player não permite que um sistema operacional hóspede seja criado na máquina virtual a partir de zero. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). 7.2 Virtual PC 2007 • Desenvolvida pela Microsoft para desenvolvimento e teste de software para múltiplas plataformas; • A estratégia adotada é de virtualização total; • Pode ser configurada para executar qualquer outro sistema operacional; • Uma diferença que o Virtual PC 2007 tem em relação ao VMware é a possibilidade de se definir máquinas virtuais e instalar o seu próprio sistema operacional. (OLIVEIRA, CARISSIMI, TOSCANI, 2010). 7.3 Xen Por usar Paravirtualização e ser uma ferramenta OpenSource, o Xen, do ponto de vista de eficiência, é apontado por muitos autores ([VILLANUSTRE, 2005], [JONES, 2006] e [XEN]) como sendo a melhor escolha para virtualização, fazendo com que seus sistemas Guests executem com desempenho de mais de 95% do desempenho da máquina host. O Xen é executado diretamente acima do hardware e abaixo do sistema operacional, não podendo ser instalado em um sistema Windows como se fosse um aplicativo. Como ele precisa alterar o kernel dos sistemas Guests há um empecilho relativo a licenças em sistemas proprietários de código fechado. Para estes sistemas a virtualização só é possível se houver suporte do hardware. (GONÇALVES, JUNIOR). 8 Conclusão A utilização de máquinas virtuais está se tornando uma alternativa para vários sistemas de computação pelas vantagens em custos e portabilidade. A crise econômica mundial ocorrida nos últimos anos tem influenciado nesse crescimento levando-se em conta a economia que a virtualização pode representar na questão de custos, pois uma única máquina real pode executar o trabalho de várias máquinas quando utilizado a máquina virtual. A economia vem tanto na diminuição de novos hardwares quanto no barateamento dos custos de energia. A diminuição de servidores diminui o investimento em quantidade de técnicos necessários para administrar esses servidores, e esses podem ocupar mais seu tempo com melhorias nos serviços e prevenção de indisponibilidade.. Além da justificava econômica para o crescimento do uso da virtualização podemos levar em consideração ao novo conceito de T.I. verde, pois como já mencionado, o menor uso de máquinas reais gera menos consumo de energia elétrica e menos lixos eletrônicos. Mas claro que também existe o lado negativo, como por exemplo, a queima de um componente eletrônico pode ocorrer sem a previsão do administrador e isso pode resultar em uma indisponibilidade de vários serviços simultaneamente. É verdade que com todo o sistema de monitoração dos sistemas, replicação, migração de backup dos sistemas virtualizados, o tempo de recuperação em casos de falhas diminuem, mas é algo a ser avaliado. 9 Referências 1. Rômulo Silva de Oliveira, Alexandre da Silva Carissimi e Simão Sirineo Toscani. Sistemas Operacionais, Série livros didáticos informática UFRGS. Bookman, Porto Alegre, 2010 2. Abraham Silverschatz, Peter Galvin e Greg Gagne. Sistemas Operacionais, Conceitos e Aplicações. Campus, 2000 3. Diogo Menezes Ferrazani Mattos. Artigo: Virtualização: VMWare e Xen. 2008 4. Danilo Brandão Gonçalves e José Cláudio Vahl Junior. White Paper, Virtualização.