Secret ingredients to quality software


Rules to Better Hyper-V

21 Rules

If you still need help, visit our Hyper-V consulting page and book in a consultant.

  1. Do you use Fixed Disks?

    When SysAdmins first get going with Hyper-V, they often choose to use dynamically expanding VHD’s. They often do this to increase VHD creation time and reduce hard disk usage.

    The problem with dynamically expanding VHDs is that they reduce the performance of the Virtual Machine. It is much better to use a fixed VHD when the Virtual Machine is used in a production environment.

  2. Do you use a Microsoft supported network setup for Hyper-V Clustering?

    Microsoft lists several recommended and supported network configurations. It is very important that you configure your Hyper-V Cluster with one of the supported network types otherwise you will have performance issues once you load up the cluster.

    config page
    Hyper-v configuration page
    Figure: Check you have one of the supported configurations listed on the >Microsoft Hyper-V Live Migration – Network Configuration page (this example has 3 networks) It may work fine initially on a non-supported configuration but when you start loading more Virtual Machines on to the cluster the performance will be degrade dramatically.

  3. Do you use Basic Volumes inside VHD's?

    When formatting a new virtual disk you have attached to a Hyper-V Virtual Machine, you can choose to to format the disk as a Basic disk or Dynamic disk .

    A Dynamic disk might be useful in situations where you want to create a software RAID array, but when using Hyper-V this not a good idea because it prevents Microsoft Data Protection Manager (DPM) from doing Child State Backups (backups while the machine is running).

    For this reason, never use Dynamic disks inside Hyper-V Virtual Machines.

    basicvolumes badexample
    Bad Example - DPM cannot backup this Virtual Machine's child state as it has a Dynamic Disk

    Figure: Bad Example - DPM cannot backup this Virtual Machine's child state as it has a Dynamic Disk

    basicvolumes goodexample
    Good example – Using Basic Volumes allows DPM to backup the Virtual Machine’s child state

    Good example – Using Basic Volumes allows DPM to backup the Virtual Machine’s child state

  4. Do you have the iSCSI and Cluster networks on their own VLAN (or even better their own switch)?

    Having the network flooded with a virus is bad news – but it will be worse news if iSCSI traffic is going across the same network. This is why you should have your iSCSI or SAN traffic on a different VLAN.

    switch for vlan
    Figure: A managed switch allows VLANing Note: An even better and more expensive solution is purchase a separate Switch for each network (this example means 3 network adapters = 3 networks)

  5. Do you know how to expand your VHD's when you are low on space?

    Occasionally when you estimate the size of a VHD that you will be using in a server, you can get it wrong and you will need to give the Virtual Machine some more space. Instead of adding a bigger data disk in the Virtual Machine and migrating data, you can expand the existing disk.

    1. Open the Hyper-V Manager on the server hosting the Virtual Machine
    2. Shutdown the virtual machine (only required for Gen1 VMs)
    3. Click Edit Disk... in the Actions pane of the Hyper-V Manager
      actions expand
      You expand a VHD from the Actions Menu | Edit Disk
      ** **Figure: You expand a VHD from the Actions Menu | Edit Disk
    4. In the Edit Virtual Hard Disk Wizard window, choose the VHD you want to edit and choose Next.
    5. Select Expand and click Next
    6. Enter the new size of the VHD and click Next

    You will now have a resized VHD. Next step is to boot up into the virtual machine and tell disk manager to resize the partition on the VHD to use the free space which has been added at the end of the VHD. Windows Server 2008 makes this very simple:

    1. Boot into the virtual machine
    2. Open Computer Management and choose Disk Management
    3. Right click on the partition sitting at the front of the newly resized disk and click on Extend Volume...
      expand freespace
      The first partition on the disk needs to be expanded to use up the unallocated space created when expanding the VHD
      ** **Figure: The first partition on the disk needs to be expanded to use up the unallocated space created when expanding the VHD
    4. You will have to use all the available space when you extend the volume as it is a Simple Volume. (See Rule: Do you use Basic Volumes inside VHD’s?) When you are asked to select your disks just click Next
    5. Click Finish
      expand fullspaceused
      The disk is now using all the available space inside the VHD
      Figure: The disk is now using all the available space inside the VHD
  6. Do you give your Network Adapters meaningful names?

    When you configure Hyper-V Clustering, each node will have upwards of 4 network adapters, some virtual and some physical. It is important to give these adapters meaningful names so you know what network adapter does what.

    naming bad
    Bad naming
    Figure: Bad Example - It makes it hard to know what network adapter does what if you don't have meaningful names
    naming good
    Good naming
    Figure: Good example - As an example naming convention for network adapters on each node
    naming good2
    Figure: Good Example - It is easy to tell which network adapter does what when they have meaningful names

  7. Do you name your Virtual Machines with a standadized naming convention?

    When your Hyper-V environment is spread across multiple hosts and contains many Virtual Servers, it can get very confusing to find the one you are looking for amongst them all. This is why you should use a standard naming convention for all your Virtual machines.

    naming badexample
    How do you know what machine is what?
    Bad Example - How do you know what machine is what? The standard we use for Production Virtual Machine naming is as follows:


    ** For example: **Falcon-SCVMM**The standard we use for Development Virtual Machine naming is as follows:

    DEV-NetBIOSName-ServiceName-DeveloperInitials ** For example: **DEV-demo2010a-SP2010MSInfoWorker-JL

    naming goodexample
    It is easy to tell which VM is which when they are named to a standard

    Good Example - It is easy to tell which VM is which when they are named to a standard

  8. Do you export a Virtual Machine if you need to move it?

    If you need to move a virtual machine from one Hyper-V server to another, you should using the Hyper-V Managers export option rather than just moving the VHD files.

    If your machine has snapshots and you copy them rather than export them, it can cause issues with the VHD’s and AVHD’s (Snapshot VHD’s) because Hyper-V does not know there has been a snapshot when you load it onto the new Hyper-V Host. You also lose the settings for your Network Adapter, like its static IP address.

    To export a Virtual Machine from the Hyper-V Manager :

    1. Right click on it when it is shut down and clicking Export...
    2. Choose the location you wish to export the Virtual Machine to and click on Export
  9. Do you use Group Policy to Apply Settings to all of your Cluster Nodes?

    Don't log in and make manual changes to the clustered nodes.

    When working with clustered environments it is important that settings be consistent across every node. The best way to handle this is through group policy.

    Create a policy that you would like applied to each node of the cluster using the Group Policy Management .

    group policy bad
    Group policy bad
    Figure: Bad Example - Do not manually change settings on each node
    group policy good
    Group policy good
    Figure: Good Example - Changing settings through Group Policy keeps node settings the same

  10. Do you know how to specify a Network for Live Migration?

    It is important have the Live Migration and Cluster traffic on a separate network interface than the iSCSI or SAN traffic. If you do not you will see a performance hit while migrating virtual machines and the process will be a lot slower.

    To specify the roles of each network adapter:

    1. Open the Failover Cluster Manager
    2. Expand the Networks section and you will see all of your network adapters listed
    3. Right click on the network that you are using for LAN and ISCSI and make sure that the following setting is selected

    cluster network
    Network properties window
    Figure: Network properties window This setting prevents ISCSI and LAN traffic from going over the cluster network

  11. Do you snapshot Virtual Machines before big changes?

    Snapshots are a very easy way to back up a system before a big change is made. They can also be easily restored if something goes wrong during the change.

    1. In the Hyper-V Manager , ensure the Virtual Machine has the state of Off
    2. Right click on the virtual machine you wish to snapshot and click Snapshot
    3. The snapshot should run very quickly and you will notice the snapshot in the Snapshots area of the **Hyper-V Manager

    snapshot while off
    You will see the snapshots associated with a Virtual Machine when you click on them

    You will see the snapshots associated with a Virtual Machine when you click on them

  12. Do you delete old snapshots before making a new one?

    Snapshots are a very handy tool for a System Administrator, but they can quickly turn into a nightmare if they are not managed properly. Snapshots take far more hard drive space than a virtual machine without, and if you don’t clean up your snapshots you may run out of drive space.

    snapshot avhds
    Snapshots are useful, but they can take up a lot of space
    Figure: Snapshots are useful, but they can take up a lot of space When you delete a snapshot you can no longer restore the virtual machine to the point in time the snapshot was taken. Deleting a snapshot does not affect any other snapshots, nor will it affect the current state of the virtual machine.

    Set yourself a calendar reminder 3 weeks after you make a snapshot so you remember to apply the snapshot to the Virtual Machine (assuming you are happy with the virtual machine after the snapshot).

    1. In the Hyper-V Manager , click on the virtual machine you want to apply the snapshot to
    2. In the Snapshots window, right click on the snapshot you wish to apply and click Delete Snapshot…
    3. Confirm the snapshot deletion.
    4. Wait for the merge process to complete (this may take a while if you have had the snapshot running for a long time and it has grown large in size).
  13. Do your network cards to the latest driver?

    As Hyper-V Clustering requires some advanced networking technologies make sure you download the very latest drivers for all your network cards – don’t just rely on the out of box driver.

  14. Do you have your cluster network on a separate Active Directory domain?

    Being able to communicate with the domain is so important for Hyper-V and clustering. To protect yourself from Active Directory problems, you can completely separate your primary Active Directory domain.

    Having a separate Active Directory domain will allow your Hyper-V machines to run without problems in the case that your main Active Directory domain fails for any reason.

    When you setup a new Active Directory domain for your Hyper-V cluster, create a trust between to 2 domains.

  15. Do you know how to decommission a Virtual Machine?

    It is important to properly decommission a Virtual Machine rather than just delete it. Developers have a knack for leaving important files everywhere, and inside a Virtual Machine is no exception.

    1. Let the people that may have been using the Virtual Machine that it is going to be decommissioned. This might be difficult if it was being used for testing or staging.
    2. Make a text file that matches the name of the Virtual Machine.
    3. Note down the Virtual Machines static IP address in the text file.
    4. Check the DNS Manager on a domain controller and note down any DNS names that pointed to the IP Address of the Virtual Machine.
    5. Copy the Virtual Machines folder to a file server or backup drive.
    6. Copy the text file into the same location.
    7. Set a calendar reminder for yourself to delete the Virtual Machine if it hasn’t been requested in 3 months.
  16. Do you only use your nodes for Virtual Machine Management?

    When setting up Failover Cluster Manager it is important that each Physical Machine, also known as a host or node be setup in an identical manner. This means each machine should be configured the same, with the same networks and same workloads running.

    It is best practice to have your nodes only running the necessary features to run Failover Cluster Manager, leaving your VMs or other hosts not in the cluster to run everything else.

    For this reason SSW recommends only running Failover Cluster Manager and Hyper-V roles on your nodes. It is also recommended that each node in the cluster is identical hardware, this is not strictly required but will assist in the ease of management.

  17. Do you disable NetBIOS on all dedicated purpose adapters (iSCSI and Cluster Communications)?

    To improve performance, it's a good idea to disable NetBIOS over TCP/IP on your cluster NIC and iSCSI NIC. NetBIOS isn't used in Server 2008 R2 clusters.

    disable netbios
    Disable netBIOS
    Figure: Good example – the NetBIOS is disabled on the dedicated NIC's (iSCSI & Cluster Communications)

  18. Do you manage Hyper-V Networks through Virtual Machine Manager (VMM)?

    Virtual Machine Manager (VMM) lets you easily apply network settings to a Hyper-V host or cluster.

    Instead of managing each Virtual Machine network itself, using VMM to manage them all is much easier.

    To do that, you need to complete a few steps:

    1. Configure network settings with a logical switch;

    You can learn more on how to set this up here.

      2. Ask yourself: "What is this network adapter going to be used for?"

    You need to specify if the network adapter is going to be used for virtual machines, host management, etc...

    1. Apply the logical switch and monitor physical network devices

    For full instructions on how to do this, see here.

  19. Do you manage Virtual Machines through Virtual Machine Manager (VMM)?

    Virtual Machine Manager (VMM) is made for managing Virtual Machines (VM)!Everything is easy to set up and deploy using VMM.

    You can provision VMs using a number of different approaches in VMM:

    1. Create VMs from a blank virtual disk;   2. Create VMs from existing hard disks;   3. Clone a VM from existing VM;   4. Create VM from a template;   5. Create VM in a service deployment;   6. Rapidly provision a VM using storage area network (SAN) copy.

    You can also deploy VM guest clusters that acts as a failover cluster for your VMs, sharing the same .vhdx files as the main ones!

    VMM uses an algorithm to intelligently place your newly created virtual machine on an available host, depending on a few factors:

    1. CPU rating;   2. RAM rating;   3. Disk I/O rating;   4. Network rating.

    It then places the VM in the best host available for it.

    VMM does this and much more for VMs, and you can read a bigger explanation here.

  20. Do you manage Windows Update Services through Virtual Machine manager (VMM)?

    You can use Virtual Machine Manager (VMM) to manage your Windows Update Services (WSUS) directly, instead of using the server management itself.

    To find full explained instructions on how to set this up, see here.

    Before starting, you should take some things into consideration:

    1. The WSUS server must be in the same domain as the VMM server;   2. Best practices dictates that you should use a separate server to be a WSUS server;   3. After you add a WSUS server to VMM, you should use the VMM console to manage it, and not the WSUS console.

    After taking these into consideration, you can start deploying update baselines, which contains a set of required updates scoped to objects, and adding update exemptions as necessary.

  21. Do you use Virtual Machine templates with Virtual Machine Manager (VMM)?

    Using Virtual Machine (VM) templates makes it easy to deploy consistent VM setting using VMM.

    There are 2 types of templates:

    1. VM templates, which are database objects stored in the VMM library, used to quickly set up VMs   2. Service templates, which defines how a service is configured. They hold information about the VMs, which application to install on VMs, and the network settings that should be used.

    You can create a VM template from an existing virtual hard disk, or from an existing VM deployed on a host.

    To see how this is done, you can check here.

We open source. This page is on GitHub