English日本語

功能

嵌套虚拟化

能得到什么

  • Windows 10 虚拟机里的 WSL2 和 Hyper-V;Linux 虚拟机里的 KVM 和 microVM;不碰真机的虚拟化实验环境。
  • 网页上每台虚拟机一个开关。开了嵌套的虚拟机和别的虚拟机一样,在宿主重启时挂起、再恢复,里面 Hyper-V 或 KVM 的状态也一起保存。

怎么做的

keel hypervisor 替虚拟机保存一份虚拟机控制结构的影子,并代它运行里面那一层虚拟机。分几步做出来:先是 demo,再加 VMCS shadowing,最后是嵌套 EPT。Hyper-V 还要几样微软没有写进文档的东西。

实测

  • Linux 6.12 的 KVM 当 L1:里面的虚拟机 4–5 秒到用户态;2000 次 fork+exec 用 2.18 秒(第一版 demo 是 213 秒);一次内层退出 32 µs。
  • Windows 10 22H2 开 Hyper-V:31–35 秒能 ssh;WSL2 启动 4–5 秒,起停 10 次全过;Hyper-V 里一台第 2 代 Alpine 虚拟机 60 秒内到登录提示。

限制

  • 只有 Intel 宿主。AMD 的嵌套 SVM 还没做。
  • 开了嵌套的虚拟机不能直通 PCI 设备;kcell 不能开。
  • Windows 的 VBS、内存完整性(HVCI)还不行。Windows 11、Windows Server、Proxmox 当外层 guest 还没试过。
  • 退出很多的负载(大量小 I/O)明显比直接跑在宿主上慢:跑 WSL2、开发环境、实验室足够,不适合当生产虚拟化。
  • 升级还在试用的时候,开了嵌套的虚拟机在宿主重启时会被关机,因为旧槽读不了新的检查点格式。

阅读文章 →

← 全部功能