NetBSD 项目正在开发新的 NVMM 管理程序

NetBSD 项目开发人员 公布 关于创建新的虚拟机管理程序和相关的虚拟化堆栈,它们已经包含在实验性的 NetBSD 当前分支中,并将在 NetBSD 9 的稳定版本中提供。NVMM 目前仅限于支持 x86_64 架构,并提供两个后端启用硬件虚拟化机制:支持 AMD 的 x86-SVM 和适用于 Intel CPU 的 x86-VMX CPU 虚拟化扩展。 在目前的形式下,一台主机上最多可以运行 128 个虚拟机,每个虚拟机最多可以分配 256 个虚拟处理器核心 (VCPU) 和 128 GB RAM。

NVMM 包括一个在系统内核级别运行并协调对硬件虚拟化机制的访问的驱动程序,以及一个在用户空间中运行的 Libnvmm 堆栈。 内核组件和用户空间之间的交互是通过IOCTL进行的。 NVMM 区别于 KVM 等虚拟机管理程序的一个特性是 哈西姆 和 Bhyve 的区别在于,在内核级别,仅执行围绕硬件虚拟化机制所需的最小绑定集,并且所有硬件模拟代码都从内核移出到用户空间。 这种方法允许您减少使用提升的权限执行的代码量,并降低在虚拟机管理程序中的漏洞受到攻击时损害整个系统的风险。 此外,项目的调试和模糊测试也显着简化。

然而,Libnvmm 本身不包含模拟器功能,仅提供一个 API,允许您将 NVMM 支持集成到现有模拟器中,例如 QEMU。 该API涵盖了创建和启动虚拟机、为客户系统分配内存以及分配VCPU等功能。 为了提高安全性并减少可能的攻击媒介,libnvmm 仅提供明确请求的函数 - 默认情况下,不会自动调用复杂的处理程序,并且如果可以避免,则可能根本不会使用它们。 NVMM 试图让事情变得简单,而不是变得太复杂,并允许您控制工作的尽可能多的方面。

NetBSD 项目正在开发新的 NVMM 管理程序

NVMM 的内核级部分与 NetBSD 内核紧密集成,并通过减少来宾操作系统和主机环境之间的上下文切换次数来提高性能。 在用户空间方面,libnvmm 尝试聚合常见的 I/O 操作并避免进行不必要的系统调用。 内存分配系统基于 pmap 子系统,它允许您在系统内存不足的情况下将访客内存页面移出到交换分区。 NVMM 没有全局锁,并且可扩展性良好,允许您同时使用不同的 CPU 核心来运行不同的来宾虚拟机。

基于QEMU的解决方案已经准备好,使用NVMM来启用硬件虚拟化机制。 将准备好的补丁纳入 QEMU 主要结构中的工作正在进行中。 QEMU+NVMM组合已经 它允许 在配备 AMD 和 Intel 处理器的 x7_8.1 系统上成功运行 FreeBSD、OpenBSD、Linux、Windows XP/10/86/64 和其他操作系统的来宾系统(NVMM 本身不依赖于特定架构,例如,如果创建了适当的后端,它将能够在 ARM64 系统上工作)。 在 NVMM 进一步应用的领域中,单个应用程序的沙箱隔离也受到关注。

NetBSD 项目正在开发新的 NVMM 管理程序

来源: opennet.ru

添加评论