SCVMM 2008 beta (Update for Hyper-V RC1)

23 June, 2008

If you go to https://connect.microsoft.com the update that allows SCVMM to work with Hyper-V RC1 is now available

Update for SCVMM 2008 Beta - (You can access this from the downloads page).

Install this update to enable Virtual Machine Manager 2008 Beta (VMM) to function with Release Candidate 1 (RC1) to the Hyper-V role. After you install this update, you may have to restart your computer. Once you have installed this update, it cannot be removed.

Before You Install the Update

The VMM server and all of the hosts in your environment must be running Hyper-V RC1. After you install the update, you will not be able to add hosts running Hyper-V RC0 to your VMM environment. For information about the Hyper-V RC1 download, see Update for Windows Server 2008 x64 Edition (KB950049).


Exporting and Importing virtual machines

23 June, 2008

Exporting virtual machine

Unlike VS 2005, when you want to move a virtual machine from one host to another, you cannot simply copy the configuration file (.VMC) and the VHD file and “make it “appear on the destination host with Hyper-V. To perform the same operation, you need to export the VM from the source host system, copy all the export files to the destination host and then import it into Hyper-V.

When exporting a VM, you can either export only configuration files (that contains all settings for this VM) or include all save state files (.vsv files), snapshot files (.AVHD files) and VM binary (.VHD file).

After you specify a root folder to store export files, the export operation will create a folder structure for you under the root folder as follow: ( assuming that the root folder is called C:\Export)

C:\Export

|———- <VM_Name>

| —————-  Virtual Machines

| —————- Virtual Hard Disks

The Virtual Machines sub-folder contains an export file (.EXP) that Hyper-V creates for export and eventually VSV files and AVHD files if you specify the option to export save state files for export. The EXP file will be read by the import operation to re-create settings for virtual machine at destination.

The Virtual Hard Disks sub-folder is the location where VHD file will reside.

To script the export operation with Hyper-V WMI, you simply call the method of the Msvm_VirtualSystemManagementService Class and specify a reference to the VM to be exported, a flag that indicates whether you want to export system state files or not and an export folder. The call returns either 0 or 4096. All other values indicate an error in the parameters passed to the call.
If it returns 0, it means that the method is executed synchronously, If it returns 4096, the method is executed asynchronously and the Job output parameter can be used to track progress of the operation.

Here is an example:

## Get reference to a VM to be exported
PS C:\> $Core = get-wmiobject -namespace root\virtualization -class Msvm_ComputerSystem -filter ” ElementName = ‘IIS-CORE’ “

## Connect to the Virtual machine Management Service
PS C:\> $VM_Service = get-wmiobject –namespace root\virtualization –class Msvm_VirtualSystemManagementService

## call the Export method
PS C:\> $status = $VM_Service.ExportVirtualSystem($Core.__PATH, $True, “C:\Export”)
PS C:\> If ($Status.ReturnValue -eq 0) { write-host “Operation Sucessful”; exit}
PS C:\> if ( $status.ReturnValue -eq 4096) { $JobStatus = $Status.Job.JobState; while ($JobStatus -ne 0) { sleep(1) } }

Importing virtual machines

The next step is to copy the folder structure under C:\Export to the destination host. It is not recommended to import a VM directly from the export folder and the import operation does not support network drive or network share folder so you can’t simply point the import operation to a network share like \\Server\C$\Export.

Here is an example of scripting the import operation:

## Connect to the Virtual machine Management Service
PS C:\> $VM_Service = get-wmiobject –namespace root\virtualization –class Msvm_VirtualSystemManagementService

## call the Import method
PS C:\> $FlagGenerateNewID = $True # To ensure that the new imported VM will always get a new ID (GUID)
PS C:\> $status = $VM_Service.ImportVirtualSystem(“C:\VMs\IIS-CORE”, $FlagGenerateNewID)
PS C:\> If ($Status.ReturnValue -eq 0) { write-host “Operation Sucessful”; exit}
PS C:\> if ( $status.ReturnValue -eq 4096) { $JobStatus = $Status.Job.JobState; while ($JobStatus -ne 0) { sleep(1) } }

Bulk Export and Import

If you have a set of virtual machines to be exported from one machine and then to be imported on a different host, you can automate the operation as follow:

On the Source Server

$VM_Service = get-wmiobject -computer $SourceServer –namespace root\virtualization –class Msvm_VirtualSystemManagementService

$ListofVMs = get-wmiobject -computer $SourceServer -namespace root\virtualization -class Msvm_ComputerSystem -filter ” ElementName <>Name”

foreach ($VM in $ListofVMs)
{

$status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, “C:\Export”)
If ($Status.ReturnValue -eq 0) { write-host “Operation Sucessful”; exit}
if ( $status.ReturnValue -eq 4096) { $JobStatus = $Status.Job.JobState; while ($JobStatus -ne 0) { sleep(1) } }

}

robocopy /z /s C:\Export \\$DestServer\C$\VMs

On the Destination Server

$VM_Service = get-wmiobject -computer $DestServer –namespace root\virtualization –class Msvm_VirtualSystemManagementService

$ListOfFolders =  dir “C:\VMs” | where { $_.PSIsContainer} | select FullName
foreach ($f in $ListOfFolders)
{
$Folder = $f.FullName
$Status  = $VM_Service.ImportVirtualSystem($Folder,$True)
If ($Status.ReturnValue -eq 0) { write-host “Operation Sucessful”; exit}
if ( $status.ReturnValue -eq 4096) { $JobStatus = $Status.Job.JobState; while ($JobStatus -ne 0) { sleep(1) } }

}


Hyper-V WMI – Configuring Automatic Startup/Shutdown/Recovery Action’s For Virtual Machines

23 June, 2008

Hyper-V virtual machines have configuration options that control what happens when the parent/host server shuts down, start’s up, or if a virtual machine’s worker process terminates unexpectedly.  The first two conditions (parent/host shutdown, startup) are pretty self explanatory but what would cause a worker process to terminate?  There are a couple reasons, one would be if someone terminates the process, another would be if the process detects an security attack coming from the virtual machine, others reasons could be if there was bad hardware or a programming error (i.e bug) in either Hyper-V or another component in the system…

The default Automatic Startup Action is to start the virtual machine if it was running when the server was shutdown.  Another option is to always startup the virtual machine irrespective of the state of the virtual machine when the server was shutdown. The last option is none – this translates to leave the virtual machine off or saved when the server starts up.

The default Automatic Shutdown Action is to save any running virtual machines.  There are two other options, first is to turn off any running virtual machines and second is to shutdown any running virtual machines using the shutdown integration component.  The shutdown is forced – so any open/running programs will be terminated.  If the shutdown request fails the vm will be turned off – this can happen for many reasons primarily because the IC’s aren’t installed or if the guest is in safe mode/booting up.

The default Automatic Recovery Action is to restart the virtual machine, the other options are to revert to the last snapshot if one exists or none – which again equates to leaving the virtual machine off.

There is one additional option that I wanted to discuss briefly is Automatic Startup Action Delay, this is the amount of time to wait after the server reboot before taking the automatic startup action.  The default is zero – meaning take the action immediately.  This option could be very helpful for some servers – if you have lower and higher priority virtual machines you might want to delay the startup of your low priority virtual machines.

So here’s some code:

$VirtualSystemManagemntService = get-wmiobject -class “Msvm_VirtualSystemManagementService” -namespace “root\virtualization”

foreach ($Vm in Get-WmiObject -Namespace root\virtualization -Query “Select * from Msvm_ComputerSystem Where Description=’Microsoft Virtual Machine’”)
{
$SettingData = Get-WmiObject -Namespace root\virtualization -Query “Associators of {$Vm} Where ResultClass=Msvm_VirtualSystemGlobalSettingData AssocClass=Msvm_ElementSettingData”
$SettingData.AutomaticStartupAction = 0 #None=0, Restart if Previously Running=1, Always Startup=2
$SettingData.AutomaticShutdownAction = 0 #Turn Off=0, Save State=1, ShutDown=2
$SettingData.AutomaticRecoveryAction = 0 #None=0, Restart=1, Revert to Snapshot=2
$SettingData.AutomaticStartupActionDelay = [System.Management.ManagementDateTimeconverter]::ToDmtfTimeInterval((New-TimeSpan -Minutes 10))

$VirtualSystemManagemntService.ModifyVirtualSystem($Vm, $SettingData.PSBase.GetText(1))


Customization fails after VC 2.5 Upgrade

23 June, 2008

A few people have notice that since upgrading to Virtualcenter 2.5 deploying a Windows 2003 VM from template no longer gives them the ability to customize.  The option is disabled.

The fix for this is simple.  You need to grab the new deployment tools from Microsoft’s site here also referred to as the sysprep files. You will be downloading WindowsServer2003-KB892778-SP1-DeployTools-x86-ENU.cab

This file needs to be extracted on the Virtualcenter server and placed in the following folder-

All Users\Application Data\Vmware\VirtualCenter\sysprep\svr2003

Once these files exist in the correct folder, you will be able to deploy your W2K3 template.

For more details read the Virtual Center 2 Template Usages and Best Practices http://www.vmware.com/pdf/vc_2_templates_usage_best_practices_wp.pdf

Bron: www.vmwarewolf.com