このプロジェクトについて
smolvmを使用すると、ハードウェア仮想化(macOSではHypervisor.framework、LinuxではKVM、WindowsではWindows Hypervisor Platform)を利用して、カスタムLinux仮想マシンをローカルで管理および実行できます。VMMとしてlibkrun、ゲストカーネルとしてlibkrunfw上に構築されており、各ワークロードが独自のVMとゲストカーネルを取得して強力な分離を実現します。
主な機能は次のとおりです。
- 高速でクロスプラットフォームなマイクロVM。コールドスタートは200ms未満、virtio balloonによる伸縮自在なメモリ、ハイパーバイザー内でスリープするアイドルvCPUスレッドを備えます。
- Smolfile: イメージ、リソース、ネットワークポリシー、マウント、ポート、セットアップコマンドを指定するTOML宣言ファイル(Dockerfileに似ていますがVM全体向け)。不明なキーは作成時に拒否されます。
- VMブランチ: 実行中のマシンのライブコピーオンライトフォークで、ソースのプロセス、メモリ、ディスクを引き継いで再開します。ファンアウトによるバッチブランチ、ワーカー準備完了シグナル、保持されたプールスロットをサポートします。
- ポータブルな成果物: 停止したVMを単一の.smolmachineファイルにパックし、任意のOCIレジストリにプッシュして、依存関係ゼロでサポート対象の任意のプラットフォーム上で再水和できます。
- サンドボックス化: ネットワークはデフォルトでオフ。外向き通信は特定の許可されたホストにロックできます。ホストのファイルシステム、ネットワーク、認証情報はハイパーバイザー境界で分離されます。
- SSHエージェント転送: ゲストは秘密鍵の素材をVMにコピーすることなく、gitやSSHのためにホストのSSH鍵を使用できます。
- ローカルコンテナイメージ: Dockerデーモンなしで、docker save / podman saveアーカイブ、stdinパイプ、または展開済みrootfsディレクトリから起動できます。
- 永続開発マシン: マシンを作成、停止、起動、execでき、インストール済みパッケージは再起動後も保持されます。ホストディレクトリのマウントはinotifyイベントを伝播してホットリロードを可能にします。
- Kubernetes統合: containerd shim v2を同梱し、RuntimeClass経由でポッドをマイクロVMとして実行できます。
- GPUアクセラレーション: macOSとLinuxでvirtio-gpu / Venus(Vulkan-over-virtio)を介してホストGPUを公開します。CUDA APIリモーティング(--cuda)は、GPUパススルーなしでvsock経由でCUDA呼び出しをホストのNVIDIAドライバに転送します。
- チェックポイント: VM状態を永続的な.smolcheckpoint成果物として保存し、後で復元できます。Rustクレート(smolvm-checkpoint)は、VMランタイムに依存せずに増分ストレージとポータブルなエクスポートを提供します。
デフォルトのリソースは4 vCPUと8 GiB RAMで、フラグまたはSmolfileで上書きできます。セキュリティモデルではゲストrootを信頼できないものとして扱い、明示的に転送された機能(マウント、ネットワーク、ポート、SSHエージェント)がワークロードの権限の一部となります。このプロジェクトはApache-2.0ライセンスです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.