Why are virtual machines and hypervisors prevalent in the server world, and what are they used for? Why do we use virtual machines anyway?
The one point that comes to mind is to avoid installing new OS or buying hardware. It is possible to back up the virtual machine’s hard drive image file. If the virtual machine were to be destroyed or if the configuration were altered, it would be possible to restore the virtual machine to its original state by simply restoring a single file, I think. I don't know that much, tho, about server-side. :-)
Hypervisors control the virtual machines, allowing them to be ignorant of the fact that they're not dealing with the hardware directly. IMO, virtual machines are popular because many companies have MANY servers, running Windows, that only do one service. They're hardware usage is terrible. In order to make decent use of even a $4000 server, you can/need to run at least 8 servers. TBH, with my *nix background, I don't really have any need for them. One of the neater things that I've seen done with VMs is webhosting company running webservers in VMs. Add to that VirtualHosts, and things could be real interesting.
So some of the previous replies kind of hit the point, but the big selling point - whether you're using Windows or Linux - is that Virtual Machines bring the cost of running a server. And it doesn't just give you more bang-for-your-buck in terms of the actual hardware. Using VMs it is possible to take advantage of snapshots to quickly rewind the entire machine to a particular state, move the machine to another host computer for whatever reason, resize all of the components on the machine on the fly, and sandbox different services from each other. The word "cloud" is an over-used buzzword, but regardless - Virtual Machines are at the heart of this new cloud movement in the IT industry. There are plenty of other uses as well, but that is the biggest ways that VMs have been relevant to the industry as a whole in recent years.
farmdawgnation hit the nail on the head. Imagine you want to run multiple instances of a software framework (server or client), complex enough that running it multiple times on the same machine is prohibitive (or insecure). If that software isn't using 100% of the machine's resources, you're wasting whatever resources the software doesn't use. VMs make it possible to run as many as you want on a single hardware platform. Additionally, you can easily start new instances without having to reconfigure everything, and take instances offline and power them up as needed. Running a second instance of a VM is possible with a single click or command. Once they're running, you can take snapshots of the VM as backups or for debugging. Point 3 is hardware agnosticity. VMs basically decouple your running software instances from the underlying hardware, making switching out of the underlying hardware platform really easy and painless, and makes your hardware setup OS independent. You could run Ubuntu Server for your general networking needs and a Microsoft Exchange server for your e-mail on the same machine at the same time. Lastly, it makes it easy to isolate different services from each other. In the above example, if your exchange server has trouble, you don't have to take the entire network offline to fix it. Just restore a snapshot of the VM running the exchange server, and Bob's your uncle, without needing to affect any of the other software running at the same time.
Join our real-time social learning platform and learn together with your friends!