157 lines
4.3 KiB
Markdown
157 lines
4.3 KiB
Markdown
# Migrating a Windows Server 2025 VM from VMware ESXi to Proxmox VE
|
||
|
||
This guide describes the most reliable and direct way to migrate a Windows Server 2025 virtual machine
|
||
from **VMware ESXi** to **Proxmox VE**, using `virt-v2v`.
|
||
It also covers driver preparation and alternative manual import steps.
|
||
|
||
---
|
||
|
||
## 🧭 Overview
|
||
|
||
| Method | How it works | Pros | Cons |
|
||
|--------|---------------|------|------|
|
||
| **virt-v2v (recommended)** | Converts directly from ESXi to Proxmox | Keeps partitions, converts drivers | Requires CLI |
|
||
| **VMDK import** | Export disk → `qm importdisk` | Simple | Manual driver fix |
|
||
| **Veeam restore** | Restore backup | Handy for existing policy | Often fails to boot |
|
||
|
||
---
|
||
|
||
## ✅ Prerequisites
|
||
|
||
- Both **ESXi** and **Proxmox VE** hosts reachable on the same network.
|
||
- Proxmox host has sufficient storage and CPU.
|
||
- Administrative credentials for ESXi (usually `root`).
|
||
- `virtio-win.iso` downloaded and stored in `/var/lib/vz/template/iso/`.
|
||
|
||
---
|
||
|
||
## 🔧 1. Prepare Windows VM on ESXi
|
||
|
||
Before migrating, pre-install VirtIO drivers inside the Windows VM to ensure it boots in Proxmox.
|
||
|
||
Run this PowerShell script inside the VM (as Administrator):
|
||
|
||
```powershell
|
||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||
irm https://git.voskuil.cloud/marco/scripts/raw/branch/main/Prep-VirtIODrivers.ps1 | iex
|
||
```
|
||
|
||
This mounts the VirtIO ISO, injects `vioscsi`, `viostor`, `NetKVM`, and `Balloon` drivers,
|
||
and makes them available in the Windows driver store.
|
||
|
||
---
|
||
|
||
## 🧱 2. Install tools on the Proxmox host
|
||
|
||
```bash
|
||
apt update
|
||
apt install virt-v2v libguestfs-tools -y
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 3. Run the conversion
|
||
|
||
Replace the example values with your own host and VM names.
|
||
|
||
```bash
|
||
export LIBGUESTFS_BACKEND=direct
|
||
|
||
virt-v2v -ic esx://root@esx01.gpeu.local/?no_verify=1 -o local -os /var/lib/vz/images/9001 "WIN2025-SRV"
|
||
```
|
||
|
||
- `esx01.gpeu.local` → your ESXi host
|
||
- `WIN2025-SRV` → your VM name on ESXi
|
||
- `9001` → the VMID you plan to use in Proxmox
|
||
|
||
This converts the VM’s disks and configuration to a Proxmox-compatible format.
|
||
|
||
---
|
||
|
||
## 🖥️ 4. Create and attach the VM in Proxmox
|
||
|
||
```bash
|
||
qm create 9001 --name WIN2025-SRV --memory 8192 --cores 4 --scsihw virtio-scsi-pci
|
||
qm importdisk 9001 /var/lib/vz/images/9001/*.qcow2 local-lvm
|
||
qm set 9001 --scsi0 local-lvm:vm-9001-disk-0 --boot order=scsi0
|
||
qm set 9001 --net0 virtio,bridge=vmbr0
|
||
qm set 9001 --ide2 local:iso/virtio-win.iso,media=cdrom
|
||
```
|
||
|
||
---
|
||
|
||
## 🪄 5. Boot and finalize in Proxmox
|
||
|
||
1. Start the VM.
|
||
- If the PowerShell prep script was used → Windows should boot normally.
|
||
- If not → boot once from the Windows ISO, open a repair prompt, and inject the drivers manually:
|
||
|
||
```cmd
|
||
dism /image:C:\ /add-driver /driver:D:\viostor\w11\amd64 /forceunsigned
|
||
dism /image:C:\ /add-driver /driver:D:\NetKVM\w11\amd64 /forceunsigned
|
||
```
|
||
|
||
2. Once booted, run:
|
||
```
|
||
D:\virtio-win-guest-tools.exe
|
||
```
|
||
(installs QEMU Guest Agent, Balloon, network, and display drivers)
|
||
|
||
---
|
||
|
||
## ⚙️ Optional: VMDK import (manual method)
|
||
|
||
If you prefer manual import:
|
||
|
||
```bash
|
||
scp /vmfs/volumes/datastore1/WIN2025-SRV/*.vmdk root@pve01:/var/lib/vz/images/9001/
|
||
qm importdisk 9001 /var/lib/vz/images/9001/WS2025.vmdk local-lvm
|
||
qm set 9001 --scsi0 local-lvm:vm-9001-disk-0 --boot order=scsi0
|
||
```
|
||
|
||
Then attach the VirtIO ISO and repeat the driver installation steps inside Windows.
|
||
|
||
---
|
||
|
||
## 💡 Tips
|
||
|
||
- Always set your Proxmox disk controller to **VirtIO-SCSI**.
|
||
- For best performance use **VirtIO (paravirtualized)** NIC.
|
||
- Once migrated, snapshot and back up from Proxmox before deleting the ESXi copy.
|
||
- You can repeat the same process for Linux VMs — no VirtIO ISO needed.
|
||
|
||
---
|
||
|
||
### ✅ Example network bridge config (for VLANs)
|
||
|
||
If your 10-GbE trunk carries all VLANs and you need VLAN-specific bridges:
|
||
|
||
```ini
|
||
auto ens1f0
|
||
iface ens1f0 inet manual
|
||
|
||
auto ens1f0.120
|
||
iface ens1f0.120 inet manual
|
||
vlan-raw-device ens1f0
|
||
|
||
auto vmbr120
|
||
iface vmbr120 inet manual
|
||
bridge-ports ens1f0.120
|
||
bridge-stp off
|
||
bridge-fd 0
|
||
```
|
||
|
||
VMs connected to `vmbr120` will automatically be placed in VLAN 120.
|
||
|
||
---
|
||
|
||
### 🏁 Result
|
||
|
||
After these steps:
|
||
- Your Windows Server 2025 VM boots on Proxmox without BSOD.
|
||
- Disk and network use VirtIO drivers.
|
||
- QEMU Guest Agent works (clean shutdowns, IP reporting).
|
||
- Migration from ESXi to Proxmox completed with full functionality.
|
||
|
||
---
|