Virtualização de Máquinas Uma experiência baseada em ferramentas livres Carlos A. M. dos Santos echo unixmania at gmail dot com sed 's/ at /@/;s/ dot /./g' 1º Seminário de Software Livre Tchelinux Pelotas, 24 de março de 2007
Sobre o Palestrante Engenheiro agrícola* (UFPel, 1988) Pesquisador bolsista (EMBRAPA, 1989-1993) Programador e gerente de redes (CPMet/UFPel, provedores de serviços Internet, 1993-1999) Mestre em Ciência da Computação, na área de Computação Gráfica (UFRGS, 1998-2000) Professor de CG, programação e redes (URI, Santo Ângelo, 2001-2005) Atualmente: HP Brasil (IPL) * Acredite se quiser!
Ressalva As opiniões expostas aqui são do palestrante, apenas, e não representam políticas, processos ou estratégias de mercado da HP. As informações expostas aqui não representam produtos, software ou serviços comercializados pela HP.
Temas Abordados Teoria (não dói!) Instruction Set Architecture Definição formal de virtualização Tipos de virtualização Vantagens e desvantagens Exemplo prático QEMU: diversos SOs rodando simultaneamente
Instruction Set Architecture* Delimita a divisão entre hardware e software Hardware: dispositivo caracterizado por um conjunto finito de estados válidos (registradores, memória) um conjunto finito de instruções executáveis válidas Software: um conjunto cujos elementos são instruções válidas A execução das instruções provoca transições de estados * Doravante abreviada para ISA
e(s i ) S i S j Exemplo: a execução da intrução e muda o estado do hardware de S i para S j Referência: Smith, James E. & Nair, Ravi. Virtual Machines. San Francisco: Morgan Kaufmann, 2005.
Virtualização É a construção de um isomorfismo entre um sistema hóspede e um sistema hospedeiro* e(s i ) S i S j V(S i ) hóspede e'(s' i ) V(S j ) S' i hospedeiro S' j * Popek & Goldberg, 1974
Tipos de Virtualização Em nível de processo O hóspede é um único processo de usuário A máquina virtual provê uma ABI* para o processo Em nível de sistema Muitos processos de usuário podem coexistir A máquina virtual provê um ambiente completo * Application Binary Interface
Virtualização em nível de processo Hóspede Processo Aplicativo Processo Aplicativo Runtime Hospedeiro Software de Virtualização Sistema Operacional Hardware Máquina Virtual
Virtualização em nível de sistema Hóspede Processo Aplicativo Sistema Operacional Processo Aplicativo Sistema Operacional VMM Software de Virtualização Máquina Virtual Hospedeiro Hardware
Virtualização em Nível de Processo Multiprogramação: SO roda processos concorrentes Emulador/tradutor binário dinâmico: simula uma ISA (FX!32, Wine, PACE, QuickTransit/Rosetta) Otimizador binário dinâmico: modifica código para melhor desempenho (HP Dynamo) VM de linguagem de alto nível (p-machine, Java) Exceções/mistos FX32: recompilador dinâmico para a mesma ISA Jalapeño: VM Java que faz otimização binária FreeBSD Linux mode: vetor de serviços de sistema FreeBSD Jails: contexto isolado restrito (Verio VPS)
Exemplos de virtualização em nível de processo Aplicação Windows (IA32) Windows NT (Alpha) ISA Alpha (RISC, 64 Bits) Aplicação Windows (IA32) Runtime Unix FX!32 ISA IA32 Runtime Wine: Windows Emulator Aplicação M68k (Palm OS 4) PACE (runtime) Bibliotecas Palm OS 5 ISA ARM32 Aplicação ARM32 (Palm OS 5) DAL: Device Abstraction Layer HAL: Hardware Abstraction Layer Palm OS Application Compatibility Environment Palm OS 5
Virtualização em Nível de Sistema VM clássica: hypervisor (VMM) gerencia o hardware e suporta múltiplos SOs (VM/370, VM/CMS, z/vm) VM hóspede: roda em um SO (VMware, Virtual PC for Windows, QEMU Accelerator) Sistema completo: emula um computador (QEMU, Virtual PC for Mac, POSE, dúzias!) Codesign: semelhante a microcódigo, processador expõe uma ISA virtual (Crusoe, IBM AS/400) Exceções/mistos Virtualização auxilida por hardware (VT-x, AMD-V) Xen: Paravirtualization (SO hóspede modificado)
Exemplos de virtualização em nível de sistema Aplicação Linux (SPARC32) SPARC Linux QEMU (runtime) FreeBSD ISA IA32 Aplicação Windows (IA32) Windows XP (IA32) QEMU (runtime) VM 1 VM 2 Aplicação Linux z/linux Hypervisor (runtime) z/architecture Aplicação z/os z/os FreeBSD ISA IA32 QEMU Kqemu z/vm
Vantages e Desvantagens Vantagens Desvantagens Redução de custos Desempenho limitado Segurança Emulação incompleta Flexibilidade Necessidade de alterar o hóspede (às vezes) Vantages e desvantagens sempre são relativas!
Exemplo Prático QEMU: diversos SOs rodando simultaneamente Aplicação FreeBSD (IA32) FreeBSD (IA32) QEMU (runtime) Linux Kqemu ISA IA32
Dúvidas?
Obrigado pela atenção! Contato echo unixmania at gmail dot com sed 's/ at /@/;s/ dot /./g'