Virtualização e kernel, vistos por dentro

                    Eduardo Habkost
                 ehabkost@redhat.com


    ...
Introdução
                          Linux-based virt
                                Upstream
                           ...
Introdução
                          Linux-based virt
                                             Paravirtualization, ful...
Introdução
                          Linux-based virt
                                             Paravirtualization, ful...
Introdução
                             Linux-based virt
                                                Paravirtualizatio...
Introdução
                        Linux-based virt
                                           Paravirtualization, full-vi...
Introdução
                          Linux-based virt   KVM
                                Upstream     Mudanças no kerne...
Introdução
                   Linux-based virt   KVM
                         Upstream     Mudanças no kernel
            ...
Introdução
                   Linux-based virt   KVM
                         Upstream     Mudanças no kernel
            ...
Introdução
                    Linux-based virt   KVM
                          Upstream     Mudanças no kernel
          ...
Introdução
                   Linux-based virt   KVM
                         Upstream     Mudanças no kernel
            ...
Introdução
                          Linux-based virt   KVM
                                Upstream     Mudanças no kerne...
Introdução
                               Linux-based virt   KVM
                                     Upstream     Mudança...
Introdução
                          Linux-based virt   KVM
                                Upstream     Mudanças no kerne...
Introdução
                      Linux-based virt   KVM
                            Upstream     Mudanças no kernel
      ...
Introdução
                       Linux-based virt   KVM
                             Upstream     Mudanças no kernel
    ...
Introdução
                     Linux-based virt   KVM
                           Upstream     Mudanças no kernel
        ...
Introdução
                            Linux-based virt   KVM
                                  Upstream     Mudanças no k...
Introdução
                          Linux-based virt
                                Upstream
                           ...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                  Linux-based virt
                        Upstream
                       Conclusão


Uma hist...
Introdução
                         Linux-based virt
                               Upstream
                             ...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                         Linux-based virt
                               Upstream
                             ...
Introdução
                       Linux-based virt
                             Upstream
                            Concl...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                         Linux-based virt
                               Upstream
                             ...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                         Linux-based virt
                               Upstream
                             ...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão

...
Introdução
                  Linux-based virt
                        Upstream
                       Conclusão


Uma hist...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão

...
Introdução
                       Linux-based virt
                             Upstream
                            Concl...
Introdução
                       Linux-based virt
                             Upstream
                            Concl...
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão

...
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão

...
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão

...
Introdução
                     Linux-based virt
                           Upstream
                          Conclusão

...
Introdução
                    Linux-based virt
                          Upstream
                         Conclusão


Xe...
Introdução
                          Linux-based virt
                                Upstream
                           ...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
                            Linux-based virt
                                  Upstream
                       ...
Introdução
                      Linux-based virt
                            Upstream
                           Conclusã...
Introdução
 Linux-based virt
       Upstream
      Conclusão




         Perguntas?




Eduardo Habkost     Virtualização...
Introdução
 Linux-based virt
       Upstream
      Conclusão




           Obrigado




Eduardo Habkost     Virtualização...
Upcoming SlideShare
Loading in …5
×

Virtualização e Kernel, vistos por dentro

2,735
-1

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,735
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
141
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Virtualização e Kernel, vistos por dentro

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 55. Introdução Linux-based virt Upstream Conclusão Perguntas? Eduardo Habkost Virtualização e kernel, vistos por dentro
  56. 56. Introdução Linux-based virt Upstream Conclusão Obrigado Eduardo Habkost Virtualização e kernel, vistos por dentro

×