Goodbye XenSever - Hello XCP-ng

In 2018 I set out to replace our XenSever 7.2 based virtualisation after Citrix essentially screwed over free / open source users. This project was to directly replace XenServer 7.2 with something supported and manageable for our traditional virtualisation needs. High Level Selection Considerations I evaluated a number of options, with the primary candidates below. Key criteria (at a high level) I was evaluating: Ease of moving from our existing XenServer 7.2 based hypervisor clusters. Security (architecture, hardening, monitoring, logging). Cost (both licensing if any and self-support / management costs). VM Performance (Storage IOPs and throughput, Network latency and throughput, Processing latency, steal from over-provisioned workloads). Management UI/UX and performance (for BAU activities). Management / Cluster SPOFs, fail-over and redundancy. Installation and upgrade process. Update and security patching frequency. Networking design and complexity. Community (size, engagement, acceptance of suggestions / MRs). Reliable live VM migrations. Ease of management for a small team (Part of a low TCO). Risk of vendor and technology lock-in. Risk of survival (will it still be well maintained over the next 1-3 years). Stability and reliability above practically all else. XenServer 7.6 (w/ Paid License) For Potentially priority support from Citrix for issues. Easy upgrade from 7.2. Fresh installs and upgrades are simple, painless and easy to pxeboot, licensing can be a pain after install however. Against Slow moving development. Incredibly expensive, it would cost us something like $140,800 AUD per year (shelf price) for our 32 hosts (each with 2 sockets). Features heavily restricted by licensing model. Mostly older-fashioned enterprise users. No web management interface (although you can use Xen Orchestra from the folks behind XCP-ng). Diminishing community since XenServer licensing changes in 7.3. Poor storage performance compared to KVM based solutions. Many outdated packages, while kind of based on CentOS 7, there are a great deal of packages from older releases or completely custom rebuilt. Uses old technologies like EXT3 and doesn’t support SSD/Flash TRIM/DISCARD functions. SELinux not enforcing or supported. OpenvSwitch still uses a lot of Dom0 CPU (same as XenServer). Dom0 often ends up limiting VM storage operations (tapdisk maxing out Dom0 CPU). Applying updates can be painful or at least slow, requiring binary ISO files to be downloaded from Citrix. Uses Jira for bug tracking (I just can’t stand the thing, it’s painfully laggy, give my GitLab or Github over it any day). XCP-ng XCP-ng is a relatively recent fork from XenServer after it was open sourced, tracking upstream but clearly prioritising modernisation and community. ...

February 5, 2019 · 8 min · 1550 words · Sam McLeod

Run youtube-dl (or similar) in the background

I wanted an alias or function to use youtube-dl in the background. Looking around the web lots of people seemed to want this and most of them were banging their heads against a wall due to: A) bash quoting B) backgrounding dying when their terminal closed C) passing the argument (url in my case) to the function Here’s a simple function I whipped up that seems to ‘just works’™: function yt { nohup youtube-dl "$1" --no-progress 2>&1 > youtube-dl-"$(date +%Y%m%d-%H%M%S)".log & } And if you don’t want logs, simply send the output to /dev/null: ...

July 30, 2018 · 2 min · 231 words · Sam McLeod

Disabling scroll-wheel zoom in Firefox

This feature annoys me endlessly, I end up zoomed in and out of websites all over the internet. … But the fix is easy and there’s no addons required. Navigate to about:config (in Firefox’s URL bar) Change the value of the following two properties to 0: mousewheel.with_control.action mousewheel.with_meta.action If you use Firefox sync and want these settings to sync between your machines, also add the following properties: Create two new properties both of type boolean and set them to true: ...

July 16, 2018 · 1 min · 83 words · Sam McLeod

Flash Storage and SSD Failure Rate Update (March 2018)

It was almost 3 years ago that my open source storage project went into production. In that time it’s been running 24/7 serving as highly available solid state storage for hundreds of VMs and several virtualisation clusters across our two main sites. I’m happy to report that the clusters have been operating very successfully since their conception. Since moving away from proprietary ‘black box’ vendor SANs, we haven’t had a single SAN issue, storage outage. ...

March 20, 2018 · 2 min · 326 words · Sam McLeod

HP 4951C Protocol Analyser

My good friend Joel Shea received a most unlikely gift this Christmas - A vintage HP 4951 Protocol Analyser. According to the HP Computer Museum: Original Price: $3595 The 4951B was replaced by the 4951C and 4952A in 1986. Both new models handled Async, BSC, SDLC, HDLC, X.25 and SNA protocols. The 4951C also handled DDCMP, while the 4952A did not. The 4952A handled X.21 while the 4951C did not. Both new analysers used a floppy dive (618 KB) for removable media. ...

December 27, 2017 · 1 min · 91 words · Sam McLeod

Talk - Clustered, Distributed File and Volume Storage with GlusterFS

Using GlusterFS to provide volume storage to Kubernetes as a replacement for our existing file and static content hosting. This talk was given at Infracoders on Tuesday 14th November 2017. NOTE: Below link to slides currently broken - will fix soon! (03/08/2019) Click below to view slides (PDF version): Direct download link

November 14, 2017 · 1 min · 52 words · Sam McLeod

Applying syntax in Sublime based on the first file line

In vim, you can add a comment at the top of files to set the syntax, e.g.: # vim: syntax=ruby In SublimeText there are many ways to detect syntax, one interesting approach I’ve recently found useful is to match on the top line in the file. For example, with Puppet there is a file called Puppetfile, it has no extension but it’s really Ruby syntax, so it’s useful to add linting incase you miss something simple like a , and break deployments. ...

October 25, 2017 · 1 min · 162 words · Sam McLeod

Broadcom, Or How I Learned To Start Worrying And Drop The Packet

Earlier this week we started the process to upgrade one of our hypervisor compute clusters when we encountered a rather painful bug with HP’s Broadcom NIC chipsets. We were part way through a routine rolling pool upgrade of our hypervisor (XenServer) cluster when we observed unexpected and intermittent loss of connectivity between several VMs, then entire XenServer hosts. The problems appeared to impact hosts that hadn’t yet upgraded to XenServer 7.2. We now attribute this to a symptom of extreme packet loss between the hosts in the pool and thanks to buggy firmware from Broadcom and HP. ...

October 13, 2017 · 6 min · 1240 words · Sam McLeod

GlusterFS

We’re in the process of shifting from using our custom ‘glue’ for orchestrating Docker deployments to Kubernetes, When we first deployed Docker to replace LXC and our legacy Puppet-heavy application configuration and deployment systems there really wasn’t any existing tool to manage this, thus we rolled our own, mainly a few Ruby scripts combined with a Puppet / Hiera / Mcollective driven workflow. The main objective is to replace our legacy NFS file servers used to host uploads / attachments and static files for our web applications, while NFS(v4) performance is adequate, it is a clear single point of failure and of course, there are the age old stale mount problems should network interruptions occur. ...

September 25, 2017 · 6 min · 1106 words · Sam McLeod

Return Of The RSS

Of all the tools for reading news and subscribing to software releases, I still find RSS the most useful. I use Feedly to manage my rss subscriptions and keep all my devices in sync, but instead of using the Feedly’s own client, I use an app called Reeder as the client / reader itself. Link: My Feedly RSS Feed Feedly RSS feed subscription management Features: Keyword alerts. Browser plugins to subscribe to (current) url. Notation and highlighting support (a bit like Evernote). Search and filtering across large numbers of feeds / content. IFTTT, Zapier, Buffer and Hootsuite integration. Built in save / share functionality (that I only use when I’m on the website). Backup feeds to Dropbox. Very fast, regardless of the fact that I’m in Australia - which often impacts the performance of apps / sites that tend to be hosted on AWS in the US as the latency is so high. Article de-duplication is currently being developed I believe, so I’m looking forward to that! Easy manual import, export and backup (no vendor lock-in is important to me). Public sharing of your Feedly feeds (we’re getting very meta here!). Reeder A (really) beautiful and fast iOS / macOS client ...

September 22, 2017 · 2 min · 283 words · Sam McLeod