Filip Chabik

DevOps Engineer, Husband & Dad.

Setup a Three Node Replicated GlusterFS Cluster on FreeBSD →

Daniel Morante writes on Unibia:

GlusterFS (GFS) is the open source equivalent to Microsoft’s Distributed Filesystem (DFS). It’s a service that replicates the contents of a filesystem in real time from one server to another. Clients connect to any server and changes made to a file will replicate automatically. It’s similar to something like rsync or syncthing, but much more automatic and transparent. A FreeBSD port has been available since v3.4, and (as of this post) is currently at version 8.0 with 9.0 being released soon.

Full disclosure: I never heard of DFS 🤷🏻‍♂️ When it comes to clustered systems, Microsoft definitely wouldn’t be my first choice. I did however work with AIX GPFS and also with VxFS on multiple platoforms, including Solaris and Linux. There’s also of course cLVM, its implementation on AIX via HACMP and Linux has got something too. I did play with GlusterFS in production for the first time in ~2014 – it was not great. There were many broken parts and some of the things were not really self-contained and relied on userland tools like rsync to be supported and in the right versions. But it did leap forward, eventually stabilized and became, well, to me at least, a golden standard for clustered filesystems on Linux. I’m really happy to see that there is an attempt to get it ported to FreeBSD – it seems to me that it has the potential to combine excellent ZFS baking in this OS with the distributed capabilities as a cherry on top of it.

GlusterFS on FreeBSD is not yet what I would call production quality. There are a few know bugs and performance problems that could ruin your day. The most notable is the fact that GlusterFS uses poll instead of kqueue/kevent. There is also an issue where GlusterFS is (sometimes) unable to correctly find the process ID of the self-heal daemon, causing volume heal commands to fail[…] Other annoyances include the fact that there are still some Linuxisms within the codebase and testing framework. This means GlusterFS might make some Linux specific system calls or look for certain files to be in unexpected locations.

I get it, it’s not there yet, but from the looks of it, it seems that there’s not a lot missing. I’m gonna keep my eye on and fingers crossed for this one 🤞🏻 In the meantime, the linked post is a great introduction not only to GlusterFS, but also to bhyve.

Project 366 Summary

3rd February 2021

I learned about Project 365 from this post by Joe Hribar. By the end of 2019 I decided to give it a shot myself for 2020 – little did I know how difficult of a year it’s going to be. It was also a leap year, so my Project 365 became Project 366.

Cracks are showing in Enterprise Open Source's foundations →

Jeff Geerling, writes on his blog:

Anyways, there’s more nuance to the entire debacle, but the main thing this points to is the fact that while increasing revenue via licensing might not be the only motive Red Hat had in this move, it was certainly a major factor. And the downfall of Scientific Linux and CentOS makes those who’ve built their careers or companies around Red Hat compatibility without paying the subscription fees nervous.

I was quite surprised when Red Hat “adopted” CentOS – it seemed to me that they were always hostile and against the latter to really succeed as it was, well, not ideal for their business model. But Red Hat did (and still does) so many good things for the open source community in general and GNU/Linux specifically that it was fine to turn a blind eye. Personally I couldn’t care less, Red Hat or its derivatives was never my first choice and my go-to distribution. Regardless of this all, after acquistion by IBM, I lost hope that there will be anything good coming out of it as a result. I worked for IBM and, pretty much, owe to them my entire career. But I also know that the technical and enterprise/business side of this company are two different worlds – quite often opposed to each other.

Well, Elastic dealt with it by switching to a new license, which many in the FOSS, or Free and Open Source Software Community, have decried as not being truly open source.

Didn’t this entire relicensing drama start with MongoDB? Or was it Redis? Or all of these? Does any of this actually matter? The point is that the large-scale cloud providers and AWS especially are breaking their part of the deal. The real problem though is different: there is no deal. There never was one. Either you are open source and free and you allow for a free ride or you are not and you don’t. That’s it. Relicensing and trying to play the open source card is simply dishonest, even if it’s only to help with the business side of things – and believe me, I’m first in line to cheer for open source success.

PPAs Updates →

bpftrace 0.11.4, bpfcc 0.18.0 with libbpf 0.3.0 for bionic, focal & groovy are now available from my PPA. It’s been a while since the last update, so here’s how to add it:

sudo add-apt-repository ppa:hadret/bpftrace
sudo apt-get update
sudo apt-get install bpftrace bpfcc

I finally moved both builds to git-based workflow so updates should be easier and faster on the way forward.

NGINX Extended Mainline →

In the last update I mentioned support for the mainline branch of NGINX. It’s been a rather flawless run till version 1.19.6 came along, touched upstreams configuration and broke a lot of third-party modules available in my Extended edition. At this point it’s hard for me to estimate how much effort it will be to bring it back to working state, so version 1.19.5 will stay in the PPA as the latest available for now. I’ll push an update regarding this topic in the upcoming future so be sure to follow me on Twitter.

Bastille 0.8.20210101 →

I like FreeBSD’s container implementation with jails. It’s one of these clean, solid solutions that simply work for years now and for many more to come. That said, there’s always space for improvement and this case is not any different. I started with iocage as it simplified a lot of headaches with base jails and VNET setup I had in the past. There are other solutions out there though that I keep an eye on – bastille and pot in particular. The latter seems to be relatively new kid on the block, but it already provides unique feature with support for nomad. The former is pushing in the direction I really like.

From the new features I’m mostly excited of is definitely support of the CURRENT jails. Granted, the host must be on the same or newer version but it’s still there – I had to do a lot of juggling with iocage to make it fly, whereas here, it just works. I think it’s safe to say that with the current templates implementation and template arguments (within Bastillefile) are making Bastille the closest thing to Docker in the FreeBSD world.