Праект NetBSD развівае новы гіпервізар NVMM

Распрацоўнікі праекту NetBSD абвясцілі аб стварэнні новага гіпервізара і злучанага з ім стэка віртуалізацыі, якія ўжо ўключаны ў склад эксперыментальнай галіны NetBSD-current і будуць прапанаваны ў стабільным рэлізе NetBSD 9. NVMM пакуль абмежаваны падтрымкай архітэктуры x86_64 і падае два бэкенда для задзейнічання апаратных механізмаў віртуалізацыі: x86- падтрымкай пашырэнняў віртуалізацыі CPU AMD і x86-VMX для CPU Intel. У бягучым выглядзе магчымы запуск на адным хасце да 128 віртуальных машын, кожнай з якіх можа быць выдзелена да 256 віртуальных працэсарных ядраў (VCPU) і 128 Гб АЗП.

NVMM уключае драйвер, які працуе на ўзроўні ядра сістэмы і які каардынуе доступ да апаратных механізмаў віртуалізацыі, і стэк Libnvmm, выкананы ў прасторы карыстача. Узаемадзеянне кампанентаў ядра і прасторы карыстача ажыццяўляецца праз IOCTL. Асаблівасцю NVMM, якая адрознівае яго ад такіх гіпервізараў, як KVM, ХАКСМ і Bhyve, з'яўляецца тое, што на ўзроўні ядра выконваецца толькі мінімальнай неабходны набор абвязак вакол апаратных механізмаў віртуалізацыі, а ўвесь код эмуляцыі абсталявання вынесены з ядра ў прастору карыстальніка. Падобны падыход дазваляе скараціць аб'ём кода, выкананага з падвышанымі прывілеямі, і зменшыць рызыку кампраметацыі ўсёй сістэмы ў выпадку нападаў на ўразлівасці ў гіпервізоры. Акрамя таго, прыкметна спрашчаецца адладка і fuzzing-тэставанне праекту.

Пры гэтым Libnvmm сам па сабе не ўтрымоўвае функцыі эмулятара, а толькі падае API, які дазваляе інтэграваць падтрымку NVMM у існыя эмулятары, напрыклад, у QEMU. API ахоплівае такія функцыі як стварэнне і запуск віртуальнай машыны, вылучэнне памяці гасцявой сістэме, размеркаванне VCPU. Для падвышэння бяспекі і зніжэнні магчымых вектараў нападу libnvmm падае толькі відавочна запытаныя функцыі - па змаўчанні складаныя апрацоўшчыкі не выклікаюцца аўтаматычна і наогул могуць не ўжывацца, калі без іх можна абыйсціся. NVMM спрабуе абыходзіцца простымі рашэннямі, не ўпадаючы ва ўскладненні і дазваляючы кантраляваць як мага больш аспектаў працы.

Праект NetBSD развівае новы гіпервізар NVMM

Якая працуе на ўзроўні ядра частка NVMM досыць шчыльна інтэграваная з ядром NetBSD, і дазваляе дамагчыся падвышэнні прадукцыйнасці за рахунак скарачэння ліку пераключэння кантэксту паміж гасцявой АС і хост-асяроддзем. На баку прасторы карыстача libnvmm імкнецца агрэгаваць тыпавыя аперацыі ўводу-высновы і без неабходнасці не звяртацца да сістэмных выклікаў. Сістэма вылучэння памяццю заснавана на падсістэме pmap, што дазваляе выцясняць старонкі памяці гасцявых сістэм у частку падпампоўкі ў выпадку недахопу памяці ў сістэме. NVMM пазбаўлены ад глабальных блакіровак і добра маштабуецца, дазваляючы адначасова выкарыстоўваць розныя ядры CPU для выканання розных гасцявых віртуальных машын.

На базе QEMU падрыхтавана рашэнне, якое выкарыстоўвае NVMM для задзейнічання апаратных механізмаў віртуалізацыі. Вядзецца праца па ўключэнні падрыхтаваных патчаў у асноўны склад QEMU. Звязак QEMU+NVMM ужо дазваляе паспяхова запускаць гасцявыя сістэмы з FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 і іншымі АС на сістэмах x86_64 з працэсарамі AMD і Intel (сам NVMM не прывязаны да вызначанай архітэктуры, напрыклад, пры стварэнні які адпавядае бэкенда зможа працаваць на сістэмах ARM64 ). З абласцей далейшага прымянення NVMM таксама адзначаецца sandbox-ізаляцыя асобных прыкладанняў.

Праект NetBSD развівае новы гіпервізар NVMM

Крыніца: opennet.ru

Дадаць каментар