In the past I have referred to using Virtual machines and Containers, but i have never actually introduced the platform I use for my virtualisation. Today I will rectify this oversight.
What is Proxmox and how does it hold up against the competition
My personal favourite home (and small business) Hypervisor is Proxmox. Proxmox is a minimal Debian with a modified Red Hat kernel. Since Proxmox is Debian based, it is actually possible to install Proxmox on top of an existing Debian Setup. This is also the easiest way to customize the install. The standard Proxmox installation requires very little user input and will finish within a few minutes.
Proxmox shines at server virtualization and allows you to deploy a great number of servers on fairly limited hardware. Another very neat feature of Proxmox is the extensive hardware support. Since it runs on Linux it supports almost all the computer hardware you may have at your home. Proxmox can even be used on CPUs that have absolutely no virtualisation features, but then it will be somewhat limited. This is a great advantage for a home user, since he won’t have to buy server hardware as he would have to with VMWare ESXi.
While not quite as interesting for Home Users, it is worth to mention, that Proxmox does not artificially Limit the memory or numbers of Processors you can use in order to sell more licenses. In fact Proxmox is completely Open Source and finances itself by offering commercial support.
You can also use it to build a virtual infrastructure with High Availability. While it is possible to improvise this with only two nodes, the recommended way requires at least three nodes. The management of Proxmox is done mostly with the web gui, but certain advanced features require the use of the Linux command line. This means you do not need to install a management client anywhere (as you would have to with VMWare).
Proxmox is made up of already existing OpenSource Technologies, this makes it relatively easy to change to or from different OpenSource Solutions, that employ the same virtualisation technologies. Furthermore there is nobody stopping you from extending Proxmox functionality or including other software into your infrastructure if you need it. This kind of flexibility is simply not offered by either one of the main competitors VMWare ESXi or Microsoft HyperV.
Now lets have a look at the virtualisation technologies used by Proxmox. The first thing to note is, that unlike most other Hypervisors Proxmox uses two different Virtualisation technologies with two very different approaches.
The first virtualisation technology employed by Proxmox is KVM. KVM is a Kernel based Open Source Hypervisor and can be compared to VMWare and MS HyperV. It used to be a Fork of the QEmu Project, but it has been integrated back into QEmu in the last year. Since KVM is also the Virtualisation technology used by Red Hat, quite a few of the advances Red Hat makes in the area come back into the Project. In Proxmox KVM is typically used to virtualize Machines with complex Network needs, Machines who need to be entirely independent from the kernel of the Host and all Machines that do not run Linux.
The second virtualisation technology in use is OpenVZ. OpenVZ is a container based virtualisation similar to Solaris Zones. OpenVZ is basically a very advanced CH root. It uses the same Kernel as the host, but it can run a different Linux distribution within the container. The huge advantages of OpenVZ the almost non existent overhead, the very small RAM needs and the fact that it runs flawlessly on very old (or low end) hardware. With OpenVZ you can create one Machine for every service your server has to provide and you will hardly notice a difference in performance or RAM use compared to running all services on the host itself. As I mentioned earlier, Proxmox can run on hardware without any virtualisation features and OpenVZ is the reason for it. While QEmu, which is the base for KVM can also virtualise computers on CPUs without VT-x or similar, it can not be done with the Proxmox Web Interface or Proxmox command line tools. But CPUs without these features are usually very old or very low end and in these cases you will likely prefer to use OpenVZ anyway.
The Web interface
As you can see, the web gui contains a a lot of information, but it is not cluttered. I am going to explain the different areas of the Server View (which I use almost exclusively) using the numbers I assigned in the screen shot.
- The left side contains a Tree Diagram of your infrastructure. The Datacenter represents your private cloud. The symbol under it represents a node. A node is usually a physical machine running Proxmox. Under each node there is a list of virtual machines running on this node and a list of storage attached to it.
- A list of OpenVZ machines on the node. A green Symbol means, that the machine is currently running and a grey one means that it is turned off.
- Under the OpenVZ machines, there is a list of KVM machines on the node. Similar to OpenVZ the Symbol changes based on the State of the machine. A white screen symbolises a running machine and a black one a stopped machine.
- The Storage attached to the node. There are several storage Options with different capabilities. More on Storage later
- This bar is Specific to the object you selected. Most tabs refer to a page that lets you change the configuration of the object. But the summary tab is always an overview of major performance indicators.
- The content of the Main Screen always depends on the selected object in the Tree Diagram on the left and the selected tab above.
- The 3 buttons are always there. The Create VM button starts the wizard for creating a new KVM Virtual Machine and the Create CT button starts the wizard for creating a new OpenVZ container.
- These Options only appear if the Machine Object (node, OpenVZ container or KVM VM) is selected in the tree view. Start obviously starts a machine that is not currently running. Shutdown attempts to shut down the machine gracefully and stop is the equivalent to simply turning of the power. Remove deletes a machine, this is only possible if the machine is stopped. Migrate moves the machine to another node and with console you open a new window, that shows you the content of the machines local screen. You can also use it to control the machine as if it were sitting right in front of it. These options are somewhat more limited for nodes.
- If you are looking at a summary, you can use this element, to set the time frame for the summary. This is quite useful if you whish to see a Virtual machines average load over a certain period of time.
- Log area usually displays the task log. Here you can see all Tasks, that are currently running or have run on your Datacenter and their status. The cluster log is the everything that concerns Proxmox log.
There are four different Storage options in Proxmox, two of them are local and two of them are in the network. The simplest option is Directory. For this you simply choose a Directory on the Proxmox node, that should contain all the selected Data. The Options are KVM images, OpenVZ Containers, CD/DVD images, OpenVZ Templates and Backups.
The second local storage Option is a LVM group. If you give a LVM group directly to Proxmox, you can only use it for fixed Size KVM images.
The first network storage option is nfs, this is pretty much the equivalent of a local directory over network.
The second network storage Option is iSCSI, and this is rather flexible and for example be used to create a LVM group on the remote Storage. It can also be used as a more traditional Storage.
Limitations of Proxmox
While I believe that Proxmox is a great solution for server virtualisation, there are still a few downsides to it. Its single greatest downside is probably the desktop virtualisation. While Proxmox can virtualize desktops, most other solutions are better suited for this task.
Even though it is entirely possible to control Proxmox entirely from the web gui, you have to be comfortable with the Linux command line in order to fully utilize all of its features. Implementing more advanced features or additional features might require some tinkering. This is not necessary to such an extend with other solutions.
And I do not know how well it handles in large deployments. But I suspect, that truly large Deployments are easier to handle with the bigger competitors products.