Logo

Create a Windows VM on Proxmox with VirtIO drivers

Create a Windows VM on Proxmox with VirtIO drivers

Deploy a Windows Server 2022 or Windows 11 virtual machine on Proxmox VE using VirtIO drivers for maximum performance (disk, network, memory). This guide covers full VM creation, Windows installation and post-install optimization.

Introduction

Proxmox VE is an open-source hypervisor based on KVM/QEMU. For a Windows VM to achieve near-native performance, you need to use VirtIO drivers: disk (virtio-scsi), network (virtio-net) and memory ballooning (virtio-balloon).

Without these drivers, Windows falls back to IDE / Intel E1000 emulation, drastically reducing IOPS and network throughput.

Prerequisites

  • VeryCloud dedicated server with Proxmox VE 8.x installed
  • Web access to Proxmox at https://IP:8006
  • Windows Server 2022 or Windows 11 ISO
  • VirtIO drivers ISO (link below)
  • Minimum 4 GB RAM and 60 GB disk to allocate to the VM

Step 1: Download the ISOs

Connect to your Proxmox node via SSH and download the ISOs into /var/lib/vz/template/iso/:

cd /var/lib/vz/template/iso/

# Windows Server 2022 ISO (download from Microsoft Evaluation Center)
# https://www.microsoft.com/en-us/evalcenter/download-windows-server-2022

# VirtIO drivers ISO (Fedora project, stable)
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

You can also upload ISOs via the web interface: Datacenter → Storage → local → ISO Images → Upload.

Step 2: Create the VM

In Proxmox interface: Create VM (top right button).

General tab

  • Node: your node
  • VM ID: 100 (default, auto-incremented)
  • Name: windows-server-2022

OS tab

  • Use CD/DVD disc image file (iso)
  • Storage: local
  • ISO image: Windows_Server_2022.iso
  • Type: Microsoft Windows
  • Version: 11/2022/2025

System tab

  • Graphic card: Default
  • Machine: q35 (recommended for modern Windows)
  • BIOS: OVMF (UEFI) — Windows 11 requires it
  • Add EFI Disk: checked
  • Add TPM: checked (v2.0, required for Windows 11)
  • SCSI Controller: VirtIO SCSI single (important!)
  • Qemu Agent: checked

Disks tab

  • Bus/Device: SCSI 0
  • Storage: your pool (local-zfs, local-lvm, etc.)
  • Disk size: 60 GB
  • Cache: Write back (performance)
  • Discard: checked (SSD TRIM)
  • SSD emulation: checked if SSD storage

CPU tab

  • Sockets: 1
  • Cores: 4 (adjust based on your server)
  • Type: host (uses all native CPU instructions)

Memory tab

  • Memory (MiB): 4096 minimum (8192 recommended)
  • Ballooning Device: checked

Network tab

  • Bridge: vmbr0
  • Model: VirtIO (paravirtualized) (important!)
  • MAC address: auto

Confirm tab

Check Start after created? No, we'll add the 2nd ISO first.

Step 3: Add the VirtIO drivers ISO

Before starting the VM, add a second CD drive:

  1. Select the VM → Hardware → Add → CD/DVD Drive
  2. Storage: local
  3. ISO image: virtio-win.iso
  4. Bus/Device: IDE 3
  5. Click Add

You now have 2 mounted ISOs: Windows + VirtIO.

Step 4: Start the Windows installation

Launch the VM (Start), then open the console (Console → noVNC).

The Windows installer starts. At the Where do you want to install Windows? screen, no disk is visible (normal, Windows doesn't know VirtIO SCSI).

Load VirtIO drivers

  1. Click Load driver
  2. Browse → navigate to the VirtIO CD (E: or D:)
  3. Go to amd64\2k22\ (or \w11\ for Windows 11)
  4. Select vioscsi.inf
  5. Click Next

The virtual disk now appears. Select it and continue installation.

Tip: while in the Load driver menu, also load:

  • NetKVM (network) → amd64\2k22\netkvm.inf
  • Balloon (RAM ballooning) → amd64\2k22\balloon.inf

Step 5: Finalize the installation

Follow the standard Windows wizard. Once on the desktop, install the Proxmox Guest Tools.

Still on the VirtIO CD, browse to virtio-win-guest-tools.exe and run it. This installs all missing drivers (audio, ballooning, qemu-agent, etc.) in one go.

Reboot Windows.

Step 6: Post-install optimizations

Enable QEMU agent

On Proxmox:

qm set 100 --agent enabled=1

In Windows, verify the QEMU Guest Agent service is running (services.msc).

Disable Windows animations (perf)

In Windows: Control Panel → System → Advanced system settings → Performance → Settings → Adjust for best performance.

Configure the network

If you have a public IP routed to your VM, configure it manually in Network Settings → Ethernet adapter → Properties → IPv4:

  • IP: your public IP
  • Mask: 255.255.255.0 (or /29, /27 depending on your VeryCloud allocation)
  • Gateway: the gateway provided by VeryCloud
  • DNS: 1.1.1.1, 8.8.8.8

Enable Remote Desktop (RDP)

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

Step 7: Snapshot before production

Once Windows is configured and activated, take a snapshot to be able to roll back:

Proxmox interface → VM → Snapshots → Take Snapshot.

Name: clean-install, Description: Clean Windows install + VirtIO drivers.

Troubleshooting

No disk detected during Windows install

You probably forgot to load vioscsi.inf. Go back to Load driver and load it from the VirtIO CD.

No network after install

Load netkvm.inf in Device Manager → Network adapter → Update driver → Browse → VirtIO CD.

Slow VM after install

Check:

  • Disk cache on Write back (Hardware → SCSI Disk)
  • CPU type on host
  • Ballooning enabled
  • QEMU Guest Agent installed

BSOD on every boot

Often related to an incompatible CPU type. Switch from host to kvm64 temporarily, boot, then try switching back to host.

Useful commands (on Proxmox)

# List VMs
qm list

# VM status
qm status 100

# Start / Stop
qm start 100
qm shutdown 100
qm stop 100  # force kill

# Serial console
qm terminal 100

# Migrate a VM to another node
qm migrate 100 node2 --online

# Clone a VM
qm clone 100 101 --name windows-clone

# Backup
vzdump 100 --storage local --mode snapshot

Conclusion

Your Windows VM is now operational with performance close to physical hardware. On a properly-sized Proxmox setup, you can host dozens of Windows VMs on a single VeryCloud dedicated server.

Going further:

  • Configure high availability with a Proxmox cluster (see next guide)
  • Automate backups with Proxmox Backup Server
  • Template your clean-install VM to clone in 30 seconds

Resources

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members