Projekt NetBSD vyvíjí nový hypervizor NVMM

Vývojáři projektu NetBSD oznámil o vytvoření nového hypervizoru a souvisejícího virtualizačního stacku, které jsou již zahrnuty v experimentální NetBSD-aktuální větvi a budou nabízeny ve stabilní verzi NetBSD 9. NVMM je v současné době omezeno na podporu architektury x86_64 a poskytuje dva backendy pro umožňující hardwarové virtualizační mechanismy: x86-SVM s podporou rozšíření pro virtualizaci CPU AMD a x86-VMX pro CPU Intel. V současné podobě je možné na jednom hostiteli provozovat až 128 virtuálních strojů, z nichž každému lze přidělit až 256 jader virtuálních procesorů (VCPU) a 128 GB RAM.

NVMM obsahuje ovladač, který běží na úrovni jádra systému a koordinuje přístup k hardwarovým virtualizačním mechanismům, a Libnvmm stack, který běží v uživatelském prostoru. Interakce mezi komponentami jádra a uživatelským prostorem se provádí prostřednictvím IOCTL. Funkce NVMM, která jej odlišuje od hypervizorů, jako je KVM, je HAXM a Bhyve spočívá v tom, že na úrovni jádra se provádí pouze minimální požadovaná sada vazeb kolem hardwarových virtualizačních mechanismů a veškerý kód emulace hardwaru se přesune z jádra do uživatelského prostoru. Tento přístup umožňuje snížit množství kódu spouštěného se zvýšenými oprávněními a snížit riziko ohrožení celého systému v případě útoků na zranitelnosti v hypervisoru. Kromě toho je výrazně zjednodušeno ladění a testování fuzzingu projektu.

Samotný Libnvmm však neobsahuje funkce emulátoru, ale poskytuje pouze API, které vám umožňuje integrovat podporu NVMM do existujících emulátorů, například QEMU. Rozhraní API pokrývá funkce, jako je vytváření a spouštění virtuálního počítače, přidělování paměti hostujícímu systému a přidělování VCPU. Pro zlepšení zabezpečení a omezení možných vektorů útoků poskytuje libnvmm pouze funkce, které jsou výslovně požadovány – ve výchozím nastavení nejsou složité handlery volány automaticky a nemusí být vůbec použity, pokud se jim lze vyhnout. NVMM se snaží udržet věci jednoduché, aniž by to bylo příliš komplikované, a umožňuje vám ovládat co nejvíce aspektů vaší práce.

Projekt NetBSD vyvíjí nový hypervizor NVMM

Část NVMM na úrovni jádra je poměrně těsně integrována s jádrem NetBSD a umožňuje lepší výkon snížením počtu kontextových přepínačů mezi hostujícím OS a hostitelským prostředím. Na straně uživatelského prostoru se libnvmm snaží agregovat běžné I/O operace a vyhnout se zbytečnému systémovému volání. Systém přidělování paměti je založen na podsystému pmap, který vám umožňuje vystěhovat stránky paměti hosta do odkládacího oddílu v případě nedostatku paměti v systému. NVMM je bez globálních zámků a dobře se škáluje, což vám umožňuje současně používat různá jádra CPU ke spouštění různých hostovaných virtuálních strojů.

Bylo připraveno řešení založené na QEMU, které využívá NVMM pro umožnění hardwarových virtualizačních mechanismů. Pracuje se na začlenění připravených patchů do hlavní struktury QEMU. Kombinace QEMU+NVMM již existuje umožňuje úspěšně provozovat hostující systémy s FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 a dalšími OS na systémech x86_64 s procesory AMD a Intel (samotný NVMM není vázán na konkrétní architekturu, například pokud je vytvořen příslušný backend , bude moci pracovat na systémech ARM64). Mezi oblastmi další aplikace NVMM je také zaznamenána izolace jednotlivých aplikací v sandboxu.

Projekt NetBSD vyvíjí nový hypervizor NVMM

Zdroj: opennet.ru

Přidat komentář