Microsoft Virtualization: part 6 (management)

Today’s release of System Center Virtual Machine Manager 2008 is a perfect opportunity to continue my series of blog posts on Microsoft Virtualization technologies by highlighting the management components.

Microsoft view of virtualisation

System Center is at the heart of the Microsoft Virtualization portfolio and this is where Microsoft’s strength lies as management is absolutely critical to successful implementation of virtualisation technologies. Arguably, no other virtualisation vendor has such a complete management portfolio for all the different forms of virtualisation (although competitors may have additional products in certain niche areas) – and no-one else that I’m aware of is able to manage physical and virtual systems in the same tools and in the same view:

  • First up, is System Center Configuration Manager (SCCM) 2007, providing patch management and deployment; operating system and application configuration management; and software upgrades.
  • System Center Virtual Machine Manager (SCVMM) provides virtual machine management and server consolidation and resource utilisation optimisation, as well as providing the ability for physical to virtual (P2V) and limited virtual to virtual (V2V) conversion (predictably, from VMware to Microsoft, but not back again).
  • System Center Operations Manager (SCOM) 2007 (due for a second release in the first quarter of 2009) provides the end-to-end service management; server and application health monitoring and management (regardless of whether the server is physical or virtual); and performance monitoring and analysis.
  • System Center Data Protection Manager (SCDPM) completes the picture, providing live host virtual machine backup with in-guest consistency and rapid recovery (basically, quiescing VMs, before taking a snapshot and restarting the VM whilst backup continues – in a similar manner to VMware Consolidated Backup but also with the ability to act as a traditional backup solution).

But hang on – isn’t that four products to license? Yes, but there are ways to do this in a very cost-effective manner – albeit requiring some knowledge of Microsoft’s licensing policies which can be very confusing at times, so I’ll have a go at explaining things…

From the client management license perspective, SCCM is part of the core CAL suite that is available to volume license customers (i.e. most enterprises who are looking at Microsoft Virtualization). In addition, the Enterprise CAL suite includes SCOM (and many other products).

Looking at server management and quoting a post I wrote a few months ago licensing System Center products:

The most cost-effective way to license multiple System Center products is generally through the purchase of a System Center server management suite licence:

Unlike SCVMM 2007 (which was only available as part of the SMSE), SCVMM 2008 is available as a standalone product but it should be noted that, based on Microsoft’s example pricing, SCVMM 2008 (at $1304) is only marginally less expensive than the cost of the SMSE (at $1497) – both quoted prices include two years of software assurance and, for reference, the lowest price for VMware Virtual Center Management Server (VCMS) on the VMware website this morning is $6044. Whilst it should be noted that the VCMS price is not a direct comparison as it includes 1 year of Gold 12×5 support, it is considerably more expensive and has lower functionality.

It should be noted that the SMSE is virtualisation-technology-agnostic and grants unlimited virtualisation rights. By assigning an SMSE to the physical server, it can be:

  • Patched/updated (SCCM).
  • Monitored (SCOM).
  • Backed Up (SCDPM).
  • VMM host (SCVMM).
  • VMM server (SCVMM).

One of the advantages of using SCVMM and SCOM together is the performance and resource optimisation (PRO) functionality. Stefan Stranger has a good example of PRO in a blog post from earlier this year – basically SCVMM uses the management pack framework in SCOM to detect issues with the underlying infrastructure and suggest appropriate actions for an administrator to take – for example moving a virtual machine workload to another physical host, as demonstrated by Dell integrating SCVMM with their hardware management tools at the Microsoft Management Summit earlier this year).

I’ll end this post with a table which shows the relative feature sets of VMware Virtual Infrastructure Enterprise and the Windows Server 2008 Hyper-V/Server Management Suite Enterprise combination:

VMware Virtual Infrastructure Enterprise Microsoft Windows Server 2008/Server Management Suite Enterprise
Bare-metal Hypervisor ESX/ESXi Hyper-V
Centralised VM management Virtual Center SCVMM
Manage ESX/ESXi and Hyper-V SCVMM
VM Backup VCB SCDPM
High Availability/Failover Virtual Center Windows Server Clustering
VM Migration VMotion Quick Migration
Offline VM Patching Update Manager VMM (with Offline Virtual Machine Servicing Tool)
Guest Operating System patching/configuration management SCCM
End-to-end operating system monitoring SCOM
Intelligent placement DRS SCVMM
Integrated physical and virtual management SMSE

This table is based on one from Microsoft and, in fairness, there are a few features that VMware would cite that Microsoft doesn’t yet have (memory management and live migration are the usual ones). It’s true to say that VMware is also making acquisitions and developing products for additional virtualisation scenarios (and has a new version of Virtual Infrastructure on the way – VI4) but the features and functionality in this table are the ones that the majority of organisations will look for today. VMware has some great products (read my post from the recent VMware Virtualization Forum) – but if I was an IT Manager looking to virtualise my infrastructure, then I’d be thinking hard about whether I really should be spending all that money on the VMware solution, when I could use the same hardware with less expensive software from Microsoft – and manage my virtual estate using the same tools (and processes) that I use for the physical infrastructure (reducing the overall management cost). VMware may have maturity on their side but, when push comes to shove, the total cost of ownership is going to be a major consideration in any technology selection.

Microsoft releases System Center Virtual Machine Manager 2008

System Center Virtual Machine ManagerAround about now, Microsoft is due to announce that they have released System Center Virtual Machine Manager (SCVMM) 2008 to manufacturing. For those watching Microsoft’s virtualisation strategy unfold, this is an extremely important release – many of the critics of Hyper-V have been concerned about the management tools but SCVMM integrates with other System Center tools to provide a fully-featured management solution for both Hyper-V and VMware ESX – so organisations can manage their physical and virtual workloads as one, whether they are running a Microsoft or a VMware virtualisation platform.

I’ll write separately about the various System Center management products and how they complete the Microsoft Virtualization story but this post looks at some of the features in SCVMM 2008.

Originally released in 2007, SCVMM is a recent addition to the System Center family of management products and provides centralised management for virtual machines whilst integrating fully with other System Center products to allow administrators to use the same interface and common foundation that they use for managing a physical infrastructure in the virtual world.

Built on Windows PowerShell, making the product fully scriptable, SCVMM uses the concept of jobs which are executed against virtual machine hosts and guests for centralised management.

With the 2008 product release, Microsoft has added cross-platform management functionality(Hyper-V, Virtual Server and VMware ESX – note that the VMware management does require Virtual Center in order to provide the necessary APIs and does not include non-task-oriented functions, such as cluster creation), integration with Windows Server 2008 failover clusters (including intelligent placement), delegated administration and performance and resource optimisation (PRO) to provide guidance for administrators for automatic or manual actions when alerts are raised, integrating with the management frameworks provided by leading server hardware providers.

Microsoft’s algorithm for intelligent placement of virtual machine workloads uses the CPU, memory, network and disk requirements for virtual machines to project the required resources and then balance this with the defined resource thresholds for each host, before providing a rating for each host, according to its suitability for servicing a given virtual machine workload. It also takes into account the prospect of cluster node failure, whereas competitive solutions will allow resource overcommitment to artificially increase the consolidation ratio (but may be creating a problem if a node does fail). Through integration with SCOM, SCVMM can be used to discover potential virtualisation candidates and the product also includes the ability to perform physical to virtual (P2V) and unidirectional virtual to virtual (V2V) conversions.

Delegated administration should be a key consideration for infrastructure deployments and SCVMM enables this with a role-based model, including self-service. Templates may be used for rapid provisioning of new virtual machines and the web portal provides a quota system for users to create and destroy VMs, based on administrator-defined rules.

As for how to buy SCVMM – it will be available from November 2008 as a standalone product, or as part of the Server Management Suite Enterprise (SMSE) which allows organisations to use several System Center products to build a complete management solution for the entire infrastructure, both physical and virtual.

Management is clearly a strong element of Microsoft’s virtualisation story and SCVMM addresses many of the issues that the basic tools provided with Hyper-V cannot. With the added advantage of the “Windows that you know” – i.e. familiarity for administrators – and, according to Microsoft, a greatly reduced total cost of ownership, SCVMM not just a perfect companion to Hyper-V but it also provides management tools for legacy virtual infrastructure and finally brings enterprise virtualisation features within the reach of most organisations.

A quick look at Windows PowerShell 2

Richard Siddaway‘s recent TechNet presentation (around the datacentre in 80 scripts) was a first opportunity for me to have a look at what’s coming in the next version of Windows PowerShell.

I’ve written previously about PowerShell (as an introduction to the concept and from an IT administrator standpoint) but, just to summarise, in a logical diagram of the Windows Server System, PowerShell would sit between Windows Server and the rest of the Windows Server System as the integration and automation engine (and PowerShell support is part of Microsoft’s common engineering criteria for 2009 – it’s already widely used by Exchange Server, SQL Server and by recent System Center products – and there is growing third party support too).

Whilst PowerShell is really an automation engine, it’s commonly expressed as a command shell and scripting language which underlies the graphical user interface. PowerShell is based on the Microsoft.NET Framework but does not require a knowledge of .NET programming. As for whether it will eventually replace cmd.exe as the CLI in Windows – maybe one day but not for a while yet (maybe not at all – Unix has several shells to chose from for administration).

Key PowerShell features include:

  • cmdlets – small piece of functionality which perform a single function (and use a verb-noun naming structure).
  • Providers -functaionality to open a data store as if it were a file system (e.g. certificate store, registry, etc.).
  • Extensiblity – there are around 130 cmdlets in the PowerShell base and functionality can be added as required (Exchange, SQL, etc.) in the same way that Microsoft Management Consoles are built up from various snap-ins. A Windows Installer file registers a DLL and PowerShell accesses it as a snap-in (using the add-pssnapin command in the profile) and from that point on the additional functionality is available in PowerShell.
  • Pipeline – the pipeline is used to pass .NET objects between cmdlets (non-programmers – think of objects as “blobs of stuff” with methods and properties to do things with them!)

Windows PowerShell was originally released in November 2006 and was finally included within Windows Server 2008 this year (it wasn’t ready in time for Vista). At the time of writing, PowerShell 2.0 is still a community technical preview (there have been two releases – CTP and CTP2) so there may be changes before release, but some of the improvements we can expect to see (and this list is not exhaustive), based on CTP2, are:

  • Remoting. New remoting capabilities require PowerShell to be installed on both the client and the server and use Windows Remote Management (WinRM), which is based on WS-Management (check that winrm is running with get-service winrm). At present, remoting requires administrator rights for both configuration and use.
  • Jobs. PowerShell jobs run asynchronously and can be started using the psjob cmdlets (get-command *.psjob to list available cmdlets), some cmdlets support the -asjob parameter (get-help * -parameter asjob) where that option is provided.
  • Runspaces. Jobs can also be used with PowerShell’s remoting capabilities in RunSpaces, which create a persistent connection between the local and remote machines in order to speed up the response. Remote commands are invoked using invoke-command. For example, to create a runspace and execute a script as a job, I might use the following code:
    $r = new-runspace -computername mycomputer
    invoke-command -runspace $r -scriptblock {remotescript} -asjob

    after which I could use get-psjob and other cmdlets to manipulate the job (e.g. check on progress, receive data, etc.).
  • Script cmdlets. Cmdlets can now be written in PowerShell, rather than being compiled from a .NET language.
  • Transactions. In the same manner as SQL Server, Exchange Server and Active Directory apply a database transaction-logging mechanism, PowerShell now has the potential for transaction-based processing (i.e. carry out an action, if it completes then OK, if not then roll back). This functionality is implemented at the provider level so is not universally available (at the time of writing, only the registry supports this).
  • Graphical PowerShell. A new tool, with script editor, interactive prompt and results pane.
  • WMI. Improved support for Windows management instrumentation (WMI) through type accelerators ([WMI], [WMIClass] and [WMISearcher]), the ability to pass credentials with get-wmiobject and new wmi-focused cmdlets (invoke-wmimethod, set-wmiinstance, remove-wmiobject). In a simple example to launch a process using WMI I might use the following code:
    $c = [WMIClass]”Win32_Process”
    $c.create(“win32program.exe”)
    and to clear up afterwards I might use:
    get-wmiobject -class win32_process -Filter "Name='win32program.exe'" | remove-wmiobject

It should be stressed that PowerShell 2.0 is still under development (it’s a community technology preview – not even a beta) and that things may change. It may also break things – there are also some naming clashes (e.g. with the PowerShell Community Extensions), new keywords (e.g. data) and it’s more complicated than the original version. Even so, PowerShell 1.0 already has tremendous potential and I’d be using it more often if I was doing more administration work. As more products use PowerShell for automation then knowing how to use it will become an ever-more important skill for Windows administrators – version 2 is definitely worth a look and if you want to know more about PowerShell then I recommend checking out the PowerShell UK user group and the PowerShell team blog.