Open1

マイクロVM「Firecracker」を試す

kun432kun432

ざっくり概要を知るなら公式サイトのほうがいいかも。

https://firecracker-microvm.github.io/

GitHubレポジトリ

https://github.com/firecracker-microvm/firecracker

Firecracker

私たちの使命は、コンテナおよびファンクションのワークロードを安全かつマルチテナントで、オーバーヘッドを最小限に抑えた状態で実行できるようにすることです。

Firecracker 憲章の詳細については、こちらをご覧ください。

Firecracker とは?

Firecracker は、サーバーレス運用モデルを提供するセキュアでマルチテナントなコンテナおよびファンクションベースのサービスを作成・管理するために特化して設計された、オープンソースの仮想化技術です。Firecracker は、マイクロVM と呼ばれる軽量の仮想マシン上でワークロードを実行し、ハードウェア仮想化技術が提供するセキュリティおよびアイソレーションの特性と、コンテナの速さと柔軟性を兼ね備えています。

概要

Firecracker の主なコンポーネントは、Linux カーネル仮想マシン (KVM) を使用してマイクロVM を作成・実行する仮想マシンモニター (VMM) です。Firecracker はミニマリストな設計を採用しており、各マイクロVM のメモリ使用量と攻撃対象面を削減するために、不要なデバイスやゲスト向け機能を除外しています。これにより、セキュリティが向上し、起動時間が短縮され、ハードウェアの利用効率が向上します。また、Firecracker は Kata ContainersFlintlock などのコンテナランタイムにも統合されています。

Firecracker は、AWS LambdaAWS Fargate などのサービスの速度と効率を向上させるために、Amazon Web Services で開発されました。Firecracker は Apache version 2.0 の下でオープンソースとして公開されています。

Firecracker の詳細については、firecracker-microvm.io をご覧ください。

設計

Firecracker の全体的なアーキテクチャは、設計文書に記述されています。

機能と能力

Firecracker は、起動後にホストに対して API エンドポイントを公開する単一のマイクロ仮想マシンモニター・プロセスで構成されています。API は OpenAPI 形式で仕様化されており、詳細は API ドキュメントをご参照ください。

API エンドポイント を使用することで、以下のことが可能です:

  • マイクロVM の設定:
    • vCPU の数を設定(デフォルトは 1)。
    • メモリサイズを設定(デフォルトは 128 MiB)。
    • CPU テンプレート の設定。
  • マイクロVM に 1 つ以上のネットワークインターフェースの追加。
  • マイクロVM に 1 つ以上の、読み書き可能または読み取り専用のディスクの追加(各ディスクはファイルバックのブロックデバイスとして表現)。
  • ゲストが起動中にブロックデバイスの再スキャンをトリガー。これにより、ブロックデバイスのバックファイルのサイズ変更をゲスト OS が認識できます。
  • ゲスト起動前または起動後に、ブロックデバイスのバックファイルの変更。
  • バーチャル I/O デバイスの帯域幅、秒間の操作回数、またはその両方を制限するためのレートリミッターの設定。
  • ロギングおよびメトリックシステムの設定。
  • [BETA] ゲスト向けメタデータサービスのデータツリーの設定。このリソースが設定されている場合にのみ、サービスはゲストで利用可能。
  • マイクロVM に vsock ソケット の追加。
  • マイクロVM に エントロピーデバイス の追加。
  • 指定されたカーネルイメージ、ルートファイルシステム、およびブート引数を使用して、マイクロVM の起動。
  • [x86_64 のみ] マイクロVM の停止。

組み込みの機能:

  • デフォルトで有効になっているデマンドフォールトページングと CPU オーバーサブスクリプション。
  • セキュリティ強化のための、スレッド固有の高度な seccomp フィルター。
  • 本番環境で Firecracker を起動するための Jailer プロセス;cgroup/namespace によるアイソレーション障壁を適用した後、権限を降下させます。

テスト済みプラットフォーム

以下のすべての組み合わせでテストしています:

Instance Host OS & Kernel Guest Rootfs Guest Kernel
c5n.metal al2 linux_5.10 ubuntu 24.04 linux_5.10
m5n.metal al2023 linux_6.1 linux_6.1
m6i.metal
m6a.metal
m6g.metal
m7g.metal

既知の問題点と制限事項

  • aarch64 上の pl031 RTC デバイスは割り込みをサポートしていないため、RTC アラーム(例: hwclock)を使用するゲストプログラムは動作しません。

パフォーマンス

Firecracker のパフォーマンス特性は、仕様書の一部として記載されています。すべての仕様は、サーバーレス運用モデルにおけるコンテナおよびファンクションワークロードのサポートに対する私たちのコミットメントの一環として、継続的な統合テストにより保証されています。

なるほど、元はAWS製なのね。