Monthly Archives: November 2010

PXE Boot a Virtual Machine In Hyper-V 2008 R2

PXE boot is not available in Hyper-V 2008 R2 when using a Synthetic Network Adapter.  In order to PXE boot a virtual machine (VM), you need to turn off the VM and add a Legacy Network Adapter.  If the VM is an existing machine with a bootable hard disk, you’ll also need to change the boot order, so PXE Boot is above IDE Hard Drive.


Monitoring Dell PowerVault MD3000/MD3000i With System Center Operations Manager 2007 R2

Dell produces two management packs for System Center Operations Manager 2007 R2 (OpsMgr), the MD Storage Array Management Pack Suite for Dell PowerVault storage and the Dell Server Management Pack Suite for PowerEdge/PowerVault servers, Dell Remote Access Controllers and Chassis Management Controllers.  In this post I’ll walk through the setup of the MD Storage Array Management Pack (MD MP) in OpsMgr.

First, download the MD MP from .  Enter the Dell Service Tag of your array and navigate to the Systems Management section.  The MD MP is at version 4.0 at the time of writing.

Log onto the OpsMgr Management Server as an administrator and run the Dell MD Storage Array exe and unzip to the default location

Run DellDiscoveryUtility.exe from the C:\Dell_MDStorageArray_ABB folder, input the appropriate IP range, or IP of the MD3000/MD3000i array(s)

Continue through the wizard, save to the dell_MDStorageArray_ip.cfg file and click Discover

Next, import the storage management pack into OpsMgr.  You should now see additional Dell information in the OpsMgr console

For additional information see Dell_MDStorage_Management_Pack_Suite_v4.0_UserGuide.pdf, which is included as part of the MD MP download.

Where Did HyperTerminal Go?

If you’re using a version of Windows since Vista  need HyperTerminal you’ll find it’s no longer part of Windows.  If you only need remote shell access, you can use the Windows Remote Shell (WinRS).  If you need to troubleshoot modems go to Control Panel -> Hardware and Sound -> Phone and Modem Options.  However, if you need to connect to serial devices as you did with HyperTerminal you’ll need to download an alternative, my favourite is Putty

System Center Data Protection Manager 2010 Hotfix Rollup KB2250444

This hotfix rollup resolves the following issues:

  • You cannot protect the Microsoft Exchange Database Availability Group (DAG) on a secondary DPM 2010 server.
  • You are prompted to restart a client computer after you install an agent on the client.
  • DPM services crash, and you receive the error, “Unable to connect to the database because of a fatal database error.”
  • MSDPM crashes, and event ID 945 is logged in the event log.
  • When you change a Protection Group, add a very large database, change the disk allocation, and then commit the Protection Group, DPM 2010 does not honor the user intent, and instead, DPM 2010 sets the sizes of replica and shadow copy volumes to the default sizes.
  • The Management tab does not link to information about the latest Microsoft Knowledge Base article for DPM 2010.
  • You receive the message, “Computers not synchronized,” when you try to replicate DPM 2010 databases to a System Center Operations Manager.

Get it here

Reporting Virtual Machine Dynamic Disk Space Using PowerShell And System Center Virtual Machine Manager 2008 R2

Dynamically expanding disks enable you to thin provision virtual machines (VMs)  storage.  This means you can pack more VMs onto a given amount of disk, but you need to ensure that if you provision more storage than is physically available, you don’t run out of space on the host.  The PowerShell script below produces a csv file showing the space available for growth on each VM with a dynamically expanding disk.  You can use this script to see how much space could still be used by your VMs and therefore see if you’re likely to run out of space on the host.  It’ll also show you if a dynamic disk is about to reach it’s maximum size.

Load PowerShell from the icon in the SCVMM console

Next copy and paste the code below into the PowerShell console, replacing VMMHOST with the name of your SCVMM host and the path of the csv file as appropriate.

Get-VirtualHardDisk -VMMServer VMMHOST -All | Select-Object @{Label=”VM Host”;Expression={$_.VMHost}},@{Label=”Name”;Expression={$_.Name}},@{Label=”Space To Grow”;Expression={[Math]::Truncate(($_.MaximumSize-$_.Size) / 1GB)}},@{Label=”VHDType”;Expression={$_.VHDType}} | Where-Object {($_.VHDType -Match “DynamicallyExpanding” -And $_.Name -NotMatch “{“)} | Sort-Object “Space To Grow” -Descending |  Export-Csv C:\DiskInformation.csv

Opening the csv in Excel produces


The PowerShell script is a one liner and breaks down as follows:

Get-VirtualHardDisk -VMMServer VMMHOST -All | Gets the virtual disk for the VMMServer specified

Select-Object @{Label=”VM Host”;Expression={$_.VMHost}},@{Label=”Name”;Expression={$_.Name}},@{Label=”Space To Grow”;Expression={[Math]::Truncate(($_.MaximumSize-$_.Size) / 1GB)}},@{Label=”VHDType”;Expression={$_.VHDType}} | Selects the VM host name, disk name, calculates the maximum disk size – current disk size and converts to GB, VHD type

Where-Object {($_.VHDType -Match “DynamicallyExpanding” -And $_.Name -NotMatch “{“)} | Filters the results to only include dynamically expanding disks whose names don’t start {

Sort-Object “Space To Grow” -Descending | Sorts the output by space to grow, descending

Export-Csv C:\DiskInformation.csv Exports the results to a csv file


Resolving SharePoint Backup Hangs In System Center Data Protection Manager 2010

Consider the following scenario, we have a Microsoft Office SharePoint Server (MOSS) 2007 Web Front End (WFE) server called SPWFE01 and a SQL 2005 server called SQL01.  The MOSS databases are stored on SQL01, but SQL01 is a  shared SQL server, so also has other databases.  In System Center Data Protection Mangater 2010 (DPM) I create a protection group called SharePoint & SQL and from SPWFE01 select the SharePoint Farm, System State and a couple of folders from the C drive and from SQL01 I select all the databases, which enables the automatic protection of new databases on SQL01.  The synchronisation frequency is set to 15 minutes.

What I’ve found with this configuration is that the SharepointFarm\%SQLServer%\SharePoint_Config backup job can hang with a status of In progress.  When this job hangs all other backup jobs that are part of the protection group have a status of Pending.  The SharePoint_Config backup job continues to hang until you manually cancel the job.  Once you cancel the job, everything else that’s part of the protection group is backed-up.  You can then manually create a recovery point for SharepointFarm\%SQLServer%\SharePoint_Config and it runs successfully.  However, at the next automatic backup the job will hang and nothing will be backed up again.  Although this configuration is supported, the SPWFE01 and SQL01 jobs appear to be interfering with each other.

In order to resolve this issue, I split SPWFE01 and SQL01 into two separate protection groups.  I increased the synchronisation frequency to 30 minutes and offset the SPWFE01 jobs by 15 minutes, by right-clicking on the protection group and choosing Optimise performance.  This ensures the backups for SPWFE01 and SQL01 don’t overlap.  Since making that change the SPWFE01 jobs have never hung.  The downside to this configuration is that new databases on SQL01 aren’t automatically protected.



Adding Storage To A Failover Cluster For Use With Hyper-V And Cluster Shared Volumes

In this post I’ll walk you through the process of adding storage to a Windows Server 2008 R2 Failover Cluster for use with Hyper-V.   Cluster Shared Volumes (CSV) is only supported with Hyper-V and enables multiple cluster nodes to read and write to the same volume at the same time.  Hyper-V supports the Live Migration of virtual machines (VMs) using CSV.  The cluster used in this example is a five node cluster that’s already been fully configured and is running VMs.  I’m just adding additional storage, but if you were starting from scratch with a new Failover Cluster the process would be the same except you’d need to enable CSV, whereas in my configuration it’s already enabled.

Firstly configure the shared storage so it’s accessible by all cluster nodes.  In my example I’m using a Dell PowerVault MD3000i iSCSI array.  All the cluster nodes have been added to a host group, which has in turn been given access to the virtual disks I want to use in the cluster.  You can confirm that each cluster node has access to the storage by checking in Disk Management.  The disks will be listed as Offline on each cluster node.

On one cluster node, right-click on the section with the disk name and choose online

Next click in the same place and choose Initialize Disk.  I choose GPT as it supports disks larger than 2TB.

Open Failover Cluster Manager, right-click on Storage and Choose Add Disk.  Select the disks to be added and click OK

Check which cluster node owns the disk by clicking on Storage in the left menu

On the sever that’s the owner of the disk you want to add, open Disk Management and create a Simple Volume on each disk.  Do not assign a drive letter or path as it isn’t necessary, then format the partition as NTFS.

If you haven’t already enabled CSV, do so now by right-clicking on the cluster name in Failover Cluster Manager and clicking Enable Cluster Shared Volumes.

In Failover Cluster Manager, go to Cluster Shared Volumes, right-click and choose Add Storage

The storage is now available for VM placement.

Investigating A Blue Screen Of Death

During a period of network issues some of our Windows Server 2008 R2 machines rebooted.  Further investigation showed that the servers had experienced a Blue Screen Of Death (BSOD) and rebooted.  Most BSOD incidents are caused by faulty drivers.  It’s possible to look at the memory dump that’s created when the BSOD occurs and determine which driver caused the crash.  This is the method I use.

First download and install the Debugging Tools for Windows from  Download either the 32bit or 64bit version depending upon the bit type of the operating system that experienced the BSOD.  See here for more information:

Next create two folders in the root of c:\ called Symbols and Dump.

Copy the memory dump from the machine that crashed from c:\Windows to c:\Dump.  The dump file will probably be called MEMORY.DMP

Load WinDbg from the Debugging Tools for Windows folder in the Start Menu

Go to File -> Symbol File Path…  Paste SRV*C:\symbols* into the Symbol path box and click OK.

Go to File -> Open Crash Dump and select the MEMORY.DMP file in c:\Dump and click OK.  In a few seconds text will start to appear in the debug box.

When the text has finished loading click the !analyze -v link below the Bugcheck Analysis box as below

Once the process has finished you’ll see text similar to below.  IMAGE_NAME is the driver that caused the BSOD.  In my case it’s basp.sys, which is a Broadcom driver.  Google the IMAGE_NAME value to find out the driver name, then search for an updated version.