sabregen
Fully [H]
- Joined
- Jun 6, 2005
- Messages
- 19,501
For those of you new to virtualization, or just new to this subforum (I guess that includes everyone, since it’s brand new), I’m going to ask for suggestions on what to include on this FAQ, but I’ll kick in some of my own information, as I am recently a VMWare whore, having just achieved VCP certification, myself. To start off, for those that are utterly new to all of this, I’ll give some background information on what virtualization is, and why you’ll be interested. However, as the majority of my knowledge is confined to VMWare solutions, I will stick to that. Anyone more familiar with Xen, Virtual PC, Virtual Server, and Windows 2008 Hyper-V should chime in with their information.
Virtualization – I’ve heard about it, but what is it, and what does it mean for me?
Simply put, virtualization is way of running an operating system on a set of “virtual hardware.” Many here will be familiar with Daemon Tools, and how it creates a virtual optical drive that you can then mount image files to, and the computer thinks it’s running from an actual optical drive. Virtual machine hardware is the same thing, essentially. It is a set of virtual devices that are presented to a virtual machine, which then is running an operating system. Currently, we can virtualize four things: CPU, RAM, HDDs, and NICs.
The reason virtualization is interesting to most people is that it allows you to specify a set of virtual hardware for a designated virtual machine. I can explain this over and over, and get increasingly more complicated in those descriptions, but sometimes, a picture and a caption is really the best way to do it. Without further adieu, I present my streaming media virtual machine's hardware, courtesy of VMWare Workstation:
I've obviously given this VM 2GB of RAM, an 8GB hard drive, an optical drive, a floppy drive, a NIC, USB, a sound card, a display adapter, and 2 CPUs. I've done this all for many reasons, but the important thing for you to know is that this is the hardware that the virtual machine thinks it has when you're installing your OS. It would be just like if you had a dual core machine with 2GB of RAM, an 8GB hard drive, a NIC, a floppy, a video card, sound, USB, and a DVD drive...this is no different. The OS has no idea it's being virtualized (some do, but Windows doesn't), and acts just as it would if it were a physical machine with the same hardware. You update it the same, you install programs the same, etc.
The real interesting part is, say you have a system like mine (not going to list them all), specs are:
2x Socket 1207 AMD Opteron HE8346 (quad 1.8's) = 8 cores
4x2 DDR2 ECC Registered RAM = 8GB
2x 10k 2.5" SAS drives for Vista Ultimate x64 boot
6x320GB 320gb WD AAKS in RAID-5
If I give a VM 2GB of RAM and 2 CPUs, then my physical machine that's running Vista Ultimate x64 pages out 2GB of RAM, and the CPU cores (just like anything else mutli-threaded) will get scheduled to the VM when it needs them. The VMs "hard drive" is actually a flat file on any storage medium I decide to use (that can hold the file). In my case, my VM hard drives are just VMDK files in a "Virtual Machines" directory on my RAID-5 array. The virtual machine has no idea what's going on, that it's hardware is not real, or that it's running in a virtual environment.
If it hasn't clicked yet, the biggest reason behind virtualizing is that it allows you to do more with less. I can run 3 dual core, 2GB VMs on my machine without issue, and taking no performance hit in day to day tasks as I use the machine. You can also do what's called "over subscription" on your physical resources. I have 8GB of RAM, but I could easily create 5 virtual machines that had 2GB of RAM. What happens when I do that? Vista Ultimate x64 (my host OS) does what it would do for any other application when it's requesting access to more RAM than I physically have...it uses the page file. People are using virtualization for everything from doing test setups to development work, to server consolidation, or just goofing around. The time has come where it's no longer a technology that's in the hands of companies that can afford to spend a half of a million on a new server.
I will give you a for example on the consolidation possbilities. This is not a "best case scenario" like a vendor would tell you is capable of achieving, either. We have a financial institution that in the past year has moved almost whole hog to virtualized infrastructure. They have their main datacenter inside of their main offices. The datacenter used to contain 11 racks of equipment...disk, networking, UPS's, etc. They had over 100physical servers. Today, they have less than half of that number. They are running over 50 virtual machines on two physical servers. Now, the servers are definately heavy metal boxes, but in comparison to the previous setup they had, they no longer have to think all that much about downtime for maintenance and upgrades on their machines, and they only have 2 physical servers to maintain and upgrade (for now). Their consolidation rate? 26 physical servers into 1 new physical server, using virtualization. They told me flat out that their savings in heating and cooling alone, for 2008, paid for the new servers. THIS is why companies are interested.
So when did all of this happen, what lead up to now, and why is it something I keep hearing about? What changed?
IBM started the virtualization thing back in the 1960’s using mainframes. If you’re my age or older (I’ll be 30 in a year and half) and you’ve worked in IT as much as I have, you no doubt worked for a company at one time or another that had (whether operational or not) a mainframe of some size and capacity, with users banging away at “dumb terminals.” The idea behind this model is that all of the “dumb terminals” were essentially just input and display devices to a remote session that was actually running on the mainframe, or other backend server.
About 10 years ago, IT saw the proliferation of cheap “commodity servers.” Most people in the industry call them “pizza boxes,” because whether it’s Dell, HP, IBM, or whomever, a 1U server from any vendor is likely:
1) Not very powerful
2) Not expensive to maintain
3) Not very expensive in overall cost to own
So what we saw was everyone saying to their bosses “we can get a server for X, and one for Y, and one for Z.” The prices had come down so much that what was previously a hardware purchase that came under intense scrutiny was now a pittance in comparison. This is what a lot of people at the time called the “holy grail” of computing. 1 task: 1 server. However, as it has already been said, none of these machines were very powerful, nor very expensive. Companies bought 1U servers like they were going out of style in the pre-dot-com bust years, and this was really apparent when the companies tanked, and had a crap load of machines to sell as they were liquidating.
Well, without rambling on too much, computing has essentially gone from those cheap single or SMP chip based 1U’s to having a much more dense and powerful backbone. The advent of multiple core CPUs has really driven a paradigm shift from what was mainframe computing, to pizza boxes, and now back to a more monolithic approach. There’s many reasons for going back to the old model, and virtualization plays off of almost all of them, increasing a company’s ROI on the hardware they just bought.
The top reasons I see from client for heading towards virtualization are these:
1) With more powerful servers, and fewer of them, hardware maintenance costs have decreased
2) Annual maintenance renewal is decreased because of fewer boxes to support
3) Heating and cooling loads in the datacenter have been reduced by decommissioning the many smaller servers in favor of fewer larger ones
4) Power bills for the datacenter have gone down. If there are less boxes drawing power and converting it into heat that must be dealt with, many clients see as much as a 60% drop in their power bills
5) Companies are able to more effectively utilize their hardware in the datacenter, literally pushing the servers to a point that would otherwise not be achievable
6) Companies are released from their reliance on specific sets of hardware for production servers.
7) Allows better usage of servers. Typical datacenters are filled with machines that usually are running under 20% utilization. Consolidating many into one has many advantages.
Datacenter virtualization contrasts with desktop virtualization by quite a lot. In the desktop space, you only need to have a functional host OS to run virtual machines. In the datacenter, and more specifically, in bare metal hypervisor implementations, there’s strict hardware platforms, devices, and drivers that are certified by the company providing the bare metal hypervisor. Although your server may run *Nix or Windows just fine, it may not be a candidate for a virtualization host.
Okay, but that was all datacenter stuff, what about me at home and desktop solutions?
Here’s where the rubber really is meeting the road, and all of the previous information regarding the application to companies and datacenters really comes into play. As I said before, the advent of commodity pricing on hardware, and the release of multi-core CPU solutions into the mainstream market mean that no longer are datacenters the ones with decent computing power. The desktops of today have more power in, say an Intel Q6600, than clusters of dozens of machines from 10 years ago. This has unleashed the capability of the datacenter (to an extent) on the home market.
The desktop solutions that are available today are largely free, with a few exceptions, which has really only served to further penetrate the market. Virtualization is probably the single biggest buzzword I hear now at work. Those that don’t know what it is want to know, and those that know are either already doing it, or are budgeting for it. At home, you can play with it for free (and I’ll go over those options in a bit), and probably on the hardware that you’ve already got.
Desktop virtualization does differ from the datacenter virtualization in a few key areas, and it’s important to understand the terms and what the differences are, so I’ll attempt a quick overview (which will likely get filled in with more data later on). Desktop virtualization is a “hosted” virtualization environment. When you run something like VirtualPC or VMWare Workstation, you’re running an application inside of your host OS. You’d fire up your OS, as usual, and your virtualization application would be installed like any other application on that system. When you fire up the application of your choice, you’d then be presented with the ability to run virtual machines that you had created. In desktop virtualization, there are no stringent hardware requirements to get the virtualization wheel moving. The application uses the “host OS” underlying drivers to know what it’s running on. If your underlying OS is working fine, you’re all set. In the datacenter, it’s a whole different ballgame. The virtual machines that you create in this scenario make driver calls to the host OS, which then handles them appropriately.
Emulation versus Virtualization...what's the difference?
This is another good question, and I'm strong these days with my Google-Fu. I'm not going to re-create the wheel, so I'm stealing again (with credit, of course): http://blog.1530technologies.com/2006/08/virtual_machine.html
Emulation - involves emulating the virtual machines hardware and architecture. Microsoft's VirtualPC is an example of an emulation based virtual machine. It emulates the x86 architecture, and adds a layer of indirection and translation at the guest level, which means VirtualPC can run on different chipsets, like the PowerPC, in addition to the x86 architecture. However, that layer of indirection slows down the virtual machine significantly.
Virtualization - on the other hand, involves simply isolating the virtual machine within memory. The host instance simply passes the execution of the guest virtual machine directly to the native hardware. Without the translation layer, the performance of a virtualization virtual machine is much faster and approaches native speeds. However, since the native hardware is used, the chipset of the virtual machine must match. Usually, this means the Intel x86 architecture. VMWare is an example of this type of application for Windows.
Last edited: