Проект 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, HAXM і 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

Додати коментар або відгук