HyperV Server for SMBs - how to

--placeholder wiki location done in conjunction with a series of blog posts done at this site -

http://msmvps.com/blogs/bradley/archive/2012/07/26/hyperv-server-for-smbs-a-step-by-step-how-to-series.aspx

0. Some getting started tips for Server 2012 and Windows 8 Hyper-V listed on Mitch's blog,
http://garvis.ca/2012/12/27/getting-started-with-hyper-v-in-server-2012-and-windows-8/

1.  Determining the base hardware

Step one - is to purchase the hardware to be used for your HyperV server.  I personally recommend not skimping on this and buying good quality RAID, drives as the underlying base for the HyperV server.  The more robust your foundation, the less you need to worry about the parent of this HyperV project.

CPU Configuration 

  • Single Socket and Max RAM: Easily drive 5-25 seats with correct disk and RAID.
  • Dual Socket and 128GB RAM: Easily drive 20+ seats with correct disk and RAID.

RAID

Raid 10 (1+0) is what I personally have but any RAID configuration done in a manner that you can literally drop a drive and the parent HyperV box keeps on chugging and only alerts you to replace a drive is what you want to strive for.  Consider this like the load bearing walls in a house.  Don't skip on this foundation.  Buy good quality server hardware, ram, power supplies (two preferably), under good warranties and you'll be in good shape.

  • Hardware RAID on Chip plus Flash or battery backed Cache (512MB to 1GB)
  • 10K SAS drives at the minimum. (OPINION: SATA does not belong in servers. Period. Philip Elder)
    • Need that extra storage then provision NearLine 7200 RPM SAS for medium to low I/O storage needs.
  • Less than or equal to 8 spindles: 15K SAS in RAID 10 for redundancy + performance.
  • Less than or equal to 8 spindles: 15K SAS in RAID 6 (7 spindles + 1 hot spare) for performance with less redundancy.
  • 8+ Spindles RAID 6 plus 1 hot spare.

The biggest bottleneck in any virtualization setup will be the storage I/O. We need to keep in mind what the guests will be doing. Which ones require higher I/O or lower I/O for basic storage? The more drive bays the better. This gives us flexibility for our configurations to have two groups of drives installed in them. One group of 10K or 15K SAS (SSD for ultra high I/O needs) and then another group of 7200 RPM SAS for basic file and log storage.

Storage

Storage layout will depend a lot upon the number of VMs running on the host server and their tasks. A suggested layout for an 8 drive 300GB 10K SAS based RAID 6 array (1.8TB)  would be as follows:

  • 95GB Partition
    • C: Windows Server Standard or Datacenter OS install
  • 10GB Partition
    • S: Windows OS Swap File (Hyper-V does not need much if any. 4GB Min to 9.5GB Max)
  • 1.7TB Partition
    • L: Hosts VM configuration and VHD/VHDX files.

2.  Install all bios updates to the hardware.

Before installing your HyperV implementation install all BIOS update from the manuafacturer.  Install a temporary operating system and all latest drivers from the manufacturer and let the server "burn in".  Similar to how you drive a car and monitor it's first 1,000 miles or so, monitor this freshly built server to ensure that your nic drivers are stable.  I personally have had issues on a stable server (meaning it was not a new configuration from the vendor) and found that I had to go find later nic drivers that worked better with a HyperV deployment.  So always let a server "settle in", or determine what specific configuration has worked well for you in the past.

3.  Beginning deployment of the HyperV

Modern servers (in the last several years) have had the virtualization hardware setting enabled and thus typically do not need to be set in the bios to enable the HyperV role. Should you have a server who's guidance indicates it will support HyperV and yet, it fails to enable this role, ensure that in the bios that the virtualization setting is enabled.

For purposes of this wiki, we're not going to touch on NUMI setting or Live migrations or clustering.  This will be a how to for a very very simple proof of concept HyperV server.   

4.  Plan your base Operating system.
    
    For a simple HyperV server, you are probably wise to keep the parent HyperV in a workgroup mode and not make it a member of the domain and especially not a domain controller.  Keeping the base parent with just the hyperV role and nothing else keeps it easy to maintain, eaiser to not worry about the chicken and the egg problem of how do you boot a parent who is a member of a domain if the domain controller is a child of the parent.  Alternatively you can have a small external domain controller on physical hardware that will be the domain controller for the domain. 

If the domain controller is located on the HyperV child, do not make the parent a domain member or a DC unless an external domain controller exists.

More information on this issue of where the domain controller can go can be found on the Virtual guy blog.

Selecting a HyperV (core only) server may be the cheapest route as the Operating system is free, but the cost comes in management issues.  Currently you need a Windows 8 machine to remote into the HyperV (core only) server and must install some HVremote settings and edit the hosts file so you can manage the server from your remote workstation.  For more details review the Virtual guy blog post on the topic.

Consider using a Windows 8 workstation as it provides similar HyperV ability for lesser cost.  It will not be as robust as Server 2012 but still can be a viable platform for testing. 

For purposes of this post I used the full GUI of Windows 2012 Standard for this setup. I began by installing the operating system on the server by downloading the ISO and burning it into a USB flash drive by using the Windows store ISO tool.   This will build a bootable flash drive.  Just ensure it's large enough to hold the size of the ISO you downloaded. 

Place the flash drive in the server and turn the power on.  Follow the wizards and install the operating system on the server as you'd normally do. 

Once the install is completed, review the control panel to ensure all devices have successfully installed.   

Now we're ready to begin the install of the HyperV Role:

On a test server where I'm going to be downloading from Technet subscriber section, I disable IE ESC on a play/test box. If you need to get ISO's and items on the box, the IE browser is still the fastest way. 

Launch the "UI formerly known as Metro" Windows 8 Server Manager and click on Local Server. On the right hand side is IE Enhanced Security Configuration.

Turn this to off.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/0358.ieenhced.PNG

Please note the server has been already renamed to "Hyper2012".

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/0654.ieescoff.PNG

Go back to the Dashboard

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/2210.dashboar.PNG

Click on add roles and features

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/7633.next1.PNG

Click Next

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/0407.rolebase.PNG

Click role based

Remember.. this is in a workgroup, we're not doing anything fancy here, merely a basic 8 gig server.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/1731.select.PNG

 Pick the HyperV role and nothing but the HyperV role

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/5265.hyperrole.PNG

Click next next next.

Now we come to the networking. Because this is a simple box with merely one network adapter I'm going to manage and virtual the networking all through the same nic. Normally you'll want at least two.  One for management of the server itself and one for the Live nic for connecting to the guest.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/2744.selecnic.PNG

Click that box and select next.

For this play box I do not plan to do live migrations and thus will skip the next step.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/5861.migra.PNG

Next comes a selection of where you should place the virtual machines.  On a real server I'd recommend on a location other than the C drive.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/4087.stupi.PNG

For play, do whatever, for production, stick them on another drive, with NTFS permissions to allow access.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/8358.confir.PNG

Confirm everything looks good, click install.

5.  Setting up networking

Review that we have a virtual switch set up by clicking on virtual switch manager. Because we have the full gui and because we connected a nic card to this while building the HyperV server, you should have the nic already bound to the network card.

 

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/4628.nicexternal.PNG

       

If you have multiple nics, you'd set up a new virtual machine switch.

6.  Installing a child

Go to the main menu and click on New, then on virtual machine

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/8037.virmachine.PNG

Click next to start the wizard.

Name it

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/2251.nameit.PNG

And consider moving the virtual machine to a different location on your RAID drive location. This is a one drive Microserver that I'm doing this for test so I'll leave it where it is, but for production, another drive location other than C would be wise.

Click next.

Set the RAM, for Windows 2012 Essentials it can do minimum of 2 gigs a maximum of 8 gigs, but 'd probably throw 3 or 4 at it.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/6685.memr.PNG

Click next.

Next up is hooking the server to an active external nic on the edge. Pull the arrow key down and find our network that we set up earlier via the setup and confirmed was already set up.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/6378.nettt.PNG

We're going to set up a minimum of 160 gig just because that's a minimum they want - http://technet.microsoft.com/en-us/library/jj200132.aspx This can be adjusted with the config file - http://technet.microsoft.com/en-us/library/jj200143 .

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/8688.drivess.PNG

Browse to the location where the ISO is and set the HyperV to boot from it

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/6165.browsss.PNG

Review your settings, hit finish and we're ready to boot the child.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/5611.finishh.PNG

You'll now see the server listed under virtual machines. Right mouse click and click on start.

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/6403.starrrr.PNG

Double click on the name of the server to launch the full window, or right mouse click again and click on connect.

You'll now see the full gui windows setup of a brand new server.

Click Next to start to install Windows 2012 Essentials

http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bradley/3833.nextttt.PNG

Let the child install in the HyperV server. 

7.  Planning to sync to a time server.

One of the things that any domain controller should be is the root of the time of your domain. However when you have a DC in HyperV, unless you take some special precautions to ensure it doesn't drift, it has a nasty tendency to have large time skews unless you take special care.  The current theory of thought of how you should point your virtualized domain controller to a time server has been written up by Jeremy Anderson of www.thirdtier.net and linked to here.

--more to come--