NetBSD-projekti kehittää uutta NVMM-hypervisoria

NetBSD-projektien kehittäjät ilmoitti uuden hypervisorin ja siihen liittyvän virtualisointipinon luomisesta, jotka ovat jo mukana kokeellisessa NetBSD-current haarassa ja tarjotaan NetBSD 9:n vakaassa julkaisussa. NVMM rajoittuu tällä hetkellä tukemaan x86_64-arkkitehtuuria ja tarjoaa kaksi taustaa mahdollistavat laitteiston virtualisointimekanismit: x86-SVM AMD-tuella ja x86-VMX-suorittimen virtualisointilaajennukset Intel-suorittimille. Nykyisessä muodossaan yhdellä isännällä voidaan ajaa jopa 128 virtuaalikonetta, joista jokaiselle voidaan varata jopa 256 virtuaaliprosessoriydintä (VCPU) ja 128 Gt RAM-muistia.

NVMM sisältää ajurin, joka toimii järjestelmäytimen tasolla ja koordinoi pääsyä laitteiston virtualisointimekanismeihin, sekä Libnvmm-pinon, joka toimii käyttäjätilassa. Ytimen komponenttien ja käyttäjätilan välinen vuorovaikutus tapahtuu IOCTL:n kautta. NVMM:n ominaisuus, joka erottaa sen hypervisoreista, kuten KVM, on HAXM ja Bhyve, on se, että ydintasolla suoritetaan vain vähimmäisvaatimus laitteiston virtualisointimekanismeihin liittyvistä sidoksista ja kaikki laitteistoemulointikoodi siirretään pois ytimestä käyttäjätilaan. Tämän lähestymistavan avulla voit vähentää korotetuilla oikeuksilla suoritettavan koodin määrää ja vähentää koko järjestelmän vaarantamisen riskiä hypervisorin haavoittuvuuksiin kohdistuvan hyökkäyksen yhteydessä. Lisäksi projektin virheenkorjaus ja fuzzing-testaus yksinkertaistuu huomattavasti.

Libnvmm itsessään ei kuitenkaan sisällä emulaattoritoimintoja, vaan tarjoaa vain API:n, jonka avulla voit integroida NVMM-tuen olemassa oleviin emulaattoreihin, esimerkiksi QEMU. API kattaa toiminnot, kuten virtuaalikoneen luomisen ja käynnistämisen, muistin varaamisen vierasjärjestelmälle ja VCPU:iden varaamisen. Turvallisuuden parantamiseksi ja mahdollisten hyökkäysvektorien vähentämiseksi libnvmm tarjoaa vain toimintoja, jotka on nimenomaisesti pyydetty – oletusarvoisesti monimutkaisia ​​käsittelijöitä ei kutsuta automaattisesti, eikä niitä saa käyttää ollenkaan, jos ne voidaan välttää. NVMM pyrkii pitämään asiat yksinkertaisina, muttei kuitenkaan liian monimutkaisia, ja antaa sinun hallita mahdollisimman monia työsi näkökohtia.

NetBSD-projekti kehittää uutta NVMM-hypervisoria

NVMM:n ydintason osa on melko tiiviisti integroitu NetBSD-ytimeen ja mahdollistaa paremman suorituskyvyn vähentämällä kontekstin vaihtojen määrää vieraskäyttöjärjestelmän ja isäntäympäristön välillä. Käyttäjätilan puolella libnvmm yrittää yhdistää yleisiä I/O-toimintoja ja välttää tarpeettomia järjestelmäkutsuja. Muistinvarausjärjestelmä perustuu pmap-alijärjestelmään, jonka avulla voit häätää vierasmuistisivuja swap-osioon, jos järjestelmässä on muistipula. NVMM:ssä ei ole globaaleja lukkoja ja skaalauksia, joten voit käyttää samanaikaisesti eri prosessoriytimiä eri vierailevien virtuaalikoneiden ajamiseen.

On valmisteltu QEMU-pohjainen ratkaisu, joka käyttää NVMM:ää mahdollistamaan laitteiston virtualisointimekanismeja. Valmisteltujen korjaustiedostojen sisällyttäminen QEMU:n päärakenteeseen on meneillään. QEMU+NVMM-yhdistelmä on jo sen avulla suorittaa onnistuneesti vierasjärjestelmiä FreeBSD:llä, OpenBSD:llä, Linuxilla, Windows XP/7/8.1/10:llä ja muilla käyttöjärjestelmillä x86_64-järjestelmissä, joissa on AMD- ja Intel-prosessorit (itse NVMM:ää ei ole sidottu tiettyyn arkkitehtuuriin, jos esimerkiksi luodaan sopiva taustajärjestelmä , se pystyy toimimaan ARM64-järjestelmissä ). NVMM:n jatkosovellusalueista mainitaan myös yksittäisten sovellusten hiekkalaatikkoeristys.

NetBSD-projekti kehittää uutta NVMM-hypervisoria

Lähde: opennet.ru

Lisää kommentti