微软本月早些时候发布了用 Rust 编写的新管理程序/虚拟机监控程序(VMM)的代码。
OpenVMM是第二类管理程序,运行在操作系统之上,这与第一类管理程序不同,后者运行在裸机之上并直接与硬件交互。因此,它更类似于Oracle VM VirtualBox、VMware Workstation 或 Microsoft Virtual PC,而不是VMware ESXi、KVM 或 Microsoft Hyper-V。
事实证明,Rust在虚拟化领域相当受欢迎。云管理程序Cloud Hypervisor是用Rust编写的第二类VMM,可追溯到2019年。亚马逊和谷歌也开发了基于Rust的VMM,分别是Firecracker(类型1)和 crosvm(类型2)。
不过,OpenVMM还在不断完善中,微软警告说,它还没有准备好用于生产,并指出它在传统主机环境中的运行体验并不那么令人愉快。
该项目网站称:“目前,主机上的OpenVMM还不能用于运行最终用户工作负载,应将其视为实现OpenVMM新功能的开发平台,而不是可随时部署的应用程序。”
此外,该软件的管理界面还没有完善的文档记录,设备性能仍未优化,某些功能缺失,API也没有稳定性保证。
但除此以外,该项目至少表明微软和其他同行一样,正在扩大Rust的覆盖范围,以提供更强的内存安全保证——这已成为一项国际任务,因为安全问题已变得相当重要。微软的开发人员还表达了他们对Rust的现代语言特性、crates生态系统、分析工具以及仍然使用 C API 直接与硬件对话的能力的赞赏。
OpenVMM可在Linux(x64,通过 KVM 或 MSHV API)、macOS(Aarch64,通过 Hypervisor.framework API)和Windows(x64 和Aarch64,通过Windows Hypervisor Platform API)上运行。
OpenVMM的开发主要是为了与 OpenHCL 配合使用,OpenHCL是基于Linux的辅助虚拟化层,用于保密虚拟机,也是用Rust构建的。正如上个月在奥地利维也纳举行的Linux Plumbers大会上所讨论的,OpenHCL是一种将 OpenVMM 作为paravisor(准管理程序)运行的执行环境。
和运行在独立主机或者根分区中的管理程序不同,paravisor以更高的权限级别在客户机中运行。
正如会议演讲所解释的,“客户机操作系统通常需要修改,即所谓的enlightments,才能在不同的机密计算架构(如 AMD SEV-SNP 或 Intel TDX)下运行。要支持未开放的客户机,需要一个名为paravisor的软件组件。”
“paravisor在客户机中以更高的权限级别运行,以提供适当的抽象和安全保证,而未开放客户机无法实现这些功能。paravisor还可以提供额外的服务,如仿真设备(如TPM,可信平台模块)或主机与未开放的客户机之间的设备转换。”
为什么要这么做?对微软来说,这种方法允许现有工作负载使用其Azure Boost硬件加速器,而无需修改客户虚拟机映像——客户可以通过新的虚拟化层直接访问更快的IO和安全功能,而不是通过主机。它还允许现有操作系统在硬件支持的Confidential VMs中运行,并支持Trusted Launch VMs。
在未来的某个时候,OpenVMM 可能会得到足够的完善,使用起来就不会那么痛苦了。