When is a Hyper-V Virtual Machine Not Really a Virtual Machine?

SQL Server
2 Comments
Former Sysadmins
Former Sysadmins

When you set up a Windows Server, you might be tempted to add a bunch of roles, just in case you want to use them in the future. Don’t do it: things can get weird.

If you add the Hyper-V role to Windows Server 2012 and higher, it changes some things about how Windows behaves. Your server is now a host. And the host starts to behave in some ways like a virtual machine — it’s now the “Parent Partition”, which is a “quasi-virtual machine”.

There are limits to the number of logical processors that any virtual machine partition might see, so if you have more than 64 logical processors, this can limit what’s available in the Parent Partition / host operating system, and really confuse you.

When SQL Server starts up, it checks to see if you’re virtualized. If the Hyper-V role is enabled, it will think it’s running in a VM. This could end up in a sticky situation if you have a licensing audit and hyper-threading is enabled — you’re supposed to license all the logical processors in a virtual machine regardless of hyper threading.

But good news, this is an easy problem to solve:

  • Don’t install the Hyper-V role “just in case” on a SQL Server
  • If someone else sets up your SQL Servers, check the installed roles before going live
  • Don’t ever design an architecture where a Hyper-V host does double-duty and is also a SQL Server
  • If you log onto a Hyper-V host, look at ‘Logical processors’ to see the total count (‘Host logical processors’ may be lower)
Previous Post
“Breaking” News: Don’t Install SQL Server 2014 SP1
Next Post
How to Evaluate NoSQL Case Studies [Video]

2 Comments. Leave new

  • The “Parent Partition” in Hyper-V really isn’t a server at all. It is not guaranteed memory nor CPU resources!! It really is a VM itself, with no resources assigned to it.

    Adding VMs to the server take real resources away from SQL and you will have a bad time trying to anything with SQL installed directly on a hypervisor. Install it in a VM to guarantee those resources.

    I’d change bullet #1 to “Don’t install the Hyper-V role EVER on a SQL Server”!!!

    Reply
    • Kendra Little
      April 20, 2015 5:24 pm

      Haha, that’s totally fair that it’s not ever a good idea (and actually what I meant).

      I believe the main cause of this happening is if the team setting up the server isn’t really clear on what it’s going to be used for, which might be true in the case of some hosting providers.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.