−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

通俗讲解 Firecracker microVM:一台在零点几秒内启动的真正虚拟机

2026年10月10日 · 1 分钟阅读 · EQVPS Team

只要读过任何关于安全运行 AI 生成代码的文章,你就一定见过 microVM 这个词,通常就在 Firecracker 旁边。它往往要么被解释成“轻量级虚拟机”(没错,但没用),要么配一张内核内部结构图。这里是介于两者之间的版本。

两个老方案,以及为什么都不合适

先看 microVM 夹在中间的那两样东西。

容器是你机器上的一组普通进程,内核同意对它们“撒谎”。namespaces 让它们看到自己的文件系统、进程列表和网络;cgroups 限制它们能用多少 CPU 和内存。它在毫秒级启动,因为没有启动任何新东西。但一台宿主机上的所有容器都在和同一个内核对话。只要某个容器内能触及一个内核漏洞,所有容器就都有了出口。

虚拟机自带内核。宿主机的 CPU 借助硬件虚拟化(Linux 上是 KVM),把客户机当作拥有自己电脑一样运行。边界是 hypervisor,它暴露的东西远少于内核的数百个系统调用。代价是笨重。传统虚拟机要模拟一整台 PC:固件、PCI 总线、USB 控制器、显卡,有时还有声卡。它要逐一经过这些才能启动,耗时几秒到几分钟,每个实例还要背负几十到几百 MB 的开销。

一个还算贴切的比喻:容器是同一栋楼里的公寓,共享地基、水管和电线。虚拟机是独栋房子。独栋房子是更安全的邻居,但没人会为一次 20 秒的拜访盖一栋房子。

Firecracker 去掉了什么

Firecracker 是一个 virtual machine monitor(在 KVM 之上创建并运行虚拟机的程序),用 Rust 编写,2018 年开源。它为一件事而生:在共享硬件上运行海量短生命周期、互不信任的工作负载。它主要靠“删东西”做到这一点:

  • 没有固件,没有硬件探测。 内核被直接加载到内存并启动。不会有程序去探测并不存在的设备。
  • 极小的设备模型。 一张网卡、一个块设备、一个串口控制台以及另外几个,全部是 virtio(专为虚拟机设计的设备,而不是对物理设备的模仿)。没有 USB,没有图形,没有 PCI。
  • 小而内存安全的代码库。 模拟设备的代码越少,能让客户机触及宿主机的漏洞藏身之处就越少。
  • 给 VMM 本身也加了一道牢笼。 每个 Firecracker 进程都运行在 chroot 中,用 seccomp 过滤器限制它自己的系统调用,用 cgroups 限制它的资源。即使真有东西突破了客户机,它也只会落进笼子里,而不是宿主机上。

项目官方公布的数字是:最快 125 毫秒进入用户空间,每个 microVM 内存开销不到 5 MiB。这些是最理想的实验室数据;一个真实的沙箱还需要准备好磁盘和网络,并让里面的代理就绪以接收命令,所以我们的沙箱大约一秒就绪。这仍然足够接近容器的速度,让你可以为每个任务创建一个,用完即丢。

容器与 microVM 的实际对比

容器Firecracker microVM
内核与宿主机共享独立内核
与宿主机的边界对共享内核的系统调用hypervisor + 小型 VMM
启动时间毫秒级约 0.1–1 秒
每个实例的开销非常小几 MiB
设备宿主机暴露什么就有什么网络、磁盘、控制台
GPU可以不可以
适用于可信代码、应用打包不可信代码、多租户工作负载

关键的是第二行。对于容器,“这段代码能逃逸吗?”这个问题变成了“宿主机内核里是否存在可触及的漏洞?”。对于 microVM,它变成了“hypervisor 或少数几个虚拟设备里是否有漏洞?”。后者的攻击面小得多,而这正是云平台为自身多租户托管早已在防守的那一面。

你需要付出什么

microVM 并不是免费的升级。

  • 没有 GPU,也没有显示器。 它用于运行代码,不适合桌面或图形工作负载。
  • 设备更少,灵活性更低。 任何依赖真实硬件或一长串内核模块的东西,都不会用得顺手。
  • 边界仍然需要策略。 出站流量不受限的 microVM 仍可能发出你不想要的流量;放了你 API 密钥的 microVM 仍可能把它们泄露出去。隔离保护的是宿主机不受客户机侵害,而不是保护你的密钥不被你交给它们的代码拿走。

我们的沙箱如何使用它

每个 EQVPS 沙箱都是一个拥有独立内核的 Firecracker microVM,规格从 0.25 vCPU、512 MB 到 8 vCPU、16 GB。它预装 Python 3.12、Node.js 22、bash、git 和 curl,可以访问出站互联网,没有入站端口。临时沙箱在你用完后被删除;persistent 沙箱保留磁盘,暂停时会把 microVM 的快照写入磁盘,因此在恢复之前不产生任何费用。暂停快照保留 14 天。 之后沙箱被删除,其 id 返回 410 sandbox_deleted。

我们选择 microVM 而不是容器,原因只有一个:在沙箱里运行的代码,按设计就是没人审查过的代码。AI 智能体的输出、陌生人的 pull request、一个包含上千个模型编写程序的基准测试。对于这些,独立内核才是值得付费的边界。我们在它周围搭建的细节——套餐、配额、同步命令 55 秒的限制——见沙箱文档。

如果你想更深入地把这种边界与其他方案比较,运行不可信代码的隔离级别把进程、容器、microVM 和完整虚拟机放在一起对比。如果吸引你的是按秒的价格,按秒计费到底如何计算给出了算术过程。

常见问题

microVM 是容器吗?

不是。容器是运行在宿主机内核上的一组进程,靠 namespaces 和 cgroups 隔开。microVM 在虚拟硬件上运行自己的内核,它和宿主机之间的边界是 hypervisor。它之所以启动得几乎和容器一样快,只是因为传统虚拟机模拟的东西几乎都被去掉了。

为什么它启动这么快?

没有 BIOS,也没有硬件探测。VMM 直接加载内核,只提供少数几个虚拟设备:网络、块存储、串口控制台以及另外几个。要模拟的越少,要启动的就越少。

microVM 做不了什么?

没有 GPU 直通,没有图形显示,只有一组最小化的设备。它是为运行代码和服务而设计的,不适合桌面或重度依赖硬件的工作负载。

它比容器更安全吗?

它去掉了最大的共享攻击面:宿主机内核。里面的代码必须突破 hypervisor 和 VMM,而它们比内核的系统调用接口小得多。但这并非魔法:你仍然需要资源限制、网络规则,并且里面不能放任何密钥。

可以在 microVM 里运行 Docker 吗?

从技术上讲,microVM 可以运行其内核支持的任何东西,但我们的沙箱不带 Docker。如果你的工作负载需要容器,请在 VPS 上运行。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。