UNIVERSIDADE FEDERAL DE SANTA CATARINA – UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA – INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO Xen Hypervisor Glauco Neves – 07132022 Guilherme Pacheco – 07232063 INE 5412 - 0432 Sistemas Operacionais I - Antônio Augusto Fröhlich FLORIANÓPOLIS NOV/2008 O que é Virtualização? Em uma definição simples, virtualização é o processo de executar vários sistemas operacionais em uma única máquina. Uma máquina virtual é um ambiente operacional completo que se comporta como se fosse um computador independente. Com a virtualização, um servidor pode manter vários sistemas operacionais em uso. [4] Porque Virtualizar? A motivação básica para a virtualização é o mesmo que para sistemas operacionais multitarefa; computadores têm mais poder de processamento do que uma tarefa precisa. Os primeiros computadores foram construídos para fazer uma tarefa. A segunda geração foi programável; estes computadores podiam fazer uma tarefa e, em seguida, fazer outra. No entanto, o hardware se tornou tão rápido que uma máquina poderia fazer uma tarefa e ainda teria recursos disponíveis. Multitarefa tornou possível aproveitar esse poder computacional não utilizado. Muitas organizações têm vários servidores fazendo tarefas únicas, ou pequenos clusters de tarefas afins. Virtualização permite que um número de servidores virtuais sejam consolidados em uma única máquina física, sem perder a segurança adquirida por terem ambientes completamente isolados. Várias empresas de servidores web agora estão fazendo uso extensivo de virtualização, pois permite dar a cada cliente a sua própria máquina virtual sem que seja necessária uma máquina física ocupando espaço e dinheiro. [2] Conceitos Hypervisor é o monitor da máquina virtual, ele é executado no maior privilégio possível, é responsável pela virtualização e controle dos recursos compartilhados pelas máquinas virtuais, tais como, processadores, dispositivos de entrada e saída, memória, armazenagem. Sistema Operacional Visitante (Guest Operating System) é o sistema operacional que é executado na máquina virtual. Similar a esse é o conceito de domínio. Formas de Virtualização A virtualização total tem por objetivo fornecer ao sistema operacional visitante uma copia do hardware. Dessa forma, o sistema operacional visitante é executado sem modificações sobre o monitor de máquina virtual (VMM), o que traz alguns inconvenientes. O primeiro é que o número de dispositivos a serem suportados pelo VMM é extremamente elevado. Para resolver esse contratempo, as implementações da virtualização total usam dispositivos genéricos, que funcionam bem para a maioria dos dispositivos disponíveis, mas não garantem o uso da totalidade de sua capacidade. Outro inconveniente da virtualização total é o fato de o sistema operacional visitante não ter conhecimento de que está sendo executado sobre o VMM, então as instruções executadas pelo sistema operacional visitante devem ser testadas pelo VMM para que depois sejam executadas diretamente no hardware, ou executadas pelo VMM e simulada a execução para o sistema visitante. O último inconveniente da virtualização total é o fato de ter que contornar alguns problemas gerados pela implementação dos sistemas operacionais, já que esses foram implementados para serem executados como instância única nas máquinas físicas, não disputando recursos com outros sistemas operacionais. Virtualização total na arquitetura x86. A para-virtualização é uma alternativa à virtualização total. Nesse modelo de virtualização, o sistema operacional é modificado para chamar o VMM sempre que executar uma instrução que possa alterar o estado do sistema, uma instrução sensível. Outro ponto positivo da para-virtualização é que os dispositivos de hardware são acessados por drivers da própria máquina virtual, não necessitando mais do uso de drivers genéricos que inibiam o uso da capacidade total do dispositivo. Embora a para-virtualização apresentasse um ganho de desempenho significativo frente à virtualização total, essa disparidade tem sido superada devido à presença de instruções de virtualização nos processadores Intel e AMD, que favorecem a virtualização total. [3] Para-virtualização na arquitetura x86. Xen Xen é uma ferramenta de virtulização, que permite que os recursos de hardware da máquina sejam virtualizados e dinamicamente particionados, admitindo a execução de múltiplos sistemas operacionais visitantes. Para garantir o sucesso do particionamento existem alguns desafios. Primeiro: máquinas virtuais devem ser isoladas das outras, pois não é aceitável que a execução de uma atrapalhe o desempenho da outra, isso devido ao fato de não se ter confiança nos usuários do sistema. Segundo: é necessário dar suporte a uma gama de sistemas operacionais para acomodar a variedade de aplicações populares. Terceiro: A sobrecarga de desempenho que existe na virtualização deve ser pequena. Já existem vários sistemas operacionais que foram portados para o Xen. Isso é necessário devido à diminuição do privilégio que o sistema operacional vai ter ao rodar sobre o hypervisor. No entanto são poucas as mudanças necessárias para isso. Aspectos do Sistema A figura a seguir mostra os três grandes aspectos do sistema: gerenciamento de memória, CPU, e dispositivos I/O. Interface paravirtualizada x86 Gerenciamento de Memória Virtualizar a memória é, sem dúvida, a parte mais difícil da para-virtualização de uma arquitetura, tanto em termos dos mecanismos necessários no hypervisor quanto nas modificações necessárias para portar SOs hóspedes. São seguidos duas decisões: (i) SOs hóspedes são responsáveis por alocar e gerenciar as tabelas de página do hardware, com o mínimo envolvimento do Xen, para garantir a segurança e isolamento, e (ii) Xen existe em uma seção 64MB, na parte superior do cada espaço de endereçamento, como mostra a figura a seguir. Cada vez que um SO visitante faz requisição de novo processo é criado, ele aloca e inicializa uma memória reservada e registra com o Xen. Os endereçamento, que é reservado para Xen, não são visitante. uma nova tabela de página, um página a partir da sua própria 64MB iniciais do espaço de acessíveis ou remapeáveis pelo CPU Virtualizar a CPU tem várias implicações para os SOs visitantes. Principalmente, a inserção de um hypervisor abaixo o sistema operacional viola a idéia de que o SO é a entidade mais privilegiada no sistema. A fim de proteger o hypervisor de erros do SO visitante, ele deve ser modificado para ser executado em um nível menor privilégio. O x86 tem quatro níveis de privilégio que permitem uma eficiente virtualização. Os rings são numerados de zero (mais privilegiado) a três (menos privilegiado). Normalmente o SO é executado no ring 0, porque nenhum outro ring pode executar instruções privilegiadas, enquanto o ring 3 é geralmente utilizado para aplicativos. O sistema operacional visitante é então modificado pra executar no ring 1, para que não execute instruções privilegiadas e possivelmente prejudique outros SOs visitantes. Instruções privilegiadas são para-virtualizadas, assim são avaliadas e executadas pelo Xen. Exceções são tratadas pelo tratador de exceção que foi registrado no Xen, e que é muito parecido com o tratador verdadeiro do x86. Dispositivo I/O Xen expõe um conjunto simples de abstrações de dispositivos. Para garantir a proteção e isolamento, dados de I/O são transferidos de e para cada domínio através do Xen, utilizando memória compartilhada, e um buffer anelar assíncrono mostrado a seguir. Anexos Anexo 01: Caminho de um pacote enviado pelo domínio U. Anexo 02: Configuração simples do Xen. Anexo 03: Ciclo de vida de uma máquina virtual. Anexo 04: As três camadas da memória do Xen. Anexo 05: Sequência de ações em um buffer anelar. Anexo 06: Interface hierárquica do Xen. Referências [1] BARHAM, Paul, DRAGOVIC, Boris, FRASER, Keir, HAND, Steven, HARRIS, Tim, HO, Alex, NEUGEBAUERY, Rolf, PRATT, Ian, WARFIELD, Andrew. Xen and the Art of Virtualization. Disponível em: < http://www.cl.cam.ac.uk/research/srg/netos/papers/2003-xensosp.pdf > Acesso em 24 de novembro. [2] CHISNALL, David. The Definitive Guide to the Xen Hypervisor. Pearson Education, 2007. [3] MATTOS, Diogo M. F. Virtualização: VMWare e Xen. Disponível em: < http://www.gta.ufrj.br/grad/08_1/virtual/artigo.pdf > Acesso em: 24 de novembro. [4] O que é virtualização e o que ela pode fazer pela minha empresa? Disponível em: < http://www.hp.com/latam/br/pyme/solucoes/apr_solucoes_01.html > Acesso em: 24 de novembro. [5] Xen Inferface Manual. Disponível em: < http://www.xen.org/files/xen_interface.pdf > Acesso em: 24 de Novembro.