…and that’s why automatic snapshots in Windows 10 by default are a bad idea.
In case you missed it, Microsoft recently modified the behaviour in the 1709 build of Windows 10 for the Hyper-V component. By default, now, when you create a virtual machine, the automatic checkpoints feature is enabled.
In essence this just creates a differencing disk when the VM is started and provides ‘an easy way to rollback’ (or enter one of your many favourite excited marketing phrases here) and merges the checkpoint when the VM is stopped.
Well consider this. I have ample disk space on my Surface Pro (LOVE my Surface Pro BTW) so I decide to do a quick build to test workplace join with a domain joined Windows 10 1709 build. Created the VM and I have a bare metal deployment ready from SCCM.
Boot PXE – deploy!
Come back later and use the machine, do my testing and then decide that 1.5 GB of free space on my Surface Pro is not ideal so time to clean up. Shut down the VM and …. WOW my machine is now running slowly.
And there is the differencing disk, merging into the parent disk by creating a copy of ALL of the data in the AVHDX and writing it to the VHDX. See where this is going – DOUBLE the space requirement while the merge is taking place. I see my disk space disappearing – I frantically attempt to delete the VM from Hyper-V manager which succeeds but the merge is still taking place. Attempt to kill the VMMS process but it won’t go and keeps chewing up disk space, completing a merge on a non-existent VM!
Fortunately, someone incredibly smart in the Windows 10 product team coded something about low disk space, and with 1.5GB of free space it thankfully stopped. Manually deleted the VM folder and I now have my 30 GB of free space again.
Given that the merge only takes place when you shut down the VM or manually call a merge inside the VM, you might want to exercise caution when you are using this feature that is turned on by default. Seriously, this along with the default vSwitch …… I’ll be putting in a feature request to turn this off in the Hyper-V settings.
You guys do some really amazing stuff, but this? Not a fan.
If you want to turn this off, for the moment you have to do it on a VM by VM basis. Go to the settings of the VM and switch back to production checkpoints and use standard checkpoint failback.