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(Si )

                        Si                    Sj



Exemplo: a execução da intrução e muda o estado do
               hardware de Si para Sj




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(Si )

                       Si                      Sj
                              hóspede
                  V(Si )                  V(Sj )
                               e'(S'i )


                       S'i                     S'j
                             hospedeiro


* 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
                  Processo                  Processo
  Hóspede         Aplicativo                Aplicativo




  Runtime        Software de
                 Virtualização
                                             Máquina
                                              Virtual

               Sistema
              Operacional
Hospedeiro

                  Hardware
Virtualização em nível de sistema
                  Processo                   Processo
                  Aplicativo                 Aplicativo

  Hóspede
               Sistema                    Sistema
              Operacional                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)      Aplicação M68k
                               (Palm OS 4)     Aplicação ARM32
Windows NT                                       (Palm OS 5)
                              PACE (runtime)
  (Alpha)           Runtime
                                         Bibliotecas
 ISA Alpha (RISC, 64 Bits)
                                         Palm OS 5
           FX!32
                                DAL: Device Abstraction Layer
Aplicação Windows (IA32)
                              HAL: Hardware Abstraction Layer
  Runtime
    Unix                                 ISA ARM32

         ISA IA32
                              Palm OS Application Compatibility
Wine: Windows Emulator            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)            VM1                     VM2
      FreeBSD               Aplicação             Aplicação
                              Linux                 z/OS
        ISA IA32
                            z/Linux                z/OS

Aplicação Windows (IA32)         Hypervisor (runtime)
  Windows XP (IA32)
QEMU (runtime)                        z/Architecture

    FreeBSD        Kqemu
                                          z/VM
        ISA IA32

         QEMU
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'

Virtualização de Máquinas: Uma experiência baseada em ferramentas livres - Carlos A. M. dos Santos

  • 1.
    Virtualização de Máquinas Umaexperiê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
  • 2.
    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!
  • 3.
    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.
  • 4.
    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
  • 5.
    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
  • 6.
    e(Si ) Si Sj Exemplo: a execução da intrução e muda o estado do hardware de Si para Sj Referência: Smith, James E. & Nair, Ravi. Virtual Machines. San Francisco: Morgan Kaufmann, 2005.
  • 7.
    Virtualização É a construçãode um isomorfismo entre um sistema hóspede e um sistema hospedeiro* e(Si ) Si Sj hóspede V(Si ) V(Sj ) e'(S'i ) S'i S'j hospedeiro * Popek & Goldberg, 1974
  • 8.
    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
  • 9.
    Virtualização em nívelde processo Processo Processo Hóspede Aplicativo Aplicativo Runtime Software de Virtualização Máquina Virtual Sistema Operacional Hospedeiro Hardware
  • 10.
    Virtualização em nívelde sistema Processo Processo Aplicativo Aplicativo Hóspede Sistema Sistema Operacional Operacional VMM Software de Virtualização Máquina Virtual Hospedeiro Hardware
  • 11.
    Virtualização em Nívelde 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)
  • 12.
    Exemplos de virtualizaçãoem nível de processo Aplicação Windows (IA32) Aplicação M68k (Palm OS 4) Aplicação ARM32 Windows NT (Palm OS 5) PACE (runtime) (Alpha) Runtime Bibliotecas ISA Alpha (RISC, 64 Bits) Palm OS 5 FX!32 DAL: Device Abstraction Layer Aplicação Windows (IA32) HAL: Hardware Abstraction Layer Runtime Unix ISA ARM32 ISA IA32 Palm OS Application Compatibility Wine: Windows Emulator Environment Palm OS 5
  • 13.
    Virtualização em Nívelde 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)
  • 14.
    Exemplos de virtualizaçãoem nível de sistema Aplicação Linux (SPARC32) SPARC Linux QEMU (runtime) VM1 VM2 FreeBSD Aplicação Aplicação Linux z/OS ISA IA32 z/Linux z/OS Aplicação Windows (IA32) Hypervisor (runtime) Windows XP (IA32) QEMU (runtime) z/Architecture FreeBSD Kqemu z/VM ISA IA32 QEMU
  • 15.
    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!
  • 16.
    Exemplo Prático QEMU: diversosSOs rodando simultaneamente Aplicação FreeBSD (IA32) FreeBSD (IA32) QEMU (runtime) Linux Kqemu ISA IA32
  • 17.
  • 18.
    Obrigado pela atenção! Contato echo unixmania at gmail dot com | sed 's/ at /@/;s/ dot /./g'