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
- ^VMware-esx-vmx$
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.
