Build a WS2016 Demo/Training Lab on a Single PC
I will share how you can build a test/demo/evaluation lab for Windows Server 2016, including Hyper-V and failover clustering, on a single machine (including a laptop) in this post.
A big challenge for those of us working with Hyper-V was that if we wanted to show Hyper-V in action, learn how it works, or test out some of the features, then you needed a rack of servers, switches, and storage. Windows 10 and Windows Server 2016 has changed all that.
Say Goodbye to Traditional PC Lifecycle Management
Traditional IT tools, including Microsoft SCCM, Ghost Solution Suite, and KACE, often require considerable custom configurations by T3 technicians (an expensive and often elusive IT resource) to enable management of a hybrid onsite + remote workforce. In many cases, even with the best resources, organizations are finding that these on-premise tools simply cannot support remote endpoints consistently and reliably due to infrastructure limitations.
One of the cool features of the latest release of Hyper-V is nested virtualization; this is where you can run a Hyper-V virtual machine inside of a Hyper-V virtual machine … inside of a Hyper-V virtual machine inside of another Hyper-V virtual machine. What does this mean for a lab? I can now take a single good spec machine, such as a laptop, run Windows 10 (Anniversary update or later) with Client Hyper-V enabled on it, and deploy a bunch of virtual machines onto that laptop that will each be a Hyper-V host.
You can deploy full-blown Hyper-V clusters, iSCSI storage, Storage Spaces (including Direct) clusters as virtual machines on this single laptop; all you cannot do is some of the clever hardware stuff such as SR-IOV, RDMA, and so on.
You will need a laptop with flash storage. Microsoft reckons that nested virtualization, the key to this solution, doesn’t impact CPU/memory performance in the virtual machine host that much. Storage performance is degraded a bit, so you should use an SSD drive for storing your virtual machines.
To be honest, if you have a big enough HDD for storing a lab full of virtual machines, it’s going to be either 7200 or 5400 RPM, and the performance will be dreadful. Go with SSD and you won’t regret it.
The processor on the laptop must be an Intel processor with VT-x and EPT technology. The last few generations of iCore processors include these features; the laptop I’ve used as a portable lab is more than 5 years old.
Your OS needs to be Windows 10 with the anniversary update; this is the update that added support for nested virtualization.
The bottleneck on the size of your lab will be RAM. My 5-year-old machine is limited to 16GB RAM; that allows me to run a domain controller, management machine, a couple of small Hyper-V hosts, and a simple storage server.
If you are using a laptop, then you will probably want to use Wi-Fi to network your machine and to allow your virtual machines access to the Internet. At this time, a lot of us are having problems with Wi-Fi network adapters and external Hyper-V switches. A solution that some of the Hyper-V MVPs are recommending is to use a NAT virtual switch instead, which will leverage whatever networking that your laptop has. The virtual machines won’t have easy access from outside of your laptop, but they should have easy access to the Internet.
Guest OS of Choice
I might have some concerns about using Nano Server in production, but Nano Server is perfect for this approach to a lab thanks to its low usage of finite resources. Nano Server can boot with just 130MB of RAM (in my lab) and sit idle at around 128MB if you have no roles enabled. Nano Server also installs with a C: drive of under 700MB. Imagine how many of those machines you can use? This is why Nano Server is my deployment option of choice in a portable lab, but there are times when you will need a full installation, including:
- To use the admin tools
- Running roles such as domain controller
You’re going to need some management. Start off with a domain controller running in a VM with a full installation of WS2016. You can double up with this machine by using it as your administration center for PowerShell and the administration tools.
However, I find that there are times that I need to use a Windows client, so deploy Windows 10 into another virtual machine; this machine will be a domain member and have the Remote Server Administration Toolkit enabled. You should also install Hyper-V Manager through Control Panel, which does not require the hypervisor to be installed. Typically, I do all of my lab administration from this machine.
You will be leveraging nested virtualization to make this possible; without nested virtualization, you might be able to install Hyper-V into virtual machines with Server Core installed, but nested virtualization enables the hypervisor to start inside of a virtual machine with the virtual processor extension enabled. The virtual machines must be configured with static RAM — nested virtualization requires that virtual Hyper-V hosts do not use Dynamic Memory.
There are a few ways that you can configure storage for your Hyper-V hosts. I’m assuming that you want to learn how to use or show how to use a failover cluster, so you will need some kind of shared storage. I wish I could say that you could enable nested virtualization on Windows 10, but the filter driver requires that the physical host has failover clustering enabled, so this is not an option.
So you can do your cluster storage in the following ways:
- Set up a virtual machine as an iSCSI target, using solutions such as StarWind (excellent performance, I have found) or the iSCSI target that is built into Windows Server.
- Set up a virtual machine as a file server and store virtual machines using SMB 3.0.
- Deploy a number of virtual machines as a virtual Storage Spaces Direct cluster, and store virtual machines using SMB 3.0.
- Deploy Storage Spaces Direct hyper-converged cluster, where the machines are performing the cluster and storage roles simultaneously.
Otherwise, if you want a simple Hyper-V environment, you can dispense with the cluster and just use direct storage in each virtual host.
A tip: placing storage and compute onto different tiers allows you to show off or learn features such as storage resiliency.
And a second tip: Use ReFS instead of NTFS for the volumes that store your nested virtual machines. ReFS is a much faster file system for virtual hard disk operations.
Nested Virtual Machines
I’m guessing that your single physical machine has limited RAM, maybe 16GB to 32GB. If that’s the case then your virtual Hyper-V hosts might have just 4GB to 8GB RAM each. You will be limited to a small amount of RAM for your nested virtual machines, the machines that are running inside of the virtual Hyper-V hosts. In my lab, these machines do next to nothing … some exist just to allow me to have machines and nothing more.
I was given a mobile workstation more than 5 years ago when I started my job. It was intended to be a portal demo lab, but I couldn’t use it on the road because of technology limitations, so I placed the laptop into a rack where my lab of physical servers and Intel NUCs reside. That changed with Windows 10 and Windows Server 2016; I pulled the laptop out of the rack, installed Windows 10, and deployed a lab like above. I used that lab to present at our local community launch of WS2016 and it worked perfectly. I might not have RDMA, DDA, SR-IOV, 10 Gbps networking, and all those lovely features that I enjoy in my rack of demo servers, but I don’t need to rely on a VPN connection, either, and that makes a big difference. I’m lucky because I do have access to a big rack of gear. I know that I’m lucky; most just have a tower PC or a laptop and nested virtualization, a fast disk, and a RAM expansion can give you what you need to experience more of Windows Server … even Microsoft is leveraging this approach for the Azure Stack Proof of Concept kit (also known as Technical Preview 2).