O projeto NetBSD está desenvolvendo um novo hipervisor NVMM

Desenvolvedores de projetos NetBSD anunciou sobre a criação de um novo hipervisor e a pilha de virtualização associada, que já estão incluídos no branch experimental atual do NetBSD e serão oferecidos na versão estável do NetBSD 9. O NVMM está atualmente limitado a suportar a arquitetura x86_64 e fornece dois backends para habilitando mecanismos de virtualização de hardware: x86-SVM com suporte para extensões de virtualização de CPU AMD e x86-VMX para CPUs Intel. Em sua forma atual, é possível executar até 128 máquinas virtuais em um host, cada uma das quais pode receber até 256 núcleos de processador virtual (VCPU) e 128 GB de RAM.

O NVMM inclui um driver que roda no nível do kernel do sistema e coordena o acesso aos mecanismos de virtualização de hardware, e uma pilha Libnvmm que roda no espaço do usuário. A interação entre os componentes do kernel e o espaço do usuário é realizada através do IOCTL. Um recurso do NVMM que o distingue de hipervisores como o KVM é HAXM e Bhyve, é que no nível do kernel apenas o conjunto mínimo necessário de ligações em torno dos mecanismos de virtualização de hardware é executado e todo o código de emulação de hardware é movido do kernel para o espaço do usuário. Essa abordagem permite reduzir a quantidade de código executado com privilégios elevados e reduzir o risco de comprometer todo o sistema em caso de ataques a vulnerabilidades no hipervisor. Além disso, a depuração e o teste de difusão do projeto são visivelmente simplificados.

No entanto, o próprio Libnvmm não contém funções de emulador, mas apenas fornece uma API que permite integrar o suporte NVMM em emuladores existentes, por exemplo, QEMU. A API cobre funções como criação e inicialização de uma máquina virtual, alocação de memória para o sistema convidado e alocação de VCPUs. Para melhorar a segurança e reduzir possíveis vetores de ataque, libnvmm fornece apenas funções que são explicitamente solicitadas – por padrão, manipuladores complexos não são chamados automaticamente e não podem ser usados ​​se puderem ser evitados. O NVMM tenta manter as coisas simples, sem ficar muito complicado e permitindo que você controle tantos aspectos do seu trabalho quanto possível.

O projeto NetBSD está desenvolvendo um novo hipervisor NVMM

A parte do NVMM no nível do kernel é totalmente integrada ao kernel do NetBSD e permite melhor desempenho, reduzindo o número de alternâncias de contexto entre o sistema operacional convidado e o ambiente host. No lado do espaço do usuário, libnvmm tenta agregar operações de E/S comuns e evitar fazer chamadas de sistema desnecessariamente. O sistema de alocação de memória é baseado no subsistema pmap, que permite despejar páginas de memória guest para a partição swap em caso de falta de memória no sistema. O NVMM é livre de bloqueios globais e é bem dimensionado, permitindo que você use simultaneamente diferentes núcleos de CPU para executar diferentes máquinas virtuais convidadas.

Foi preparada uma solução baseada em QEMU que utiliza NVMM para habilitar mecanismos de virtualização de hardware. Estão em curso trabalhos para incluir os patches preparados na estrutura principal do QEMU. A combinação QEMU+NVMM já está permite executar com sucesso sistemas convidados com FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 e outros sistemas operacionais em sistemas x86_64 com processadores AMD e Intel (o próprio NVMM não está vinculado a uma arquitetura específica, por exemplo, se o backend apropriado for criado , poderá funcionar em sistemas ARM64). Entre as áreas de aplicação adicional do NVMM, também se destaca o isolamento sandbox de aplicativos individuais.

O projeto NetBSD está desenvolvendo um novo hipervisor NVMM

Fonte: opennet.ru

Adicionar um comentário