AWS FirecrackerPapers 值得推薦給對 Linux Virtualization 及 Container 入門有興趣的人閱讀。

Linux containers 及 virtualizations 差別

Linux Virtualization vs. KVM Container

可看出 Firecracker 為了 security 及 compatibility 的權衡,選擇採用 virtualization 而不是 container 的原因。

Isolation Options 的三大類

1. Linux Containers

LXCDocker 屬於此類,也提到為了進一步解決 container 下的 security 及 compatibility 權衡,Google 在此基礎上推出了 gvisor。這與 Firecracker 基於 virtualization 之上有所不同。

2. Language-Specific Isolation

Java Virtual Machine (JVM) 和 V8 屬於此類。

3. Virtualization

KVMQEMU 屬於此類。以及為了解決啟動時間等問題的 Unikernel 也為此類。

主角 Firecracker 採用此類方案。Firecracker 基於 KVM,但用更安全的程式語言及更少的程式碼 (more code = more bug) 來替換 VMM,所以這裡自然就會提到 RustFirecracker 包含大約 5 萬行的 Rust 程式碼 (僅佔 QEMU 的 4%)。

類似 Firecracker 的其他方案

提到主角 Firecracker 與 Kata Containers, Intel’s Clear Containers 及 NEC’s LightVM 都是 hypervisor-based virtualization,且挑戰類似的領域。

但其他方案不是基於 QEMU/KVM 就是 Xen。而 Firecracker 只想基於 KVM 而重寫 VMM 以完全取代 QEMU,達到更安全、程式碼更少的目的。

總結

本篇 Papers 除了能認識基礎 Firecracker 外,也引入門了 Isolation Options,更說明了各 Isolation Options 間的差異。對整體通盤的瞭解有所助益。

資料來源

Firecracker: Lightweight Virtualization for Serverless Applications