文档目录开发 · 18 篇

文档/开发

01

架构设计

NVX 微虚拟机与单工作负载客户机运行时的架构总览,以及 31 篇架构章节的中文导航。

译自microsoft/nvx · doc/design。技术细节以英文原文为准。

这一章描述 NVX 微虚拟机及其单工作负载客户机运行时的架构。它按架构概念而不是实现组件来组织设计。

实现状态、当前限制、验证过程、测试覆盖和交付计划有意不放进这套架构指南,它们分散在上游仓库的持续集成、对抗性测试和打包与源码交付文档里。

这套手册讲什么

NVX 提供一个小型、带版本的虚拟机,在 Linux 或 Windows 宿主上运行 Linux 工作负载。客户机看到的机器由 NVX 机器配置档定义,而不是从选中的 hypervisor 反推:KVM、MSHV、WHP 只提供执行服务,机器配置档则给出一套统一的启动、CPU、内存、设备、时间与生命周期契约。

按这个思路,整套手册分成五章:

章节 说明
1. 架构总览 NVX 的目标、主要架构元素、信任边界与兼容性原则。
2. 虚拟机架构 呈现给客户机的、与后端无关的虚拟平台。
3. 虚拟设备 每类设备对客户机可见的行为。
4. 客户机运行时架构 客户机如何把虚拟机变成隔离的工作负载沙箱。
5. VM 生命周期与状态 从创建、执行、捕获、恢复到终止的状态转换。

架构总览

宿主侧的编排器负责配置、策略和挂载;OpenVMM 的 NVX 机器配置档负责机器、设备与生命周期;KVM、MSHV 或 WHP 提供执行后端;客户机内核与客户机代理负责启动、修复与监管;最终承载的是单个隔离的工作负载;快照产物与外部挂载则与机器配置档双向联动。

用一条链条描述就是:

  1. 宿主编排器把配置、策略和挂载交给 NVX 机器配置档。
  2. 机器配置档把机器状态与设备模型交给执行后端(KVM、MSHV 或 WHP)。
  3. 客户机内核启动,客户机代理接管修复与监管。
  4. 客户机代理拉起唯一的工作负载。
  5. 快照产物与外部挂载在生命周期中随时可以接入或摘除。

这条链路的信任边界写在信任边界里;机器侧的契约写在机器模型与配置里;客户机侧的工作负载模型写在客户机代理与工作负载模型里。

第 1 章 · 架构总览

第 2 章 · 虚拟机架构

第 3 章 · 虚拟设备

  • 3.1 平台控制设备:覆盖字节通道、关机与快照请求功能。
  • 3.2 时钟与时间:定义时钟源、定时器行为、速率与时间连续性。
  • 3.3 控制台:把启动通信与经认证的运行时控制分开。
  • 3.4 块存储:定义固定存储角色、分层、可变性与保存状态。
  • 3.5 网络:定义网络身份、连通性、策略、入站访问与数据包流转。
  • 3.6 宿主文件系统:定义 virtio-fs 请求路径、宿主支持导出、访问策略与会话状态保存。

第 4 章 · 客户机运行时架构

第 5 章 · VM 生命周期与状态

配套文档

架构章节回答“系统长什么样”,操作类文档回答“怎么用起来”:

  • 环境准备:KVM、MSHV、WHP 各自的宿主要求。
  • 构建:编译 NVX、校验内核配置、打包客户机。
  • 运行:启动、退出、网络策略、挂载与直接运行 OpenVMM。
  • 命令行参考:nvx.py 与 nvx-rs 的全部命令和选项。
  • Rust API:在 Rust 中驱动沙箱生命周期。