Logo
Sam Eldin
CV - Resume Tools 4 Sharing Architects 2 Show Big Data Presentation Android Training Java-Unix Code Templates Interviews QA & Code

Virtualization
What is Virtualization?
Virtualization or virtual system is a simple and a powerful concept. Virtual means it only exists in a computer memory. All programs, images, sounds .. etc are virtual objects. Turning off a computer would results in the loss all the memory contents which are the virtual objects. To bring any virtual object back, it has to be loaded back into the computer memory.
Our attempt is to present a Virtual system by looking at two running personal computers (laptops or desktops).

Personal Computer System
Image #1

Looking at Image #1, it has the following specs for two separate computer system:

Item System #1 System #2
1 One CPU + Peripheral (resources) One CPU + Peripheral (resources)
2 One Gigabyte of Core Memory One Gigabyte of Core Memory
3 Operating System (OS - Kernel) Operating System (OS - Kernel)
4 Only one Dedicated Program running N number of Programs running
5 Heap Heap

In Image #1, we are presenting two personal computers. We are showing the core memory content of each computer. In a nutshell, all programs including the operation system are running memory. CPU executes each process (commands-programs). These programs communicating with peripheral (IO devices). Turning off any of these computers would results in the total loss of every virtual object loaded in memory.

Heap:
Heap is a region in the computer main memory used for dynamic memory allocation. Memory Heap is a location in memory where memory may be allocated at random access. Most programs including the operating system use Heap to dynamically get extra memory.

What is a virtual system?
By defining the difference between Physical component and Virtual component, we would be defining virtual system.

Physical Components:
Physical components are the actual hardware components such as core memory, hard disk, Bare-Metal server, routers, CPU, NAS and network connections.

Virtual Components:
Virtual components are running programs (such as OS), images, virtual server, virtual routers, virtual networks

Physical Server:
A physical server is also a computer with CPU(s), memory, operating system, peripheral but it would have additional features to communicate with internet or other networks. It is also known as Bare-Metal.

Virtual Server:
A virtual server is a group of software programs working together to mimic the functionality of a physical dedicated server. It is also called a Virtual Machine. Each virtual machine can run its own operating system and applications and act the same as a unique physical device. We need to emphasize that a Virtual Server only exists in memory.

Virtual Architecture and Components

Virtual Architecture and Servers Diagram
Image #2

Looking at Image #2, we are presenting a simplified view of a Bare-Metal server with 8 CPU (one master and seven slaves CPU) and 16 Gigabyte of core memory. The Core memory can be split into 16 segments with one Gigabyte each. Each memory segment would be running as a virtual server. Therefore the Bare-Metal server would have 16 virtual servers running where each is an independent virtual server. It has its own operation system, processes and heap.

Each virtual server can mimic a running system such as System #1 and #2 in Image #1. Virtual Segment #0 and #15 are running the same program (a Clone). Each is running the same computer system #1. Virtual Segment #1 is a carbon copy of the computer System #2.

There is a bus which connects all the Bare-Metal server components. There is a supportive layer of Hypervisor or an operating system. The entire system is supported by Bare-Metal server. The other Virtual segments can also have other virtual system. Each would be running as an independent system or server.

Hypervisor:
hypervisor as a special kind of software to allocate resources. The hypervisor interacts directly with the physical server and works as a platform for each virtual server’s operating system.

OS Level Virtualization:
OS level virtualization does not even use a hypervisor at all. Virtualization capability is part of the host OS which performs that kind of functions that a fully virtualized hypervisor would.

Clones:
A clone is hardware or software that is designed to function in exactly the same way as another system. Segment #0 and #15 could be clones of system #1. The dedicated program running in system #1 must be developed with cloning in mind to prevent untraceable errors.

Number of Virtual Servers:
Images #2 presents one physical server with 16 gigabyte of memory, 8 CPUs and resources (peripherals). We would be able to create 16 or more virtual servers which would mimic the physical server. Each of virtual server is an independent running server. Each virtual server can run any number of applications.

Automation and One-Push-of-Button:
With automation and virtualization, any number of virtual servers can be create and released with One-Push-of-Button. One-Push-of-Button means that we would be creating a program, a batch or an OS script. When it is executed, it would create or release X number of virtual servers. We recommend that a GUI interface would be created to automate the One-Push-of-Button processes. The only limitation on how many virtual servers which would created-released on the run is the capacity of the physical server (Bare-Metal).

Speed:
The speed of creating-releasing virtual servers depends on the number of CPU and their speed plus the OS scripts used.

Power of Virtual System
Any hardware, software, firewalls or connections can be emulated, created or mimicked by software. Therefore, Virtualization is a very powerful concept and a tool. Servers, system, connections, networks, clusters of networks or any software can be created-released virtually in any number and on any Bare-Metal servers or even virtual servers.

With automation and virtualization, virtual system would provide the followings:

1. Flexibility
Flexibility is shown with the ability to create-release any number of virtual servers where each would have its own environment including any operation system (Linux, Unix, Windows, Solaris) and run different applications. Each virtual server is an independent system and only shares resources with other virtual servers.

2. Redundancy
Redundancy is the duplication of critical components or functions of a system with the intention of increasing reliability of the system. It is usually in the form of a backup or fail-safe, or to improve actual system performance. Redundancy helps create any number of virtual servers without spending too much money on extra hardware. Having multiple virtual servers that all run the same application is a safer method because if any of the servers should fail, a second server can quickly take its place.

3. Reducing Cost
With ability of create any number of virtual server which mimics physical server, this would reduce the need to have additional physical server. It would also reduce the needed power to run and cool the physical plus the space to host these physical servers.

4. Consolidation
Instead of having multiple physical servers which each can run only one application, a single server can run multiple virtual environments and utilize more of the server’s processing power. Having a lot of physical servers can be expensive and time consuming to maintain while also taking up a lot of space. Virtual servers give companies the opportunity to consolidate their equipment and use it much more efficiently.

5. Emulating Hardware
Virtual Machine (VM) can be described as a software program that emulates the functionality of a physical hardware or computing system. It runs on top of an emulating software called the Hypervisor, which replicates the functionality of the underlying physical hardware resources with a software environment.

Emulation refers to the ability of a computer program in an electronic device to emulate (or imitate) another program or device. Many printers, for example, are designed to emulate HP LaserJet printers because so much software is written for HP printers.

6. Vertical and Horizontal Scaling
Vertical Scaling is adding resources to a system unit to increase performance.
Horizontal Scaling is adding more units to the system.

With Virtualization both Vertical and Horizontal Scaling can be automated to One-Push-of-Button.

7. IP Addresses
A virtual IP address (VIP or VIPA) is an IP address that doesn't correspond to an actual physical network interface. Uses for VIPs include network address translation (especially, one-to-many NAT), fault-tolerance, and mobility.

8. Virtual Address
A virtual address space or address space is the set of ranges of virtual addresses that an operating system makes available to a process.

9. Development, Testing, Production, Post-Production Servers plus Infrastructure Support
With virtualization any number of servers plus any types of server can be created-released with One-Push-of-Button. Infrastructure support can also be automated.

10. Rollback
Rollback can be a simple as changing the IP address of a virtual server to old or previous IP address.

11. Virtual Application Servers
Again the One-Push-of-Button concept can be used to create any number of any types of application servers.

12. Virtual Network and Clusters
A Network is all the running hardware, software, interfaces, wiring, IP addresses, licenses and anything any network requires. A cluster is a number of networks working together for common computing purpose.

With virtuality, a virtual network with virtual routers and emulated hardware can be created. A group of virtual networks would be grouped into a virtual cluster.

13. Security
To cover security (in this page) using virtual servers and virtuality would require more effort and time. Simply put, the creation of virtual firewalls, proxy servers and networks would help in creating a security buffer to any existing network.

Limitation of Virtualization:
Virtualization is not a new concept, but it is not fully understood by IT community. The following are bullet-points of its limitation and we would provide more details in other pages:

     • System Management
     • Resource Management
     • Complexity and simplicity
     • Communication
     • Bottlenecks
     • Interfaces
     • Automation
     • Infrastructure