SlideShare uma empresa Scribd logo
Virtualização e kernel, vistos por dentro

                    Eduardo Habkost
                 ehabkost@redhat.com


                Tchelinux Porto Alegre 2008



Nível: Avançado
Escopo: Código e processo de desenvolvimento do kernel
Pré-requisitos: Noções básicas sobre o kernel Linux e seu
processo de desenvolvimento
Introdução
                          Linux-based virt
                                Upstream
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt
                                             Paravirtualization, full-virtualization, etc.
                                Upstream
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt
                                             Paravirtualization, full-virtualization, etc.
                                Upstream
                               Conclusão


Full-virtualization
Parece de verdade!




        Parece uma máquina de verdade
        VMWare, Qemu (com ou sem kqemu), Bochs, outros
        Ou com ajuda do hardware (AMD-V, Intel-VT)
             Suportado pelo Xen
             No Linux: KVM
        Performance ruim para I/O
             Fácil para o hardware = fácil para o software
             Operação de I/O → pula para o host




                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                             Linux-based virt
                                                Paravirtualization, full-virtualization, etc.
                                   Upstream
                                  Conclusão


Paravirtualização
“Eu sei que é de mentira”




         Kernel do guest modificado
         Xen
         lguest
         VMI (VMWare)
         User-mode Linux (por que não?)
         Comunicação com o hypervisor através de hypercalls




                            Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                        Linux-based virt
                                           Paravirtualization, full-virtualization, etc.
                              Upstream
                             Conclusão


Paravirtualized drivers
Um agente infiltrado



        Ainda parece máquina de verdade
        Mas com um hardware “meio diferente”
        Exemplo: “device driver disk” do VMWare
        Para o SO, é só um hardware diferente que precisa de um
        driver
        O driver conversa com o hypervisor
        O melhor dos dois mundos
        Exemplos: Xenbus (Xen), VirtIO (genérico), drivers do
        VMWare


                       Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt   KVM
                                Upstream     Mudanças no kernel
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                   Linux-based virt   KVM
                         Upstream     Mudanças no kernel
                        Conclusão


Linux-based virtualization



  Bare metal:




                  Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                   Linux-based virt   KVM
                         Upstream     Mudanças no kernel
                        Conclusão


Linux-based virtualization



  Xen (teoria):




                  Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                    Linux-based virt   KVM
                          Upstream     Mudanças no kernel
                         Conclusão


Linux-based virtualization



  Xen (prática):




                   Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                   Linux-based virt   KVM
                         Upstream     Mudanças no kernel
                        Conclusão


Linux-based virtualization



  KVM:




                  Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt   KVM
                                Upstream     Mudanças no kernel
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                               Linux-based virt   KVM
                                     Upstream     Mudanças no kernel
                                    Conclusão


KVM
Kernel-based Virtual Machine


        Full-virtualization
        Precisa de suporte na CPU
        Aproveita:
              scheduler
              proteção entre processos; permissões
              gerenciamento de energia
              drivers
              gerenciamento de memória
        Context switches a menos
        Kernel: virtualização da CPU, exposta via /dev/kvm
        Userspace (qemu modificado): I/O, UI, política

                           Eduardo Habkost        Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt   KVM
                                Upstream     Mudanças no kernel
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt   KVM
                            Upstream     Mudanças no kernel
                           Conclusão


Mudanças no kernel




     KVM
     lguest: simples, paravirtualização
     paravirt_ops
     Unificação x86
     VirtIO




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                       Linux-based virt   KVM
                             Upstream     Mudanças no kernel
                            Conclusão


paravirt_ops


     Paravirtualização
     Antes: recompilação do kernel do guest para suportar
     paravirt
     Agora: mesma imagem do kernel, vários guests
     Truques para substituir código on-the-fly (parecido com
     SMP alternatives)
     Início: 2.6.20 (i386), lguest
     Hoje: x86 (32 e 64-bits), ia64
     Usuários hoje: lguest, VMI, Xen, KVM (paravirt. drivers)



                      Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt   KVM
                           Upstream     Mudanças no kernel
                          Conclusão


Unificação x86



     i386, x86_64 -> x86
     Muito código parecido e duplicado
     Muito código i386 usado silenciosamente em x86_64: fácil
     de cometer erros
     Features novas precisavam ser “reimplementadas” (ex.:
     paravirt_ops)
     Ainda existem arquivos *_32.c e *_64.c a unificar




                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                            Linux-based virt   KVM
                                  Upstream     Mudanças no kernel
                                 Conclusão


VirtIO



         Padrão de-facto para dispositivos virtuais
         ABI guest ↔ host
         API para drivers
         Dispositivos aparecem como um dispositivo PCI
         Drivers “comuns” (virtio-net, virtio-blk, etc.)
         “A” Solução de paravirtualized drivers para o KVM
         Também existe esforço para suportar no Xen




                          Eduardo Habkost      Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt
                                Upstream
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Trabalhando upstream



     Enviar seu código upstream dá trabalho
     O kernel é um alvo móvel
     Mas vale a pena. Senão você vai ter que escolher:
         Fica preso a uma versão pré-histórica do kernel; ou
         Tem ainda mais trabalho, podendo ser tarde demais
     O Xen é um bom exemplo didático




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Trabalhando upstream



     Enviar seu código upstream dá trabalho
     O kernel é um alvo móvel
     Mas vale a pena. Senão você vai ter que escolher:
         Fica preso a uma versão pré-histórica do kernel; ou
         Tem ainda mais trabalho, podendo ser tarde demais
     O Xen é um bom exemplo didático




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Trabalhando upstream



     Enviar seu código upstream dá trabalho
     O kernel é um alvo móvel
     Mas vale a pena. Senão você vai ter que escolher:
         Fica preso a uma versão pré-histórica do kernel; ou
         Tem ainda mais trabalho, podendo ser tarde demais
     O Xen é um bom exemplo didático




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Trabalhando upstream



     Enviar seu código upstream dá trabalho
     O kernel é um alvo móvel
     Mas vale a pena. Senão você vai ter que escolher:
         Fica preso a uma versão pré-histórica do kernel; ou
         Tem ainda mais trabalho, podendo ser tarde demais
     O Xen é um bom exemplo didático




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Trabalhando upstream



     Enviar seu código upstream dá trabalho
     O kernel é um alvo móvel
     Mas vale a pena. Senão você vai ter que escolher:
         Fica preso a uma versão pré-histórica do kernel; ou
         Tem ainda mais trabalho, podendo ser tarde demais
     O Xen é um bom exemplo didático




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Trabalhando upstream



     Enviar seu código upstream dá trabalho
     O kernel é um alvo móvel
     Mas vale a pena. Senão você vai ter que escolher:
         Fica preso a uma versão pré-histórica do kernel; ou
         Tem ainda mais trabalho, podendo ser tarde demais
     O Xen é um bom exemplo didático




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  Árvore do kernel separada com suporte ao Xen, 2.6.18




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  Não boa o suficiente para envio upstream




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                  Linux-based virt
                        Upstream
                       Conclusão


Uma história sobre trabalho upstream
  “E daí?”




                 Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                         Linux-based virt
                               Upstream
                              Conclusão


Uma história sobre trabalho upstream
  Novo kernel: 2.6.19




                        Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream

  Algumas distribuições adaptam o código para o 2.6.19




  É o chamado forward-port


                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  XenSource continua usando o 2.6.18...




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                         Linux-based virt
                               Upstream
                              Conclusão


Uma história sobre trabalho upstream
  Novo kernel: 2.6.20




                        Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                       Linux-based virt
                             Upstream
                            Conclusão


Uma história sobre trabalho upstream
  Distribuições fazem forward-port para o 2.6.20




  Um pouco mais complicado: paravirt_ops começa a entrar

                      Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  XenSource continua usando o 2.6.18...




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                         Linux-based virt
                               Upstream
                              Conclusão


Uma história sobre trabalho upstream
  Novo kernel: 2.6.21




                        Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  2.6.21: Forward-port realmente complicado




  paravirt_ops usado em muitos pontos do código também
  modificados pelo patch do Xen
                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                         Linux-based virt
                               Upstream
                              Conclusão


Uma história sobre trabalho upstream
  Novo kernel: 2.6.22




                        Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  Quatro versões do kernel sem Xen oficial




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream
  E a XenSource ainda no kernel 2.6.18




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão


Uma história sobre trabalho upstream
  Nem todo mundo chega a portar para 2.6.22




                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                  Linux-based virt
                        Upstream
                       Conclusão


Uma história sobre trabalho upstream
  2.6.23




                 Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Uma história sobre trabalho upstream

  Forward-port mostra-se um trabalho sem fim




  Tem que ter alguma outra solução

                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão


Uma história sobre trabalho upstream
  E a XenSource continua tendo que manter sua árvore do
  2.6.18




  Com correções de bugs, segurança, suporte a hardware
                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                       Linux-based virt
                             Upstream
                            Conclusão


Nem tudo está perdido
  A partir do 2.6.26, algum suporte para o Xen entrou




                      Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                       Linux-based virt
                             Upstream
                            Conclusão


Nem tudo está perdido

  2.6.27 está um pouco melhor




  Mas ainda falta muita coisa

                      Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão


Nem tudo está perdido




     O trabalho para incluir todas as features do Xen do 2.6.18
     é grande
     Ninguém sabe quando isso vai estar pronto...
     “Emulando” o hypervisor Xen usando o KVM: Xenner




                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão


Nem tudo está perdido




     O trabalho para incluir todas as features do Xen do 2.6.18
     é grande
     Ninguém sabe quando isso vai estar pronto...
     “Emulando” o hypervisor Xen usando o KVM: Xenner




                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão


Nem tudo está perdido




     O trabalho para incluir todas as features do Xen do 2.6.18
     é grande
     Ninguém sabe quando isso vai estar pronto...
     “Emulando” o hypervisor Xen usando o KVM: Xenner




                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão


Nem tudo está perdido




     O trabalho para incluir todas as features do Xen do 2.6.18
     é grande
     Ninguém sabe quando isso vai estar pronto...
     “Emulando” o hypervisor Xen usando o KVM: Xenner




                    Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                    Linux-based virt
                          Upstream
                         Conclusão


Xenner




    Usa /dev/kvm
    Excelente candidato para usar um futuro “kvm-lite”
    Utiliza parte do código userspace Xen
    Mesmo que o Xen “tradicional” fique pra trás, a ABI pode
    demorar a morrer




                   Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                          Linux-based virt
                                Upstream
                               Conclusão


Conteúdo


  1   Introdução
         Paravirtualization, full-virtualization, etc.

  2   Linux-based virtualization
         KVM
         Mudanças no kernel

  3   Trabalhando upstream

  4   Conclusão



                         Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Futuro


     Mais paravirtualização
     Mais performance
         zero-copy I/O (disco, rede)
         PCI passthrough
         Video: SPICE
     Integração com o qemu upstream
     kvm-lite?
     O que vai acontecer com o Xen?




                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                            Linux-based virt
                                  Upstream
                                 Conclusão


Olhando para cima
O mundo não é só feito de kernel




         libvirt: API pra gerenciar VMs (Xen, KVM, outros)
         virt-manager: GUI
         oVirt: interface de gerenciamento




                           Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
                      Linux-based virt
                            Upstream
                           Conclusão


Referências

     Esta apresentação:
     http://raisama.net/talks/virt-2008/
     “virtio: towards a de-facto standard for virtual I/O devices”,
     by Rusty Russel
     KernelNewbies Virtualization Wiki:
     http://virt.kernelnewbies.org/
     KVM: http://kvm.qumranet.com/
     lguest: http://lguest.ozlabs.org/
     Xenner:
     http://kraxel.fedorapeople.org/xenner/
     Unificação x86:
     http://www.glommer.net/blogs/?p=265

                     Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
 Linux-based virt
       Upstream
      Conclusão




         Perguntas?




Eduardo Habkost     Virtualização e kernel, vistos por dentro
Introdução
 Linux-based virt
       Upstream
      Conclusão




           Obrigado




Eduardo Habkost     Virtualização e kernel, vistos por dentro

Mais conteúdo relacionado

PDF
Virtualização e Kernel, vistos por dentro
PPT
PPT
Virtualização com Citrix XENSERVER
ODP
Virtualização com Xen
PPTX
Introduction to the citrix xenserver
PDF
Apostila - Tutorial Citrix XenServer 6
PPTX
Implementando Nuvens Privadas com Citrix XenServer 6
PDF
Apresentação docker
Virtualização e Kernel, vistos por dentro
Virtualização com Citrix XENSERVER
Virtualização com Xen
Introduction to the citrix xenserver
Apostila - Tutorial Citrix XenServer 6
Implementando Nuvens Privadas com Citrix XenServer 6
Apresentação docker

Mais procurados (20)

PPT
Virtualiza%e7%e3o(3)
PDF
oVirt - gerenciamento de máquinas virtuais com código aberto
PDF
Comparação de Desempenho entre máquinas virtuais e containers - por Bruno Rod...
PDF
Virtualização: Um comparativo entre Xen e VMware
PDF
Xen Server X Vm Ware
PDF
Virtualização de servidores com tecnologia Linux
PPTX
ITCamp - Novidades do windows server 2012
PPTX
Introdução a Containers Docker
PDF
Virtualização a Nível de Sistema Operacional e sua Proposta de Segurança
PDF
Open Virtualization - Virtualização em Software Livre
PDF
Bem vindo ao Docker
PDF
Introdução à plataforma Docker
PDF
O que é docker?
PPT
TDC2016SP - Trilha Embarcados
PPTX
Consolidação Mic&Mac Soluções em TI
PDF
Treinamento Docker Básico
PDF
Apresentacao docker
PDF
Verdades que não querem te contar sobre Docker
PDF
Artigo
ODP
Docker: uma visão geral e exemplos de uso
Virtualiza%e7%e3o(3)
oVirt - gerenciamento de máquinas virtuais com código aberto
Comparação de Desempenho entre máquinas virtuais e containers - por Bruno Rod...
Virtualização: Um comparativo entre Xen e VMware
Xen Server X Vm Ware
Virtualização de servidores com tecnologia Linux
ITCamp - Novidades do windows server 2012
Introdução a Containers Docker
Virtualização a Nível de Sistema Operacional e sua Proposta de Segurança
Open Virtualization - Virtualização em Software Livre
Bem vindo ao Docker
Introdução à plataforma Docker
O que é docker?
TDC2016SP - Trilha Embarcados
Consolidação Mic&Mac Soluções em TI
Treinamento Docker Básico
Apresentacao docker
Verdades que não querem te contar sobre Docker
Artigo
Docker: uma visão geral e exemplos de uso
Anúncio

Destaque (8)

PDF
Apresentação sobre o kernel Linux v2.0
PDF
Programação para Kernel Linux - Parte 2
PDF
Programação para Kernel Linux - Parte 1
PPT
Aula 2 - A Psicologia do Comportamento Organizacional
PPT
75257617 etica-e-psicologia-organizacional
PDF
Kernel do Linux
PDF
Psicología del Aprendizaje. UD5: La teoría socio-cognitiva
ODP
Aspectos do kernel Linux e Instalação
Apresentação sobre o kernel Linux v2.0
Programação para Kernel Linux - Parte 2
Programação para Kernel Linux - Parte 1
Aula 2 - A Psicologia do Comportamento Organizacional
75257617 etica-e-psicologia-organizacional
Kernel do Linux
Psicología del Aprendizaje. UD5: La teoría socio-cognitiva
Aspectos do kernel Linux e Instalação
Anúncio

Semelhante a Virtualização e kernel, vistos por dentro - Eduardo Habkost (20)

PDF
Boteco Xen
PDF
Palestra xen-flisol2011
PDF
Virtualização usando KVM e LXC
PDF
Virtualização de Máquinas: Uma experiência baseada em ferramentas livres - Ca...
PDF
PDF
Linux - Sobre a Disciplina + Introdução ao Linux
PDF
Virtualizacao
PDF
Virtualização em Software Livre
PDF
Palestra thiago cavacante virtualização
ODP
Apresentação Monografia Virtualização
PDF
Consegi 2011: Ganeti + Puppet
PPT
Planejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
PPT
Virtualização
PPT
Virtualização
PPTX
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
PPTX
Aula 03 informática aplicada - virtualização
PDF
SO-II-2016-1-02-Virtualizacao
PPS
Beneficios da virtualização
PDF
Virtualizacao e o uso de Software Livre
PDF
(01) intro+inicializacao+boot loader+fhs
Boteco Xen
Palestra xen-flisol2011
Virtualização usando KVM e LXC
Virtualização de Máquinas: Uma experiência baseada em ferramentas livres - Ca...
Linux - Sobre a Disciplina + Introdução ao Linux
Virtualizacao
Virtualização em Software Livre
Palestra thiago cavacante virtualização
Apresentação Monografia Virtualização
Consegi 2011: Ganeti + Puppet
Planejamento e Otimização de Infra-estrutura de TI por Bruno Domingues
Virtualização
Virtualização
Palestra Teched Brasil 2010 - Sessão INT301 - Linux no Hyper-V
Aula 03 informática aplicada - virtualização
SO-II-2016-1-02-Virtualizacao
Beneficios da virtualização
Virtualizacao e o uso de Software Livre
(01) intro+inicializacao+boot loader+fhs

Mais de Tchelinux (20)

PDF
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
PDF
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
PDF
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
PDF
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
PDF
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
PDF
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
PPTX
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
PDF
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
PDF
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
PDF
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
PDF
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
PDF
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
PDF
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
ODP
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
PDF
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
PDF
Com que ônibus eu vou? Uma gentil introdução ao Python.
PDF
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
PDF
Não deixe para testar depois o que você pode testar antes.
PDF
Desenvolvendo jogos com pygame
PDF
Essa câmera faz fotos muito boas, né?
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Com que ônibus eu vou? Uma gentil introdução ao Python.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
Não deixe para testar depois o que você pode testar antes.
Desenvolvendo jogos com pygame
Essa câmera faz fotos muito boas, né?

Último (19)

PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Processos na gestão de transportes, TM100 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
COBITxITIL-Entenda as diferença em uso governança TI
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Aula04-Academia Heri- Tecnologia Geral 2025
Processos na gestão de transportes, TM100 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Apple Pippin Uma breve introdução. - David Glotz
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula 18 - Manipulacao De Arquivos python
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx

Virtualização e kernel, vistos por dentro - Eduardo Habkost

  • 1. Virtualização e kernel, vistos por dentro Eduardo Habkost ehabkost@redhat.com Tchelinux Porto Alegre 2008 Nível: Avançado Escopo: Código e processo de desenvolvimento do kernel Pré-requisitos: Noções básicas sobre o kernel Linux e seu processo de desenvolvimento
  • 2. Introdução Linux-based virt Upstream Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 3. Introdução Linux-based virt Paravirtualization, full-virtualization, etc. Upstream Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 4. Introdução Linux-based virt Paravirtualization, full-virtualization, etc. Upstream Conclusão Full-virtualization Parece de verdade! Parece uma máquina de verdade VMWare, Qemu (com ou sem kqemu), Bochs, outros Ou com ajuda do hardware (AMD-V, Intel-VT) Suportado pelo Xen No Linux: KVM Performance ruim para I/O Fácil para o hardware = fácil para o software Operação de I/O → pula para o host Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 5. Introdução Linux-based virt Paravirtualization, full-virtualization, etc. Upstream Conclusão Paravirtualização “Eu sei que é de mentira” Kernel do guest modificado Xen lguest VMI (VMWare) User-mode Linux (por que não?) Comunicação com o hypervisor através de hypercalls Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 6. Introdução Linux-based virt Paravirtualization, full-virtualization, etc. Upstream Conclusão Paravirtualized drivers Um agente infiltrado Ainda parece máquina de verdade Mas com um hardware “meio diferente” Exemplo: “device driver disk” do VMWare Para o SO, é só um hardware diferente que precisa de um driver O driver conversa com o hypervisor O melhor dos dois mundos Exemplos: Xenbus (Xen), VirtIO (genérico), drivers do VMWare Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 7. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 8. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Linux-based virtualization Bare metal: Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 9. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Linux-based virtualization Xen (teoria): Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 10. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Linux-based virtualization Xen (prática): Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 11. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Linux-based virtualization KVM: Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 12. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 13. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão KVM Kernel-based Virtual Machine Full-virtualization Precisa de suporte na CPU Aproveita: scheduler proteção entre processos; permissões gerenciamento de energia drivers gerenciamento de memória Context switches a menos Kernel: virtualização da CPU, exposta via /dev/kvm Userspace (qemu modificado): I/O, UI, política Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 14. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 15. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Mudanças no kernel KVM lguest: simples, paravirtualização paravirt_ops Unificação x86 VirtIO Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 16. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão paravirt_ops Paravirtualização Antes: recompilação do kernel do guest para suportar paravirt Agora: mesma imagem do kernel, vários guests Truques para substituir código on-the-fly (parecido com SMP alternatives) Início: 2.6.20 (i386), lguest Hoje: x86 (32 e 64-bits), ia64 Usuários hoje: lguest, VMI, Xen, KVM (paravirt. drivers) Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 17. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão Unificação x86 i386, x86_64 -> x86 Muito código parecido e duplicado Muito código i386 usado silenciosamente em x86_64: fácil de cometer erros Features novas precisavam ser “reimplementadas” (ex.: paravirt_ops) Ainda existem arquivos *_32.c e *_64.c a unificar Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 18. Introdução Linux-based virt KVM Upstream Mudanças no kernel Conclusão VirtIO Padrão de-facto para dispositivos virtuais ABI guest ↔ host API para drivers Dispositivos aparecem como um dispositivo PCI Drivers “comuns” (virtio-net, virtio-blk, etc.) “A” Solução de paravirtualized drivers para o KVM Também existe esforço para suportar no Xen Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 19. Introdução Linux-based virt Upstream Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 20. Introdução Linux-based virt Upstream Conclusão Trabalhando upstream Enviar seu código upstream dá trabalho O kernel é um alvo móvel Mas vale a pena. Senão você vai ter que escolher: Fica preso a uma versão pré-histórica do kernel; ou Tem ainda mais trabalho, podendo ser tarde demais O Xen é um bom exemplo didático Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 21. Introdução Linux-based virt Upstream Conclusão Trabalhando upstream Enviar seu código upstream dá trabalho O kernel é um alvo móvel Mas vale a pena. Senão você vai ter que escolher: Fica preso a uma versão pré-histórica do kernel; ou Tem ainda mais trabalho, podendo ser tarde demais O Xen é um bom exemplo didático Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 22. Introdução Linux-based virt Upstream Conclusão Trabalhando upstream Enviar seu código upstream dá trabalho O kernel é um alvo móvel Mas vale a pena. Senão você vai ter que escolher: Fica preso a uma versão pré-histórica do kernel; ou Tem ainda mais trabalho, podendo ser tarde demais O Xen é um bom exemplo didático Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 23. Introdução Linux-based virt Upstream Conclusão Trabalhando upstream Enviar seu código upstream dá trabalho O kernel é um alvo móvel Mas vale a pena. Senão você vai ter que escolher: Fica preso a uma versão pré-histórica do kernel; ou Tem ainda mais trabalho, podendo ser tarde demais O Xen é um bom exemplo didático Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 24. Introdução Linux-based virt Upstream Conclusão Trabalhando upstream Enviar seu código upstream dá trabalho O kernel é um alvo móvel Mas vale a pena. Senão você vai ter que escolher: Fica preso a uma versão pré-histórica do kernel; ou Tem ainda mais trabalho, podendo ser tarde demais O Xen é um bom exemplo didático Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 25. Introdução Linux-based virt Upstream Conclusão Trabalhando upstream Enviar seu código upstream dá trabalho O kernel é um alvo móvel Mas vale a pena. Senão você vai ter que escolher: Fica preso a uma versão pré-histórica do kernel; ou Tem ainda mais trabalho, podendo ser tarde demais O Xen é um bom exemplo didático Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 26. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Árvore do kernel separada com suporte ao Xen, 2.6.18 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 27. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Não boa o suficiente para envio upstream Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 28. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream “E daí?” Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 29. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Novo kernel: 2.6.19 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 30. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Algumas distribuições adaptam o código para o 2.6.19 É o chamado forward-port Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 31. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream XenSource continua usando o 2.6.18... Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 32. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Novo kernel: 2.6.20 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 33. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Distribuições fazem forward-port para o 2.6.20 Um pouco mais complicado: paravirt_ops começa a entrar Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 34. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream XenSource continua usando o 2.6.18... Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 35. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Novo kernel: 2.6.21 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 36. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream 2.6.21: Forward-port realmente complicado paravirt_ops usado em muitos pontos do código também modificados pelo patch do Xen Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 37. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Novo kernel: 2.6.22 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 38. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Quatro versões do kernel sem Xen oficial Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 39. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream E a XenSource ainda no kernel 2.6.18 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 40. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Nem todo mundo chega a portar para 2.6.22 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 41. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream 2.6.23 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 42. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream Forward-port mostra-se um trabalho sem fim Tem que ter alguma outra solução Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 43. Introdução Linux-based virt Upstream Conclusão Uma história sobre trabalho upstream E a XenSource continua tendo que manter sua árvore do 2.6.18 Com correções de bugs, segurança, suporte a hardware Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 44. Introdução Linux-based virt Upstream Conclusão Nem tudo está perdido A partir do 2.6.26, algum suporte para o Xen entrou Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 45. Introdução Linux-based virt Upstream Conclusão Nem tudo está perdido 2.6.27 está um pouco melhor Mas ainda falta muita coisa Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 46. Introdução Linux-based virt Upstream Conclusão Nem tudo está perdido O trabalho para incluir todas as features do Xen do 2.6.18 é grande Ninguém sabe quando isso vai estar pronto... “Emulando” o hypervisor Xen usando o KVM: Xenner Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 47. Introdução Linux-based virt Upstream Conclusão Nem tudo está perdido O trabalho para incluir todas as features do Xen do 2.6.18 é grande Ninguém sabe quando isso vai estar pronto... “Emulando” o hypervisor Xen usando o KVM: Xenner Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 48. Introdução Linux-based virt Upstream Conclusão Nem tudo está perdido O trabalho para incluir todas as features do Xen do 2.6.18 é grande Ninguém sabe quando isso vai estar pronto... “Emulando” o hypervisor Xen usando o KVM: Xenner Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 49. Introdução Linux-based virt Upstream Conclusão Nem tudo está perdido O trabalho para incluir todas as features do Xen do 2.6.18 é grande Ninguém sabe quando isso vai estar pronto... “Emulando” o hypervisor Xen usando o KVM: Xenner Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 50. Introdução Linux-based virt Upstream Conclusão Xenner Usa /dev/kvm Excelente candidato para usar um futuro “kvm-lite” Utiliza parte do código userspace Xen Mesmo que o Xen “tradicional” fique pra trás, a ABI pode demorar a morrer Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 51. Introdução Linux-based virt Upstream Conclusão Conteúdo 1 Introdução Paravirtualization, full-virtualization, etc. 2 Linux-based virtualization KVM Mudanças no kernel 3 Trabalhando upstream 4 Conclusão Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 52. Introdução Linux-based virt Upstream Conclusão Futuro Mais paravirtualização Mais performance zero-copy I/O (disco, rede) PCI passthrough Video: SPICE Integração com o qemu upstream kvm-lite? O que vai acontecer com o Xen? Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 53. Introdução Linux-based virt Upstream Conclusão Olhando para cima O mundo não é só feito de kernel libvirt: API pra gerenciar VMs (Xen, KVM, outros) virt-manager: GUI oVirt: interface de gerenciamento Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 54. Introdução Linux-based virt Upstream Conclusão Referências Esta apresentação: http://raisama.net/talks/virt-2008/ “virtio: towards a de-facto standard for virtual I/O devices”, by Rusty Russel KernelNewbies Virtualization Wiki: http://virt.kernelnewbies.org/ KVM: http://kvm.qumranet.com/ lguest: http://lguest.ozlabs.org/ Xenner: http://kraxel.fedorapeople.org/xenner/ Unificação x86: http://www.glommer.net/blogs/?p=265 Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 55. Introdução Linux-based virt Upstream Conclusão Perguntas? Eduardo Habkost Virtualização e kernel, vistos por dentro
  • 56. Introdução Linux-based virt Upstream Conclusão Obrigado Eduardo Habkost Virtualização e kernel, vistos por dentro