NetBSD Project Developers o kreiranju novog hipervizora i povezanog virtuelizacionog steka, koji su već uključeni u eksperimentalnu NetBSD-trenutnu granu i biće ponuđeni u stabilnom izdanju NetBSD 9. NVMM je trenutno ograničen na podršku x86_64 arhitekturi i obezbeđuje dva pozadina za omogućavanje mehanizama virtuelizacije hardvera: x86-SVM sa podrškom za AMD i x86-VMX proširenja virtuelizacije CPU-a za Intel CPU. U svom sadašnjem obliku, moguće je pokrenuti do 128 virtuelnih mašina na jednom hostu, od kojih se svakoj može dodijeliti do 256 virtualnih procesorskih jezgara (VCPU) i 128 GB RAM-a.
NVMM uključuje drajver koji radi na nivou sistemskog kernela i koordinira pristup mehanizmima virtuelizacije hardvera i Libnvmm stog koji radi u korisničkom prostoru. Interakcija između komponenti kernela i korisničkog prostora se vrši preko IOCTL-a. Karakteristika NVMM-a koja ga razlikuje od hipervizora kao što je KVM jeste i Bhyve, je da se na nivou kernela izvodi samo minimalni potrebni skup veza oko mehanizama virtuelizacije hardvera, a sav kod za emulaciju hardvera se premešta iz kernela u korisnički prostor. Ovaj pristup vam omogućava da smanjite količinu koda koji se izvršava sa povišenim privilegijama i smanji rizik od kompromitovanja čitavog sistema u slučaju napada na ranjivosti u hipervizoru. Osim toga, otklanjanje grešaka i fuzzing testiranje projekta je značajno pojednostavljeno.
Međutim, sam Libnvmm ne sadrži funkcije emulatora, već samo pruža API koji vam omogućava da integrirate NVMM podršku u postojeće emulatore, na primjer, QEMU. API pokriva funkcije kao što su kreiranje i pokretanje virtuelne mašine, dodeljivanje memorije gostujućem sistemu i dodeljivanje VCPU-a. Da bi poboljšao sigurnost i smanjio moguće vektore napada, libnvmm pruža samo funkcije koje su eksplicitno tražene—podrazumevano, složeni rukovaoci se ne pozivaju automatski i ne mogu se uopće koristiti ako se mogu izbjeći. NVMM pokušava da stvari održi jednostavnim, bez da se previše zakomplikuje, i omogućava vam da kontrolišete što više aspekata svog rada.
Dio NVMM-a na nivou kernela je prilično čvrsto integriran sa NetBSD kernelom i omogućava poboljšane performanse smanjenjem broja prebacivanja konteksta između gostujućeg OS-a i domaćinskog okruženja. Na strani korisničkog prostora, libnvmm pokušava agregirati uobičajene I/O operacije i izbjeći nepotrebne sistemske pozive. Sistem dodjele memorije je baziran na pmap podsistemu, koji vam omogućava da izbacite gostujuće memorijske stranice na swap particiju u slučaju nedostatka memorije u sistemu. NVMM je bez globalnih zaključavanja i dobro skala, omogućavajući vam da istovremeno koristite različite CPU jezgre za pokretanje različitih gostujućih virtuelnih mašina.
Pripremljeno je rješenje zasnovano na QEMU koje koristi NVMM za omogućavanje mehanizama virtuelizacije hardvera. U toku je rad na uključivanju pripremljenih zakrpa u glavnu strukturu QEMU. Kombinacija QEMU+NVMM već postoji uspješno pokrenuo gostujuće sisteme sa FreeBSD-om, OpenBSD-om, Linux, Windows XP/7/8.1/10 i drugi operativni sistemi na x86_64 sistemima sa AMD i Intel procesorima (sam NVMM nije vezan za određenu arhitekturu; na primjer, uz odgovarajući backend, može se pokretati na ARM64 sistemima). Daljnje primjene NVMM-a uključuju sandboxing pojedinačnih aplikacija.
izvor: opennet.ru
