Why does Hyper-V create a snapshot every time I apply a snapshot?

Why does Hyper-V create a snapshot every time I apply a snapshot?

Rate This
  • Comments 1

I was asked this question today.  My first response was: “It doesn’t”.  But after a bit of thought I realized what was going on for the user in question.  Whenever you take a snapshot of a Hyper-V virtual machine, we capture the point in time data about that virtual machine and then continue to run.  When you later apply that snapshot to the virtual machine – we will throw away any data that has not been captured in a virtual machine snapshot.

Imagine the following workflow:

  1. You create a virtual machine
  2. You install Windows and some applications
  3. You take a virtual machine snapshot
  4. You write your opus magnum inside the virtual machine
  5. You apply the snapshot taken in step three

You have now lost your opus magnum, and life no longer has any meaning for you (okay – I might be exaggerating here – but you have lost some data).  Hopefully, the consequences here are obvious to the user.  But in case they are not – we provide the following option:


When you apply a snapshot we ask you if you want us to take a new snapshot first – to capture any data that is in the present virtual machine.  Seems reasonable – right?  In this case the user must have checked the option to “don’t ask me again” without actually reading the text.  Now, every time that they take a snapshot – we create a new one to capture any potential data changes.  Hence the question in the title.

Luckily, this is simple to correct.

If you open the Hyper-V Settings and go all the way to the bottom of the list – you will see an option labeled Reset Check Boxes.  Go here and click the button – we will then clear every time you checked “don’t ask me again” and you will get all the default prompts and questions:


On a side note – and I know that I am criticizing myself here – it always bugs me when software has a “don’t ask me again” option on a dialog with multiple choices.  I never actually check the box here, because I can never be certain about what the outcome of checking the box will be (what will the software default to?).  This is something that I would like to see us handle better in the future.


Leave a Comment
  • Please add 7 and 1 and type the answer here:
  • Post
  • At least you have an option in the settings area to undo the checkboxes :)  It's REALLY annoying when you can't ever undo the setting of a checkbox (more for vendor-specific software - is it in the registry, DB, some XML file or perhaps part of some binary blob stored elsewhere).  

    I like the option to save a snapshot before applying the original.  SQL Server is a bit that way too when restoring databases - you need to tell it to not worry about backing up the tail of the log, or actually do a backup of the log tail before doing the restore.  It's a nice way of building in an "undo" feature.

    As for what you should do in future...  Perhaps have a tickbox to make a certain option the default for next time but still always present the dialog.  Some may then say "well why not add a timer and have it count down from 10".  The problem there is that the user who doesn't want to read the box is going to skip the timer bit anyway and those who wish to think about it may not realise they need to hit some sort of 'keep open' button before a decision is made for them.  I'm guilty of this in our own software and plan on the one place where I have such a countdown.

Page 1 of 1 (1 items)