Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon

Hyper-V Basics

Save for later
  • 10 min read
  • 06 Feb 2015

article-image

This article by Vinith Menon, the author of Microsoft Hyper-V PowerShell Automation, delves into the basics of Hyper-V, right from installing Hyper-V to resizing virtual hard disks.

The Hyper-V PowerShell module includes several significant features that extend its use, improve its usability, and allow you to control and manage your Hyper-V environment with more granular control.

Various organizations have moved on from Hyper-V (V2) to Hyper-V (V3). In Hyper-V (V2), the Hyper-V management shell was not built-in and the PowerShell module had to be manually installed. In Hyper-V (V3), Microsoft has provided an exhaustive set of cmdlets that can be used to manage and automate all configuration activities of the Hyper-V environment. The cmdlets are executed across the network using Windows Remote Management.

In this article, we will cover:

  • The basics of setting up a Hyper-V environment using PowerShell
  • The fundamental concepts of Hyper-V management with the Hyper-V management shell
  • The updated features in Hyper-V

(For more resources related to this topic, see here.)

Here is a list of all the new features introduced in Hyper-V in Windows Server 2012 R2. We will be going in depth through the important changes that have come into the Hyper-V PowerShell module with the following features and functions:

  • Shared virtual hard disk
  • Resizing the live virtual hard disk
  • Installing and configuring your Hyper-V environment

Installing and configuring Hyper-V using PowerShell

Before you proceed with the installation and configuration of Hyper-V, there are some prerequisites that need to be taken care of:

  • The user account that is used to install the Hyper-V role should have administrative privileges on the computer
  • There should be enough RAM on the server to run newly created virtual machines

Once the prerequisites have been taken care of, let's start with installing the Hyper-V role:

  1. Open a PowerShell prompt in Run as Administrator mode:

    hyper-v-basics-img-0

  2. Type the following into the PowerShell prompt to install the Hyper-V role along with the management tools; once the installation is complete, the Hyper-V Server will reboot and the Hyper-V role will be successfully installed:
    Install-WindowsFeature –Name Hyper-V -IncludeManagementTools - Restart
  3. Once the server boots up, verify the installation of Hyper-V using the Get-WindowsFeature cmdlet:
    Get-WindowsFeature -Name hyper*

    You will be able to see that the Hyper-V role, Hyper-V PowerShell management shell, and the GUI management tools are successfully installed:

     hyper-v-basics-img-1

Fundamental concepts of Hyper-V management with the Hyper-V management shell

In this section, we will look at some of the fundamental concepts of Hyper-V management with the Hyper-V management shell. Once you get the Hyper-V role installed as per the steps illustrated in the previous section, a PowerShell module to manage your Hyper-V environment will also get installed. Now, perform the following steps:

  1. Open a PowerShell prompt in the Run as Administrator mode.
  2. PowerShell uses cmdlets that are built using a verb-noun naming system (for more details, refer to Learning Windows PowerShell Names at http://technet.microsoft.com/en-us/library/dd315315.aspx). Type the following command into the PowerShell prompt to get a list of all the cmdlets in the Hyper-V PowerShell module:
    Get-Command -Module Hyper-V

    Hyper-V in Windows Server 2012 R2 ships with about 178 cmdlets. These cmdlets allow a Hyper-V administrator to handle very simple, basic tasks to advanced ones such as setting up a Hyper-V replica for virtual machine disaster recovery.

  3. To get the count of all the available Hyper-V cmdlets, you can type the following command in PowerShell:
    Get-Command -Module Hyper-V | Measure-Object

    The Hyper-V PowerShell cmdlets follow a very simple approach and are very user friendly. The cmdlet name itself indirectly communicates with the Hyper-V administrator about its functionality. The following screenshot shows the output of the Get command:

    hyper-v-basics-img-2

    For example, in the following screenshot, the Remove-VMSwitch cmdlet itself says that it's used to delete a previously created virtual machine switch:

    hyper-v-basics-img-3

  4. If the administrator is still not sure about the task that can be performed by the cmdlet, he or she can get help with detailed examples using the Get-Help cmdlet. To get help on the cmdlet type, type the cmdlet name in the prescribed format. To make sure that the latest version of help files are installed on the server, run the Update-Help cmdlet before executing the following cmdlet:
    Get-Help <Hyper-V cmdlet> -Full

    The following screenshot is an example of the Get-Help cmdlet:

    hyper-v-basics-img-4

Shared virtual hard disks

This new and improved feature in Windows Server 2012 R2 allows an administrator to share a virtual hard disk file (the .vhdx file format) between multiple virtual machines. These .vhdx files can be used as shared storage for a failover cluster created between virtual machines (also known as guest clustering). A shared virtual hard disk allows you to create data disks and witness disks using .vhdx files with some advantages:

  • Shared disks are ideal for SQL database files and file servers
  • Shared disks can be run on generation 1 and generation 2 virtual machines

This new feature allows you to save on storage costs and use the .vhdx files for guest clustering, enabling easier deployment rather than using virtual Fibre Channel or Internet Small Computer System Interface (iSCSI), which are complicated and require storage configuration changes such as zoning and Logic Unit Number (LUN) masking.

In Windows Server 2012 R2, virtual iSCSI disks (both shared and unshared virtual hard disk files) show up as virtual SAS disks when you add an iSCSI hard disk to a virtual machine. Shared virtual hard disks (.vhdx) files can be placed on Cluster Shared Volumes (CSV) or a Scale-Out File Server cluster

Let's look at the ways you can automate and manage your shared .vhdx guest clustering configuration using PowerShell. In the following example, we will demonstrate how you can create a two-node file server cluster using the shared VHDX feature. After that, let's set up a testing environment within which we can start learning these new features. The steps are as follows:

Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at AU $24.99/month. Cancel anytime
  1. We will start by creating two virtual machines each with 50 GB OS drives, which contains a sysprep image of Windows Server 2012 R2. Each virtual machine will have 4 GB RAM and four virtual CPUs.

    D:vhdbase_1.vhdx and D:vhdbase_2.vhdx are already existing VHDX files with sysprepped image of Windows Server 2012 R2.

    The following code is used to create two virtual machines:

    New-VM –Name "Fileserver_VM1" –MemoryStartupBytes 4GB – 
    NewVHDPath d:vhdbase_1.vhdx -NewVHDSizeBytes 50GB


    New-VM –Name "Fileserver_VM2" –MemoryStartupBytes 4GB –
    NewVHDPath d:vhdbase_2.vhdx -NewVHDSizeBytes 50GB
  2. Next, we will install the file server role and configure a failover cluster on both the virtual machines using PowerShell.

    You need to enable PowerShell remoting on both the file servers and also have them joined to a domain.

    The following is the code:

    Install-WindowsFeature -computername Fileserver_VM1 File- Services, 
    FS-FileServer, Failover-Clustering   Install-WindowsFeature -computername Fileserver_VM1 RSAT- Clustering –IncludeAllSubFeature   Install-WindowsFeature -computername Fileserver_VM2 File- Services, FS-FileServer,
    Failover-Clustering   Install-WindowsFeature -computername Fileserver_VM2 RSAT- Clustering -IncludeAllSubFeature
  3. Once we have the virtual machines created and the file server and failover clustering features installed, we will create the failover cluster as per Microsoft's best practices using the following set of cmdlets:
    New-Cluster -Name Cluster1 -Node FileServer_VM1,   FileServer_VM2 -StaticAddress 10.0.0.59 
    -NoStorage – Verbose

    You will need to choose a name and IP address that fits your organization.

  4. Next, we will create two vhdx files named sharedvhdx_data.vhdx (which will be used as a data disk) and sharedvhdx_quorum.vhdx (which will be used as the quorum or the witness disk). To do this, the following commands need to be run on the Hyper-V cluster:
    New-VHD -Path   c:ClusterStorageVolume1sharedvhdx_data.VHDX -Fixed - SizeBytes 10GB
     
    New-VHD -Path   c:ClusterStorageVolume1sharedvhdx_quorum.VHDX -Fixed - SizeBytes 1GB
    
  5. Once we have created these virtual hard disk files, we will add them as shared .vhdx files. We will attach these newly created VHDX files to the Fileserver_VM1 and Fileserver_VM2 virtual machines and specify the parameter-shared VHDX files for guest clustering:
    Add-VMHardDiskDrive –VMName Fileserver_VM1 -Path   
    c:ClusterStorageVolume1sharedvhdx_data.VHDX – ShareVirtualDisk   Add-VMHardDiskDrive –VMName Fileserver_VM2 -Path  
    c:ClusterStorageVolume1sharedvhdx_data.VHDX – ShareVirtualDisk
  6. Finally, we will be making the disks available online and adding them to the failover cluster using the following command:
    Get-ClusterAvailableDisk | Add-ClusterDisk

Once we have executed the preceding set of steps, we will have a highly available file server infrastructure using shared VHD files.

Live virtual hard disk resizing

With Windows Server 2012 R2, a newly added feature in Hyper-V allows the administrators to expand or shrink the size of a virtual hard disk attached to the SCSI controller while the virtual machines are still running. Hyper-V administrators can now perform maintenance operations on a live VHD and avoid any downtime by not temporarily shutting down the virtual machine for these maintenance activities.

Prior to Windows Server 2012 R2, to resize a VHD attached to the virtual machine, it had to be turned off leading to costly downtime. Using the GUI controls, the VHD resize can be done by using only the Edit Virtual Hard Disk wizard. Also, note that the VHDs that were previously expanded can be shrunk.

The Windows PowerShell way of doing a VHD resize is by using the Resize-VirtualDisk cmdlet. Let's look at the ways you can automate a VHD resize using PowerShell. In the next example, we will demonstrate how you can expand and shrink a virtual hard disk connected to a VM's SCSI controller. We will continue using the virtual machine that we created for our previous example. We have a pre-created VHD of 50 GB that is connected to the virtual machine's SCSI controller.

Expanding the virtual hard disk

Let's resize the aforementioned virtual hard disk to 57 GB using the Resize-Virtualdisk cmdlet:

Resize-VirtualDisk -Name "scsidisk" -Size (57GB)

Next, if we open the VM settings and perform an inspect disk operation, we'll be able to see that the VHDX file size has become 57 GB:

hyper-v-basics-img-5

Also, one can verify this when he or she logs into the VM, opens disk management, and extends the unused partition. You can see that the disk size has increased to 57 GB:

hyper-v-basics-img-6

Resizing the virtual hard disk

Let's resize the earlier mentioned VHD to 57 GB using the Resize-Virtualdisk cmdlet:

  1. For this exercise, the primary requirement is to shrink the disk partition by logging in to the VM using disk management, as you can see in the following screenshot; we're shrinking the VHDX file by 7 GB:

    hyper-v-basics-img-7

  2. Next, click on Shrink. Once you complete this step, you will see that the unallocated space is 7 GB. You can also execute this step using the Resize-Partition Powershell cmdlet:
    Get-Partition -DiskNumber 1 | Resize-Partition -Size 50GB

    The following screenshot shows the partition:

    hyper-v-basics-img-8

  3. Next, we will resize/shrink the VHD to 50 GB:
    Resize-VirtualDisk -Name "scsidisk" -Size (50GB)

Once the previous steps have been executed successfully, run a re-scan disk using disk management and you will see that the disk size is 50 GB:

hyper-v-basics-img-9

Summary

In this article, we went through the basics of setting up a Hyper-V environment using PowerShell. We also explored the fundamental concepts of Hyper-V management with Hyper-V management shell.

Resources for Article:


Further resources on this subject: