Putting this first so you know what you're in for before you start reading:
TL/DR: I've migrated some VMs from Hyper-V to XCP-ng and (probably via my own ineptitude) we are experiencing worse performance. How can I fix this?
Recently, we started the process of migrating from a Hyper-V environment, to XCP-ng.
We only have a couple of clients on our servers, both of which are relatively simple Windows server DC + RDS setups.
One of these clients was long overdue for an OS upgrade, so we just built a new pair of VMs for them.
The other, we migrated using the guide found here https://docs.xcp-ng.org/installation/migrate-to-xcp-ng/#from-hyper-v
We may have made a few mis-steps along the way...
As the client is reporting (and we are observing) that performance is slow compared to pre-migration, I'll dump all relevant info I can think of below:
VMs
DC
Windows Server 2016
4 vCPU
8GB RAM
250GB storage
Apps/RDS
Windows Server 2022
8 vCPU
24GB RAM
1.8TB Storage across multiple drives
Hyper-V Environment
HP DL380 Gen9
Dual Xeon E5-2630 v4 @ 2.2Ghz
256GB RAM
All VM storage on SSD in RAID5 (NTFS)
XCP-ng Environment
HP DL380 Gen9
Dual Xeon E5-2680 v4 @ 2.4Ghz
256GB RAM
Storage (all thin provisioned with ext4):
VM OS on SSD RAID5
User Profiles on SSD RAID5
Frequently Accessed data on SSD RAID5
Old/Archived data on NFS drive over 10GB link
Daily delta backups via XO
Process
Export and Convert
From Hyper-V, we exported the VMs and drives.
At this stage, we are not clear on how to "remove all the Hyper-V tools from the VM", so no vmic services were removed prior to conversion.
These services have since been disabled, but were not running anyway as there was no Hyper-V host to trigger them.
We then converted the exported drives and imported into XCP-ng
VM Creation
From XO, we created virtual machines with the same spec but no drives attached.
It appears these were created with "other os" instead of the Windows Server 2026/2022 templates.
For the VM with multiple drives, the OS was attached first, Citrix VM tools installed, and then the other drives attached.
Other Config
Network
Migration removed the network config, so both VMs were re-ip'ed after the installation of Citrix drivers.
This also broke the connection between the DC and the RDS VMs, which was fixed with the powershell command
Test-ComputerSecureChannel -Repair
File Restoration
We pulled the "Files and Folders" from our managed backup provider (Cove), bringing the server up to date.
Outlook had a fit over the ost files. Redownloading and indexing all emails was causing a major load, so we set a group policy enforcing outlook not to use cached mode, and then removed all ost files from the VM (backed up separately with Cove's 365 integration).
Error Events
VSS/ESENT were creating error events, related to hyper-v backup management.
This was resolved by removing the hyper-v CLSID via a registry edit.
Findings and queries - Where to start?
Secure Boot
Neither VM is presently using Secure Boot. I've seen some (AI generated) suggestions that this may impact performance - am I likely to see an improvement if I enable this?
Templates
I have read that using the correct template should give a performance boost due to the relevant "keys" being installed.
Is there a way to fix this without re-creating VMs and re-attaching storage?
Hyper-V integration
If the services are disabled, are they likely to cause issues?
If I need to remove pre-conversion, am I correct in assuming it will only be on the OS drive?
How can I remove these tools?
Disk Usage
Monitoring the resource use, I frequently see drives being read at ~100MB/s and thought this might be the cause. I traced this back to the backup manager and stopped backups temporarily to test.
With backups disabled, performance did not seem to improve.
As there has been no change in backup frequency compared to pre-migration, I would not expect this to be the cause.
What else should I consider?