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:
- Select the VM → Hardware → Add → CD/DVD Drive
- Storage:
local - ISO image:
virtio-win.iso - Bus/Device: IDE 3
- 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
- Click Load driver
- Browse → navigate to the VirtIO CD (
E:orD:) - Go to
amd64\2k22\(or\w11\for Windows 11) - Select
vioscsi.inf - 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.infBalloon(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
- Official VirtIO drivers: https://github.com/virtio-win/virtio-win-pkg-scripts
- Proxmox VE documentation: https://pve.proxmox.com/wiki
- Windows on Proxmox best practices: https://pve.proxmox.com/wiki/Windows_2022_guest_best_practices


















