VMware Virtual Machine software

Product Name: VMware Workstation, VMware Server, VMware ESX Server
Publisher: VMware
Categories: Virtual Machine Software
Release: TKU 2008-Aug-1
Change History: VMware VMware Workstation, VMware Server, VMware ESX Server - Change History
Reports & Attributes: VMware VMware Workstation, VMware Server, VMware ESX Server - Reports & Attributes
Patch Updates: VMware VMware Workstation, VMware Server, VMware ESX Server - Patch Updates
Product Lifecycle: VMware VMware Workstation, VMware Server, VMware ESX Server - Product Lifecycle
Deployment Data: VMware VMware Workstation, VMware Server, VMware ESX Server - Deployment Data

Product Description

VMware software provides a completely virtualized set of hardware to the guest operating system, it virtualizes the hardware for video adapter, network adapter, and hard disk adapters, the host provides pass-through drivers for guest USB, serial, and parallel devices.

Thus VMware virtual machines are highly portable between computers, because every host looks nearly identical to the guest - in practice, a virtual machine guest can pause operation, be moved or copied to another physical computer, and there resume execution exactly where it left off.

Alternately, for enterprise servers, a feature called VMotion allows the migration of operational guest virtual machines between similar but separate hardware hosts sharing the same SAN.

However, unlike an emulator VMware software does not emulate an instruction set for different hardware than is physically present. Problems occur when the virtual machine guest is moved between hardware hosts using different instruction sets (such as found between Intel and AMD CPUs), or between hardware hosts with a differing number of CPUs.

The VMware Tools package adds drivers and utilities to improve performance for different guest operating systems:


  • enhanced graphics
  • mouse tracking between host and guest
  • shared folders
  • clock synchronisation
  • plug-and-play devices

VMware Workstation Description

VMware Workstation is a virtual machine software suite for x86 and x86-64 computers from VMware which allows users to set up multiple x86 and x86-64 virtual computers and to use one or more of these virtual machines simultaneously with the host operating system.

Each virtual machine instance can execute its own guest operating system, such as Windows, Linux, BSD variants, or others.

In simple terms, VMware Workstation allows one physical machine to run multiple operating systems simultaneously.


VMware Server Description

VMware Server (formerly GSX Server) is an entry-level server virtualization software suite from VMware. Server version 1.0 was released on 12 July 2006.

Server, a continuation of the retired GSX Server product line, can create, edit, and play virtual machines.

It uses a client-server model, allowing remote access to virtual machines, at the cost of some graphical performance (and 3D support), in addition to the ability to run virtual machines created by other VMware products, it can also run virtual machines created by Microsoft Virtual PC.

Server is freely available in the hope that users will eventually upgrade to VMware ESX Server.

VMware ESX Server Description

VMware ESX Server is an enterprise-level virtualization product offered by VMware, it is a component of VMware’s larger offering, Virtual Infrastructure, which adds management and reliability services to the core server product.

The basic server requires some form of persistent storage - typically an array of hard disk drives - for storing the virtualization kernel and support files.

A variant of this design, called ESX Server 3i, does away with the first requirement by moving the server kernel into a dedicated hardware device, both variants support the services offered by Virtual Infrastructure.

Note: VMware ESX Server is identified by Foundation, but due to the integrated nature and use of a microkernel to provide functionality, it is not identified by this pattern but by the Discovery scripts.


Known Versions

  • 1.*
  • 2.*
  • 3.*
  • 4.*
  • 5.*

  • 6.0
  • 6.0.1
  • 6.0.2

Software Pattern Summary





Product Component

OS Type
Versioning
Pattern Depth
VMware Virtual Machine
Unix and Windows
Package
Instance Based or footprint (data dependent)

Platforms Supported by Software Pattern

VMware Workstation, Server and Player are only available for Windows and Linux, as such both Operating Systems are supported by this pattern.


Identification

Software Instance Triggers

The identification for all of the VMware Virtual Machines is triggered using the same process.






DDD Node
Attribute
Condition
Argument
DiscoveredProcess
cmd

matches
regex"(?i)\bvmware-vmx(\.exe)?"

Note: The pattern does not create Software Instances for unique instances of the VMware software but instead identifies unique virtual machines running on each host.


Simple Identification Mappings

The following processes are identified through the use of Simple Identifiers and are modeled within a full Software Instance for VMware Virtual Machine using the primary and associate relationships (See Application Model Produced by Software Pattern for more details about the modeling of this product).










































Name
Command
Arguments
VMware License Server regex’(?i)\bVMWARELM\.exe$’
N/A

VMware virtual network bridge regex’\bvmnet-bridge$’
VMware virtual DHCP daemon regex’\bvmnet-dhcpd$’
regex’(?i)\bvmnetdhcp\.exe$’
VMware network address translation daemon regex’\bvmnet-natd$’
regex’(?i)\bvmnat\.exe$’
VMware NMB daemon regex’\bvmnet-nmbd$’
VMware virtual network interface regex’\bvmnet-netifup$’
VMware virtual machine regex’\bvmware-vmx$’
regex’(?i)\bvmware-vmx\.exe$’
regex’\bvmkload_app$’ regex ‘^.*vmware-vmx\b’

VMware Auth Service regex’(?i)vmware-authd\.exe$’
N/A
VMware Console regex’(?i)vmware\.exe$’
VMware virtual device handler regex’\bvmware$’, regex ‘^\^+\]’

VMware Mouse Keyboard Screen exporter regex’\bvmware-mks$’
regex’(?i)\bvmware-remotemks\.exe$’
VMware Player regex’(?i)vmplayer\.exe$’
VMware Registration Service regex’\bvmware-serverd$’
regex’(?i)\bvmserverdwin32\.exe$’
VMware Service regex’(?i)vmwareservice\.exe$’
VMware Tools regex’(?i)vmwaretray\.exe$’

Versioning

Version information for the Virtual machines is currently collected using package querying only.


Package Versioning

Package versioning is used identify what the version of the virtual machine is; as only one VMware based Virtualization product can be installed on a single host there is little risk of an incorrect version number being assigned.

Package Regexes:


  • ^VMware-esx-vmx$
  • ^VMware-server$
  • ^VMware-gsx$
  • ^VMware Server
  • ^VMware Workstation


ESX Server Patches

Upon retrieving Version information, and only when dealing with an ESX Server, the appropriate pattern tries to extract Patch Information. In order to do so, it engages in a multi-step process.

The pattern executes an Active Command which will output a list of all the patches installed in the ESX Server.

Active Command executed to retrieve Patch List: /usr/sbin/esxupdate query

In the case that the Active Command failed, the pattern tries to execute it again through the sudo mode. Subsequently, the pattern iterates through each line that was generated by the Active Command. It matches each line against a Regular Expression, and, when it finds a match, retrieves a Patch Name.

Regular Expression employed to retrieve Patch Name: (?i)^\s*(esx-\d+)\s*

After retrieving the Patch Name, the pattern executes a new command in order to retrieve additional information on the Patch.

Active Command executed to retrieve Additional Patch Information: /usr/sbin/esxupdate -l info Patch Name

The output of that command is parsed through two different Regular Expressions, in order to retrieve Patch Release and Patch Summary.

Regular Expression employed to retrieve Patch Release: Release Date\s*:\s*(.*)\r

Regular Expressions employed to retrieve Patch Summary: Summary\s*:\s*(.*)\r

Patch Name, Patch Release and Patch Summary are stored in three separate lists, which are later converted into strings and added as Additional Attributes to the SI. See the relevant page for details on how to report on these Attributes.


Application Model Produced by Software Pattern

Product Architecture

When a VMware system is running you will find processes grouped into two sets of functionality, one set of user interaction processes and another set of virtualization processes.

The user interaction processes provide an interface for the user to interact/manage the Virtual Machines that are being run on the host, basically they allow the user some way of setting up, starting or stopping the Virtual Machines.

The virtualization processes are used to run/control the Virtual Machine itself, as such you will have one of these processes for each virtual machine that is currently running on the host.


Software Pattern Model

The model created for this Software by the Pattern is to model the virtual machine that is running on the host, so in essence you have a a Virtual Machine with a specific identifier created and linked to the host machine.

Using this method we are able to model and link all the virtual machine instances running on a specific host to that host.

The trigger for this pattern is the VMware process that encapsulates the virtualized hardware and as such can be considered the “Virtual Machine”.

The common process for all VMware Virtual Machines running on classic VMware Servers is the vmware-vmx process, this is common to all their products on all platforms.


ESX Server

In the case of an ESX Server, the patterns take a different modeling approach. The ESX Server Daemon pattern identifies an instance of ESX Server running on a host, and creates an SI for it. Subsequently the pattern tries to relate the SI to the Managing VMware VirtualCenter Server (see Section Managing VMware VirtualCenter Server for further details).

At the same time, the pattern responsible for identifying the Virtual Machines creates an SI for every Virtual Machine that it finds on the host. The pattern has the capability to recognize whether it is identifying Virtual Machines on an ESX Server, and if that is the case, it proceeds to relate the VMs to the ESX Server Daemon SI via a Dependency Link.


Managing VMware VirtualCenter Server

The pattern performs a search on the ESX Server host for an SI of VMware VirtualCenter Agent. When it finds one, it retrieves its SI attribute which points to the Managing VMware VirtualCenter Server.

Subsequently the pattern performs another search for all the SIs which have a VMware VirtualCenter Server type and traverses to the Endpoint of each SI to obtain their IP Address. If that IP Address matches that of the Managing VMware VirtualCenter Server, the pattern relates the two SIs as Client and Server.


SI Depth

The pattern creates a deep Software Instance for each Virtual Machine it identifies and models.

The unique information that is used to create the key for the software instance is the uuid of the virtual machine. The uuid is a unique identifier for the Virtual Machine on the host in question. This value is combined with the hosts key to create a globally unique identifier within the deployment identifier.


Active Identification

To create the unique instance the pattern performs the following steps: it checks the process’ arguments to see if it contains a valid path to a .vmx configuration file, to check the path the pattern parses it against one of the following regular expressions:





Unix Regex:
(?:-C)? (.*?\.vmx)
Windows Regex:
“([^"]*?\.vmx)"

If a valid string is returned from this check then the value is used as the path to the .vmx file.

The pattern then tries to open the specified file to extract information from it, the .vmx file contains configuration and running information for the related virtual machine - for example the amount of RAM it is configured to use, its display name, the location of its virtual disk, etc…

The pattern uses the .vmx file to extract the uuid and displayName for use in the creation of the Software Instance.

Once identified the pattern creates a Software Instance for the Virtual Machine using the information extracted from the .vmx configuration file, it sets additional attributes called vm_name and vm_uuid to their respective values.


Relationship Creation

Within the scope of this Software Instance there are three possible nodes that could have relationships created between them, the Software Instance that is created for the virtual machine, the Virtual Machine Host and the Host that is running the VMware Software.

Of these we only create relationships between the Software Instance that is created and the Virtualised host that is being run from this software, to create these relationships from both ends of the relationship to ensure that it is created in all instances.


Linking from the Host

When a host is scanned we check the serial number to see if it contains the string “VMware-”, if it does then we know it is a virtualised host using VMware technology we then set an attribute on the host called “virtual”, which can be used in the future to easily identify virtual hosts.

We then extract the value found after the “VMware-” string, this value corresponds to the uuid found in the .vmx file.

Finally we perform a search on the Datastore to see if we can find a Software Instance which has a vm_uuid equal to the extracted information from the serial on the host.

If we find a Software Instance then we link them together using a HostContainment relationship with the SI taking the part of the HostContainer and the Host taking the part of the ContainedHost.


Linking from the Software Instance

Another pattern is triggered when a Software Instance of type “VMware Virtual Machine” is created.

Using the vm_uuid attribute we create a string that represents the appropriate Host serial attribute that would be found on a Host that is being virtualised using VMware technology.

Using this serial string we search the DataStore for any Hosts where their serial value is equal to the serial value created from the Software Instance.

If we find a Host then we link them together using a HostContainment relationship with the SI taking the part of the HostContainer and the Host taking the part of the ContainedHost.


[edit] Inference Relationships

There is no inference relationship creation within this pattern.


Differences to 6.x approach

The model created by 6.x SE Matchers and 7.x Patterns is the same, going forward the additional functionality and modeling capability will allow us to perform more versioning techniques and more advanced software models.


[edit] Subject Matter Expertise

No SMEs have been consulted with regards this pattern.

If any further comments could be offered on the model or versioning techniques then we would be interested in incorporating them into future releases of this pattern.


Testing

These Simple Identifiers and patterns were tested against numerous virtual machine installations on the Linux and Windows platforms.


[edit] Information Sources

The majority of the information about this product was derived from information on the VMware Website.


Open Issues

There are no open issues with this product.

Already a Member?

Sign in here!