Virtualização e Kernel, vistos por dentro

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Virtualização e Kernel, vistos por dentro - Presentation Transcript

    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

    + ehabkostehabkost, 12 months ago

    custom

    1115 views, 1 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1115
      • 1115 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 18
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories