Projekt NetBSD vyvíja nový hypervízor NVMM

Vývojári projektu NetBSD oznámil o vytvorení nového hypervízora a súvisiaceho virtualizačného stacku, ktoré sú už zahrnuté v experimentálnej NetBSD-aktuálnej vetve a budú ponúkané v stabilnom vydaní NetBSD 9. NVMM je v súčasnosti obmedzené na podporu architektúry x86_64 a poskytuje dva backendy pre umožnenie mechanizmov hardvérovej virtualizácie: x86-SVM s podporou rozšírení virtualizácie CPU AMD a x86-VMX pre CPU Intel. V súčasnej podobe je možné prevádzkovať až 128 virtuálnych strojov na jednom hostiteľovi, pričom každému z nich môže byť pridelených až 256 virtuálnych procesorových jadier (VCPU) a 128 GB RAM.

NVMM obsahuje ovládač, ktorý beží na úrovni jadra systému a koordinuje prístup k mechanizmom virtualizácie hardvéru, a zásobník Libnvmm, ktorý beží v užívateľskom priestore. Interakcia medzi komponentmi jadra a užívateľským priestorom sa uskutočňuje prostredníctvom IOCTL. Funkciou NVMM, ktorá ho odlišuje od hypervízorov, ako je KVM, je HAXM a Bhyve je, že na úrovni jadra sa vykonáva iba minimálna požadovaná množina väzieb okolo mechanizmov virtualizácie hardvéru a všetok kód emulácie hardvéru sa presúva z jadra do užívateľského priestoru. Tento prístup umožňuje znížiť množstvo vykonávaného kódu so zvýšenými oprávneniami a znížiť riziko ohrozenia celého systému v prípade útokov na zraniteľnosti v hypervízore. Okrem toho je ladenie a testovanie fuzzingu projektu výrazne zjednodušené.

Samotný Libnvmm však neobsahuje funkcie emulátora, ale poskytuje iba API, ktoré vám umožňuje integrovať podporu NVMM do existujúcich emulátorov, napríklad QEMU. Rozhranie API pokrýva funkcie, ako je vytvorenie a spustenie virtuálneho počítača, pridelenie pamäte hosťovskému systému a pridelenie VCPU. Aby sa zlepšila bezpečnosť a znížili možné vektory útokov, libnvmm poskytuje iba funkcie, ktoré sú explicitne vyžadované – v predvolenom nastavení sa zložité obslužné programy nevolajú automaticky a nemusia sa vôbec používať, ak sa im dá vyhnúť. NVMM sa snaží robiť veci jednoducho, bez toho, aby to bolo príliš komplikované, a umožňuje vám ovládať čo najviac aspektov vašej práce.

Projekt NetBSD vyvíja nový hypervízor NVMM

Časť NVMM na úrovni jadra je pomerne úzko integrovaná s jadrom NetBSD a umožňuje lepší výkon znížením počtu kontextových prepínačov medzi hosťujúcim OS a hostiteľským prostredím. Na strane používateľského priestoru sa libnvmm snaží agregovať bežné I/O operácie a vyhýbať sa zbytočným systémovým volaniam. Systém prideľovania pamäte je založený na podsystéme pmap, ktorý vám umožňuje vysťahovať stránky pamäte hosťa do odkladacieho oddielu v prípade nedostatku pamäte v systéme. NVMM je bez globálnych zámkov a dobre sa škáluje, čo vám umožňuje súčasne používať rôzne jadrá CPU na spustenie rôznych hosťujúcich virtuálnych strojov.

Bolo pripravené riešenie založené na QEMU, ktoré využíva NVMM na umožnenie mechanizmov virtualizácie hardvéru. Pracuje sa na zahrnutí pripravených záplat do hlavnej štruktúry QEMU. Kombinácia QEMU+NVMM už existuje umožňuje úspešne spustiť hosťujúce systémy s FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 a ďalšími OS na x86_64 systémoch s procesormi AMD a Intel (samotné NVMM nie je viazané na konkrétnu architektúru, napríklad ak je vytvorený príslušný backend , bude môcť pracovať na systémoch ARM64). Medzi oblasťami ďalšej aplikácie NVMM je tiež zaznamenaná izolácia jednotlivých aplikácií v sandboxe.

Projekt NetBSD vyvíja nový hypervízor NVMM

Zdroj: opennet.ru

Pridať komentár