Windows Server 8 Hyper-V Virtual Machine Replication

One of the biggest new features in Windows Server 8 Hyper-V is Hyper-V Replica. Hyper-V Replica allows you to replicate Virtual Machines over the network to another Hyper-V Hosts. This is great if you replicate the VM to another datacenter or if you don’t want to create a Hyper-V Cluster and still have the requirement to start the Virtual Machine in 30 minutes on another host.

Windows Server 8 Hyper-V Replica

With the Hyper-V VM Move feature you can even push this and live migrate a Virtual Machine to another host even if you don’t have a cluster. This can be useful if you have a maintenance window on your Hyper-V hosts.

Windows Server 8 Hyper-V Move VM

Hyper-V: “Version 3 kills them all”

Windows Server 8 Server Manager Dashboard

Microsoft showed the latest version of Hyper-V at build conference together with Windows 8 and Windows Server 8. Microsoft showed a lot of new Hyper-V features which turn Hyper-V in really powerful hypervisor.

Some days ago I posted a blog post about new features which Microsoft showed before the build conference, now it’s time to extend the list of new features. There are a lot of even more powerful features than the once I posted back then.

Windows Server 8 as Cloud OS

First let’s start with Windows Server 8 as the base of Microsoft Cloud strategy. Microsofts focus in Windows Server 8 was to make it easy for all to build public and private cloud solutions. There are a lot of improvements to manageability, security, scalability, extensibility, predictability and reliability which will also improve the possibilities with Hyper-V. In technical terms Microsoft made a lot of improvements how you can manage a lot of servers and services, Storage, Networking and Powershell. Of course there is a lot more, but this are the parts I think are the most important. And here are some keywords to the improvements in Windows Server 8:

  • Storage improvements – SMB 2.2, SMB transparent Failover, Data deduplication, Storage Spaces, online filesystem repairs, 64TB NTFS volume etc.
  • NIC Teaming
  • Powershell v3 – You can now just do everything in Powershell and even more with 23000 PowerShell cmdlets.
  • Server Dashboard – The new Dashboard lets you manage all servers, or even better, all Services from one place.
  • Multi-tenant – everything seems to be made for that
  • Performance Counters

Windows Server 8 Hyper-V Manager

Hyper-V Host improvements

Hyper-V gets not only a lot of improvements to Virtual Machine, also the Hyper-V Hosts get some new limit improvements.

  • up to 160 logical CPUs
  • supports up to 2TB RAM
  • no more vCPU:pCPU ration limit

Hyper-V Virtual Machine improvements

Microsoft did a lot to extend the existing Virtual Machine hardware to support even high workload Virtual Machines. I will not write a lot about this because the facts here will tell more that a lot of words.

  • VHDX Format – supports up to 16TB Virtual Disks
  • 32 CPUs per VM
  • 512GB RAM per VM
  • Support for Fibre Channel Adapters
  • Supporting Virtual Active Directory Servers

Hyper-V Networking improvements

Hyper-V got a lot of improvements in terms of networking. Microsoft realized that networking features are really important if you start to create private and public cloud scenarios and now even create a mix of public and private cloud scenarios without creating a lot of work for the IT teams to reconfigure Virtual Machines.

  • QoS and flexible bandwidth allocation
  • Support for SR-IOV (Direct Access to the physical Network adapter)
  • Network Virtualization
  • PVLAN support
  • Dynamic Virtual Machine Queue (D-VMQ)
  • Receive Side Coalescing (RSC)
  • DHCP Guard
  • Extensible virtual switch
  • IPsec Task offload

Hyper-V Clustering improvements

Hyper-V gets also a lot of Cluster improvements. But you have to be aware that Clusters are for really high availability and this adds a lot of costs to projects and solutions. Microsoft is working on Cloud solutions which will give great availability to low cost. For example Hyper-V Replica or Live Migration to another host over the Ethernet without the need for a shared storage. But if you need real HA you will need the Failover Cluster.

  • supporting up to 4000 VMs per cluster
  • supporting up to 63 Cluster nodes
  • improved Cluster Manager Console
  • VM Monitoring – Application health detection inside the virtual machine
  • New Placement policies – Virtual Machine Priority and enhanced placement
  • Storage Live Migration
  • Hyper-V Replica supporting clustering
  • No need for Block Storage – you can use SMB Shares
  • Support for Storage Spaces
  • Automated Node Draining – like Maintenance mode in SCVMM
  • Cluster Aware Updating
  • Cluster Shared Volume Improvements – BitLocker support, a lot of performance improvements, Self-Healing
  • Live Migration Queing
  • Migrate multiple Virtual Machine at the same time

Windows Server 8 Hyper-V VM Move

Hyper-V Storage improvements

A I mentioned earlier Microsoft made a lot of improvements in terms of storage in Windows Server 8 and Hyper-V can take advantage of those which are quiet impressive. For example with the new features in SMB 2.2 you can now use SMB file shares to store your Virtual Machines.

  • VHDX
  • ODX
  • RDMA
  • SMB 2.2 – Transparent Failover
  • 4K native disk support
  • Data Deduplication
  • Virtual Fiber Channel
  • VM boot from SAN

Hyper-V Management Improvements

As everywhere in Windows Server 8 PowerShell is the key. And the new Server Manager Dashboard Microsoft enable to create Server Groups to manage multiple servers from a single console.

  • Powershell for Hyper-V
  • Powershell Workflows – Commands and Tasks across servers
  • Hyper-V Extensible Switch – lets vendors to create “plugins”. Could be very interesting for Cisco UCS installations.
  • Server Manager Dashboard – lets you manage multiple Hyper-V host from a single console.
  • SCVMM 2012 – not a part of Windows Server 8 but will add great management solutions

Windows Server 8 Hyper-V Powershell

Hyper-V HA and Data Protection

Now I think this is maybe the greatest new feature. You can now live migrate a Virtual Machine from one Hyper-V Host to another without Shared Storage or Cluster configuration. And with this option Microsoft also included a new feature called Hyper-V Replica which includes the option to replicate Virtual Machine to another host which can be hosted in the same network or even in the cloud.

  • Live Migration
  • Live Storage Migration
  • Live Migration to another Hosts (Not clustered) over the Ethernet
  • Hyper-V Replica – Replicated Virtual Machines to another Hyper-V host on-premise or public cloud
  • BitLocker support for CSV

This are not all of the new features Windows Server 8 Hyper-V has to offer but I tried to list the important ones. And if Microsoft sticks with their licensing model, it will be a really strong competitor to the VMWare vShpere 5.

 

Extending a Microsoft Hyper-V R2 Cluster Shared Volume

Hyper-V

This quick blog post shows you how you can simply extend a Hyper-V R2 or Windows Server 2008 R2 Cluster Shared Volume without any downtime. First you expand your LUN in your OEM SAN management software. This is mostly of the time nothing special. But after that you have to expand the Cluster Shared Volume.

  • In your OEM SAN Management Software expand the size of the LUN or disk
  • Open the Microsoft Failover Cluster Manager and check the CSV coordinator for the disk or LUN you have expanded. The CSV coordinator is the disk owner in the cluster
  • Login to the CSV coordinator machine
  • If you are using the GUI version you can use the Disk Management under Storage in the Server Manager. You can now rescan for disks and then expand the Disk or LUN.
  • If you are using Hyper-V or Windows Server Core you can use diskpart
  • First start the cmd and open diskpart
  • type rescan
  • now type list volume, to list all volumes
  • Use select volume IDNumber, the IDNumber is the number you could see with list volume in the previous step.
  • now you can type extend
  • with list volume you can see the results

In some environments sometimes if you need to expand a Cluster Shared volume it makes more sense to create a new one and move the Virtual Machines with Storage Migration but this cannot be done without downtime.

How Microsoft Hyper-V and the Cisco UCS changed our lives

Cisco UCS Hardware

At the end of last year we had our Cisco UCS ordered and in your datacenter. In January we started the testing and made the Clusters ready for the production environment. In February we started the migration of our existing environment, mostly P2V and also some V2V migrations.

Here some interessting facts about our Cisco UCS and Hyper-V project.

  • We use 12 Cisco UCS Blades this is like 10 HE of rackspace
  • We migrated 45 Windows Servers and 47 Unix Servers in just one week
  • We replace 2 racks of server with a half rack of two Cisco UCS Bladecenters
  • We think we can replace 2-3 racks more with our two Bladecenters.
  • At the end of this year we think we could replace 4-5 racks with 1/2 rack
  • We still have a lot of physical and virtual server which will be needed to be migrated to the Bladecenter.
  • We will get even more out of our Blade Servers by activting Hyper-V Dynamic Memory as a new feature of Hyper-V R2 ServicePack 1

This migration had a lot of positive influence on other things in the datacenter.

Datacenter Power

  • we need now 4% less energie overall
  • we need now 6% less cooling overall
  • we need less space (1 and 1/2 racks at the moment)
  • now our system administrator travel 50% less to the datacenter, because of hardware defects or other administrative tasks.
  • We can deploy new servers in minutes instead of hours

I think all of this numbers (except the time we need to deploy new servers )will increase after the next migrations.

Now I started to write a series of blog posts about installing Microsoft Hyper-V R2 on the Cisco UCS system:

Microsoft Hyper-V and the Cisco UCS Bladecenter are a powerful team. The UCS Virtual Hardware takes alot of complexety from the hypervisor in your case Hyper-V. You don’t need NIC teaming and stuff like that. Thats is making it very easy to deploy Hyper-V Clusters. And with the Microsoft System Center Virtual Machine Manager you can save a lot of time in managing your clusters, hosts, virtual machine and also in P2V and V2V migrations. Since Microsoft SCVMM supports Windows Powershell you can also do a lot of scripting automation. And with the release of the new Version of SCVMM (System Center Virtual Machine Manager 2012) this will even get better for deploying new virtual machines, services and even public and private clouds.

Hyper-V R2 SP1

We started with Microsoft Hyper-V R2 Servers before the release of Service Pack 1. We think we can even get a lot more out of your systems with the new Dynamic Memory feature for Hyper-V which comes in Service Pack 1.

At the end we think choosing the Cisco UCS, Microsoft Hyper-V and Microsoft System Center Virtual Machine Manager for our datacenter was the best choice we have made, in terms of costs and technology.

Windows Server 2008 R2 Hyper-V Licensing Overview

hyper-v

This is a little Overview how you can license Windows Server 2008 R2 in a Hyper-V Environment. One of the biggest advantages  of Hyper-V over VMware are the included Guest OS Licenses. For example if you buy a Windows Server 2008 R2 Datacenter license (of each CPU of your physical Server) you can deploy unlimited Windows Server 2008 R2 Datacenter Virtual Machines on this Host.

This Overview should help you understand how this works.

License License models Physical Virtual
Windows Server 2008 R2 Foundation Server License 1 0
Windows Server 2008 R2 Standard Server + CAL
Processor or SAL
1 1
Windows Server 2008 R2 Enterprise Server + CAL
Processor or SAL
1 4
Windows Server 2008 R2 Datacenter Processor + CAL 1 unlimited
Windows Server 2008 R2 for Itanium-Based Systems Processor + CAL 1 unlimited
Windows Web Server 2008 R2 Server License 1 0 (or 1)
Hyper-V Server 2008 R2 Free 1 0

 

If you need more infos you can find this here.

Powershell for System Center Virtual Machine Manager and Hyper-V

Microsoft System Center Virtual Machine Manager 2008 R2

This little HowTo shows you how can you get tasks on System Center Virtual Machine Manager done, by using Windows Powershell.

Load Powershell Snapin for Virtual Machine Manager:

Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager

Create Virtual Machine:

# Config
# ------------------------------------
# Job Config
$JobGroup = "0000001" # This is used to group command by a job
$SCMVVMServer = "SCVVMServer01" # Name of the SCVMM Server (could also be localhost)

# Network Config
$VirtualNetwork = "External" # Name of the Network you want the VM to connect
$VLanEnable = $true # eable VLANs
$VLANID = "1023" # VLAN ID

# VMM Config
$Domain = "Contoso"
$Owner = "Ownerusername" # Owner User
$Description = "This is a Server" # Choose a Description
$VMName = "server05" # Name of the VM
$VMHost = "hyperv02" # Name of the existing VM Host
$VMPath = "C:\ProgramData\Microsoft\Windows\Hyper-V"

# Virtual Machine Config
$VMOperatingSystem = "64-bit edition of Windows Server 2008 R2 Standard"
$CPU = "1.20 GHz Athlon MP" # CPU
$VMDiskSize = "40960" # Disk Size in MB
$CPUCount = "1"
$MemoryMB = "1024" # Memory Size in MB
$ExpectedCPUUtilization = "20"
$DiskIO = "0"
$CPUMax = "100"
$CPUReserve = "0"
$NetworkUtilization = "0"
$RelativeWeight = "100"
$HighlyAvailable = $false
$NumLock = $false
$BootOrder = "CD", "IdeHardDrive", "PxeBoot", "Floppy"
$LimitCPUFunctionality = $false
$LimitCPUForMigration = $false

# Setup Process
# ------------------------------------
Set-VirtualFloppyDrive -RunAsynchronously -VMMServer $SCVMMServer -NoMedia -JobGroup $JobGroup
Set-VirtualCOMPort -NoAttach -VMMServer $SCVMMServer -GuestPort 1 -JobGroup $JobGroup
Set-VirtualCOMPort -NoAttach -VMMServer $SCVMMServer -GuestPort 2 -JobGroup $JobGroup
New-VirtualNetworkAdapter -VMMServer $SCVMMServer -JobGroup $JobGroup -PhysicalAddressType Dynamic -VirtualNetwork $VirtualNetwork -VLanEnabled $VLanEnable -VLANID $VLANID -MACAddressesSpoofingEnabled $false
$CPUType = Get-CPUType -VMMServer $SCVMMServer | where {$_.Name -eq $CPU}
New-HardwareProfile -VMMServer $SCVMMServer -Owner ($Domain + "\" + $Owner) -CPUType $CPUType -Name ("Profile" + $JobGroup) -CPUCount $CPUCount -MemoryMB $MemoryMB -ExpectedCPUUtilization $ExpectedCPUUtilization -DiskIO $DiskIO -CPUMax $CPUMax -CPUReserve $CPUReserve -NetworkUtilization $NetworkUtilization -RelativeWeight $RelativeWeight -HighlyAvailable $HighlyAvailable -NumLock $XMLTask.Feature.NumLock -BootOrder $BootOrder -LimitCPUFunctionality $LimitCPUFunctionality -LimitCPUForMigration $LimitCPUForMigration -JobGroup $JobGroup
New-VirtualDiskDrive -VMMServer $SCVMMServer -IDE -Bus 0 -LUN 0 -JobGroup $JobGroup -Size $VMDiskSize -Dynamic -Filename ($VMName + "_disk_1")
$VMHost = Get-VMHost -VMMServer $SCVMMServer | where {$_.Name -eq $VMHost}
$HardwareProfile = Get-HardwareProfile -VMMServer $SCVMMServer | where {$_.Name -eq ("Profile" + $JobGroup)}
$OperatingSystem = Get-OperatingSystem -VMMServer $SCVMMServer | where {$_.Name -eq $VMOperatingSystem}

# Create VM
# ------------------------------------
New-VM -VMMServer $SCVMMServer -Name $VMName -Description $Description -Owner ($Domain + "\" + $Owner) -VMHost $VMHost -Path $VMPath -HardwareProfile $HardwareProfile -JobGroup $JobGroup -RunAsynchronously -OperatingSystem $OperatingSystem -RunAsSystem -StartAction NeverAutoTurnOnVM -StopAction SaveVM

Delete (Remove) Virtual Machine:

# Config
# ------------------------------------
$VMName = "server05" # Name of the VM

# Setup Process
# ------------------------------------
$SelectedVM = Get-VM -Name $VMName

# Remove/Delete VM
# ------------------------------------
Remove-VM -VM $SelectedVM

Suspend Virtual Machine:

# Config
# ------------------------------------
$VMName = "server05" # Name of the VM

# Setup Process
# ------------------------------------
$SelectedVM = Get-VM -Name $VMName

# Suspend VM
# ------------------------------------
Suspend-VM -VM $SelectedVM

Resume Virtual Machine:

# Config
# ------------------------------------
$VMName = "server05" # Name of the VM

# Setup Process
# ------------------------------------
$SelectedVM = Get-VM -Name $VMName

# Resume VM
# ------------------------------------
Resume-VM -VM $SelectedVM

Stop Virtual Machine / Turn off Virtual Machine:

# Config
# ------------------------------------
$VMName = "server05" # Name of the VM

# Setup Process
# ------------------------------------
$SelectedVM = Get-VM -Name $VMName

# Stop / Turn off VM
# ------------------------------------
Stop-VM -VM $SelectedVM

Start Virtual Machine:

# Config
# ------------------------------------
$VMName = "server05" # Name of the VM

# Setup Process
# ------------------------------------
$SelectedVM = Get-VM -Name $VMName

# Start VM
# ------------------------------------
Start-VM -VM $SelectedVM

This is a reference how you can do some thing with Powershell in the Virtual Machine Manager. You can do a lot more, like error handling, creating virtual machines from a xml config file etc…