搜索

使用CoW内存fork实现亚毫秒级虚拟机沙箱

我想看看如果无需启动全新虚拟机,隔离代码沙箱能有多快启动。因此,我没有为每次执行启动新的微虚拟机,而是预先加载Python和numpy后一次性启动Firecracker,并完整快照虚拟机状态。此后每次执行都会创建一个新的KVM虚拟机,其背后是快照内存的`MAP_PRIVATE`映射,Linux会自动提供写时复制页面。这意味着每个沙箱都是从真实虚拟机内已运行的Python进程启动,执行代码后退出。这些是真正的KVM虚拟机而非容器:独立的客户内核、独立的客户内存、独立的页表。当虚拟机写入内存时,它会获得该页面的私有副本。难点不在于CoW本身,而是正确恢复快照虚拟机状态。Rust语言,Apache 2.0协议。

  • Web应用
  • 云原生
  • 开源
Mar 17, 2026访问官网

AI 摘要

ZeroBoot是一个通过快照预启动的Firecracker微虚拟机(已加载Python和库)来创建亚毫秒级虚拟机沙箱的系统。每次新执行都使用写时复制内存映射来分叉此快照,提供完整的KVM隔离,而无需全新虚拟机启动的开销。

适合谁

需要快速冷启动的无服务器/函数即服务平台, 用于不受信任用户代码的高性能代码沙箱, 需要快速、隔离Python环境的数据科学或机器学习工作负载

为什么值得关注

通过内存分叉预初始化快照消除启动过程,实现近乎即时的虚拟机启动,并提供完整的硬件级隔离。

核心特性

  • 利用写时复制内存fork技术,在不到一毫秒内启动虚拟机沙箱
  • 一次性启动Firecracker并预加载Python和numpy,然后快照完整的虚拟机状态
  • 创建基于快照内存MAP_PRIVATE映射的新KVM虚拟机,实现自动写时复制页面
  • 提供真正的KVM虚拟机隔离,拥有独立的Guest内核、内存和页表

使用场景

  • 一家数据科学平台利用此技术为不同客户运行数千个隔离的Python数据转换任务。每个用户的脚本都在全新虚拟机中执行,启动时间不到一毫秒,既确保作业间完全隔离,又能维持预热环境的性能优势——像numpy这类库已预先加载就绪。
  • 某无服务器计算提供商采用该技术创建函数执行环境。当函数被调用时,新的微虚拟机会从包含运行时的快照中分叉生成,将冷启动延迟从数百毫秒骤降至亚毫秒级,极大改善了延迟敏感型应用的用户体验。
  • 一家安全研究公司运用这些沙箱安全执行不可信代码样本以进行恶意软件分析。每个样本都在完全隔离的虚拟机中运行,启动近乎瞬时,使研究人员能快速测试数千个变种,同时将恶意活动完全控制在分叉环境内。