NetBSD-projektet utvecklar en ny NVMM-hypervisor

NetBSD projektutvecklare meddelat 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 HAXM 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.

NetBSD-projektet utvecklar en ny NVMM-hypervisor

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 det gör framgångsrikt 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 knuten till en specifik arkitektur, till exempel om lämplig backend skapas , kommer det att kunna fungera på ARM64-system). Bland områdena för ytterligare tillämpning av NVMM noteras också sandlådeisolering av enskilda applikationer.

NetBSD-projektet utvecklar en ny NVMM-hypervisor

Källa: opennet.ru

Lägg en kommentar