Xen e a Arte da Virtualização Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield University of Cambridge Computer Laboratory Microsoft Research Cambridge, UK Intel Research Cambridge, UK
Roteiro Virtualização Máquinas Virtuais de Sistema Para-Virtualização Xen: Visão Geral Princípios de Design Design Detalhado Avaliação Conclusão Xen na Atualidade
Virtualização Remove limitações impostas pelas interfaces de sistema e aumenta a flexibilidade Provê uma visão diferente para um dado recurso computacional Não necessariamente uma visão mais simples Virtualização constrói um isomorfismo que mapeia um sistema hóspede virtual a um sistema hospedeiro real
Virtualização
Alguns benefícios de VMs Flexibilidade Diferentes sistemas virtuais podem ser emulados em um mesmo sistema físico Portabilidade Possibilita migração da máquina virtual entre diferentes hospedeiros Isolamento Desempenho isolado entre máquinas virtuais em um mesmo hospedeiro Segurança Impede acesso mal intencionado ao hardware físico através de barreiras implementadas pelo monitor
Taxonomia de VMs
Máquinas Virtuais de Sistema Virtualização aplicada a toda a máquina Adiciona camada de software à máquina real para suportar a arquitetura da máquina virtual desejada Virtualização Mapeamento de recursos ou estados virtuais a recursos reais Uso de instruções de máquina reais para executar ações especificadas por instruções da máquina virtual
Máquinas Virtuais de Sistema Recursos de hardware são em geral subutilizados Objetivo: otimizar alocação de recursos Permitir acesso simultâneos de múltiplos usuários a um único sistema computacional Dar a cada usuário a ilusão de acesso exclusivo ao conjunto completo de recursos do sistema Para criar esta ilusão: Sistemas operacionais multiprogramados Implementar VM de processo para cada aplicação e alocar recursos entre os programas por time-slices Máquinas virtuais de sistema Objetivo: prover uma ilusão similar para sistemas completos
Máquinas Virtuais de Sistema Suporta múltiplas imagens de sistema simultaneamente Cada uma roda seu própria sistema operacional e programas Recursos reais da máquina hospedeira são partilhados pelas máquinas hóspede SO hóspede gerencia recursos virtualizados (CPU, disco, I/O) Monitor de máquina virtual (VMM) Colocado entre hardware subjacente e software convencional Alternativa: VM hosted (virtualiza software em cima de um SO existente) Gerencia alocação/acesso a recursos de HW da plataforma hospedeira Dá a cada SO hóspede a ilusão de ser dona dos recursos
Benefícios em Datacenters Virtualização em datacenters pode diminuir custos com espaço físico, energia, resfriamento e hardware. Simplificar a administração, manutenção, e resultar em um TI mais verde 1. Menos geração de calor 2. Custos reduzidos 3. Implantação mais rápida 4. Backups mais simples 5. Testes mais eficazes 6. Sem lock-in de fornecedores 7. Melhor recuperação a desastres 8. Servidores de fim específico 9. Migração mais fácil para clouds
Para-Virtualização Apresenta uma visão similar ao hardware subjacente, mas não idêntico Intenção é reduzir o tempo executando operações complexas no sistema virtualizado Permite o VMM ser mais simples, passando a executar operações críticas no domínio do hospedeiro, e reduzir perda de desempenho na execução de operações de máquina no hóspede virtual Provê conjunto de APIs (hypercalls) que possibilitam a comunicação/cooperação entre o hóspede e o hospedeiro Requer que o SO hóspede seja portado para utilizar a para-api
Xen: Abordagem e Visão Geral Virtualização completa tem vários pontos negativos. Virtualizar o MMU x86 é difícil e pouco eficiente. Chamadas ao supervisor devem ser virtualizadas pelo VMM e geram overhead. É necessário criar shadow copies de estruturas de sistema e manter a consistência gerando traps para cada acesso Ter acesso a recursos reais é útil para suportar tarefas sensíveis a tempo, e expor endereços de máquina reais possibilita otimizações como o uso de superpáginas ou coloração de páginas.
Princípios de Design 1. Suporte a binários sem modificações é essencial, para isso deve-se virtualizar todos os recursos de arquitetura requisitados pelas ABIs padrões existentes 2. Suporte a sistemas operacionais de multi-aplicações é importante, já que isso permite configurações de servidores complexas virtualizadas dentro de uma única instância de SO hóspede 3. Para-virtualização é necessária para obter alto desempenho e forte isolamento de recursos em arquiteturas nãocooperativas como x86 4. Mesmo em arquiteturas cooperativas, esconder completamente os efeitos da virtualização de recursos arrisca correção e desempenho
Interface: MMU TLB em hardware torna difícil ser eficiente. A ausência de tags torna difícil para as VMs co-existirem sem recorrer a flushes SO hospedeiro aloca e gerencia tabelas de páginas de HW utilizando mínimo envolvimento do Xen Xen existe em uma seção de 64MB no topo de cada espaço de endereçamento, evitando flush ao trocar de-para o hypervisor O SO hospedeiro requisita novas páginas do Xen e todas as atualização devem ser validadas pelo Xen. Isto traz segurança e isolamento
Interface: CPU Níveis de privilégio no x86 SO hóspede deve rodar com menos privilégio que o hypervisor para proteção Tipicamente SOs executam no nível 0, devem ser modificados para executar no nível 1. Apenas o hypervisor executa no nível 0. Tentativa de acesso à instruções de anéis inferiores deve causar exceção ou falhar silenciosamente Chamadas privilegiadas são feitas usando hypercalls Exemplos: instalar uma nova tabela de páginas, yeld de um processador...
Interface: CPU
Interface: I/O Ao invés de virtualizar completamente um dispositivo, o Xen expõe interfaces abstratas simples e limpas Dados são transferidos usando um SMD e anéis de buffers assíncronos Além de prover alto desempenho, possibilitam validação eficiente (out of bounds checks)
Interface: I/O
Porting para o Xen
Controle e Gerenciamento Separar política de mecanismo Interface de controle e criação de domínios Dispositivos de bloco virtuais e interfaces de rede virtuais Software de gerenciamento roda no Domain0
Controle e Gerenciamento
Design Detalhado Hypercalls e eventos Transferência de dados (anéis de I/O) Escalonamento de CPU Tempo e temporizadores Tradução de endereço virtual Memória física (balloon drivers) Rede Disco
Avaliação: Desempenho Relativo
Avaliação: VMs Concorrentes
Avaliação: Escalabilidade (100 hosts)
Trabalhos Relacionados VMware Virtualização de sistema completo para hardwares commodity IBM zseries Sistema para-virtualizado para mainframes zseries, permitindo executar um grande número de instâncias de Linux Denali Kernel de isolamento que permite executar um vasto número de instâncias de SO virtualizados
Conclusão Xen provê uma plataforma excelente para provisionar uma ampla variedade de serviços orientados a rede Xen permite instanciar servidores transientes por curtos períodos de tempo e baixo custo de instanciação Os experimentos mostram que o desempenho do Linux virtualizado rodando sobre Xen é quase equivalente ao do Linux nativo
Xen na Atualidade Xen é uma escolha segura, estável, bem testada para virtualização que é utilizada por gigantes da indústria (Amazon, Rackspace, Verizon, etc.). Tem um consórcio robusto por trás de seu desenvolvimento e tem o preço, desempenho e segurança para enfrentar as melhores ofertas da indústria. Além de ter um histórico de 10 anos que inclui seu uso nas maiores clouds do mundo. Citrix não vai tornar o XenServer open source. Enquanto o Xen, o hypervisor em si, é open source, o XenServer, contém código proprietário que o torna muito mais simples de configurar e de gerenciar e é muito mais polido e confiável como plataforma de virtualização. Provedores de serviço da Internet utilizam hypervisors para prover servidores virtuais privados. Amazon EC2, Liquid Web, Fujitsu Global Cloud Platform, Linode, Sparknode e Rackspace Cloud utilizam Xen como o hypervisor. Xen pode escalar para >255 CPUs físicas, 128 CPUs virtuais por hóspede PV e até 1TB de RAM por hóspede HVM ou 512GB de RAM por hóspede PV Versões comerciais: Citrix XenServer, Oracle VM, Sun xvm, Virtual Iron...
Perguntas?