I explain this in the forums every so often.
Folks Create a VM, then a few Checkpoints. And before they know it they are in that horrific Paused-Critical state with their VMs.
All because they are running out of storage.
In the end, it comes down to many folks not really understanding how this happened in the first place.
It really goes back to the fact that Checkpoints use differencing disks. And each differencing disk has the potential of consuming as much disk space as its parent.
First of all; the warnings:
Be sure to only delete checkpoints through the Hyper-V Manager.
Do not attempt to manually delete AVHD files on the local file system.
Also, dynamic disks do not matter. Whether your VM began with a dynamic disk or a fixed disk makes no difference.
A dynamic disk just gives the illusion of consuming less space as the full potential of the disk is not realized.
But all differencing disks are dynamic, regardless if the parent was fixed or dynamic.
The root concept here is:
Each Checkpoint disk has the potential of consuming the maximum amount of disk space that its parent did.
For example: Say you make a VM with the default of a 127Gb dynamic virtual disk (you have the potential of consuming 127Gb of storage).
You install an OS and only 14Gb of physical storage is used.
You then take a Checkpoint. Now, you have the root 14Gb, and the potential to consume another 127Gb of additional storage.
Time passes and this Checkpoint consumes 50Gb of storage. 14 + 50 = 64Gb consumed.
You now take another Checkpoint. And all kinds of stuff happens in that VM OS.
You install Visual Studio create a database application, who knows.
And with all that the current state is now consuming 80Gb of Storage.
You have only increased the disk use by 30Gb.
But, with the Checkpoint tree in place you have now consumed 14 + 50 + 80 = 144Gb.
Beyond the 127Gb limit of the virtual disk.
Because of the potential of each Checkpoint being able to consume 127Gb (of VM disk change) all by itself.
Side by side with this is folks that use Checkpoints or differencing disks with the false idea that they will save storage. Over time, they save nothing and add complexity.
Unless you are doing test and are constantly tossing away VM disks and creating new ones, using differencing disks with the argument of reducing storage use is a very false assumption.