−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 上執行。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。