RSS
Blog
Imagem contando sobre a parte 5 da série de postagens do blog Xen por Mohsen Mostafa Jokar

Virtualização e computação em nuvem Xen # 05: O projeto Xen, Unikernels e o futuro

29 de outubro de 2020 - por Mohsen Mostafa Jokar

Os artigos anteriores desta série introduziram a virtualização, descreveram como o Xen a alcança por meio de sua arquitetura e recursos principais e descreveram outras plataformas com as quais o Xen interage. Este artigo encerra a série descrevendo alguns avanços empolgantes na virtualização e como o Xen os suporta.

Como vimos, um hipervisor carrega uma VM que contém um sistema operacional completo, como GNU / Linux, Windows ou BSD. A VM deve ser complexa e grande porque é essencialmente um sistema de computador completo. Por padrão, o sistema operacional em uma VM oferece suporte a uma ampla variedade de hardware de muitos fornecedores com design e drivers diferentes. Esses sistemas operacionais regulares também são multiusuário, multiprocessos e multiuso, aumentando seu tamanho.

Para executar um aplicativo sem a grande quantidade de software extra que ele não precisa, o conceito de um unikernel foi desenvolvido. Um unikernel tem um único propósito (geralmente) e é criado para ser executado em uma VM ou contêiner em vez de diretamente no hardware, portanto, é livre da complexidade dos drivers de dispositivo. Um unikernel não é multiusuário ou multiprocesso, mas apenas cria um único thread de código que executa um aplicativo. Ele pode ser compilado apenas com as bibliotecas de que precisa. Portanto, um unikernel é pequeno, leve e rápido de carregar e executar. Mas funciona apenas em uma VM ou contêiner.

Mascote Xen Panda

Em um sentido muito amplo, um unikernel reproduz o ambiente de execução simples dos mainframes na era anterior aos sistemas operacionais multiusuário. Também é uma reminiscência de dois projetos do final dos anos 1990, do MIT Exokernel e Nêmesis, que foi desenvolvido pela Citrix junto com várias universidades.

Arquitetura básica de um unikernel

Um unikernel gera um ambiente de tempo de execução único que carece de um shell, não pode gerar subprocessos e não pode criar vários threads. Os desenvolvedores selecionam o conjunto mínimo de bibliotecas necessárias para a execução de seus aplicativos. Essas bibliotecas são então compiladas com o aplicativo e fazem uma imagem executável (o unikernel) que pode ser executada diretamente em um hipervisor sem um sistema operacional completo, como GNU / Linux ou Windows. O unikernel é considerado uma VM do ponto de vista do hipervisor. Você também pode pensar em um unikernel como um puro tempo de execução para linguagens de programação. Unikernels existem para Ocaml, Erlang, Java, Haskell, Ferrugem, Rubi, Go, outras línguas.

O Projeto Xen é um líder no nascimento de Unikernels. Essa tecnologia talvez tenha se tornado o núcleo de uma nova forma de computação em nuvem, onde um hipervisor pode oferecer suporte a muitas VMs.

A Figura 7 mostra os componentes necessários para executar um unikernel.

Figura 7. Arquitetura para rodar um unikernel
Figura 7. Arquitetura para rodar um unikernel

Expliquei anteriormente que a vantagem dos contêineres é sua velocidade e tamanho pequeno. Esses recursos eram motivos notáveis ​​para o uso de contêineres antes do advento dos unikernels. Na verdade, os originais tendem a superar os contêineres em velocidade e tamanho. Eles também têm excelente segurança porque não contêm componentes extras onde vulnerabilidades podem se esconder. Os tempos de inicialização são quase instantâneos.

Dos recursos listados, a segurança é o mais importante. Os unikernels, devido à falta de funções que um sistema operacional padrão oferece, têm uma superfície de ataque menor. Não há shells, utilitários e nenhum outro programa que um invasor possa explorar para obter acesso ao sistema.

A maioria dos unikernels compila em aplicativos, cada um dos quais tem uma pegada única devido à sua combinação única de código e funções de biblioteca. Portanto, mesmo se um intruso encontrar um vetor de ataque em um unikernel, ele não funcionará com outros unikernels.

A Figura 8 mostra os componentes de um padrão Kernel do Linux. Um unikernel remove as camadas tradicionais do sistema operacional, deixando apenas as bibliotecas de sistema mínimas necessárias, o tempo de execução da linguagem de programação e o próprio código do aplicativo.

Figura 8. Componentes típicos do sistema operacional
Figura 8. Componentes típicos do sistema operacional

O Projeto Xen como líder fornece vários recursos para os amantes do Unikernel. Vou examinar alguns deles aqui.

Como dito antes, os unikernels se concentram em embalagens pequenas e rápidas. Na Paravirtualização (PV), o Projeto Xen pode dar acesso à camada de hardware subjacente para Unikernels. Mas o hipervisor ainda contém os drivers reais para o hardware, então eles não precisam ser reimplementados nos unikernels. No entanto, os unikernels são livres para usar o modo HVM e implementar drivers de hardware reais.

A segurança está no DNA do hipervisor do Projeto Xen e significa uma superfície de ataque menor. Este recurso está de acordo com Unikernels.

Desempenho e segurança são muito importantes para o Projeto Xen e para os unikernels. A estrutura bare-metal do hipervisor Xen fornece uma boa plataforma para muitas VMs unikernel em um único host.

Alguns projetos unikernel incluem:

Unikraft: um novo processo de desenvolvimento para unikernels

Com todos os bons recursos oferecidos pelos originais, eles têm algumas desvantagens. Unikernels força os desenvolvedores a portar aplicativos manualmente para o sistema operacional minimalista subjacente e customizar a lista de bibliotecas usadas. Pense em um grande projeto como apache, MariaDBou Suricata-IDS. Como você pode imaginar, isso requer muito esforço dos especialistas e uma quantidade considerável de tempo. Qual é a solução? Esses desenvolvedores precisam sacrificar o alto desempenho dos originais e se ater a um sistema operacional padrão?

O objetivo do Unikraft projeto é resolver este problema e fornecer uma base de código unikernel altamente configurável. Outro objetivo é incentivar os desenvolvedores a fornecer seu código em bibliotecas, em vez de trabalhar em projetos independentes. A Unikraft espera criar uma comunidade em torno de sistemas operacionais minimalistas e fornecer uma ferramenta que possa construir automaticamente esse tipo de sistema operacional.

Já, um pequeno kernel do sistema operacional chamado Mini-OS está incluído no hipervisor Xen. É a raiz de muitos projetos de unikernel porque possui os drivers de kernel para o hipervisor Xen. Mas os objetivos do projeto Unikraft diferem daqueles do Mini-OS.

Unikraft está em um estágio inicial. De acordo com NEC Lab, os seus recursos previstos são:

  • Inicialização rápida e tempo de migração
  • Baixo consumo de memória
  • Segurança forte
  • Alta densidade
  • Alto desempenho
  • Ferramentas e processos amigáveis ​​ao desenvolvedor
  • Capacidade de execução em todas as principais plataformas

No momento em que este artigo foi escrito, os projetos Unikraft são:

LightVM

LightVM é uma solução de virtualização baseada em Xen que oferece tempos de inicialização rápidos para VMs, mesmo quando hospedando um grande número delas. O LightVM faz isso substituindo o banco de dados de configuração do Xenstore por uma nova solução distribuída chamada NoXS (sem Xenstore). NoXS reduz a velocidade de acesso ao banco de dados, fornecendo uma página compartilhada para cada dispositivo que contém todas as informações necessárias para a inicialização do dispositivo. O LightVM também usa a nova pilha de ferramentas Chaos, que realiza operações como instanciação, migração, salvamento e restauração. Atualmente, o LightVM depende do kernel Linux para Dom0, mas para DomU pode usar convidados baseados em Linux e Mini-OS. O LightVM pode inicializar uma VM em 2.3 ms, que é duas vezes mais rápido que o Docker. Com LightVM você pode dizer: “Minha VM é mais leve e mais segura que seu contêiner. "

MirageOS

MirageOS é uma biblioteca que fornece funcionalidade de sistema operacional. É usado para criar Unikernels que fornecem aplicativos de rede seguros e de alto desempenho para computação em nuvem e plataformas móveis. A principal linguagem de programação do MirageOS é Ocaml, uma linguagem de programação de alto nível com recursos opcionais funcionais e orientados a objetos, capaz de criar programas seguros e de alto desempenho. Você pode desenvolver seu programa em seu PC por Ocaml e então compilá-lo em um programa totalmente independente para Unikernel. Existem agora mais de 100 bibliotecas MirageOS, e MirageOS oferece várias implementações de baixo nível dos protocolos mais comuns, como TCP / IP, UDP, IPV6, UDPV6, ICMP, DNS, SSH, VNC, HTTP, XMPP e os drivers de dispositivo Xen. MirageOS ajuda você a executar seus servidores de forma mais econômica, segura e rápida em qualquer nuvem baseada em Xen.

Outros aspectos do Projeto Xen e seu futuro

O Projeto Xen está sempre trabalhando para oferecer suporte a novos hardwares e tecnologias. Alguns de seus esforços atuais têm como objetivo AMD EPYC CPUs, a família de processadores Hygon Dhyana 18h, o Framboesa Pi4e AVX512 da Intel.

Se você acredita que o código aberto mudou o mundo do software, você deve esperar o que RISC-V, pronunciado “Risk-Five”, poderia servir para o mundo dos microprocessadores. O RISC-V é baseado no princípio RISC (Reduced Instruction Set Computer). É muito cedo para julgar o futuro da RISC-V. No momento em que este artigo foi escrito, o RISC-V tinha alguns problemas logísticos, incluindo a falta de um processo de certificação, nenhuma padronização para famílias de peças ou embalagens e nenhum plug-and-play em qualquer ponto das pilhas de hardware ou software. Alguns sistemas operacionais, incluindo GNU / Linux e FreeBSD, estão sendo portados para a arquitetura RISC-V. O Projeto Xen também está trabalhando em uma porta.

As áreas incorporadas e automotivas também fornecem boas notícias sobre o Projeto Xen. Várias empresas, incluindo EPAM, Xilinxe GlobalLogic estão trabalhando no Xen para dispositivos embarcados, a fim de mudar o mundo dos veículos.

Todos os veículos hoje em dia dependem de computadores e eles geralmente controlam a maioria das partes de um carro. Algumas dessas partes são confidenciais e a segurança é uma grande preocupação nessa área. Componentes como controle do motor, direção autônoma, redes, luzes de advertência, visor de velocidade e o tanque de combustível são vitais e devem ser protegidos. 

Hoje em dia, a maioria dos carros usa variantes de Android, mas este sistema operacional não é rápido e seguro o suficiente para essa finalidade. Mais importante, algumas das opções de carro precisam de uma conexão com a Internet, o que abre uma porta para ataques. Se um invasor entrar no computador do carro, ele poderá brincar com a vida do motorista e de outras pessoas.

O Projeto Xen oferece boa segurança e desempenho. Com um computador de carro executando um hipervisor Xen, o sistema operacional do carro pode iniciar em milissegundos e o Xen pode fornecer uma boa segurança por isolamento. Nesses carros, o sistema operacional é executado como um DomU sob o controle do hipervisor Xen. Para obter mais informações sobre este campo, você pode ler “Virtualização automotiva por Xen”No site da empresa EPAM e“Sistemas abertos virtuais: virtualização automotiva mista crítica feita da maneira certa”No site da empresa Arm.

O Projeto Xen atua na área de unikernel, trabalhando no suporte a novas tecnologias e hardware.

Contribuindo para o Xen

Se você deseja trabalhar com o Projeto Xen, junte-se a um ou mais de seus listas de discussão, que são bastante ativos. Você pode enviar as perguntas básicas sobre o hipervisor Xen para xen-users@lists.xenproject.org, e questões sobre seu desenvolvimento para xen-devel@lists.xenproject.org.

Para ajudar a testar e depurar o Projeto Xen, consulte nosso Página de dias de teste do projeto Xen.

Escrevi um livro sobre o Projeto Xen com o nome “Hello Xen Project”. É um código aberto, então qualquer pessoa pode editar e adicionar mais capítulos a ele. Espero que, no futuro, eu possa adicionar mais capítulos a ele também.
 

Leia a postagem anterior

Sobre Mohsen Mostafa Jokar:

Mohsen Mostafa Jokar


Mohsen Mostafa Jokar é administrador Linux e engenheiro de virtualização. Seu interesse em virtualização remonta aos tempos de escola, quando viu o Microsoft Virtual PC pela primeira vez. Ele o instalou em um PC com 256 MB de RAM e o usou para virtualizar o Windows 98 e DOS. Depois disso, Mohsen se interessou pela virtualização e se familiarizou com mais produtos.

Junto com a virtualização, Mohsen se familiarizou com o GNU / Linux. Ele instalou o LindowsOS como sua primeira distro Linux, mais tarde se familiarizando com o Fedora Core, Knoppix, RedHat e outras distribuições. Usando o sistema operacional Linux, ele se familiarizou com o bochs, mas achou-o muito lento e, após algumas pesquisas, descobriu o Qemu. Qemu era mais rápido do que bochs, e instalar o módulo KQEMU permitiu que ele fizesse a virtualização ainda mais rápido. Depois do Qemu, Mohsen conheceu o Innotek VirtualBox e o escolheu como seu principal aplicativo de virtualização. O Innotek VirtualBox tinha uma boa interface de usuário e era fácil de usar.

No final das contas, Mohsen conheceu o Xen, que ele ama porque é forte, estável e confiável. Ele escreveu um livro sobre o Xen com o nome "Hello Xen Project" e o disponibilizou na wiki do Xen. Ele o tornou gratuito para ajudar a tornar o Xen mais amigável e incentivar os iniciantes a usá-lo como sua primeira plataforma de virtualização. Ele se considera um "Soldado Xen". "

Postagem realmente informativa! obrigado