We currently use Xen as our virtualization technology. To put it simply, Virtuozzo (or the open source version OpenVZ) is one level above chrooting or BSD jail. Yes, Virtuozzo has much less overhead per VPS instance and has some performance advantages, but at a cost of isolation and reliability. Virtuozzo uses OS level virtualization, while Xen uses paravirtualization.
When evaluating the different virtualization technologies we had very specific requirements. We wanted virtualization technology that allowed for:
- dedicated server like isolation.
- customizations to the installed operating system (i.e. kernel, iptables, etc.) just like a dedicated server.
- proven deployment.
- cannot oversell services (ensuring a specific level of quality of service).
- complete separation of each operating system installation.
The differences with Virtuozzo and Xen are:
- fixed memory and disk definitions.
- custom kernels.
- firewall configuration.
For our purposes Xen acts, breaths, and looks like a dedicated server.
Fixed Memory and Disk Definitions
In Xen’s current form, memory cannot be oversold. If the node only has 16 GB of ram, it means only 16 GB of ram can be allocated to all VPS instances. Virtuozzo offers bustable memory, whereas Xen has hard, fixed caps. Burstable memory is great if you have control over all of the VPSes (everyone is friendly), but when you have a diverse environment, we prefer hard memory caps (you’re guaranteed by the technology that you actually get what you pay for).
With Xen, like a real server, you get a specific amount of memory and swap space. This allows the operating system handle memory and swap to disk as needed. Memory on Virtuozzo is a much muddled situation. To the VPS instance, it all appears to be memory, when in fact it’s not. With Virtuozzo, It’s not uncommon for services to just die because no memory is available. Depending upon the provider, memory can be oversold and performance is then no better than shared hosting setups. Currently with Xen there is no way for us to do this and therefore you know that what you pay for is exactly what you are getting.
Firewall configuration with Virtuozzo is very limited and you do not have access to the full iptables setup. This means there are many hoops you must go through to firewall your VPS instance. Most Virtuozzo providers configure their setup to have the node control the firewall configuration.
Xen allows for custom kernels. Each VPS instance can be unique. Need a special module, or custom kernel? With Virtuozzo, since the virtualization uses the same kernel for all VPS instances, you can’t do this. With Xen, each virtual server has a separate kernel and allows for increased security.
This is an area that is typically more anecdotal than “hard facts,” and is always up for debate by both sides. While the Virtuozzo crowd states their virtualization technology performs better, the tests I’ve seen are not real world situations. The simple fact is that I’ve never heard of a Xen node getting overwhelmed and bringing down the other instances. With Virtuozzo we’ve seen this happen a lot and it is primarily because of two factors:
- Oversold memory and bustable memory.
- Hypervisor scheduler. While Xen’s scheduler options are much more limited, it works and works well.
In our case we’ve had many times where we’ve seen a specific VPS instance running at 100% CPU usage and high disk IO without the other VPS instances even missing a beat. With Virtuozzo it is assumed each VPS will play well with others and this simply is not always the case. The biggest limitation with Xen is it’s disk IO scheduler. The IO scheduler is somewhat simplistic, but does have the benefit that you can control unruly virtual servers and prevent them from affecting the other servers.
If you are looking for “dedicated-like” performance, customization, isolation and security, Xen is a perfect fit. With our managed virtual servers, it’s like getting a dedicated server for a fraction of the cost!
Also keep in mind that while we currently use Xen we are not married to it. We are always looking at the other virtualization technologies. With the recent announcement from Red Hat, KVM definitely has a chance. The way our cloud infrastructure is designed, the VM manager really doesn’t matter. In the end, what matters to us and our customers is running what works and is stable, secure and provides the best isolation. For now, Xen is that perfect fit, while Virtuozzo is simply not as robust.