An Introduction to Hyper-V Server 20165
The Windows Server 2016 product family has been released, and with it, the free Hyper-V Server 2016 product. Now that we’ve had some time for the dust to settle and many thousands and thousands of words written about the new features, I’d like to take you through a more direct introduction to Microsoft’s free standalone hypervisor offering. This post is not about those new features; it’s about getting you up and running so you can start playing with them.
What is Distinct About “Hyper-V Server” as Opposed to Just “Hyper-V”?
The terms “Hyper-V” and “Hyper-V Server” are often treated interchangeably, which leads to some confusion. Microsoft has come up with some very creative code names for pre-release products, but any time you see a released Microsoft product with an interesting name, they either bought it from someone else or the gaming division came up with it. Let’s take a moment to distinguish these two terms.
- Hyper-V: Hyper-V is the name for Microsoft’s type 1 hypervisor. You can distinguish it from everything else by one simple fact: Hyper-V does not ship on its own. It is always included in some other product. Its most applicable classification would be “feature”. “Component” might also work. You can find Hyper-V in:
- Windows 10
- Windows Server
- Hyper-V Server
- Hyper-V Server: Hyper-V Server is a stand-alone product directly downloadable from Microsoft. Apparently, its proper name is now “Microsoft Hyper-V Server” and not just “Hyper-V Server”. I’m willing to bet that doesn’t catch on. You are not required to make any purchases in order to use this product. Unless something changes from previous version, you’ll be allowed to freely upgrade to the next version as well. The Hyper-V Server product includes the Hyper-V feature.
What is Distinct About “Hyper-V Server” as Opposed to “Windows Server”?
Hyper-V Server and Windows Server are both complete products in their own right, but it wouldn’t be completely out of line to think of Hyper-V Server as “Windows Server Lite”. Everything in Hyper-V Server can be found in Windows Server, but the opposite is not true. Almost every single role and feature available in Hyper-V Server can be listed on a single screen.
Notable role and feature differences in Hyper-V Server:
- Text-based shell. You can use CMD.EXE and PowerShell.
- Graphical capability is nearly non-existent. It’s difficult to say precisely what will and what will not work, but here are some guidelines:
- The Explorer renderer is not present. This means that there is no Windows Explorer, no Internet Explorer, and no way to operate Microsoft Management Console (MMC) snap-ins, among other things.
- The Windows Presentation Framework components (WPF) are not present. No applications based on WPF will operate, which means Windows Store applications and a great many other modern apps.
- The Windows Forms components (often abbreviated as WinForms) are present. That means that some WinForms-based applications will operate, but many depend upon components of Windows/Windows Server that are not present. Things that you can expect to work:
- Installer packages based on the Windows Installer API
- Only the most basic storage components are present. With the exception of Storage Spaces Direct, which requires Windows Server 2016 Datacenter Edition, none of the advanced storage components are supported on a system that is running Hyper-V anyway. However, some people might want to take the risk of running deduplication locally with Hyper-V. You must use Windows Server to do so.
- Routing and Remote Access Services are not present in Hyper-V Server. If this functionality is desired, it should be run on another physical server or from within a guest anyway.
- IIS is not available.
- Failover Clustering and the Remote Desktop Virtualization Host features are both available.
One strong distinction is that Windows Server has a “Core” mode that is commonly confused with Hyper-V Server. Despite many confusing labels that you’ll find in a number of places, Hyper-V Server is just Hyper-V Server. “Core” is a term that belongs to Windows Server. It is a GUI-less mode that is otherwise identical. It has the same offerings of roles and features as Windows Server (except those that are specifically dependent upon the GUI, of course).
While this article is only going to briefly touch on the concept of licensing, remember that Microsoft’s licensing approach for Hyper-V’s management operating system is that it can only provide services that are directly related to Hyper-V. Any other role, feature, or application causes forfeiture of a guest Windows Server license. If you use Hyper-V Server and its available roles and features, there are only a handful of simple ways to violate that license. Basically, don’t try to turn your Hyper-V Server into a file server and you’ll almost certainly be all right.
How is Hyper-V Server Licensed?
Every Microsoft product that I’ve ever seen has an attached license of some kind, and Hyper-V Server is no exception. What makes it stand out among Microsoft’s line-up of server products is that they don’t ask you to pay for it. You can install and use Hyper-V Server in any environment at no charge. The fact that you download it from TechNet’s “Evaluation Center” and that the web page has “evaluation” in its title is just misleading. It’s a fully packaged product with no expiration, free for the taking.
That should be enough to leave this section and move on to the fun technical stuff, but I do need to address a myth that I still see in circulation. You may have been told that, if you run Windows Server as a guest operating system, you get a licensing benefit by installing Windows Server on the hardware instead of Hyper-V Server on the hardware. If you’ve been told that, you’ve been lied to (“lie” is kind of a strong word, admittedly). Any operating system that you use as a Hyper-V guest must be properly licensed. That has nothing to do with Hyper-V, though. Any operating system that you use as an ESXi guest must be properly licensed. Same with Xen. And XenServer. And VirtualBox. And KVM. And RHV. And whatever else. Use whatever management operating system makes you happy — licensing for the guests is a separate issue.
Meet Hyper-V Server
The very first thing I noticed about Hyper-V Server is that even the graphical logon UI is gone. Hyper-V Server 2012 R2 and prior all used the same logon screen as their Windows Server counterpart. Hyper-V Server now greets you like this:
Hyper-V Server 2016’s entire login process is text-based.
After logging in, things look similar to previous versions. You’ll have two cmd.exe windows, one with sconfig.cmd and another waiting for input in your profile directory.
Meet the New SCONFIG, Same as the Old SCONFIG. Mostly
If you’ve never used SCONFIG.CMD before, it’s the text-based menu driven system that many use to configure Windows Server Core and Hyper-V Server. This tool is very straightforward to use and I’m not going to spend much time on it in this article. It can help you to configure:
- Computer Name and domain or workgroup membership
- Local administrator accounts
- Remote management firewall rules
- Windows Update
- Inbound Remote Desktop connections
- IPv4 and IPv6 network settings
- Date and time, including the time zone
- Logging off, shutting down, and restarting the system
SCONFIG.CMD has not changed much from earlier versions:
The “new” entry here is 10) Telemetry settings. “Telemetry” is basically the current incarnation of the “Customer Experience Improvement Program”, except that it doesn’t have a “no, thank you” mode. Using this interface, you can only select how much data is transmitted to Microsoft, not disable it entirely. Selecting option 10 shows you the following screen:
The nice thing about this dialog is that it proves what I was telling you earlier: WinForms works in Hyper-V Server 2016. That’s probably not what you were thinking about when you saw this message, though. In a move that’s certain to have the conspiracy theorist spheres abuzz, the “For more information” link just drops you to the Microsoft home page. The privacy link works, though. Despite whatever oversight caused that broken link to be deployed into production products, Microsoft is not trying to hide information about the telemetry service from you. TechNet has an extremely thorough article on what it is, what it does, and how to configure it. For even more information on what’s sending data to Microsoft and how to get rid of them, TechNet has another thorough article. I haven’t found anything by any credible source that makes me worry about what Microsoft is collecting, but if it bothers you, a bit of research will show you how to disable Telemetry. All I’m going to leave you with on this topic is that all of the people that ran Windows Media Center disabled CEIP, and now we don’t have Windows Media Center anymore.
Configuring Hyper-V Server 2016
I cannot stress enough that you should find a way to automate your system configuration. If you’re in a small shop on a budget, try something like the script that I created. Effort in automation is never wasted.
That said, here are some functions to help you configure a new Hyper-V Server 2016 system. I am going to specifically avoid those things that are best done in SCONFIG.CMD, so go through that utility first.
Most of the things I’m going to show you are done in PowerShell. All you need to do is use the empty command prompt window and type powershell and press [Enter]. There’s no UAC in Hyper-V Server, so don’t worry about being “elevated”. You just need to have logged on as a local administrator (which includes domain accounts that have been placed into the local administrator group). I have a starter course article on PowerShell whose concepts you should be familiar with.
Working with Network Adapters
SCONFIG can set an IP address and DNS information for an adapter, but that’s the extent of its powers. NETSH is still around and is perfectly acceptable if you remember how to use it. PowerShell is the current game, though.
List all network adapters:
If you’ve got hardware that supports Consistent Device Naming, then you’ll get descriptive names for your adapters. Personally, I haven’t got that good hardware, and I can’t make much sense out of “Ethernet” and “Ethernet 1”. What I do is turn off ports on my physical switch until I’ve identified each of the adapters (Get-NetAdapter will show that the port is unplugged), then I use a text file to match the MAC addresses of each adapter, the name that I give it, and the IP addressing information for it:
I could very easily just throw all of that information into my DHCP system with a very long lease and manage it all with IPAM, but that takes all the fun out of things (actually, it doesn’t). One thing that I do is rename all of my adapters:
Rename-NetAdapter 'Ethernet 1' 'PBR'
SCONFIG will set IPs, or you can use New-NetIPAddress.
Since I have multiple adapters and I don’t want any of my other systems to accidentally try to connect to one of my storage IPs, I disable DNS registration on all adapters except the primary:
Set-DnsClient -InterfaceAlias 'PBR', 'PTR', 'PBL', 'PTL' -RegisterThisConnectionsAddress $false
Microsoft is now allowing us to get rid of the dreadful SMB 1.0/CIFS protocol. If you have any need of that on Hyper-V Server, something is wrong. Let’s kill it immediately:
Don’t forget about your virtual switch! New-VMSwitch will get you there. The -EnableEmbeddedTeaming switch will allow you to use the new switch-embedded teaming feature to combine your adapters into a team (switch independent mode only) and create a Hyper-V virtual switch on them in one cmdlet. For me, that’s:
New-VMSwitch -Name vSwitch -AllowManagementOS $false -NetAdapterName PTL, PBL -EnableEmbeddedTeaming $true -MinimumBandwidthMode Weight
For the record, the New-VMSwitch documentation STILL incorrectly says that the default QoS mode is “Weight”. After three versions of the documentation saying that, I’m starting to think that it’s just a joke.
Techniques for Installing Drivers on Windows Server 2016
Driver installation can sometimes be a chore, but you can figure out most problems if you pause for a bit to think about it. I have a Dell T20, and almost all of their installer packages require WPF if you use defaults. But, with a bit of effort, you can get most of them to work without a lot of drama. Getting the drivers to the server might be a bit of a challenge. I typically use a graphical station to download the files from the manufacturer and then place them on a common share. You can also burn them to an ISO or place them on a USB device.
If you have an .EXE from the manufacturer, the very first thing I would do is just try to run it and see if it works. If it doesn’t, the next thing that I do is try running the installer with the /? switch to see if it has alternatives, such as extraction or silent installation methods. If that doesn’t work, I go looking for raw driver files that aren’t part of an installer. So far, I believe that I’ve found solutions for everything.
Let’s look at an example. I have a Dell T20. The first thing that I needed to do was find drivers for that model. Want to do it by service tag but don’t want to digging? Ask PowerShell:
The “SerialNumber” field has your service tag.
I’ve got my files now, and I want to install the Intel chipset drivers, which are packaged in a file named “Chipset_Driver_TTVVT_WN_184.108.40.2067_A03.EXE”. When I ran that file directly, I got an error about missing Windows components. So, that’s not going to work. But, I think ran it with the /? switch and discovered that it has a few options, like silent install. I don’t like silent installs much, so I went for the extraction technique first:
Chipset_Driver_TTVVT_WN_220.127.116.117_A03.EXE /s /e=C:\Source\Chipset
That’s all it took, and I had extracted the Intel contents of the Dell driver package. Unlike Dell, Intel relies on fairly basic Windows Installer packages that will work just about anywhere:
The NIC drivers were a bit more interesting. I extended the T20 with some extra Intel NICs that are older, so the drivers from Dell aren’t going to cover them. After some digging, I determined that my best option was to just use the Intel CD, because it will install drivers for all of my adapters in one shot. The problem? They’re in a ZIP file. No problem for PowerShell in Hyper-V Server 2016:
Expand-Archive -Path C:\Source\IntelSoftware21_1_cd.zip -DestinationPath C:\Source\Network
Another problem easily solved:
The final place that you might find yourself is with the need to install from an .inf file because you can’t find a suitable installer. I did not have that problem with the T20 so I haven’t got any direct examples. However, the basic format is very simple (and you can do it from the standard command line instead of PowerShell, if you prefer):
pnputil -i -a <driverfile>.inf
What’s nice about PNPUTIL is that it works in a remote PowerShell session. I have installed updated network driver files that way. I lost connection, of course, but it then reconnected once the drivers were installed.
Device Manager does not work on Hyper-V Server 2016 or Windows Server 2016 Core. You can list installed drivers with pnputil -e .
Managing Hyper-V Server 2016
A very common complaint is that, out-of-the-box, Hyper-V Server is difficult to manage. There are two ways to look at this. One is that the complaint is correct. There are other freely-available hypervisors that ship with basic graphical interfaces, and if that’s your metric for “easy to manage”, then Hyper-V Server is not easy to manage.
The other way to look at it is that the complaint misses the point. I’ve said it before and I’ll say it again: Microsoft does not understand the small business very well and they did not build Hyper-V Server for the small business. In their minds, Hyper-V Server is just one cog in a larger cloud infrastructure. You deploy it with automated tools, you configure it with pre-defined scripts and automated systems, and you manage it from a remote system. It is entirely possible to have fully-functional Hyper-V Server systems that operate perfectly from cradle to grave without any human ever logging on locally. Why would anyone build a user-friendly interface for something like that?
But, I imagine that if you fielded the complaint, you haven’t got the budget or the expertise for that sort of environment. Just because Hyper-V Server is a free tool does not mean that it is intended for people that don’t have much money to spend. Smaller businesses are expected to use the graphical version of Windows Server because they have relaxed density requirements so GUI overhead is trivial, they are probably using internal storage so a larger disk footprint is trivial, and their security concerns are probably greater elsewhere. Windows Server is Hyper-V’s graphical interface. The differentiation is that its management environment is not free, not that it isn’t easy to use. Usability issues with the graphical tools are a topic for another article (or ten).
So, if you really want to manage Hyper-V Server locally, then you need to be prepared to do sysops like a professional. That means learning to navigate the native command shell and PowerShell. If you have these skills, then Hyper-V Server is not difficult to manage. I don’t think that having these skills is too much to ask, either. I’m still baffled by the existence of people that say they want to be systems administrators but don’t want to learn these things. That, to me, is like a surgeon that doesn’t want to see blood or a structural engineer that doesn’t want to do math. These attitudes are a sign that you selected the wrong career field.
Of course, there’s no requirement to manage Hyper-V Server locally. I am a big fan of using a single management computer that has all of the necessary tools installed. Here’s a Windows Server 2016 connected to and managing my Hyper-V Server 2016 installation:
I don’t even do PowerShell locally on Hyper-V Server. Hyper-V Server is intended to run “headless”, so that should be your goal.
That’s enough to create a fully functional Hyper-V Server deployment that’s ready to start running virtual machines. New-VM is one way to create them, but you’ll probably like your results better if you operate from a remote system with Hyper-V Manager. This article can help you get that connection made. Its contents aren’t for 2016 specifically, but 2016 is actually a bit easier than those older versions so you shouldn’t have any troubles.
Have any questions or feedback?
Leave a comment below!