OpenVMM 是一个模块化、跨平台、通用的虚拟机监视器(VMM),用 Rust 编写。
- 虚拟化技术允许计算工作负载在服务器环境中以虚拟机(VM)的形式运行。
- 保密计算技术显著提高了云中运行的VM的安全性。
- 微软采用了一种不同的方法,通过使用“paravisor”来提供更大的灵活性。Paravisor在保密信任边界内执行,并提供通用操作系统所需的虚拟化和设备服务。
与其他通用 VMM(如 Hyper-V、QEMU、VirtualBox)类似,OpenVMM 能够在其灵活的虚拟硬件平台上托管各种现代和传统的客户操作系统。
- 现代操作系统可以通过 UEFI 启动,并与各种半虚拟化设备交互以实现网络、存储和图形等服务。
- 传统的 x86 操作系统可以通过 BIOS 启动,并提供与 PC 兼容的模拟设备平台,其中包括 IDE 硬盘/光驱、软盘驱动器和 VGA 显卡等传统硬件。
OpenVMM 定期进行测试以确保与流行操作系统(如 Windows、Linux 和 FreeBSD)的兼容性,并努力与其他更小众/传统的操作系统保持合理的兼容性。
模块化的
OpenVMM 从一开始就被设计用于支持各种不同的虚拟化场景,每个场景都有自己独特的需求和限制。
OpenVMM 项目并不依赖“一刀切”的解决方案,而是允许用户构建 OpenVMM 的专门版本,并为其特定场景提供所需的精确功能集。
例如:设计用于在用户个人电脑上运行的 OpenVMM 版本可能会编译所有可用功能,以支持各种各样的工作负载,而设计用于运行 Linux 容器工作负载的 OpenVMM 版本可能会选择一组狭窄的启用功能,以最大限度地减少资源消耗和 VM 可见的表面积。
OpenVMM与OpenHCL
OpenVMM 的一个特别值得注意的用例是在 OpenHCL(又名 OpenVMM 作为 paravisor)中。
与传统虚拟化不同,在传统虚拟化中,VMM 在特权主机/根分区中运行,并向非特权客户分区提供虚拟化服务,“paravisor”模型使 VMM 能够从客户分区内部提供虚拟化服务。
它可以被视为一种“虚拟固件”的形式,以比主客户操作系统更高的特权级别运行。
Paravisors 非常令人兴奋,因为它们支持各种有用且新颖的虚拟化场景!例如:在 Microsoft,OpenHCL 在支持几个重要的 Azure 场景中发挥着关键作用:
- 使现有工作负载能够无缝利用Azure Boost(Azure 的下一代硬件加速器),而无需对来宾 VM 映像进行任何修改。
- 使现有的客户操作系统能够在硬件支持的 机密虚拟机内运行。
- 为可信启动虚拟机提供支持- 支持安全启动并包含 vTPM 的虚拟机。
OpenHCL功能
- OpenHCL可以在x86-64和ARM64平台上运行,支持Intel TDX和AMD SEV-SNP保密计算平台。
- 提供设备模拟、设备转换、诊断支持等服务。
- 特别为非完全开明的保密VM(如Windows和旧版本的Linux)提供支持。
OpenHCL架构
- OpenHCL由几个开源组件组成,最重要的是OpenVMM,这是一个用Rust编写的跨平台虚拟机监视器(VMM)项目。
- 还包括一个引导加载程序和为支持VMM而定制的小型Linux内核。
OpenVMM与OpenHCL
- 跨平台虚拟机监视器(VMM):OpenVMM是一个用Rust编写的跨平台VMM项目,旨在为各种硬件平台提供虚拟化服务。
- 用户模式进程:OpenVMM运行多个用户模式进程来支持OpenHCL,这使得它可以为虚拟机提供设备分配和设备转换支持。
- 内存安全:由于使用Rust编写,OpenVMM具有强大的内存安全特性,这有助于防止内存相关的安全漏洞。
- 标准Rust工具链:OpenVMM利用广泛支持和稳定的Rust工具链和crate生态系统,这使得开发和维护更加高效。
- 内核组件:OpenVMM的内核组件目前基于Linux,但微软对将内核组件转换为Rust表示出了兴趣,以进一步提高内存安全性。
要了解有关 OpenVMM 项目不同方面的更多信息,请查看以下链接:
- 入门:OpenVMM将 OpenVMM 作为传统主机 VMM 运行
- 入门:OpenHCL运行 OpenVMM 作为 paravisor(OpenHCL)
- 开发人员指南:入门在本地构建 OpenVMM / OpenHCL