The online information about the result of removing Hyper-V checkpoints is a little bit vaguely. I had only 10GB available on my SDD drive and was in desperate need of increasing the available storage.

In the past I had created 3 checkpoints to be able to undo certain actions. After a few months the checkpoints became useless and I would never use them anymore to restore the state.

So, time to remove those checkpoints and regain some of my storage! Without any clear online information about what would happen when I would remove those checkpoints, it felt like a risky operation.

Delete a checkpoint

Basically a checkpoint is a point in time, where the current on-disk data is placed in a read-only state and a new differencing disk is created in place, to store all changes compared to the read-only disk. I was afraid that removing a checkpoint, would remove the differencing disk therefore the running state (Now) would revert back to the old situation as defined in the read-only state. Luckily this is not the case.

When a checkpoint is deleted, a merging operation starts, which will merge the state of the checkpoint into the previously created read-only disk. This means that you will retain your current ‘Now’ state.

succesful merge

With the removal of the 3 checkpoints I regained over 70GB of my available data, while the running state was kept the same.

Some things to keep in mind while working with checkpoints:

Using checkpoints will increase the required IO-operations and therefore slows down your environment and even the entire host
Checkpoints consume a lot of hard disk space
When a virtual disk is damaged, all checkpoints are lost
Always remove checkpoints via the Hyper-V manager, don’t ever delete a checkpoint manually from the storage.
Checkpoints are no backups!

Because of this I would recommend to only use checkpoints for the shortest of time as possible. They are great for doing some quick tests, like installing new software or applying updates to the operating system. As soon as you can confirm that everting works as it should, delete the checkpoint or revert to the previous state.