Skip to content

Hypervisor 总览

什么是 Cube Hypervisor

Cube Hypervisor 是 CubeSandbox 的虚拟化核心,基于 Cloud Hypervisor 深度定制,使用 Rust 语言编写。它负责创建和管理轻量级虚拟机(MicroVM),为每个沙箱提供强隔离的运行环境。

核心能力

能力说明
轻量级虚拟化基于 KVM/MS-HV 创建轻量级 MicroVM,启动时间 < 100ms
强隔离每个沙箱运行在独立的虚拟机中,内核级别隔离
Virtio 设备支持 virtio-blk、virtio-net、virtio-fs、virtio-vsock 等
设备直通支持 VFIO 设备直通,提供接近原生的 I/O 性能
快照与恢复支持 VM 快照、热迁移,实现毫秒级冷启动
内存管理支持大页、NUMA、内存热插拔
安全加固seccomp 过滤、最小权限原则

代码仓库结构

hypervisor/
├── src/                    # 主入口
│   ├── main.rs             # CLI 入口
│   ├── lib.rs              # VmmInstance 封装
│   ├── vmm_config.rs       # VMM 配置
│   └── common.rs           # 通用工具
├── vmm/                    # VMM 核心
│   └── src/
│       ├── vm.rs           # 虚拟机管理
│       ├── cpu.rs          # vCPU 管理
│       ├── memory_manager.rs # 内存管理
│       ├── device_manager.rs # 设备管理
│       ├── migration.rs    # 迁移与快照
│       ├── acpi.rs         # ACPI 表生成
│       ├── config.rs       # 配置解析
│       ├── vm_config.rs    # 配置结构定义
│       └── api/            # HTTP API
├── hypervisor/             # Hypervisor 抽象层
│   └── src/
│       ├── lib.rs          # Trait 定义
│       ├── kvm/            # KVM 实现
│       └── mshv/           # MSHV 实现
├── virtio-devices/         # Virtio 设备实现
│   └── src/
│       ├── block.rs        # 块设备
│       ├── net.rs          # 网络设备
│       ├── fs.rs           # 文件系统
│       ├── vsock.rs        # Vsock
│       ├── balloon.rs      # 内存气球
│       ├── rng.rs          # 随机数
│       ├── console.rs      # 控制台
│       ├── iommu.rs        # IOMMU
│       ├── mem.rs          # 内存设备
│       ├── pmem.rs         # 持久内存
│       ├── vdpa.rs         # vDPA
│       ├── watchdog.rs     # 看门狗
│       └── vhost_user/     # Vhost-user
├── devices/                # 传统设备
│   └── src/
│       ├── acpi.rs         # ACPI 设备
│       ├── ioapic.rs       # IOAPIC
│       ├── gic.rs          # GIC (ARM)
│       ├── ivshmem.rs      # 共享内存
│       ├── pvpanic.rs      # 恐慌设备
│       ├── tpm.rs          # TPM
│       └── legacy/         # 传统串口
├── arch/                   # 架构支持
│   └── src/
│       ├── x86_64/         # x86_64 特定
│       └── aarch64/        # ARM64 特定
├── pci/                    # PCI 子系统
├── vm-allocator/           # 资源分配器
├── vm-device/              # 设备抽象
├── vm-migration/           # 迁移协议
├── vm-virtio/              # Virtio 抽象
├── block_util/             # 块设备工具
├── net_util/               # 网络工具
├── virtiofsd/              # VirtioFS 守护进程
├── vhost_user_block/       # Vhost-user 块
├── vhost_user_net/         # Vhost-user 网络
├── acpi_tables/            # ACPI 表工具
├── event_monitor/          # 事件监控
├── event_notifier/         # 事件通知
├── logging/                # 日志
├── tracer/                 # 追踪
├── rate_limiter/           # 限流器
├── serial_buffer/          # 串口缓冲
├── tpm/                    # TPM 工具
├── qcow/                   # QCOW 格式
├── vhdx/                   # VHDX 格式
└── vfio_user/              # VFIO-user

技术栈

  • 语言: Rust (Edition 2021)
  • 构建: Cargo workspace
  • 虚拟化: KVM (Linux) / MS-HV (Windows)
  • 设备模型: Virtio 1.1 + PCI
  • 内存管理: mmap + 大页支持
  • 异步运行时: epoll (非 tokio)
  • 序列化: serde + serde_json
  • CLI: clap v4
  • 日志: slog + log
  • 安全: seccompiler

阅读路径建议

快速了解

  1. Hypervisor 总览 - 本文
  2. 安全隔离模型 - 了解安全设计
  3. 快速启动与快照恢复 - 了解性能优化

深入源码

  1. 整体架构与 Cargo Workspace - 代码组织
  2. main.rs 入口与 CLI 解析 - 启动流程
  3. VMM 核心:vm.rs 深度解析 - 虚拟机管理
  4. CPU 管理:vCPU 生命周期 - CPU 虚拟化
  5. 内存管理:memory_manager.rs - 内存虚拟化
  6. 设备管理:device_manager.rs - 设备模型
  7. Hypervisor 抽象层 - KVM/MSHV
  8. Virtio 设备实现 - 半虚拟化设备
  9. 迁移与快照 - 状态管理
  10. ACPI 与设备树 - 固件接口

与 Cloud Hypervisor 的关系

Cube Hypervisor 基于 Cloud Hypervisor v28.0.0 分支,主要定制包括:

  1. VmmInstance 封装 - 提供 src/lib.rs 中的 VmmInstance 结构,作为上层调用的统一入口
  2. sandbox_id 支持 - 每个 VM 关联一个 sandbox_id,用于日志和追踪
  3. 事件通知机制 - 通过 event_notifier 模块支持上层事件订阅
  4. 日志定制 - 异步日志、JSON 格式日志、sandbox 级别日志隔离
  5. 集成优化 - 与 CubeShim 深度集成,支持 vsock 通信

下一步