rust-vmm

VMM(Virtual Machine Monitor)を作るためのRust製部品(クレート)を共有するプロジェクト。KVM ioctlの呼び出し、VMのメモリ管理、virtioデバイスとのやり取りなど、複数のVMM実装で重複しがちな部分を共通クレートとして切り出し、車輪の再発明を防ぐことを目的とする。 #virtualization #rust

成り立ち

2018年12月、Amazon・Google・Intel・Red Hatの開発者が、VMM作成コードを共有する方法について議論したことから発足した。きっかけは、Rust製VMMであるcrosvm(Google/ChromeOS発)とFirecracker(AWS発)が、KVM呼び出しやメモリ管理まわりで似たようなコードを別々に持っていたこと。この重複を解消し、以後Rust製VMMを書く際に同じ実装を繰り返さずに済むようにする狙いがあった。

主なクレート

  • kvm-bindings / kvm-ioctlsKVMカーネルヘッダへのRust FFIバインディングと、それをラップする機能
  • vm-memory — VMのゲストメモリを扱うための共通トレイト。VMMの各コンポーネントが実装の詳細を知らずに物理メモリへアクセスできるようにする
  • virtioデバイス関連クレートおよびvhostパッケージ — デバイスエミュレーション用
  • Microsoft Hyper-V・Xenのハイパーコールインターフェース、Linuxカーネルローダーへの対応も含む

ガバナンス

特定企業に閉じたプロジェクトではなく、Alibaba・AWS・Crowdstrike・Intel・Google・Linaro・Red Hatなどの企業から参加する開発者、および個人コントリビューターによる共同所有・共同運営の体制を取っている。

採用プロジェクト

Firecrackercrosvmに加え、Cloud Hypervisorもrust-vmmの理念を採用しており、実装コードの大部分がFirecrackerやcrosvmをベースにしている。QEMUのvirtiofsd実装やvhost-deviceなども取り込まれている。

どこまで簡単にVMMを作れるか

rust-vmm公式が「rust-vmmクレート+最小限の接着コード」で構成されるvmm-referenceという参照実装を公開している。これをforkして部品を組み替えれば、KVMベースの最小限のVMMのたたき台はすぐ作れる。難しいのはKVM呼び出し自体よりも「どんなデバイスモデルにするか」の設計判断だという指摘もある。

一方で、Firecracker相当の製品に届くにはまだ距離がある。vmm-reference自体、デバイスのホットプラグ・VMの一時停止/再開・スナップショット・ライブマイグレーションを(少なくとも初期時点では)サポートしていないと明言している。加えてFirecrackerが持つjailerによるプロセス隔離やseccompフィルタでのシステムコール制限といったセキュリティハードニング、REST APIサーバー、豊富なテスト・ファジングは、rust-vmmのクレートを組み合わせただけでは付いてこず、Firecracker自身が長年かけて積み上げてきた部分になる。

コンテナ向け軽量VM技術の中での位置づけ

FirecrackerCloud Hypervisorなど、土台となる複数のVMM実装が共有する部品群。

出典

作成日時: 2026-08-12 23:27 / 更新日時: 2026-08-12 23:51