Desenvolvedores de proxectos NetBSD sobre a creación dun novo hipervisor e a pila de virtualización asociada, que xa están incluídos na rama experimental de NetBSD e que se ofrecerán na versión estable de NetBSD 9. NVMM está limitado actualmente a soportar a arquitectura x86_64 e ofrece dous backends para habilitación de mecanismos de virtualización de hardware: x86-SVM con soporte para extensións de virtualización de CPU AMD e x86-VMX para CPU Intel. Na súa forma actual, é posible executar ata 128 máquinas virtuais nun host, a cada unha das cales se lle poden asignar ata 256 núcleos de procesador virtuais (VCPU) e 128 GB de RAM.
NVMM inclúe un controlador que se executa a nivel do núcleo do sistema e coordina o acceso aos mecanismos de virtualización de hardware e unha pila Libnvmm que se executa no espazo do usuario. A interacción entre os compoñentes do núcleo e o espazo do usuario realízase a través de IOCTL. Unha característica de NVMM que o distingue de hipervisores como KVM é e Bhyve, é que a nivel do núcleo só se realiza o conxunto mínimo necesario de enlaces en torno aos mecanismos de virtualización de hardware e todo o código de emulación de hardware móvese fóra do núcleo ao espazo do usuario. Este enfoque permítelle reducir a cantidade de código executado con privilexios elevados e reducir o risco de comprometer todo o sistema en caso de ataques a vulnerabilidades no hipervisor. Ademais, a depuración e as probas de fuzzing do proxecto simplifícanse notablemente.
Non obstante, Libnvmm en si non contén funcións de emulador, senón que só proporciona unha API que che permite integrar o soporte de NVMM nos emuladores existentes, por exemplo, QEMU. A API abrangue funcións como crear e lanzar unha máquina virtual, asignar memoria ao sistema invitado e asignar VCPU. Para mellorar a seguridade e reducir os posibles vectores de ataque, libnvmm ofrece só funcións que se solicitan explícitamente; por defecto, os controladores complexos non se chaman automaticamente e poden non usarse en absoluto se se poden evitar. NVMM tenta que as cousas sexan sinxelas, sen complicarse demasiado, e permitíndoche controlar tantos aspectos do teu traballo como sexa posible.
A parte de NVMM a nivel de núcleo está bastante integrada co núcleo de NetBSD e permite mellorar o rendemento ao reducir o número de cambios de contexto entre o sistema operativo convidado e o ambiente host. No lado do espazo do usuario, libnvmm tenta agregar operacións de E/S comúns e evitar facer chamadas ao sistema innecesariamente. O sistema de asignación de memoria baséase no subsistema pmap, que lle permite expulsar páxinas de memoria de hóspedes á partición de intercambio en caso de escaseza de memoria no sistema. NVMM está libre de bloqueos globais e escala ben, o que lle permite usar simultáneamente diferentes núcleos de CPU para executar diferentes máquinas virtuais convidadas.
Preparouse unha solución baseada en QEMU que utiliza NVMM para habilitar mecanismos de virtualización de hardware. Estase traballando para incluír os parches preparados na estrutura principal de QEMU. A combinación QEMU+NVMM xa está executar correctamente sistemas invitados con FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 e outros sistemas operativos en sistemas x86_64 con procesadores AMD e Intel (o propio NVMM non está vinculado a unha arquitectura específica; por exemplo, co backend axeitado, pode executarse en sistemas ARM64). Outras aplicacións para NVMM inclúen a creación de sandboxes para aplicacións individuais.
Fonte: opennet.ru
