If you have interest in computers, you've probably been hearing a lot recently about virtualization and cloud computing. So what is this stuff, and what does it do? If you're interested, read my next few blog posts to learn about the basics of this new way of computing.
What is Virtualization?
Virtualization refers to the abstraction of computer resources. Typically, we think of a physical (non-virtual) computer as a single box with:
- a processor (CPU)
- memory (RAM)
- disk drives (storage)
- an Operating System (the OS, such as Windows, MacOS, Linux, etc.)
- application programs
(for the moment I am ignoring computer networking)
Our desktop and notebook computers fit this model. The computer acts as a sort of fence or boundary; our operating system and applications run on our system, using our RAM, CPU, and storage. Nothing else gets in or out, and it provides some bit of security. If somebody in another room in the house is using a differnet computer at the same time, everything is separate; their software is running on their physical computer, my software is running on mine.
Networking the computers together allows them to access each other. Obviously, we all see this every day using our web browsers to load and view content from computers all over the place. But that is just sharing data; what if there was a way to share the physical resources (CPU, RAM, and storage) of computers that are networked together?
This is the idea behind virtualization. Computers are networked together, and then, using sophisticated software, all of their resources are combined into a giant resource pool. Now you have the power of many computers, and it can act like one big "virtual" computer.
Great, but sometimes it's a good thing to have boundaries like we have with the single physical computer, so you can partition things and keep them isolated or secure. Virtualization software provides for this as well. Once you have combined all of your resources into a giant pool, virtualization software allows you to carve it back up into virtual systems. These virtual machines don't have to look anything like the physical machines that make up the pool. For example, you can take 100 physical computers and combine them in a virtualization pool, and then carve out 50, or 100, or 1000 virtual machines. You configure each virtual machine from resources from the pool, just as you would build a real computer from real phisical CPU, RAM, and storage. The virtualization software takes care of allocating parts of the combined physical resources from the pool to each virtual machine as needed.
In the next post, I'll talk a bit about cloud computing, one of the hot topics today that uses virtualization.