This link VMware Virtualization seems to be saying that running a virtual machine and spreading your applications between OS's is more efficient than otherwise. How can this be true? Doesn't a VM defeat the ability of the main OS to do its job unless it has its memory partitioned off like a normal application to be managed? Regardless, how could it possibly improve anything?
This link VMware Virtualization seems to be saying that running a virtual machine and spreading your applications between OS's is more efficient than otherwise. How can this be true?
It's true because, if you look closely at most servers (but not all)...you'll see they are idle. Those are idle resources that are doing nothing other than costing money from electricity being used to keep the server idle.
If, however, you have underutilized hardware, you could maybe get a bit more out of it by increasing its workload. What's that I hear? You have both Windows and Linux workloads? Maybe an OS X workload too? Oh well, I guess you can only choose one class of workload - the one that is supported by the host OS - and the others are just out of luck.
Virtualization changes all of that. Now it doesn't matter what the OS environment is, it only matters that the hardware can accomodate the workload.
Doesn't a VM defeat the ability of the main OS to do it's job unless it has it's memory partitioned off like a normal application to be managed?
The purpose of the main OS at this point is just to service the guests. Come on now, you know as well as I do that the host should always provide a pleasant experience for their guests, right? ;) It's the same idea with VM's - the host is just there to shuttle I/O around and keep the guests from getting too unruly. It's up to the guests to get the gruntwork done.
Regardless, how could it possibly improve anything?
It improves it in the same sense that Mainframe LPARs have been around for a long, long time for roughly the same reason - it solves a class of problems that are frequently encountered. Even Sun thought it was a good idea "back in the day".
Here's what you might encounter:
- the requirement to reboot a machine to satisfy one requirement, but rebooting would affect other requirements adversely (two services running on the same OS, one of which needs to keep running but the other requires a reboot - what do you do?) With VMs, you can segregate services in an independent fashion, which isolates them from each other in a very controlled way.
- allocation of resources tends to be a fairly static situation with non-virtual setups. This changes dramatically when running a VM - now you can alter the amount of available memory, add storage, etc. with little impact.
- you need to migrate a workload that's active from one server to another without the workload going down. How do you do that on a live setup? With VMs there are enterprise tools that migrate running setups in-place, resulting in no downtime. Very handy for upgrading or fixing hardware.
- compatibility issues between software installs can cause nightmares. Separate VMs for each install resolves the issue completely (thanks to hurikhan77 for mentioning that one)
Not really. Some applications don't behave well when sharing with other applications. Exchange, for example, expects you to run Exchange on just the box, and installing anything else on it can have...consequences.
Other times it's easier for management since you compartmentalize functions. Your web server isn't sharing duties with your file server, or if you need to move or upgrade that one function then it doesn't impact other services or have unintended side effects.
Other times it's good for pushing "native" solutions. Your one machine can run Apache for web services on Linux and Exchange on Windows and another running SQL server (or MySQL) on the platform most native for that application without having to invest in multiple physical boxes.
Best, though, is that you can get snapshots and backups of the system state easily using a VM solution. If you need to you can set up another VM system (ESXi, for example) copy the virtual drives and setup to that computer and point VMWare to that copied "machine" and fire it up while the other machine is being repaired (or pay for the vMotion option so you can live migrate between physical machines); this increases availability and helps with maintenance chores. It's great to be able to upgrade hardware without worrying about unintended effects on the operating system or configuration of your applications since they're "virtual" and know nothing about the changes!
VMWare has saved us quite a bit on the electric and cooling bills for the server room and I'm using Virtualbox to emulate a machine to run Windows for managing certain functions of AD and run the VSphere client on my Linux machine. Last, it's wonderful for testing things. I don't need to create a new machine from the back room to test a forum server or test out an installation of an application. I just create a new virtual machine and fire it up.
The rediscovery of VM technology is one of the best things for the IT industry in a long time...ironically...
Is there something more particular you're wondering about?
The VM host can distribute cpu usage, harddisk usage and memory usage based on predefined workload patterns. The whole point is that you usually buy a very strong machine to keep up with the peak of your application usage but most of the time it may sit there doing almost nothing and waste valuable free performance. So just spend a few bucks more for a real fat machine and combine your machines into one. It's about consolidating resources. To still guarantee the performance of your workload patterns you can set time shares and io shares for each guest machine and prioritize them to guarentee performance.
Migrating to new hardware is also easy: Dump the image of the machine and upload it to a new. It will still run and work without fiddling with drivers issues or reinstallations or data migrations.
Another big plus point is that some services installed concurrently in the same OS instance aren't very well behaving together - eg MSSQL and Exchange. It's good to limit both in their own OS instance and instead let a hypervisor distribute the service demands. You usually get a better performance and migrating to new hardware later is just a matter of "copy & paste".
VMWare sales and marketing people will tell you lots of wonderful and amazing things. There are some certain benefits, but beware of being totally sucked in. Especially beware of anything relating to your free CPU and memory load, as there always seems to me to be a failure to recognise that free CPU and memory is headroom for transient heavy load conditions.