I'm building a server for virtualization for a non profit organization. I was planning on employing VMware ESXI free but I'm second guessing my plan because newer ESXI don't seem to be well supported by the vSphere Client and the web interface which is supposed to be used instead, is not free.

On the hardware we are limited to just one server right now. It's probably going to be an Xeon E5-1650 v3 (6x 3.5 Ghz) on a Supermicro X10SRH-CLN4F-O with 32 GB RAM and 2x 256 GB SSDs and 2x 1TB HDDs for storage. The board has an onboard LSI SAS 3008 controller that is supposed to be working with ESXI.

We are planning to use the server for accouting (WS 2012 R2), pfsense (vpn / routing) and about two linux VMs for our internal database applications, mail (zarafa), active directory (samba 4) and file and printer server.

Would I be better off using XenServer or KVM? On the plus side for XenServer is that it is completely free for me (same as KVM) but has a very good management interface which is kind of lacking for KVM. But on the negative side is the lack for good support for local storage. I wanted to offer raw SSD storage to my VMs for the database (accouting and internal tools - which are the most heavily used), but that seems to be unsupported with XenServer. KVM on the other side seems to support it, but I have bad memories regarding KVM and Windows Server having a really bad performance.

Points that are important for me

  • Performance
  • Ease of use (like a decent UI for basic tasks, manuals and a good community to ask questions)
  • Backup facilities (as there is only one server no migration at the moment, but snapshots and backups of the VMs to transfer them manually onto a new server are required)
  • Reliability
  • Free of charge

Solution 1:

If you are running server 2012 then you already have access to hyper-v. The free hyper-v should serve your needs, you can run the GUI from any client or the 2012 server. This would also get you shared nothing migrations if you can't afford a san.

http://blogs.technet.com/b/keithmayer/archive/2012/09/07/getting-started-with-hyper-v-server-2012-hyperv-virtualization-itpro.aspx

Solution 2:

You can use VMware ESXi for free... You don't necessarily need to use the web interface, and the product works very well with the thick client.

Or better, buy a vSphere Essentials license ($500) and have the ability to manage up to 3 host servers. This will give you vCenter capabilities and the Web interface if you wish to utilize it. Either way, the cost is extremely low for a well-supported product with great mindshare and community.


In general, I think you should separate roles/functions. I'm not certain why so many people try to integrate firewalling and routing into their hypervisor. Get a dedicated appliance (Cisco ASA or even purpose-built pfsense hardware).

If you're using Windows server for the accounting application, you can go the extra step and also use Windows for Active Directory. Substituting Samba in place for it is a fraught choice.

Use a hardware RAID controller if you use VMware.

Xen is dead in the SMB space and Enterpise, and not a viable choice for new deployments. KVM is okay, depending on the approach, but there's nothing wrong with ESXi at this scale. Hyper-V can be an option as well.

Solution 3:

Use proxmox, an hypervisor based on KVM (other containers types also supported) all integrated via a web interface. We use this on dell rack servers and it is just perfect for small companies. You can also buy paid support.

Note that Proxmox is based on RedHat long-term support kernels, which is synonym for stability and good driver support for servers.

You can also make your servers redundant later when you will have money for another server.

NB: When using Windows based guests, be sure to use RedHat paravirtualized drivers. For recent flavors of windows, you also need to tune your cpu settings, since KVM/QEmu performs better when using cpu mode : host instead of kvm64

Solution 4:

I can't say how well Windows works with KVM, but I think it's worth testing. There are PV drivers available for Windows. It wouldn't be so bad to setup a VM and run some benchmarks.

KVM is nice because it's built into the kernel, unlike Xen. Performance is about the same. I find it easy to use via libvirt and the "Virtual Machine Manager" GUI. It can provide direct disk access if needed. I don't think it will go away any time soon, so you can count on future support. And best of all, it's free and always will be!

My experience with Linux VMs is that they perform very well and reliably, on busy servers.

Every time I've had trouble with Xen, I've had a terrible time getting help.

You can put the VM storage onto LVM or ZFS volumes to allow for snapshots without sacrificing performance.

Solution 5:

As others already suggested, if you already have a Windows Server license, you thus have an enterprise-grade virtualization platform in your possession. If it is a Standard edition, then you can use it this way:

(1) install one instance of Windows Server on a physical server with up to two physical sockets (number of cores doesn't matter, matter processor sockets, so your server qualifies), this is called "virtualization host"; you can not install any other so-called "roles" (DNS, DHCP etc.) of the OS except the Hyper-V role on this instance.

(2) you can install up to two instances of "guest" Windows Server operating systems inside your "host" system. Install any roles you want on these instances.

(3) install any number of Linux guests inside your Hyper-V host; that is, the number of virtual machines is not limited by the licensing restrictions, only the number of Windows guests is limited.

As to the free Hyper-V server, it has been cumbersome to manage it in a non-domain (that is, workgroup) environment, so you would need another full-featured Windows Server (at least two, actually) serving as (a) domain controller(s) to manage your Windows-based hosts, including those with the free Hyper-V Server installed.

Do not forget to consider Storage Pools, a RAID-like software technology built into newest Windows versions. It can give amazing performance even on traditional HDDs. Using direct disk access for virtual machines is not that necessary, nor recommended.

As to the Linux guest support, it has been significantly improved in the latest versions of Hyper-V, but still there is room for improvement; there are multiple articles from Microsoft on how to configure Linux guests in Hyper-V.

  • EDIT (in response to the comment below):

No, I meant "normal" Windows Server 2012 R2 – either Standard or Enterprise (they differ mainly in licensing – Enterprise doesn't limit Windows Server guest instances, Standard limits them to two, but you can install more guests having additional licenses; I suppose you have Standard edition).

When I started using Windows Hyper-V Server (which was free from the beginning) it was 2008 version, then 2008 R2, and this was cumbersome in a workgroup, although not impossible. I simply don't know if things have changed with newer versions of the free Hyper-V (because currently we run Standard edition), but I suspect they have not. To form up the picture, look here: http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/11/11/configuring-remote-management-of-hyper-v-server-in-a-workgroup.aspx and here: http://blogs.technet.com/b/jhoward/archive/2008/11/14/configure-hyper-v-remote-management-in-seconds.aspx and google for 'hyper-v workgroup' to find more.

So, just install your full-featured Windows Server 2012 R2 on your hardware (Tip: don't enter the product key when installing, you will be able to activate your installation later; first test the configuration, then activate it, if satisfied); install drivers, configure network, storage (explore Storage Pools); then install just the Hyper-V role. This role by default also installs management tools, i.e. Hyper-V Manager – use it to create and configure virtual machines. You can install two instances of Windows Server 2012 R2 as guest systems (they will also require activation). For example, configure one instance as an infrastructure server (DNS, DHCP, even DC) and use the second to host your Windows application which you mentioned. Then add *nix virtual machines; read this article: https://technet.microsoft.com/en-us/library/dn531030.aspx and use Google for more information.

This configuration is actually a workgroup configuration too, because there is no domain controller or at least the Hyper-V host is not joined to a domain. But this does not matter because now you have management tools installed locally on the virtualization host; you will also be able to connect from your workstation by RDP and thus use Hyper-V manager kinda remotely. But if you try to install Remote Server Administration Tools for Windows 8.1 https://www.microsoft.com/en-US/download/details.aspx?id=39296 on your workstation, you will face the same problem as with the free Hyper-V. So the point is this: free Hyper-V does not have local GUI and requires purely remote management, which is difficult to configure in a workgroup; in contrast, full-featured Windows Server 2012 R2 permits you to easily manage your Hyper-V role simply because there is a GUI installed locally and accessible both locally and remotely – via RDP (it's also possible to install some sort of VNC).

To complete the picture: although free Hyper-V doesn't have its own GUI (all it has is an empty desktop with command-line windows and restricted text-based management tools) there are 3d-party tools, including free versions, that permit you to simulate full-featured Hyper-V host, for example: http://www.5nine.com/5nine-manager-for-hyper-v-free.aspx But the initial configuration (network settings, enabling RDP) still needs to be done manually. You will also have difficulties dealing with uninstalling programs (no Control Panel), Windows Updates, etc...