Pondering a Switch

It’s no secret that I’m an open source nut. I love Linux, and use it exclusively as my desktop operating system, and my server operating systems.

The great thing about open source is the choice. There are choices for operating systems, choice for web browsers, choices for timers, choices for pretty much any type of software you need! I’m thinking more about the first choice though.

I’m thinking of FreeBSD for my servers.

Don’t get me wrong! I have been using CentOS since version 4, and have had Debian and Ubuntu servers before (but they never lasted that long before the switch back to CentOS). I love the way SELinux is integrated, and always ignored the “disable SELinux” part of any documentation I used to help learn a new aspect of the operating system (seriously, never disable SELinux).

But, I’ve been learning a lot about FreeBSD over the past few years, and have even setup a couple storage appliances (for fun mainly) using FreeBSD 10.1 (at the time) and recently FreeBSD 11. It’s a great operating system. Works extremely well, and I haven’t found much of a learning curve compared to CentOS for my storage needs (ZFS on both may have helped), but haven’t tried replacing my home server with it before. My wife would kill me if she loses access to her photos, music and movies that I have stored on CentOS 7 right now, so I haven’t made the jump.

But now, I’m tempted. Let me explain.

I’ve been using Docker containers to run some software on my CentOS rig. Mainly Emby (don’t trust anything that connects outside of the home), a transmission torrent daemon (serving mostly ISO’s of operating systems, including CentOS and FreeBSD), and MPD for streaming music anywhere in the house (that’s another post, if anyone wants it). Docker is great, and works very well for what it is.

But Docker containers aren’t FreeBSD jails.

Jails separates the things so much better then Docker does, in what I have tested. It has the ability to completely separate the host system from the jails, and give access only to what it needs, during creation or after creation. Docker makes you define all that up front, which makes it a pain to limit it. For instance, my Emby server is limited to 1GB of memory, my transmission container is set to 1GB of memory, and my MPD container is limited to 1GB of memory. The reason they are all 1GB? I had to set it at container creation, and wanted to make sure things would run smoothly.

Jails on the other hand can have their limits modified during runtime with the rctl command, which means I can play with resource limits without having to shut down the jails all the time!

Jails aren’t the only reason though. The other reason is native ZFS support. While you can use ZFS on CentOS, thanks the the zfsonlinux project, and open-zfs, you can never be sure when a system update will break your ZFS install and require a great deal of manual intervention. That was the case with CentOS 7.4 release. ZFS broke, which means my data wasn’t accessible (music, pictures and movies) while I was fixing the issue. 3 reboots later and it was back to normal, but still, it was a pain in the ass when I have other things I need to do.

I’m still experimenting, and haven’t made a hard decision yet, which is partly why I wrote this post. I need help with the pros and cons. Please leave me a message and give me your opinion.