Thursday, June 10, 2010

Server Virtualization (VMWare) Summary - for technical architects

Components that make up any virualized environment
  1. A host machine / host hardware
  2. Virtualization software that provides and manages the virtual environment
  3. Virtual Machines (VMs) themselves
  4. Guest operating system that is installed on the virtual machines
VMWare provides 3 versions of the virtualization software
  • VMWare Workstation and VMWare Server - are virtualization software packages that install onto an existing operating system on a host machine(x86)
  • VMWare ESX server - is a full operating system in and of itself. ESX Server is both its own(host) operating system and also the virtualization software
No one uses VMWare Workstation in production environments due to following limitations:
  • VMs can only run while your are logged into your host workstation and log off and the VMs shutdown
  • Also there are no remote administration capabilities for the VMs
 VMWare Server (formerly called GSX) is a step up from workstation. It is a software package that installs onto an existing host operating system like linux or windows server. It offers remote management and remote control access to VMs and VMs can be configured to run as services without any console interaction. Its limitation is that it has to use resources from the host hardware through the host OS. This really limits the scalability and perrformance of the Server

VMWare Server is still ok for those that dont require enterprise class scalability for their VMs, those that have limited number of VMs and do not require maximum performance. Its easy to use, since no knowledge of full virtual server OS is required for OS adminstration.Also companies that dont have budgets to buy ESX certified hardware can resort to VMWare Server

ESX Server gives better performance, more management (of host resources), recovery features and increased reliability
ESX when used with virtual centre allows you to manage the load on your systems by moving a VM to any host in a cluster without downtime. In the event of a server failure in the cluster, the VMs will be restarted on the remaining hosts and brought back online within minutes

ESX Server is made up of 2 core components
  1. ESX Server kernel called VMKernel: is the hypervisor and real guts of ESX
  2. The service console: is really just a high priority pre-shipped VM, that allows you thru tools to interact with VMKernel and manage its configuration
VMKernel allows direct hardware access to the core 4 resources (processor, memory, network cards and storage disks). It manages memory for the VMs, schedules processor time for VMs, maintains virtual switches for VM network connectivity and schedules access to local and remote storage

VMWare Infrastructure 3 is a suite of tools which along with ESX Server 3 provides the following additional tools:

VMotion - provides the capability for virtual machines running on shared storage to have their hardware resources shifted from one host server to another in real time with no impact to guest operating system.Virtual Centre is requirement to leverage VMotion.Effectively ESX Server 1 can move VMs hosted on it to ESX Server 2, quite transparent to the guest operating system and with no downtime of VMs

VMWareDRS (Distributed resource scheduling) - takes VMotion to the next level by using VMotion to balance the workload evenly across mutiple ESX host machines

VMWare HA - with restart sequencing of VMs
VMWare Consolidated backup (VCB) - seperate component on seperate machine can take period automated backups of snapshots of VMs state

Along with ServiceConsole and VMKernel, there is Virtual Machine Monitor(VMM) which acts as traffic cop between VM and VmKernel. There is one VMM process per VM and within a VMM process there is one thread per virtual CPU configured for that VM. If VM requests CPU, the VMM decides whether instruction can be executed directly on hardware or if VMKernel will be used to virtualize the call

Also there is VMX is a user world application (special processes managed by VMKernel).VMX provides emulation of non-critical hardware resources like CD-drive, serial ports, parallel ports etc. It also boostraps the VM.

ESX3 has 2 different data execution modes: Direct Execution mode and Virtualization mode
Direct execution is by far the preferred mode, used whenever possible.This allows the VMM running the VM to directly access physical hardware resources of host.Amount of instructions executing in direct mode is typically higher than in virtualized mode.Direct execution is used in ESX for all processing calls in the Protecttion Rings of 1 thru 3 of cpu. Virtualization mode is used when direct execution of instruction is not possible ex, when call requires Protection Ring 0 access to cpu. In such case, VMM sends instruction to VMKernel and return results to the guest OS. VMM fools the guest OS into thinking, that its calls are being  serviced by an actual protection ring 0

CPU processing rings:
  • Ring 0 - kernel mode processes
  • Ring 1 - System services
  • Ring 2 - Device drivers
  • Ring 3 - User mode processes

Virtualization configurations and details go far beyond this humble article contents, but I thought of writing it up as quick start for application architects to be able to understand some basic virtualization fundamentals and terms, that get thrown around