NetBSD projektutvecklare om skapandet av en ny hypervisor och den tillhörande virtualiseringsstacken, som redan ingÄr i den experimentella NetBSD-aktuella grenen och kommer att erbjudas i den stabila versionen av NetBSD 9. NVMM Àr för nÀrvarande begrÀnsad till att stödja x86_64-arkitekturen och tillhandahÄller tvÄ backends för möjliggör maskinvaruvirtualiseringsmekanismer: x86-SVM med stöd för AMD och x86-VMX CPU-virtualiseringstillÀgg för Intel-processorer. I sin nuvarande form Àr det möjligt att köra upp till 128 virtuella maskiner pÄ en vÀrd, som var och en kan tilldelas upp till 256 virtuella processorkÀrnor (VCPU) och 128 GB RAM.
NVMM inkluderar en drivrutin som körs pÄ systemkÀrnnivÄ och koordinerar Ätkomst till hÄrdvaruvirtualiseringsmekanismer och en Libnvmm-stack som körs i anvÀndarutrymmet. Interaktion mellan kÀrnkomponenter och anvÀndarutrymme utförs genom IOCTL. En funktion hos NVMM som skiljer den frÄn hypervisorer som KVM Àr och Bhyve, Àr att pÄ kÀrnnivÄn utförs endast den minsta nödvÀndiga uppsÀttningen bindningar runt hÄrdvaruvirtualiseringsmekanismer, och all hÄrdvaruemuleringskod flyttas ut frÄn kÀrnan till anvÀndarutrymmet. Detta tillvÀgagÄngssÀtt lÄter dig minska mÀngden kod som exekveras med förhöjda privilegier och minska risken för att Àventyra hela systemet i hÀndelse av attacker mot sÄrbarheter i hypervisorn. Dessutom Àr felsökning och fuzzing testning av projektet mÀrkbart förenklat.
Libnvmm i sig innehĂ„ller dock inga emulatorfunktioner utan tillhandahĂ„ller bara ett API som lĂ„ter dig integrera NVMM-stöd i befintliga emulatorer, till exempel QEMU. API:et tĂ€cker funktioner som att skapa och starta en virtuell maskin, allokera minne till gĂ€stsystemet och allokera VCPU:er. För att förbĂ€ttra sĂ€kerheten och minska möjliga attackvektorer tillhandahĂ„ller libnvmm endast funktioner som Ă€r explicit efterfrĂ„gade â som standard anropas inte komplexa hanterare automatiskt och kanske inte anvĂ€nds alls om de kan undvikas. NVMM försöker hĂ„lla saker enkla, utan att bli för komplicerade, och lĂ„ta dig kontrollera sĂ„ mĂ„nga aspekter av ditt arbete som möjligt.
KÀrnnivÄdelen av NVMM Àr ganska tÀtt integrerad med NetBSD-kÀrnan och möjliggör förbÀttrad prestanda genom att minska antalet kontextvÀxlar mellan gÀst-OS och vÀrdmiljön. PÄ anvÀndarutrymmessidan försöker libnvmm samla vanliga I/O-operationer och undvika att göra systemanrop i onödan. Minnestilldelningssystemet Àr baserat pÄ pmap-undersystemet, vilket gör att du kan vrÀka gÀstminnessidor till swap-partitionen i hÀndelse av minnesbrist i systemet. NVMM Àr fri frÄn globala lÄs och skalar vÀl, vilket gör att du kan anvÀnda olika CPU-kÀrnor samtidigt för att köra olika virtuella gÀstmaskiner.
En QEMU-baserad lösning har tagits fram som anvÀnder NVMM för att möjliggöra hÄrdvaruvirtualiseringsmekanismer. Arbete pÄgÄr för att inkludera de förberedda lapparna i QEMU:s huvudstruktur. Kombinationen QEMU+NVMM finns redan köra gÀstsystem med FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 och andra operativsystem pÄ x86_64-system med AMD- och Intel-processorer (NVMM i sig Àr inte knutet till en specifik arkitektur; till exempel kan det med lÀmplig backend köras pÄ ARM64-system). Ytterligare tillÀmpningar för NVMM inkluderar sandboxing av enskilda applikationer.
KĂ€lla: opennet.ru
