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

15 апреля 2019 года

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

NVMM включает драйвер, работающий на уровне ядра системы и координирующий доступ к аппаратным механизмам виртуализации, и стек Libnvmm, выполняемый в пространстве пользователя. Взаимодействие компонентов ядра и пространства пользователя осуществляется через IOCTL. Особенностью NVMM, отличающей его от таких гипервизоров, как KVM, HAXM и Bhyve, является то, что на уровне ядра выполняется только минимально необходимый набор обвязок вокруг аппаратных механизмов виртуализации, а весь код эмуляции оборудования вынесен из ядра в пространство пользователя. Подобный подход позволяет сократить объем кода, выполняемого с повышенными привилегиями, и снизить риск компрометации всей системы в случае атак на уязвимоcти в гипервизоре. Кроме того, заметно упрощается отладка и fuzzing-тестирование проекта.

При этом Libnvmm сам по себе не содержит функции эмулятора, а лишь предоставляет API, позволяющий интегрировать поддержку NVMM в существующие эмуляторы, например, в QEMU. API охватывает такие функции как создание и запуск виртуальной машины, выделение памяти гостевой системе, распределение VCPU. Для повышения безопасности и снижения возможных векторов атаки libnvmm предоставляет только явно запрошенные функции - по умолчанию сложные обработчики не вызываются автоматически и вообще могут не применяться, если без них можно обойтись. 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-изоляция отдельных приложений.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Проект NetBSD развивает новый гипервизор NVMM», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.