
CubeSandbox 内置 hypervisor 版本演进全解从 v0.1.0 到 v28.0 的 Cloud Hypervisor 技术路线图【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox本文以 CubeSandbox 仓库内hypervisor/目录下内置的 Cloud HypervisorVMMrelease-notes.md 为核心主线系统梳理该 VMM 从 v0.1.0 到 v28.0 的完整技术演进脉络涵盖启动与固件、内存管理、I/O 虚拟化、设备直通、安全特性、热插拔、实时迁移与快照恢复等核心主题。读者读完后既能掌握各版本引入的关键命令行参数与配置选项如--memory thp、--platform iommu_segments、--balloon free_page_reporting、--vdpa等也能理解这些特性在仓库源码中的落点为在生产环境中选型、升级与排障提供依据。一、版本脉络与稳定性承诺为什么说 v15.0 是分水岭hypervisor/release-notes.md记录的版本序列横跨两个阶段早期0.x阶段v0.1.0 v0.14.1与vNN.0阶段v15.0 v28.0。v15.0 引入新的版本编号方案与稳定性承诺这是理解整个演进路线的关键坐标API含命令行选项在至少提前 2 个版本预告前不会被移除或以破坏性方式变更已弃用功能会在 release notes 中明确记录并给出警告。在两次正式版本之间若存在需要修复的重大 bug 或安全问题会发布 point release例如 v20.1、v20.2、v22.1、v23.1、v0.5.1、v0.14.1。明确不受稳定性承诺保护的范围跨版本的 snapshot/restore 与 live migration 不保证兼容TDX、SGX 被视为实验特性可能在版本间大幅变化。v28.0 进入 LTSLong Term Support节奏这是首个按 LTS 流程发布的版本后续 18 个月内会持续发布 bug 修复的 point release且在 LTS 的 point release 之间保证 live migration 与 live upgrade 兼容。仓库中 hypervisor/Cargo.toml 的版本号正是28.0.0与 release notes 的 v28.0 一一对应。从源码结构看该 VMM 的构建特性feature flags也与发布说明高度一致见 hypervisor/Cargo.tomlFeature 标志作用默认kvm基于 KVM 的后端支持默认开启mshv微软 Hypervisor (MSHV) 后端支持关闭tdxIntel TDX 支持关闭tracing启动跟踪boot tracing支持关闭guest_debugGDB 调试与 guest 内存导出关闭lib_support以库形式使用 VMM关闭二、启动与固件从传统引导到 PVH 与多固件选项启动方式是该 VMM 演进中最具代表性的主线之一。v0.1.0 时代支持 Linux 内核bzImage直接启动发行版内核常见格式并默认以virtio-console作为 guest 控制台可通过--serial tty --console off回退到传统串口。v0.6.0 引入 PVH 直接内核引导在传统 Linux boot protocol 之外新增对 PVH ABI 的直接内核启动支持这是后续固件策略的基础。v0.8.0 支持 5 级页表LA57当宿主机支持时guest 可启用 5-level paging支持 vmlinux、bzImage 与固件引导但受 PVH 引导流程限制使用CONFIG_PVHy编译的 ELF 内核暂不支持。v16.0 移除 LinuxBoot 协议不再支持以 LinuxBoot 协议引导 ELF 与bzImage直接引导用户需将内核配置为CONFIG_PVHy。v27.0 废弃 legacy 固件引导由于 Cloud Hypervisor OVMF 与 Rust Hypervisor Firmware 均已支持 PVH 引导以传统模式加载固件不再需要v28.0 正式移除非 PVH 固件引导对应源码 issue #4511以及旧版固件使用的 I/O 端口#3926。v28.0 还移除了已弃用的 kernel/cmdline/initramfs 旧 API 选项#4737。与固件相关的重要修复还有 v19.0 的 TDVF 固件下 ACPI 表经由固件暴露给 guest、v22.0 的 通过 TD-Shim 轻量固件在 TDX 下直接引导内核。仓库中 hypervisor/docs/uefi.md、hypervisor/docs/intel_tdx.md 与 hypervisor/docs/custom-image.md 记录了完整的固件与内核引导配置方法。三、内存管理演进从基础分配到大内存与透明大页内存子系统的演进贯穿了几乎所有版本v0.1.0virtio-pmem虚拟持久内存设备可绕过 guest 页缓存、改善内存占用。v0.2.0virtio-fs 共享文件系统加入 DAX 共享内存区兼顾性能与小内存占用。v0.3.0重写 guest 地址空间处理支持超过 64GB 的大内存 guest。v0.10.0引入Memory Zones可对 guest 内存分区进行细粒度控制指定各段内存的 backing、绑定宿主 NUMA 节点并将内存与 vCPU 映射到 guest 内的特定 memory node详见 hypervisor/docs/memory.md。v0.11.0virtio-balloon控制从--memory独立为--balloon参数。v0.13.0--memory新增hugepage_size可指定分配 guest 内存时使用的巨页大小需保证池中具有足够的目标尺寸巨页。v22.0--balloon free_page_reportingon让 guest 向 VMM 报告空闲页VMM 再通知宿主机释放提升内存密度。v28.0Transparent Huge PageTHP支持成为默认行为——只要 guest 内存不使用文件 backing 且sharedoff就会默认以透明大页为 guest 内存提供 backing改善启动性能可通过--memory thpoff关闭。源码可以印证 THP 的默认值在 hypervisor/vmm/src/vm_config.rs 中default_memoryconfig_thp()返回true而--memory的参数解析位于 hypervisor/vmm/src/config.rs实际的内存区域创建逻辑在 hypervisor/vmm/src/memory_manager.rs仅当 region 无文件 backing 时才应用 THP与文档描述一致。内存相关的其他重要能力还包括v19.0 起 live migration 支持virtio-mem内存热插拔与virtio-balloon设备迁移v24.0 为 VFIO 与 vfio-user 设备加入sparse mmap允许设备区域被部分映射映射越完整则访问时的 VM exits 越少、设备相关性能越好同时修复了 VFIO/vfio-user MMIO 区域的潜在 mmap 泄漏#4069。四、I/O 虚拟化virtio、io_uring、vhost-user 与磁盘格式4.1 virtio 设备与传输层v0.1.0virtio-console 作为默认 guest 控制台。v0.3.0新增 virtio MMIO 传输层支持为无 PCI 总线的最小化 guest 配置铺路v0.11.0 正式移除virtio-mmio统一到 PCI 传输简化代码并显著降低测试负担。v0.4.0增加 Rust 实现的 vhost-user-blk 与 virtiofs 后端。v0.9.0virtio 网络与块设备统计经vm.countersHTTP API 暴露CPU 拓扑经--cpus topology配置sockets、packages、cores、threads 参数。v0.11.0io_uring成为virtio-block的默认 I/O 引擎需宿主机 Linux 5.8块设备性能显著提升--balloon独立参数化新增实验性virtio-watchdog--watchdog需要内核支持。v0.10.0virtio-block支持多 descriptor 请求--cpus新增kvm_hyperv选项KVM 的 HyperV 模拟开关。v22.0virtio-balloon尺寸会与 guest RAM 大小交叉校验#3689多个 TAP fd 可用于virtio-net热插拔#3607。4.2 vhost-user 与 I/O 卸载vhost-user 是贯穿多个版本的持续主线v0.2.0 支持 vhost-user-net 后端可对接 DPDKv0.3.0 支持 vhost-user-blk 后端可对接 SPDKv0.4.0 补齐 Rust 版 vhost-user-blk 与 virtiofs 后端v0.6.0 在用户选择 offload 时自动以独立进程 spawn 默认的 vhost-user-blk/net 后端v0.11.0 弃用 self-spawningv0.12.0 正式移除——此后用户须自行启动后端并提供 socket 给 VMM 使用。v0.12.0 同时将 vhost-user-fs 后端迁出到独立仓库virtiofsd-rs仓库内对应实现见 hypervisor/virtiofsd。v0.16.0 增强 vhost-user 设备重连支持并支持 vhost-user-net 连接方向反转server 在 VMM、client 在后端与 Open vSwitch 默认做法一致v17.0 为 vhost-user 设备加入 I/O 请求的 inflight tracking支持设备重连后的恢复v18.0 起 vhost-user 设备可参与 live migration常用 DPDK 后端已支持。4.3 磁盘镜像格式与网络v0.13.0新增 VHDfixed磁盘镜像支持此前已有 raw 与 QCOWv2--net支持fd传入已打开的 TAP fd便于与 libvirt 集成及使用 MACvTAP见 hypervisor/docs/macvtap-bridge.md。v18.0新增VHDX磁盘镜像格式支持仓库内对应实现为 hypervisor/vhdx crate。v24.0修复 VHDX 文件格式头问题#4291拒绝压缩 QCOW 镜像#4055。v28.0修复超大 QCOW 文件4TiB支持#4767。v27.0virtio-net关联 TAP 设备的 MTU 暴露给 guest--net mtu..指定的 MTU 会应用到创建的 TAP 接口同时适用于 vhost-user-net#4658、#4676。v0.15.0网络设备支持限速rate limiting与块设备限速统一详见 hypervisor/docs/io_throttling.mdv0.14.0 先为块设备引入限速。v0.15.0guest 可运行时控制virtio-netoffload 设置同时规避 Linux 内核在未声明可配置时仍尝试重编程 offload 的问题#2528。五、设备直通、IOMMU 与安全VFIO、seccomp、SGX、TDX、TPM5.1 VFIO 与 vfio-userv0.1.0通过 VFIO 框架支持宿主机物理设备直通hypervisor/docs/vfio.md。v0.2.0修复 VT-d 场景下 guest 内存未缓存导致的直通性能问题达到直通设备预期性能。v0.13.0支持不依赖 MSI/MSI-X 而依赖 INTx 中断的 PCI 设备直通显著扩大了对 NVIDIA 显卡专有驱动等设备的支持。v20.0基于 VFIO region capabilities 对所有 region 做内存映射减少 VM exits、提升直通性能vCPU 支持 CPU pinning--cpus指定允许运行的宿主 CPU 集合。v18.0实验性 vfio-user 用户态设备支持--user-device可与 SPDK NVMe vfio-user controller 对接。v24.0VFIO 与 vfio-user 均加入 sparse mmap同一个 VFIO 设备不能重复添加#4453、#4463。源码中 vfio-user 的实现位于 hypervisor/vfio_user crate对应文档为 hypervisor/docs/vfio-user.md。5.2 IOMMUvirtio-iommu 与 PCI segmentsv0.3.0引入 paravirtualized IOMMUvirtio-iommu--disk路径需以path前缀并支持iommu[on|off]hypervisor/docs/iommu.md。v19.0virtio-iommu 支持 AArch64。v22.0新增--platform iommu_segmentslist_of_segments将指定 PCI segment 全部置于 IOMMU 之后便于热插拔需要 IOMMU 的设备如 QAT。v23.0virtio-iommu 背书的 PCI segments 被完整地置于 vIOMMU 之后#3870。v24.0virtio-iommu 支持bypass domain规范描述的默认直通域使得不支持 virtio-iommu 的 guest 软件也能在virtio-block位于虚拟 IOMMU 之后时正常引导支持 Rust Hypervisor Firmware 与 OVMF。5.3 安全与机密计算v0.7.0引入seccomp沙箱默认开启--seccomp控制。v0.8.0virtiofs 服务端支持 seccomp 自沙箱。v0.9.0常用 virtio 设备拥有独立 seccomp filter--seccomplog可记录本应被拒绝的系统调用请求guest 支持 Intel SGXhypervisor/docs/intel_sgx.md。v0.10.0全部剩余线程与设备均纳入独立 seccomp filter。v17.0SGX 支持对齐最新内核支持 SGX provisioning 与 EPC 段关联 NUMA 节点。v22.0支持 TDX 下直接内核引导配合 TD-ShimGDB stub 支持gdb编译特性hypervisor/docs/gdb.md。v23.0amx编译特性 --cpu featuresamx运行时启用 AMX 指令集扩展。v28.0新增模拟 CRB TPM 设备支持hypervisor/tpm crate文档见 hypervisor/docs/tpm.md。5.4 MACvTAP 与网络直通v13.0MACvTAP 支持通过--net的fd参数传入已打开的 TAP。v17.0macvtap设备热插拔ch-remote支持添加网络设备时传入 fd。六、热插拔与动态资源配置热插拔能力是可运行工作负载的 VMM的核心能力演进路径清晰v0.4.0CPU 热插拔硬件精简 ACPI 通知并引入程序化生成 ACPI 表的acpi-tablescrate。v0.5.0CPU 热拔出 内存热插拔支持动态 resizeKubernetes 类场景所需多队列多线程 virtio 网络/块设备Kata Containers 成为完全支持的 hypervisor。v0.6.0直通VFIO设备热插拔/热拔出ch-remoteCLI 工具诞生抽象 REST API。v0.7.0block、network、pmem、virtio-fs、vsock 的热插拔/拔出virtio-mem作为 ACPI 之外的替代内存热插拔方式--memory hotplug_method--initramfs支持。v22.0支持VM 引导前修改配置增加/移除设备、resize。v23.0CMOS 复位支持适配 Ubuntu jammy 的 reboot。源码中的热插拔文档见 hypervisor/docs/hotplug.mdvirtio-mem相关配置与校验逻辑可在 hypervisor/vmm/src/memory_manager.rs 中找到。七、实时迁移、快照恢复与调试v0.8.0首个实验性 snapshot/restore 支持不支持 VFIO 直通设备的 VMSMP 场景存在已知问题。v0.9.0快照持久化更多 vCPU 状态含 paravirtualized clock避免多 vCPU 挂起。v0.11.0快照/恢复支持 ARM64支持 2GiB 单 region 的 VM。v15.0--api-socket支持fd参数传入既有文件描述符修复 TAP 在宿主 buffer 耗尽不可写时的处理#2517。v16.0实时迁移跟踪 VMM 自身写入的脏页补充 guest 脏页跟踪VMM 内部状态版本化允许跨版本安全迁移仍需谨慎详见 hypervisor/docs/live_migration.md。v17.0vm.infoAPI 增加设备详情含 VFIO 设备。v18.0ARM64 支持 live migrationMSHV 上支持 live migration含高效脏页跟踪。v21.0本地实时迁移优化——ch-remote send-migration --local跳过源到目的地的内存比较将 live upgrade 耗时从约 3s 降至约 50ms修复迁移在固件阶段触发时的支持。v22.0GDB 调试 stub--gdb。v25.0ch-remote支持从 JSON 配置创建 VM、引导与删除 VMguest_debug特性下支持VM coredump导出 guest 内存供crash等工具分析#4012。v27.0Boot tracing——生成启动耗时 trace 报告并提供生成 SVG 的脚本tracing特性hypervisor/docs/tracing.md。与调试相关的实现文件包括 hypervisor/vmm/src/gdb.rs 与 hypervisor/vmm/src/coredump.rs。八、平台与架构支持AArch64、MSHV、Windows guestv0.8.0实验性 ARM64 支持最初仅 virtio-mmio 与串口hypervisor/docs/arm64.md。v0.9.0ARM64 支持 PCI 暴露设备与 initramfs 引导。v0.11.0官方支持 Windows guesthypervisor/docs/windows.md。v0.12.0ARM64 支持--watchdog与 guest 内 reboot。v16.0ARM64 支持 ACPI 与 UEFI 引导无需直接内核引导可用发行版原厂镜像。v17.0ARM64 ACPI NUMA 支持MSHV 后端补齐 seccomp 规则。v18.0AArch64 CPU 拓扑支持ACPI 或 device tree 传达、AArch64 电源按钮支持、MSHV 上的设备直通。v19.0AArch64 支持 virtio-iommu。v20.0x86_64 与 aarch64 均支持16 个 PCI segments最多 496 个 PCI 设备。v22.0AArch64 提供 PMU宿主可用时自动暴露修复 Windows 11 on AArch64 的宽 MSI-X 寄存器访问问题#3714、#3720。v23.0AArch64 内存映射改进UEFI region 处理guest 可完整访问分配的 RAM支持 31 vCPU on aarch64v28.0 修复#4863。v26.0统一二进制同时支持 MSHV 与 KVM运行时自动检测使用哪个 hypervisor--platform支持 OEM strings向 guest systemd 传递元数据与 UUID 指定。从 hypervisor/hypervisor crate 的源码结构看hypervisor 抽象层正是 v0.9.0 引入的Hypervisor Abstraction的延续——独立的hypervisorcrate 用于支持 KVM 之外更多后端。九、API、工具与可观测性v0.3.0VMM 内置 HTTP API为异步操作如热插拔、迁移做准备。v0.6.0推出ch-remoteCLI封装 REST API支持 PVH 引导。v0.7.0ch-remote新增add-disk、add-fs、add-net、add-pmem、add-vsock与remove-device子命令。v0.8.0--net增加host_mac选项ch-remote显示 VMM 生成的错误消息。v0.9.0vm.counters端点暴露设备统计add-device API 返回设备名与 PCI BDF。v0.14.0--event-monitor选项通过文件或 fd 输出结构化JSON事件。v15.0--api-socket支持fd参数。v26.0VmConfig顶层kernel/initramfs移入PayloadConfigpayload成员旧 API 继续映射兼容v28.0 移除。仓库中的 OpenAPI 规范文件为 hypervisor/vmm/src/api/openapi/cloud-hypervisor.yamlv26.0 起随 PayloadConfig 调整持续更新。十、关键命令行参数速查源码佐证以下参数均已在仓库源码中找到对应实现可直接在构建/运行该 VMM 时使用参数说明源码位置--memory thpoff关闭默认的透明大页 backinghypervisor/vmm/src/config.rs、hypervisor/vmm/src/vm_config.rs--memory hugepage_size指定巨页大小v0.13.0 引入--memory hotplug_methodvirtio-mem使用 virtio-mem 内存热插拔v0.7.0 引入--platform iommu_segmentslist指定 PCI segment 置于 IOMMU 后hypervisor/vmm/src/vm_config.rs、hypervisor/vmm/src/config.rs--platform serial_number设置 SMBIOS 暴露的平台序列号hypervisor/vmm/src/vm_config.rs、hypervisor/vmm/src/vm.rs--balloon free_page_reportingon启用空闲页报告v22.0 引入--net mtu..指定 TAP 接口 MTU 并暴露给 guestv27.0 引入--vdpa启用 vDPA 设备hypervisor/vmm/src/config.rs--user-device启用 vfio-user 用户态设备hypervisor/vmm/src/config.rs--watchdog启用 virtio-watchdoghypervisor/vmm/src/config.rs--gdb启用 GDB 调试 stubguest_debug特性hypervisor/vmm/src/config.rs十一、重要的弃用与移除记录升级必读升级路径上需要特别留意的移除项LinuxBoot 协议引导v15.0 弃用v16.0 移除改用CONFIG_PVHy直接引导。vhost-user 自 spawnv0.11.0 弃用v0.12.0 移除用户自行启动后端并提供 socket。virtio-mmio 传输v0.11.0 移除。--pmem的mergeable选项 /--fs的dax选项v23.0/v24.0 弃用v25.0 移除。--disk的poll_queue参数v26.0 移除。非 PVH 固件引导与旧固件 I/O 端口v28.0 移除。kernel/initramfs顶层 API 成员v26.0 迁移至PayloadConfig.payloadv28.0 移除旧版。Classic C 版 virtiofsdv22.0 起不再测试推荐 Rust 版 virtiofsd。十二、结语如何继续深入release-notes.md 是一份浓缩的 VMM 能力地图。若希望按图索骥深入每个特性仓库内 hypervisor/docs 目录提供了 30 篇配套文档其中与本文各章节直接对应的包括hypervisor/docs/memory.md内存 zones 与 THP、hypervisor/docs/balloon.md气球设备、hypervisor/docs/tpm.mdv28.0 新增、hypervisor/docs/vdpa.md、hypervisor/docs/intel_tdx.md、hypervisor/docs/intel_sgx.md、hypervisor/docs/live_migration.md、hypervisor/docs/snapshot_restore.md、hypervisor/docs/gdb.md、hypervisor/docs/io_throttling.md、hypervisor/docs/hotplug.md 与 hypervisor/docs/tracing.md。对于需要跟随最新演进如 LTS 期间的 point release或评估从旧版本升级的读者建议将本 release notes 与 hypervisor/Cargo.toml 中的 feature 定义、hypervisor/vmm/src/config.rs 中的命令行解析以及 hypervisor/vmm/src/api/openapi/cloud-hypervisor.yaml 中的 API 规范对照阅读即可获得从版本特性到源码实现的完整闭环。【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考