I’d like to start with the preface; I have been a Hyper-V advocate/evangelist since 2008R2. In my main job, all of our infrastructure runs on Hyper-V server 2016, we’re a full Microsoft stack house, IIS, SQL Server, AD the whole whack. I have been drinking the windows koolaid since I started my IT career. Until very recently it had been my experience that open-source did great on the web, and that’s where it stayed for me, my clients, and my company.
In my testing/toying with XCP-ng, I am finding it very difficult to make a strong case for choosing Hyper-V over XCP-ng. In some ways they have feature parity, in others I’m finding XCP-ng to be superior.
How did we get here?
It started with a video from Lawrence Systems / PC Pickup. From my understanding, they are an IT consultancy in the Detroit area and their technical skillset focuses strongly on open source deployments for core infrastructure (think pfSense, freenas, etc.).
Unsurprisingly they have several videos and tutorials evangelizing XCP-ng and made a compelling enough case for me to deploy it on my homelab blow-up/tear-down/testing cluster.
Unlike some linux based installers, XCP-ng has a very minimal, easy to understand and well documented install process. For me it was a matter of pushing enter a few times and letting it do it’s thing.
Lower OS Overhead
This, honestly was expected but because XCP-ng is linux based the core os runs very lean. Hyper-V suggests a minimum of 4GB RAM for the host, and then whatever else you’d want to allocate for the guests. XCP-ng suggests a minimum of 2GB per host, but in my uses I’ve never seen it use more than 700mb.
In Hyper-V you basically need a Windows 10 client with RSAT tools and joined to the same domain as your host to manage your hosts remotely. I understand that it is technically possible to do this without joining a domain but it’s not practically sound or really scaleable.
With XCP-ng I was able to manage the hosts individually or together in a single interface using a tool that is packaged with the hyper visor called “XCP-ng Center” similar to Citrix’s Xen Center. This tool allows for individual user logins, per host, independent of your local machines credentials.
Additionally you can install a wonderful open source tool from the maintainers of XCP-ng called Xen Orchestra. You can either try the paid, pre compiled appliance by running a few shell commands on a XCP-ng host of your choice, downloading it and importing it via XCP-ng Center, or compiling it from source on your own for a Libre experience. Deploying XO is really where a XCP-ng deployment starts to shine, you can think of it as a similar appliance like the Unifi Controller software, it allows for centralized, web based management of all of your hosts, and a ton more features for your private cloud like user-based resource allocation, allowing users to self service deploy VMs on your hosts without IT intervention.
Initially I deployed it using local SR’s. After I got comfortable using XenMotion and some of the other features, I wanted to start using XCP-ng’s version of clustering, “pooling”. To do this you need shared storage between all of your hosts, and this is where another very delightful discovery was made for me.
XCP-ng supports using SMB shares as SR’s for VDIs. I.E. You can use any typical SMB fileserver as shared storage between hosts. I understand that there are much more performant file systems for this, but the availability of this feature makes XCP-ng almost a no-brainer for home labbers. Of course XCP-ng supports NFS and ISCSI for shared storage like you’d expect to for an actual production environment.
I think in short, XCP-ng has really changed the way I look at my current virtualization deployments, and moving forward with smaller clients I think I’m going to run XCP-ng instead of hyper-v purely for the web management availability and lower overhead.
I want to deploy it on my core setup here at work, but we already have existing infrastructure to support Hyper-V and I can’t really validate making a change for change’s sake…yet.