Save to My DOJO
Table of contents
Choice is a good thing, right? Well… usually. Sometimes, choice is just confusing. With most hypervisors, you get what you get. With Hyper-V, you can install in three different ways, and that’s just for the server hypervisor. In this article, we’ll balance the pros and cons of your options with the 2016 SKUs.
Server Deployment Options for Hyper-V
As of today, you can deploy Hyper-V in one of four packages.
Nano Server
When 2016 initially released, it brought a completely new install mode called “Nano”. Nano is little more than the Windows Server kernel with a tiny handful of interface bits attached. You then plug in the roles and features that you need to get to the server deployment that you want. I was not ever particularly fond of the idea of Hyper-V on Nano for several reasons, but none of them matter now. Nano Server is no longer supported as a Hyper-V host. It currently works, but that capability will be removed in the next iteration. Part of the fine print about Nano that no one reads includes the requirement that you keep within a few updates of current. So, you will be able to run Hyper-V on Nano for a while, but not forever.
If you currently use Nano for Hyper-V, I would start plotting a migration strategy now. If you are considering Nano for Hyper-V, stop.
Hyper-V Server
Hyper-V Server is the product name given to the free distribution vehicle for Hyper-V. You’ll commonly hear it referred to as “Hyper-V Core”, although that designation is both confusing and incorrect. You can download Hyper-V Server as a so-called “evaluation”, but it never expires.
A word of advice: Hyper-V Server includes a legally-binding license agreement. Violation of that licensing agreement subjects you to the same legal penalties that you would face for violating the license agreement of a paid operating system. Hyper-V Server’s license clearly dictates that it can only be used to host and maintain virtual machines. You cannot use it as a file server or a web server or anything else. Something that I need to make extremely clear: the license agreement does not provide special allowances for a test environment. I know of a couple of blog articles that guide you to doing things under the guise of “test environment”. That’s not OK. If it’s not legal in a production environment, it doesn’t magically become legal in a test environment.
Windows Server Core
When you boot to the Windows Server install media, the first listed option includes “Core” in the name. That’s not an accident; Microsoft wants you to use Core mode by default. Windows Server Core excludes the primary Windows graphical interface and explorer.exe. Some people erroneously believe that means that no graphical applications can be run at all. Applications that use the Explorer rendering engine will not function (such as MMC), but the base Windows Forms libraries and mechanisms exist.
Windows Server with GUI
I doubt that the GUI mode of Windows Server needs much explanation. You have the same basic graphical interface as Windows 10 with some modifications that make it more appropriate for a server environment. When you install from 2016 media, you will see this listed as (Desktop Experience).
The Pros and Cons of the Command-line and Graphical Modes for Hyper-V
I know that things would be easier if I would just tell you what to do. If I knew you and knew your environment, I might do that. I prefer giving you the tools and knowledge to make decisions like this on your own, though. So, we’ll complement our discussion with a pros and cons list of each option. After the lists, I’ll cover some additional guidelines and points to consider.
Hyper-V Server Pros and Cons
If you skipped the preamble, remember that “Hyper-V Server” refers to the completely free SKU that you can download at any time.
Pros of Hyper-V Server:
- Never requires a licensing fee
- Never requires activation
- Smallest deployment
- Smallest “surface area” for attacks
- Least memory usage by the management operating system
- Fewest patch needs
- Includes all essential features for running Hyper-V (present, not necessarily enabled by default):
- Hyper-V hypervisor
- Hyper-V PowerShell interface
- Cluster membership
- Domain membership
- Hyper-V Replica membership
- Remote Desktop Virtual Host role for VDI deployments
- RemoteFx (automatic with RDVH role)
Cons of Hyper-V Server:
- Cannot provide Automatic Virtual Machine Activation
- Cannot provide deduplication features
- Impossible to enable the Windows Server GUI
- Software manufacturers may refuse to support their software on it
- Third-party support operations, such as independent consulting firms, may not have any experience with it
- Switching to Windows Server requires a complete reinstall
- Difficult to manage hardware
Hyper-V in Windows Server Core Pros and Cons
If you’ve seen the term “Hyper-V Core”, that probably means “Hyper-V Server”. This section covers the authentic Windows Server product installed in Core mode.
Pros of Windows Server Core for Hyper-V:
- Microsoft recommends Windows Server Core for Hyper-V
- Receives feature updates on the quickest schedule (look toward the bottom of the link in the preceding bullet)
- Comparable deployment size to Hyper-V Server
- Comparable surface area to Hyper-V Server
- Comparable memory usage to Hyper-V Server
- Comparable patch requirements to Hyper-V Server
- Allows almost all roles and features of Windows Server
- Can provide Automatic Activation for Windows Server in VMs (Datacenter Edition only)
Cons of Windows Server Core for Hyper-V:
- Impossible to enable the Windows Server GUI
- Must be licensed and activated
- Upgrading to the next version requires paying for that version’s license, even if you will wait to deploy newer guests
- Software manufacturers may refuse to support their software on it
- Third-party support operations, such as independent consulting firms, may not have any experience with it
- Difficult to manage hardware
Hyper-V in Windows Server GUI Pros and Cons
We saved what many consider the “default” option for last.
Pros of Windows Server with GUI for Hyper-V:
- Familiar Windows GUI
- More tools available, both native and third party
- Widest support from software manufacturers and consultants
- Easiest hardware management
- Valid environment for all Windows Server roles, features, and software
- Can provide Automatic Activation for Windows Server in VMs (Datacenter Edition only)
Cons of Windows Server with GUI for Hyper-V:
- Familiarity breeds contempt
- Slowest feature roll-out cycle (see the bottom of this article)
- Largest attack surface, especially with explorer.exe
- Largest deployment size
- Largest memory usage
- Largest patch requirements
- Must be licensed and activated
- Upgrading to the next version requires paying for that version’s license, even if you will wait to deploy newer guests
Side-by-Side Comparison of Server Modes for Hyper-V
Two items appear in every discussion of this topic: disk space and memory usage. I thought that it might be enlightening to see the real numbers. So, I built three virtual machines running Hyper-V in nested mode. The first contains Hyper-V Server, the second contains Windows Server Datacenter Edition in Core mode, and the third contains Windows Server Datacenter Edition in GUI mode. I have enabled Hyper-V in each of the Windows Server systems and included all management tools and subfeatures (Add-WindowsFeature -Name Hyper-V -IncludeAllSubFeature -IncludeManagementTools). All came from the latest MSDN ISOs. None are patched. None are on the network.
Disk Usage Comparison of the Three Modes
I used the following PowerShell command to determine the used space: ‘{0:N0}’ -f (Get-WmiObject -Class Win32_LogicalDisk | ? DeviceId -eq ‘C:’ | % {$_.Size – $_.FreeSpace}).
Deployment Mode | Used Disk Space (bytes) |
---|---|
Hyper-V Server 2016 | 6,044,270,592 |
Windows Server 2016 Datacenter Edition in Core mode | 7,355,858,944 |
Windows Server 2016 Datacenter Edition in GUI mode | 10,766,614,528 |
For shock value, the full GUI mode of Windows Server adds 78% space utilization above Hyper-V Server 2016 and 46% space utilization above Core mode. That additional space amounts to less than 5 gigabytes. If 5 gigabytes will make or break your deployment, you’ve got other issues.
Memory Usage Comparison of the Three Modes
We’ll start with Task Manager while logged on:
These show what we expect: Hyper-V Server uses the least amount of memory, Windows Server Core uses a bit more, and Windows Server with GUI uses a few ticks above both. However, I need to point out that these charts show a more dramatic difference than you should encounter in reality. Since I’m using nested VMs to host my sample systems, I only gave them 2 GB total memory apiece. The consumed memory distance between Hyper-V Server and Windows Server with GUI weighs in at a whopping .3 gigabytes. If that number means a lot to you in your production systems, then you’re going to have other problems.
But that’s not the whole story.
Those numbers were taken from Task Manager while logged on to the systems. Good administrators log off of servers as soon as possible. What happens, then, when we log off? To test that, I had to connect each VM to the network and join the domain. I then ran: Get-WmiObject Win32_OperatingSystem | select FreePhysicalMemory with the ComputerName switch against each of the hosts. Check out the results:
Deployment Mode | Free Memory (MB) |
---|---|
Hyper-V Server 2016 | 1,621,148 |
Windows Server 2016 Datacenter Edition in Core mode | 1,643,060 |
Windows Server 2016 Datacenter Edition in GUI mode | 1,558,744 |
Those differences aren’t so dramatic, are they? Windows Server Core even has a fair bit more free memory than Hyper-V Server… at that exact moment in time. If you don’t have much background in memory management, especially in terms of operating systems, then keep in mind that memory allocation and usage can seem very strange.
The takeaway: memory usage between all three modes is comparable when they are logged off.
Hyper-V and the “Surface Area” Argument
Look at the difference in consumed disk sizes between the three modes. Those extra bits represent additional available functionality. Within them, you’ll find things such as Active Directory Domain Services and IIS. So, when we talk about choosing between these modes, we commonly point out that all of these things add to the “attack surface”. We try to draw the conclusion that using a GUI-less system increases security.
First part: Let’s say that a chunk of malware injects itself into one of the ADDS DLLs sitting on your Windows Server host running Hyper-V. What happens if you never enable ADDS on that system? Well, it’s infected, to be sure. But, in order for any piece of malware to cause any harm, something eventually needs to bring it into memory and execute it. But, you know that you’re not supposed to run ADDS on a Hyper-V host. Philosophical question: if malware attacks a file and no one ever loads it, is the system still infected? Hopefully, you’ve got a decent antimalware system that will eventually catch and clean it, so you should be perfectly fine.
On one hand, I don’t want to downplay malware. I would never be comfortable with any level of infection on any system. On the other hand, I think common sense host management drastically mitigates any concerns. I don’t believe this is enough of a problem to carry a meaningful amount of weight in your decision.
Second part: Windows Server runs explorer.exe as its shell and includes Internet Explorer. Attackers love those targets. You can minimize your exposure by, you know, not browsing the Internet from a server, but you can’t realistically avoid using explorer.exe on a GUI system. However, as an infrastructure system, you should be able to safely instruct your antimalware system to keep a very close eye on Explorer’s behavior and practice solid defensive techniques to prevent malware from reaching the system.
Overall takeway from this section: Explorer presents the greatest risk. Choose the defense-in-depth approach of using Hyper-V Server or Windows Server Core, or choose to depend on antimalware and safe operating techniques with the Windows Server GUI.
Hyper-V and the Patch Frequency Non-Issue
Another thing that we always try to bring into these discussions is the effect of monthly patch cycles. Windows Server has more going on than Hyper-V Server, so it gets more patches. From there, we often make the argument that more patches equals more reboots.
A little problem, though. Let’s say that Microsoft releases twelve patches for Windows Server and only two apply to Hyper-V Server. One of those two patches requires a reboot. In that case, both servers will reboot. One time. So, if we get hung up on downtime over patches, then we gain nothing. I believe that, in previous versions, the downtime math did favor Hyper-V Server a few times. However, patches are now delivered in only a few omnibus packages instead of smaller targeted patches. So, I suspect that we will no longer be able to even talk about reboot frequency.
One part of the patching argument remains: with less to patch, fewer things can go wrong from a bad patch. However, this argument faces the same problem as the “surface area” non-issue. What are you using on your Windows Server system that you wouldn’t also use on a Hyper-V Server system? If you’re using your Windows Server deployment correctly, then your patch risks should be roughly identical.
Most small businesses will patch their Hyper-V systems via automated processes that occur when no one is around. Larger businesses will cluster Hyper-V hosts and allow Cluster Aware Updating to prevent downtime.
Overall takeaway from this section: patching does not make a convincing argument in any direction.
Discussions: Choosing Between Core and GUI for Hyper-V
Now you’ve seen the facts. You’ve seen a few generic arguments for the impact level of two of those facts. If you still don’t know what to do, that’s OK. Let’s look at some situational points.
A Clear Case for Hyper-V on Windows Server Full GUI
If you’re in a small environment with only a single physical server, go ahead and use the full GUI.
Why? Some reasons:
- It is not feasible to manage Hyper-V without any GUI at all. I advocate for PowerShell usage as strongly as anyone else, but sometimes the GUI is a better choice. In a multi-server environment, you can easily make a GUI-less system work because you have at least one GUI-based management system somewhere. Without that, GUI-less demands too much.
- The world has a shortage of Windows Server administrators that are willing and able to manage a GUI-less system. You will have difficulty hiring competent help at a palatable price.
- Such a small shop will not face the density problems that justify the few extra resources saved by the GUI-less modes.
- The other issues that I mentioned are typically easier to manage in a small environment than in a large environment.
- A GUI system will lag behind Core in features, but Hyper-V is quite feature-complete for smaller businesses. You probably won’t miss anything that really matters to you.
- If you try Hyper-V Server or Windows Server Core and decide that you made a mistake, you have no choice but to reinstall. If you install the GUI and don’t want to use it, then don’t use it — switch to remote management practices. You won’t miss out on anything besides the faster feature release cycle.
We can make some very good arguments for a GUI-less system, but none are strong enough to cause crippling pain for a small business. When the GUI fits, use it.
A Clear Case for Hyper-V Server
Let’s switch gears completely. Let’s say that:
- You’re a PowerShell whiz
- You’re a cmd whiz
- You run a lot of Linux servers
- Your Windows Servers (if any) are all temporary testing systems
Hyper-V Server will suit you quite well.
Everyone Else
If you’re somewhere in the middle of the above two cases, I think that Microsoft’s recommendation of Windows Server Core with Hyper-V fits perfectly. The parts that stand out to me:
- Flexibility: Deduplication has done such wonders for me in VDI that I’m anxious to see how I can apply it to server loads. In 2012 R2, server guests were specifically excluded; VDI only. Server 2016 maintains the same wording in the feature setup, but I can’t find a comparable statement saying that server usage is verboten in 2016. I could also see a case for building a nice VM management system in ASP.Net and hosting it locally with IIS — you can’t do that in Hyper-V Server.
- Automatic Virtual Machine Activation. Who loves activation? Nobody loves activation! Let the system deal with that.
- Security by terror: Not all server admins are created equally. I find that the really incompetent ones won’t even log on to a Server Core/Hyper-V Server system. That means that they won’t put them at risk.
- Remote management should be the default behavior. If you don’t currently practice remote management, there’s no time like the present! You can dramatically reduce the security risk to any system by never logging on to its console, even by RDP.
You can manage Hyper-V systems from a Windows 10 desktop with RSAT. It’s not entirely without pain, though:
- Drivers! Ouch! Microsoft could help us out by providing a good way to use Device Manager remotely. We should not let driver manufacturers off the hook easily, though. Note: Honolulu is coming to reduce some of that pain.
- Not everyone that requires the GUI is an idiot. Some of them just haven’t yet learned. Some have learned their way around PowerShell but don’t know how to use it for Hyper-V. You like taking vacations sometimes, don’t you?
- Crisis mode when you don’t know what’s wrong can be a challenge. It’s one thing to keep the top spinning; it’s another to get it going when you can’t see what’s holding it down. However, these problems have solutions. It’s a pain, but a manageable one.
I’m not here to make the decision for you. You now have enough information to make an informed decision.
Not a DOJO Member yet?
Join thousands of other IT pros and receive a weekly roundup email with the latest content & updates!
9 thoughts on "Hyper-V 2016 Host Mode: GUI vs Core"
I can only say: without comment
the Hyper V revision described, for a beginner (like me), is optimal, well explained.
Thanks for taking the time to advise us.
Thanks for the blog post. It was a pretty solid read.
As someone that is 2 days into struggling to get Hyper-V Core 2016 to work with remote management, I’m leaning towards just blowing it away and going with a full GUI install. I’m a little surprised to see that Microsoft got rid of the ability to add or remove the GUI as desired.
WS Core and Hyper-V Server were always intended to run headless. RSAT is the current actively supported tool. Look into the Honolulu project: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-honolulu
Ignore the “Evaluation” label. Everything that I’ve ever heard indicates that Honolulu will continue to be free even after it goes live.
You can always go GUI with HyperV role and disable the GUI later with DISM. This has an advantage – that advantage is in case of a disaster scenario where you’re having trouble administering the system, you can use DISM to bring the GUI back. It also brings the footprint down, and you can wait to remove the GUI until you are comfortable.
Note that each use of DISM to change this will require a reboot of the HyperV host.
No, you can’t. 2016 does not allow switching between GUI and core mode.
When you say legally binding and not to be used as a web server, does that mean that one cannot install Apache and some type of middle-ware server in a Windows 7 VM? Or a Linux VM?
The license that I refer to in that paragraph only applies to Hyper-V Server. No installing web services in the management OS unless the web sites only provide some sort of control interface for the VMs or an application that services the VMs.
Guest operating system licenses work separately. Your Linux VM should be OK. Using Windows 7 as a web server can have its own licensing ramifications. Those types of concerns do not relate to the installed hypervisor, though.
Thank you. Nice article. Very informative and helpful.
I’m very comfortable using PowerShell to manage Server Core and would prefer to use it for all small business, single-server Hyper-V deployments, but the fact that there’s no way to access a VM console from the server itself makes it too painful to manage.
I’ve tried a few workarounds, e.g. FreeRDP, with limited success, but they’re inelegant and unreliable.
I resent the fact that the only options Microsoft gives us are Server Core (good) and Desktop Experience (bad. well, sort of). The one and only problem I have with Server Core is the lack of vmconnect (or equivalent), and for that reason, I’m forced to install the full, bloated GUI.
To add insult to injury, the only remote management solutions officially supported are RSAT and SCCM. SCCM isn’t a viable option for single-server deployments, and the version of RSAT required for Hyper-V on Server 2016 only runs on Windows 10, I’m seriously considering deploying a small, headless desktop with every server just for management.
If you ever run across a good solution to access the VM console on Server Core, I’m sure we’d all love to hear about it.
Server Core was always intended to run headless. I share your frustration with the remote tools but Microsoft never intended for anyone to operate from the console on an ongoing basis.
But try Windows Admin Center. It can open VM consoles in an HTML 5 compliant browser. I have not tested, but I do not believe there is any particular Windows client dependency.