Microvms use systemd-networkd directly — no cloud-init required.
- DHCP by default:
20-microvm-dhcp.networkmatches all ethernet interfaces byType=ether— no MAC dependency, survives cloning. - Static IP: write
/etc/microvm-static-net:echo "ADDRESS=10.0.0.5/24 GATEWAY=10.0.0.1 DNS=1.1.1.1" > /etc/microvm-static-net reboot
- No cloud-init drive (scsi1) needed.
- No MAC matching — works with any interface name (
eth0,enp0s5, etc.)
Uses virtio-net-pci-non-transitional with PCIe.
qm set 900 --net0 virtio,bridge=vmbr0 # Single NIC
qm set 900 --net0 virtio,bridge=vmbr0,tag=100 # VLANDHCP is configured via cloud-init and systemd-networkd (or dhclient fallback).
# Host: start sharing before VM boot
pve-microvm-share 900 /path/to/workspace
# Start the VM, then inside guest:
mount -t virtiofs shared /mnt/shared
# Stop sharing:
pve-microvm-share 900 --stop# Host: configure before VM boot
pve-microvm-9p 900 /srv/data mytag
# Start VM, then inside guest:
mount -t 9p mytag /mnt/data -o trans=virtio,version=9p2000.L
# Management:
pve-microvm-9p 900 --list
pve-microvm-9p 900 --remove mytag
pve-microvm-9p 900 --clear| virtiofs | 9p | |
|---|---|---|
| Daemon | virtiofsd required | None (QEMU built-in) |
| Performance | Better for large I/O | Good for most uses |
| Setup | More complex | Simpler |
| Hot-add | No (before boot) | No (before boot) |
Forward host SSH keys into the guest without exposing them:
# Host:
pve-microvm-ssh-agent 900
# Guest:
export SSH_AUTH_SOCK=/tmp/ssh-agent.sock
socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork VSOCK-CONNECT:2:2222 &
ssh-add -l # lists host keys
git clone git@github.com:org/repo.gitEach microvm gets a vsock CID (VMID + 1000). Host and guest communicate without networking:
# Host → Guest:
socat - VSOCK-CONNECT:<cid>:<port>
# Guest → Host (CID 2 = host):
socat - VSOCK-CONNECT:2:<port>