- A host machine / host hardware
- Virtualization software that provides and manages the virtual environment
- Virtual Machines (VMs) themselves
- Guest operating system that is installed on the virtual machines
- 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
- 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 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
- ESX Server kernel called VMKernel: is the hypervisor and real guts of ESX
- 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
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