Програмери на NetBSD проект за создавање на нов хипервизор и поврзаниот стек за виртуелизација, кои се веќе вклучени во експерименталната NetBSD-тековна гранка и ќе бидат понудени во стабилното издание на NetBSD 9. NVMM моментално е ограничен на поддршка на архитектурата x86_64 и обезбедува два позадини за овозможување механизми за виртуелизација на хардверот: x86-SVM со поддршка за екстензии за виртуелизација на процесорот AMD и x86-VMX за процесорите на Intel. Во неговата сегашна форма, можно е да работат до 128 виртуелни машини на еден хост, од кои на секоја може да се доделат до 256 виртуелни процесорски јадра (VCPU) и 128 GB RAM.
NVMM вклучува драјвер кој работи на ниво на јадрото на системот и го координира пристапот до механизмите за виртуелизација на хардверот и стек Libnvmm што работи во корисничкиот простор. Интеракцијата помеѓу компонентите на кернелот и корисничкиот простор се врши преку IOCTL. Карактеристика на NVMM што го разликува од хипервизорите како што е KVM е и Bhyve, е дека на ниво на кернелот се врши само минималниот потребен сет на врзувања околу механизмите за виртуелизација на хардверот и целиот код за емулација на хардверот се преместува надвор од кернелот во корисничкиот простор. Овој пристап ви овозможува да ја намалите количината на код извршен со зголемени привилегии и да го намалите ризикот од загрозување на целиот систем во случај на напади на пропусти во хипервизорот. Дополнително, значително е поедноставено тестирањето за дебагирање и заматување на проектот.
Сепак, самиот Libnvmm не содржи функции на емулатор, туку само обезбедува API што ви овозможува да интегрирате NVMM поддршка во постоечките емулатори, на пример, QEMU. API опфаќа функции како што се креирање и стартување на виртуелна машина, доделување меморија на системот за гости и доделување на VCPU. За да се подобри безбедноста и да се намалат можните вектори на напад, libnvmm обезбедува само функции кои се експлицитно барани - стандардно, сложените управувачи не се повикуваат автоматски и може воопшто да не се користат доколку можат да се избегнат. NVMM се обидува да ги одржува работите едноставни, без да биде премногу комплицирано и да ви овозможи да контролирате што е можно повеќе аспекти од вашата работа.
Делот на ниво на јадрото на NVMM е доста цврсто интегриран со NetBSD кернелот и овозможува подобрени перформанси со намалување на бројот на контекстуални прекинувачи помеѓу гостинскиот оперативен систем и околината на домаќинот. На страната на корисничкиот простор, libnvmm се обидува да ги собере вообичаените I/O операции и да избегне непотребно правење системски повици. Системот за распределба на меморијата се заснова на потсистемот pmap, кој ви овозможува да ги исфрлите страниците на гостинската меморија во партицијата за размена во случај на недостаток на меморија во системот. NVMM е без глобални брави и добро размери, што ви овозможува истовремено да користите различни јадра на процесорот за да управувате со различни гостински виртуелни машини.
Подготвено е решение засновано на QEMU кое користи NVMM за да овозможи механизми за виртуелизација на хардверот. Во тек е работа за вклучување на подготвените закрпи во главната структура на QEMU. Комбинацијата QEMU+NVMM е веќе успешно стартување на гостински системи со FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 и други оперативни системи на x86_64 системи со AMD и Intel процесори (самиот NVMM не е врзан за специфична архитектура; на пример, со соодветен backend, може да работи на ARM64 системи). Понатамошни апликации за NVMM вклучуваат sandboxing на поединечни апликации.
Извор: opennet.ru
