Starting with Windows Server 2012 and later, Microsoft included an unmap feature that lets the Hypervisor know when disk blocks are unused. However, this unmap feature really hurts performance of Windows Server 2012 and especially Windows Server 2016 when running the Virtual Machine (VM) on vSphere 5.5 and 6.0 ESXi hosts. VMs running on Hyper-V work fine. The issue was resolved with vSphere 6.5 Update 1. If you're running an earlier version of vSphere you can disable the unmap feature which should significantly increase the performance of the VM.
- For Windows Server 2012 at an elevated cmd prompt:
- fsutil behavior set DisableDeleteNotify 1
- For Windows Server 2016 at an elevated cmd prompt:
- fsutil behavior set DisableDeleteNotify NTFS 1
- fsutil behavior set DisableDeleteNotify ReFS 1
These changes take place immediately and it's not necessary to reboot the server. If you have a template that you use to create new VMs, you may want to add these parameters to the template so you don't have to set them up each time for a new server. If you notice that your Windows 2012/2016 Server's performance isn't what it should be, try disabling unmap feature in Windows Server 2012/2016.