How it all began
When I started with virtualization I had not much experience with GNU/Linux and even less with virtualization. I didn’t even know what Xen was. I thought Vmware was cool and Ubuntu was a nice server OS and thus combined both, but I was mistaken. Unfortunately this system was less stable than I initially anticipated. One day when things weren’t working when I needed them, I decided to to get rid of my unreliable friends. I replaced Ubuntu with Debian, which already served me well as virtualized guest. Debian was a tiny bit less user friendly, but knowing that it was a reliable and free system, I didn’t care much. Losing the nice GUI the VMware server privided was the bigger challenge, but in the end this turned out to be exactly what I needed.
I still remember searching the web for simple solutions and documentations and fitting together information from various sources (luckily tabbed browsing was invented by then). I studied various tutorials, but most them relied on other tutorials and many of them were outdated. I have seen all different kinds of guides, lots of them were simple walkthroughs with some comment lines in between and a “it-worked-for-me-so-do-exactly-so” attitude. Unfortunately this only answers “what” and “how”, but not “why” questions. Don’t get me wrong, I am greatful for every piece of information and I actually believe that if the authors of such walkthroughs would have to spend more time elaborating each step, none of those would exist. The other kind of documentation you often find, is of technical nature and mainly abstract, it answers the “what “and most of the “why” questions but hardly the questions of ”how?”.
I wrote this guide because I often wished one existed. I hope I have created a guide that covers answers to all three questions – “what?”, “why?” and “how?”. It has grown from a walkthrough, so explanations are now mostly inline with the commands and precceded by a more theoretical block. If you want to, you can easily copy and paste all the commands, but I strongly advice you to be a little more adventurous. If you have prior experience or are following another guide, please feel free to do things your way. I only ask you to tell me so if you have questions, so I can provide more accurate help. I know the needs of different people are different and require individual approaches, so don’t think I am offended if you try a different way.
Virtualization has been a hype for the past few years and is now widespread in data centers, enterprise solutions and making its way to the the desktop environment and even mobile platforms. The concept and technology itself isn’t new at all, virtualization got used to partition the hardware of expensive mainframes back in the time when some of us weren’t even born. With CPUs becoming much more powerful, the relative workload on business servers decreased. Servers that once got heavily used, were now running at a fraction of their capacity, but security policies prohibited consolidation of certain services run on these servers.
The solution for this issue was virtualization. Allowing multiple logical servers to be run on the same hardware, virtualization provided the required isolation between the services.
Increased efforts made by Intel and AMD to facilitate server virtualization have been successful and can also be found in consumer hardware nowadays.
Virtualization is also one of the driving forces behind cloud computing. Simply create one virtual machine and let hundreds of instances of the same run in the cloud. No need to build your own server farm if you only need it for a few hours – Just rent it. If you are interested in cloud computing, you might want to see what Amazon (of course not the only company in that business , but one of the best known and biggest) has to say about it. http://aws.amazon.com/ec2/
My personal motivation behind this guide is to provide a simple, clean and yet professional path to virtualization. Thus I am not going to use out-of-the-box software with a nice user interface, but instead I choose robust and free (free like in freedom, not gratis) software.
My choices are Xen, a robust, scalable, proven and powerful hypervisor which also gets used in professional environments. Furthermore Debian, a GNU/Linux (Linux itself is only the kernel, but is often used as a synonym for the whole) distribution. Debian is in my opinion best described as a conservative distribution. As a result Debian (stable) has the reputation of being rock solid, but always a little outdated. You probably know Ubuntu, which is based on Debian. Ubuntu is known to be a beginner friendly distribution and has an excellent documentation, a detailed wiki and many good forums. If you have a (beginner) problem with Debian, just check how Ubuntu users solved it.