Разработчики проектов NetBSD недавно объявила о создании нового гипервизора и связанный с ним стек виртуализации, который уже включены в экспериментальную ветку NetBSD-current и будет предлагаться в стабильной версии NetBSD 9.
НВММ все еще ограничивается поддержкой архитектуры x86_64 и предлагает две версии для использования механизмов виртуализации оборудования.
Один из них - x86-SVM с поддержкой виртуализации ЦП AMD и расширений x86-VMX для ЦП Intel.
В текущем виде на хосте может быть загружено до 128 виртуальных машин., каждому из которых может быть выделено до 256 виртуальных процессорных ядер (VCPU) и 128 ГБ оперативной памяти.
О гипервизоре NVMM
В презентации этого гипервизора разработчики проекта NetBSD объясняют, что NVMM включает драйвер, который работает на уровне ядра системы.
И это тоже координирует доступ к аппаратным механизмам виртуализации и стеку Libnvmm, который выполняется в пользовательском пространстве.
Взаимодействие компонентов ядра и пользовательского пространства осуществляется через IOCTL.
Одна из особенностей NVMM, которая отличает его от гипервизоров, таких как KVM, HAXM и Bhyve, заключается в том, что на уровне ядра выполняется только минимально необходимый набор механизмов виртуализации оборудования, а весь код эмуляции компьютера удаляется из ядра в то время. Пространство пользователя .
Этот подход сокращает объем кода, выполняемого с повышенными привилегиями, и снижает риск что вся система скомпрометирована в случае атаки на уязвимости в гипервизоре.
Кроме того, значительно упрощается отладка проекта и смешанное тестирование.
При этом сам Libnvmm не содержит функций эмулятора, а только предоставляет API, позволяющий интегрировать поддержку NVMM в существующие эмуляторы, например в QEMU.
API виртуализации
API охватывает такие функции, как создание и запуск виртуальной машины, выделение памяти гостевой системе и распределение VCPU.
Для повышения безопасности и уменьшения возможных векторов атак libnvmm предоставляет только явно запрошенные функции.
По умолчанию сложные контроллеры не вызываются автоматически и вообще не могут использоваться, если от них можно отказаться.
NVMM пытается найти простые решения, не впадая в сложности и позволяя себе контролировать как можно больше аспектов работы.
Часть уровня ядра NVMM довольно хорошо интегрирована с ядром NetBSD. и позволяет достичь более высокой производительности за счет уменьшения количества переключений контекста между гостевой операционной системой и средой хоста.
В пространстве пользователя libnvmm пытается добавить типичные операции ввода-вывода и без необходимости не прибегает к системным вызовам.
Производительность
В отличие от других кроссплатформенных драйверов псевдо ядра, например 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 также рассматривал изоляцию в отдельной области тестирования приложения.
источник: http://blog.netbsd.org