Het NetBSD-project ontwikkelt een nieuwe NVMM-hypervisor

NetBSD-projectontwikkelaars bekend gemaakt over de creatie van een nieuwe hypervisor en de bijbehorende virtualisatiestack, die al zijn opgenomen in de experimentele NetBSD-current branch en zullen worden aangeboden in de stabiele release van NetBSD 9. NVMM is momenteel beperkt tot het ondersteunen van de x86_64-architectuur en biedt twee backends voor hardwarevirtualisatiemechanismen mogelijk maken: x86-SVM met ondersteuning voor AMD en x86-VMX CPU-virtualisatie-uitbreidingen voor Intel CPU's. In zijn huidige vorm is het mogelijk om maximaal 128 virtuele machines op één host te laten draaien, aan elk waarvan maximaal 256 virtuele processorkernen (VCPU) en 128 GB RAM kunnen worden toegewezen.

NVMM bevat een driver die op systeemkernelniveau draait en de toegang tot hardwarevirtualisatiemechanismen coördineert, en een Libnvmm-stack die in de gebruikersruimte draait. Interactie tussen kernelcomponenten en gebruikersruimte wordt uitgevoerd via IOCTL. Een kenmerk van NVMM dat het onderscheidt van hypervisors zoals KVM is HAXM en Bhyve, is dat op kernelniveau alleen de minimaal vereiste set bindingen rond hardwarevirtualisatiemechanismen wordt uitgevoerd, en dat alle hardware-emulatiecode uit de kernel naar de gebruikersruimte wordt verplaatst. Met deze aanpak kunt u de hoeveelheid code die wordt uitgevoerd met verhoogde bevoegdheden verminderen en het risico verkleinen dat het hele systeem in gevaar wordt gebracht bij aanvallen op kwetsbaarheden in de hypervisor. Bovendien is het debuggen en fuzzen van het project merkbaar vereenvoudigd.

Libnvmm zelf bevat echter geen emulatorfuncties, maar biedt alleen een API waarmee u NVMM-ondersteuning kunt integreren in bestaande emulators, bijvoorbeeld QEMU. De API omvat functies zoals het maken en starten van een virtuele machine, het toewijzen van geheugen aan het gastsysteem en het toewijzen van VCPU's. Om de veiligheid te verbeteren en mogelijke aanvalsvectoren te verminderen, biedt libnvmm alleen functies die expliciet worden aangevraagd. Complexe handlers worden standaard niet automatisch aangeroepen en mogen helemaal niet worden gebruikt als ze kunnen worden vermeden. NVMM probeert het simpel te houden, zonder het te ingewikkeld te maken, zodat u zoveel mogelijk controle heeft over uw werk.

Het NetBSD-project ontwikkelt een nieuwe NVMM-hypervisor

Het gedeelte op kernelniveau van NVMM is behoorlijk nauw geïntegreerd met de NetBSD-kernel en zorgt voor verbeterde prestaties door het aantal contextwisselingen tussen het gastbesturingssysteem en de hostomgeving te verminderen. Aan de kant van de gebruikersruimte probeert libnvmm algemene I/O-bewerkingen te aggregeren en onnodige systeemaanroepen te voorkomen. Het geheugentoewijzingssysteem is gebaseerd op het pmap-subsysteem, waarmee u gastgeheugenpagina's naar de swappartitie kunt verwijderen in geval van geheugentekort in het systeem. NVMM is vrij van globale vergrendelingen en kan goed worden geschaald, waardoor u tegelijkertijd verschillende CPU-kernen kunt gebruiken om verschillende virtuele gastmachines te laten draaien.

Er is een op QEMU gebaseerde oplossing voorbereid die NVMM gebruikt om hardwarevirtualisatiemechanismen mogelijk te maken. Er wordt gewerkt aan het opnemen van de voorbereide patches in de hoofdstructuur van QEMU. De combinatie QEMU+NVMM bestaat al laat voer met succes gastsystemen uit met FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 en andere besturingssystemen op x86_64-systemen met AMD- en Intel-processors (NVMM zelf is niet gebonden aan een specifieke architectuur, bijvoorbeeld als de juiste backend is gemaakt , het zal kunnen werken op ARM64-systemen). Onder de gebieden waarop NVMM verder kan worden toegepast, wordt ook sandbox-isolatie van individuele applicaties vermeld.

Het NetBSD-project ontwikkelt een nieuwe NVMM-hypervisor

Bron: opennet.ru

Voeg een reactie