Pular para o conteúdo
← Voltar para projetos

Pve Microvm

Firecracker-like microVMs for Proxmox VE — KVM isolation, under 200 ms boot.

#pve-microvm

pve-microvm

pve-microvm in the Proxmox web UI

A Debian package that adds QEMU microvm machine type support to Proxmox VE. Runs OCI container images, Firecracker rootfs images, unikernels, and alternative OS as lightweight hardware-isolated VMs.

⚠️ Highly experimental. This project patches qemu-server internals and has not been tested in production. Use at your own risk. The patches are fully reversible — uninstalling the package restores the original files.

📝 Blog post with some background · ❓ FAQ


#Why

We needed something between LXC containers and full QEMU VMs for running coding agents and other semi-trusted workloads.

LXC microvm Standard VM
Isolation Namespace (shared kernel) KVM (own kernel) KVM (own kernel)
Boot time ~50 ms < 300 ms 2–10 s
Overhead Minimal Minimal Moderate
Attack surface Broad (host kernel) Minimal (virtio-pcie) Broad (emulated PC)
Untrusted code ⚠️ risky ✅ safe ✅ safe

Hardware-isolated VMs with container-like speed, managed through the same Proxmox tools you already use. No new runtime — QEMU's microvm machine type is already on every PVE node.


#Highlights

  • 50 features shipped — templates, cloning, networking, HA, web UI, backups
  • 21 guest OS — 13 Linux distros + SmolBSD, OpenWrt, OPNsense, 9Front, OSv, gokrazy, Firecracker
  • 31 ms boot (SmolBSD) to ~2 s (Alpine) to ~8 s (Debian)
  • Create µVM button in PVE web UI with OCI image picker
  • All storage backends — LVM, LVM-thin, ZFS, NFS, CIFS, Ceph
  • HA + migration — offline migration in 2 seconds, ha-manager relocate
  • Tested on 4 nodes — from Atom x5-Z8350 (2 GB) to i7-12700 (128 GB)

#Quick start

# Install (always fetches the latest release)
curl -sLO $(curl -s https://api.github.com/repos/rcarmo/pve-microvm/releases/latest | grep browser_download_url | grep '.deb' | cut -d'"' -f4)
dpkg -i pve-microvm_*.deb

# Create a template from any OCI image
pve-microvm-template --image debian:trixie-slim

# Clone and boot
qm clone 9000 901 --name my-sandbox --full
qm start 901
qm terminal 901

Or use the Create µVM button in the PVE web UI.


#Supported guests

Category Images
Linux (apt) Debian, Ubuntu
Linux (apk) Alpine
Linux (dnf/tdnf) Fedora, Rocky, Alma, Amazon, Oracle, UBI, Photon, Azure Linux
Router/Firewall OpenWrt, OPNsense
BSD SmolBSD (NetBSD, 31ms boot)
Plan 9 9Front
Unikernel OSv, gokrazy
Compatible Any Firecracker rootfs (ext4 import)

#What's included

Component Description
pve-microvm-template Create PVE templates from OCI images or specialist OS
pve-oci-import Convert any OCI image to a bootable microvm disk
pve-microvm-share Share host directories via virtiofs
pve-microvm-9p Share host directories via 9p (no daemon)
pve-microvm-ssh-agent Forward SSH agent via vsock
pve-microvm-run Ephemeral microvms (run and destroy)
pve-microvm-bench Boot time and overhead benchmarking
Web UI Create µVM dialog, ⚡ icon, xterm.js console, panel hiding
Kernel Pre-built 6.12.22 with PCIe virtio + vsock + virtiofs

#Tested on

z83ii (worst-case) borg (reference)
CPU Atom x5-Z8350 @ 1.44 GHz i7-12700 @ 4.9 GHz
RAM 2 GB 128 GB
PVE 9.1.9 (qemu-server 9.1.8) 9.1.7 (qemu-server 9.1.6)
QEMU 10.1.2 10.1.2

Full cluster: 4 nodes — see Cluster Hardware.


#Documentation


#Roadmap

Feature Priority
Network off by default Medium
Egress allow-list (nftables) Medium
Memory management (free-page-reporting, deflate-on-oom, auto-ballooning, virtio-mem) Done v0.3.12
Declarative VM config (TOML) Low
GPU passthrough Low
AArch64 guest support Low
Upstream RFC for pve-devel Low

#License

Apache-2.0

Nova versão disponível.