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…

SCVMM 2008 R2 adding VLANs

Microsoft System Center Virtual Machine Manager 2008 R2

In Microsoft System Center Virtual Machine Manager 2008, SCVMM added the VLAN automatically to the VM Hosts VLAN Trunk , if you added the VLAN to a Virtual Machine.

Hyper-V SCVMM Virtual Machine PropertiesIn Microsoft System Center Virtual Machine Manager 2008 R2 (SCVMM 2008 R2), this does not happen automatically. After or before you added the VLAN to the Virtual Machine you have to add the specific VLAN to the Host network adapter.

In the properties of the Virtual Machine Host under networking you have to edit the VLN Trunk.

Hyper-V SCVMM VLAN Trunk propertiesNow you can add VLAN IDs to the VLAN Trunk:

Hyper-V SCVMM VLAN Trunk

Tuning a Windows 7 VM

I run several Windows Virtual Machines (VMs) on my Mac with VMware Fusion. Even VMware Fusion has a great performance for Virtual Machines I am really happy about every performance increase I can get. I made a list with some tuning tips.

  • First use Windows Classic Theme
  • Deactivate System Protection (You also win some Diskspace)
  • Under System Properties –> Advanced –> Performance –> Choose Adjust for best Performance
  • Deactivate Autostart objects with MSCONFIG

There are a lot of more tips out there but I thinks these are pretty important.