SWsoft Virtuozzo for Linux 3.0
Virtuozzo is a virtual server package from SWSoft that’s available in both Windows and Linux versions. We looked at the Linux version, as version 3.0 has just been released.
The “standard” way to implement a virtual server is to have a package that emulates the hardware of a computer. You create instances of these emulated computers, and on each one you install your chosen operating system.
Virtuozzo doesn’t take this approach, however; instead it uses a combination of proprietary software and standard features of the host OS (in this case Linux) to implement virtual machines without the hardware emulation bit sitting in the middle and soaking up resources.
When a process (the Unix term for a program) runs, it needs certain resources: network connections, OS executables, user access control, memory allocation, filestore, and so on.
It also needs the core operating system – the “kernel.” The way Virtuozzo works is to allow all virtual machines to share the central kernel (whilst exercising strict resource control for memory, concurrent processes and the like) but to keep each Virtual Private Server (“VPS”) in its own “sandbox” so that it sees its own copy of the system executables and can’t trample over anyone else’s files.
Installation is a piece of cake, so long as you’re methodical and you RTFM before you start. You need a Linux machine to act as the host (Red Hat, Fedora, SuSE 9 and CentOS are all acceptable) and the manual tells you all you need to know such as how to partition the server’s disks.
Red Hat’s perhaps the easiest to work with, simply because it’s the example they use in the Getting Started guide, but there’s no rocket science in there. Once you have the host OS running, you just kick off the Virtuozzo installer and answer a few simple questions.
In our setup everything worked great except for the server end of the remote management feature; there’s a shedload of documentation with the product, though, and we were able very quickly to re-install the bit we needed from the command line.
When you’ve installed the product, you need to set up templates for the OSes you intend to run on your VPSs. The idea is that all the relevant files are bundled together into a central directory, and when you create a VPS it simply sets up the directory that will form that VPS’s virtual disk (basically a subdirectory of /vz) and makes links (shortcuts) from that directory to the centrally stored version.
Only if a file is modified (say if it’s a config file) is the link replaced with a real file – which means that you don’t have a dozen copies of the OS for each of a dozen VPSs, and also that it takes just a few seconds to create a VPS since all that’s needed is a few hundred tiny links, not a several-hundred-meg file copy.
Creating the templates can be a bit of a faff, but you only have to do it once for each OS you intend to run, and again the manual is very good at leading you through it.
Once everything’s running, you can manage Virtuozzo from the Linux command line if you wish, but most will want to use the GUI-based tool which is available for Windows and Linux.
You run the installer, give it a licence key, point it at the IP address you allocated the server for its remote control service, give it a user ID and password, and you’re away. From the GUI you can create VPSs, manipulate their parameters (e.g. creating users or changing resource allocations) and deal with backups and the like.
Incidentally, when you’ve changed resource allocations you generally don’t need to reboot. If you have a collection of servers you can also move VPSs from one to another – either by stopping the VPS, moving it, then starting it again or even by telling it: “Move this VPS, but copy the files in the background”.
Applications are installed on VPSs via “templates”, which define collections of stuff you want to run. You can initiate application installs or updates on several servers at once, and as with the VPS creation process, application installs are quick because you’re only copying a pile of links, not the program files themselves. As with OS templates, you can build your own application templates – though you get a pile of examples for popular applications as part of the Virtuozzo install kit.
The final thing to mention is the essential monitoring suite – after all, if you’re running a pile of VPSs, you need to be able to see what’s going on. You can monitor both the overall resource usage on a server (for performance management) and the parameters of individual VPSs (for billing, perhaps, if you’re an ISP).
You get the usual “top ten” standard reports, but you can dig into the detail if you so wish. Because the system lets you oversubscribe resources (which sounds silly until you realise you’re unlikely to have every VPS hammering at 100 per cent utilisation all the time, and thus you need a modicum of allocate-on-demand) you may need to tweak the figures for one or more VPSs, or even move some to another server; both actions are dead easy and, in fact, you can apply resource changes to multiple machines at once.
Virtuozzo takes an intriguing approach to implementing virtual machines by not emulating a hardware layer and thus keeping performance up.
The drawback is that because each VPS uses the host machine’s kernel, the subset of OSes you can run on a single server is limited to just those that are happy with that kernel. And, of course, you can’t run (say) Windows on a Linux-based VPS, whereas you could (say) run Linux in a Windows Virtual Server VM.
In reality, though, this isn’t a big deal – unless you’re like me and you run shedloads of different OSes in your lab for testing purposes, the chances are you’ll have standardised on one OS vendor anyway.