Firecracker のデザインについて調べてみた #reinvent

サーバーレスコンピューティングのための軽量な仮想化ソフトウェアである Firecracker について少し調べてみました!
2018.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、AWS からセキュアかつ高速なサーバーレスコンピューティングのための microVM が発表されました。

公式のブログ記事は、以下をご参照ください。

弊社でも、既に速報記事にてお伝えしたとおりです。

[速報]AWSのサーバーレス基盤、FirecrackerがOSSとしてリリースされました! #reinvent

詳細については、公式ページおよび GitHub のリポジトリをご確認いただくのが確実かと

今後のロードマップについては、GitHub の Issue に記載があるようです。

Firecracker とは

公式サイトのドキュメントから引用します。

  • Firecracker はユーザー空間で動作し、Linuxカーネルベースの仮想マシン(KVM)を使用して microVM を作成します。
  • Firecracker は QEMU に代わる幅広い機能を備えた VMM(仮想マシンモニター)であり、様々なゲストOS をホストできます。
  • Firecracker プロセスは、vCPUの数の設定やマシンの起動などの一般的な操作を RESTful API 経由で制御できます。
  • Firecracker プロセスは、同じマシン上の何千ものマイクロVMによって使用されるネットワークとストレージのリソースを細かく制御できるように、レートリミッタを内蔵しています。
  • Firecracker は、ホストとゲストOS 間で構成情報を安全に共有するメタデータサービスも提供します。
  • Firecracker API を使用してメタデータサービス構成および設定ができます。

Firecracker は QEMU(OpenStack 環境等で幅広く利用されている)の代替ソフトウェアとして KVM 環境における仮想マシンモニターの役割がメインなのかなと考えてます。 なお、QEMU は CPU エミュレーターですが、ここ近年の仮想化環境で利用されるシチュエーションとしてはホスト/ゲストOS 共に Intel x86_64 環境の場合が多いことから CPU エミュレーションする必要もないため QEMU よりもシンプルな最低限の必要な機能を有する代替製品が望まれた結果として Firecracker が生まれたのかなと想像しています。

QEMU の詳細については、プロジェクトページをご参照ください。

AWS 環境の KVM と言えば、Nitro Hypervisor を思い浮かべますが Lambda や ECS 環境が Nitro + Firecracker の組み合わせで構成されていると考えられます。 何となく、各製品の語感を組み合わせると危険物取扱者がいないと危なそうな印象を受けますね。

なお Nitro Hypervisor については、下記のドキュメントを参照ください。

Firecracker のデザイン

GitHub から抜粋します。

firecracker-design

画像に記載のとおり、ホストOS のカーネル空間では KVM のみが動作しておりユーザー空間では Firecracker の microVM プロセスが動作しているイメージ図となっています。また、microVM 内部ではゲストOS が動作しており黄色い File Block Device は、ゲストOS 用のカーネルおよびルートファイルシステムではないかと推測されます。

さいごに

Firecracker 環境を構築し検証を試みていますが、まだ動かせておらず手探りの状況です。 実機での検証がうまくいったら、また共有したいと思います。

ではでは