Virtualization for dummies
Long long ago, when the word was slow and our grandparents had different notions of chips, mice and nets, computing was what it was for that day - simple and easy! You had a computer, a monitor, a mouse, a keyboard and if you will, a printer attached to the computer. In the corporate world, computers were beginning to be installed for specific purposes. Every computer, say a server or workstation served the need, either as a dedicated file server, database server or web server. Okay, those things were still foreign to our grand parents, but things were slowly underway in this direction. Each server was dedicated for its particular purpose it was thought/designed to serve. The flip side of such an arrangement was the inefficient use of resources. But, that didn't bother them then as the real estate prices were low, the energy was cheap, the things were slow and information was hard to get - people used to flock the libraries and look up journals to seek the information they wanted. And movies were definitely in Eastman Kodak color, which was beginning to impress the crowd.
But look at the world today! Things are blazingly fast and information is available at your mouse click. The world has changed for the better. Things like online shopping, social networking, etc. are pretty much what drive the world today. Today, computing has evolved to be centered around "information" than the "equipment". The "classical" definition of computing where a bunch of bearded geeks in dirty jeans & t-shirts, drinking coffee and eating pizzas is constrained to the server rooms and system administrators. And these guys typically report to their bosses in dark suits who smoke cigars and taste caviar. They appear to be happy and satisfied, but things are not what they appear to be. Each of these folks have a pressing problem to address. The system administrators are over-worked to keep the systems running and serving the clients and customers. Their problem is purely technical, fighting technology to keep things working without any glitches and to keep that smile and satisfaction on their customers. The management is faced with a different problem. They typically look at the numbers and statistics, which began to tell the story of rising real-estateprices, electricity bills, etc. Looks like the world isn't that rosy at all. This was beginning to be a menacing problem and a solution was necessary, and that, asap!
Welcome to the world of IT virtualization.
In this blog post, I shall not delve into the depts of virtualization, but shall provide a very broad overview of what it is all about. If you've been out shopping in large malls, you'd definitely come across computer magazines sporting the world "VIRTUALIZATION" in bold, and if you will, in 24-bit true colors. I'd be explaining what virtualization is all about in layman's terms.
In computing, the term "Virtual" is defined as :
sharing of actual devices by many users and coordination of multiple processes...fostered de-coupling ...
as per the Wikipedia reference article here. This is exactly what virtualization seeks to achieve - the de-coupling of processes and resources. From the hardware perspective, this de-coupling is achieved by technological advancements in both the hardware and software architecture.
To explain it better, the application you typically see/use is just an element of the system where it lives. The application runs on an operating system, which inturn accesses the underlying hardware. The earlier systems had only three things - the hardware, the software and the application. The interesting part is the application, which could typically be the business software a corporation uses. As the number of users began to grow, the systems started to face loads that they weren't designed to handle. This forced the technologists world wide to address this problem and as a software based implementation that worked everywhere, Java was born with the Java virtual machine, that sat between your application, also written in the Java programming language, and your operating system. For the world, this wasn't enough. They wanted more.
So, the technologists started thinking on addressing the problems that existed or exist today. Where do the problems come from? What are they? How do we solve them? Do they have any effects on and from the underlying hardware? How do we leverage the hardware to provide the optimum performance and utilization? These were some of the questions seeking solutions. And answers were born, one after the other. Now, you may have understood what virtualization is all about! The answer is - to re-arrange the existing system architecture to provide for alternate hardware/software based architectures that could co-exist on the same system, offering the means to maximize the system utilization, therby reducing the costs associated with offering the same services, though in an intelligent and more efficient way. There are several techniques as to how this could be done and I shall briefly go through them.
Full virtualization :
In full virtualization, your hardware is completely virtualized. This technique provides a complete virtual environment that simulates the underlying hardware, so that the software basicallyruns on the virtual environment. Typically, the software also includes the operating system. You could imagine an extra layer between the hardware and the operating system that provides the virtualization of your underlying hardware.
Hardware-assisted virtualization :
The methodology is basically similar to full virtualization. However, some extra support comes from the undelying hardware, typically the processor (CPU). Hardware assisted virtualization approach enables efficient full virtualization by leveraging the support from the underlying host processor's capabilities. Full virtualization simulates a complete hardware environment, or virtual machine, in which an unmodified guest operating system runs in complete isolation. Hardware assisted virtualization is basically this, with some extra leg up from the intricate design of the processors to enable a more efficient use of their capabilities.
Partial virtualization :
In partial virtualization, a special kind of virtual machine environment that provides a partial simulation of the underlying hardware exists. Almost all of the hardware features are simulated, but there are some features that aren't implemented. Therefore, the virtual machine allows some but not all of the software stack to be run without modification.
Para virtualization:
So far, our discussion has been more hardware-centric. In para-virtualization, the software is modified to fit the underlying environment. This is achieved by re-compiling the operating system that runs in the virtualized environment to achieve performances close to non-virtualized or near native levels. Re-compilation re-arranges the software modules in a way that minimizes overhead and optimizes system performance by supporting the use of virtual machines that would be underutilized in conventional or full virtualization.
OS level virtualization :
In this form of virtualization, the virtualization is moved further up from the hardware. An operating system typically has a module called the "kernel", which is basically the heart of an operating system in a way similar to the CPU which is the heart of the hardware system. The kernel allows for multiple isolated instances of the region where the user applications run. The region used by the user applications is called the userland. By allowing multiple userlands, the individual userland areas look and feel like a real server from outside, though the inner details are effectively masked from the end user.
Application virtualization :
In application virtualization, the concept of virtualization is moved higher and higher from deep down the hardware layer. In this form of virtualization, the applications are effectively encapsulated from the underlying operating system on which they run. A fully virtualized application is not installed in the traditional sense, although it is still executed as if it is. The application is fooled at runtime into believing that it is directly interfacing with the original operating system and all the resources managed by it, when in reality it is not.
I have not provided any concrete examples for the different kinds of virtualization techniques, as I wished this article to be very generic. Now that you've armed yourself with some idea of what virtualization is and what we guys at Sun have been busy with over the past few years, its time for you to go out and look for more information on these techniques. Or if you're lazy like me, just go to our Virtualization homepage and you'd find tons of materials on almost all the topics I mentioned earlier in this post. If you're interested in working on a project with us and see how we guys from ISV Engineering could assist you, drop me an e.mail.
Posted at 01:17PM Nov 14, 2008 by mithun in Sun | Comments[1]
Nice post for virtualization. Detailed classification between different virtualizations as well.
Hey Mithun, can you provide some tech details and tutorials for Lustre File System Administration?
Posted by Ash on November 15, 2008 at 07:26 AM CET #