Екипът на NetBSD разработва нов NVMM хипервизор

Лос Разработчици на проекти на NetBSD наскоро обяви създаването на нов хипервизор и свързания с него стек за виртуализация, който вече са включени в експерименталния клон на NetBSD-current и ще се предлага в стабилната версия на NetBSD 9.

NVMM все още е ограничена до поддръжка на архитектура x86_64 и предлага две версии за използване на механизми за хардуерна виртуализация.

Един от тях е x86-SVM с поддръжка за AMD виртуализация на процесора и x86-VMX разширения за процесори Intel.

В сегашния си вид на хост могат да се стартират до 128 виртуални машини, на всеки от които могат да бъдат разпределени до 256 виртуални процесорни ядра (VCPU) и 128 GB RAM.

Относно NVMM хипервизора

В представянето на този хипервизор разработчиците на проекта NetBSD обясняват това NVMM включва драйвер, който работи на ниво системно ядро.

И това също координира достъпа до хардуерно базирани механизми за виртуализация и стека Libnvmm, който работи в потребителско пространство.

Взаимодействието на компонентите на ядрото и потребителското пространство се осъществява чрез IOCTL.

 Една характеристика на NVMM, която я отличава от хипервизори като KVM, HAXM и Bhyve, е, че на ниво ядро ​​се изпълнява само минимално необходимия набор от механизми за хардуерна виртуализация и целият код за компютърна емулация се премахва от ядрото в момента. .

Този подход намалява количеството код, изпълнен с повишени привилегии и намалява риска че цялата система е компрометирана в случай на атаки срещу уязвимости в хипервизора.

Освен това отстраняването на грешки и объркването на вашия проект е значително опростено.

В същото време самият Libnvmm не съдържа емулаторни функции, а само предоставя API, който позволява да се интегрира NVMM поддръжка в съществуващи емулатори, например в QEMU.

API за виртуализация

API покрива функции като създаване и стартиране на виртуална машина, разпределяне на паметта в системата за гости и разпространение на VCPU.

За да увеличи сигурността и да намали възможните вектори на атака, libnvmm предоставя само изрично поискани функции.

По подразбиране сложните контролери не се извикват автоматично и изобщо не могат да се използват, ако могат да бъдат освободени.

NVMM се опитва да направи прости решения, без да изпада в усложнения и си позволявате да контролирате възможно най-много аспекти на работата.

Частта на ниво ядро ​​на NVMM е доста добре интегрирана с ядрото NetBSD и ви позволява да постигнете по-висока производителност чрез намаляване на броя на превключванията на контекст между операционната система за гости и хост средата.

В потребителското пространство libnvmm се опитва да добави типичните I / O операции и без да е необходимо да прави това, не прибягва до системни повиквания.

Изпълнение

За разлика от други драйвери за псевдо ядро ​​на различни платформи, като VirtualBox или HAXM, NVMM е добре интегриран в ядрото на NetBSD и това позволява да се оптимизират промените контекст между гостите и домакина, за да се избегнат скъпи операции в определени случаи.

сигурност

Системата за разпределение на паметта се основава на подсистемата pmap, че ви позволява да премествате страници от паметта на гостите, за да разменяте дял в случай на липса на памет в системата.

NVMM не съдържа ключалки и глобални везни, което ви позволява едновременно да използвате различни ядра на процесора за стартиране на различни виртуални машини за гости.

Въз основа на QEMU беше подготвено решение, използващо NVMM, за да се активират механизмите за хардуерна виртуализация.

Работи се по включването на подготвените пластири в основното оборудване на QEMU.

пакет QEMU + NVMM вече ви позволява успешно да стартирате системи за гости с FreeBSD, OpenBSD, Linux, Windows XP / 7 / 8.1 / 10 и други операционни системи на системи x86_64 с процесори AMD и Intel (самата NVMM не е обвързана с конкретна архитектура).

Бекендът ще може да работи на системи ARM64). От допълнителни области на приложение, NVMM също разглежда изолацията в отделната област за тестване на приложението.

Fuente: http://blog.netbsd.org