Published 23 minutes ago
I’m Adam Conway, an Irish technology fanatic with a BSc in Computer Science and I’m XDA’s Lead Technical Editor. My Bachelor’s thesis was conducted on the viability of benchmarking the non-functional elements of Android apps and smartphones such as performance, and I’ve been working in the tech industry in some way or another since 2017.
In my spare time, you’ll probably find me playing Counter-Strike or VALORANT, and you can reach out to me at adam@xda-developers.com, on Twitter as @AdamConwayIE, on Instagram as adamc.99, or u/AdamConwayIE on Reddit.
Sign in to your XDA account
ZFS has…
Published 23 minutes ago
I’m Adam Conway, an Irish technology fanatic with a BSc in Computer Science and I’m XDA’s Lead Technical Editor. My Bachelor’s thesis was conducted on the viability of benchmarking the non-functional elements of Android apps and smartphones such as performance, and I’ve been working in the tech industry in some way or another since 2017.
In my spare time, you’ll probably find me playing Counter-Strike or VALORANT, and you can reach out to me at adam@xda-developers.com, on Twitter as @AdamConwayIE, on Instagram as adamc.99, or u/AdamConwayIE on Reddit.
Sign in to your XDA account
ZFS has earned its reputation the hard way. It’s one of the few filesystems that genuinely delivers on promises like end-to-end data integrity, self-healing, snapshots that don’t feel like a hack, and storage management that actually scales as your system grows. Once you’ve lived with ZFS, it’s hard to go back to traditional RAID and ext4 without feeling like you’ve lost safety nets you didn’t realize you were relying on. ZFS can detect and correct errors that a simple RAID or ext4 setup would never catch, and features like instant snapshots and copy-on-write design make tasks like backups and rollbacks easy to make a habit.
But ZFS also comes with an uncomfortable truth that doesn’t get talked about enough: the filesystem is only as good as the operating system wrapping it. And if you’re running ZFS on a generic Linux distribution, you’re often signing up for more risk, maintenance, and subtle breakage than you expect. ZFS works on Linux, and many use it daily, but it’s not a seamless, built-in part of the kernel. Instead, it’s an add-on with caveats, and setting it up can feel frustratingly difficult.
All of this is to say that ZFS itself is rock solid, but the wrong OS can make your experience far less so.
The problem with ZFS is Oracle
Licensing is a major issue
ZFS was originally developed by Sun Microsystems for Solaris and was open-sourced under the CDDL (Common Development and Distribution License) in 2005. However, when Oracle acquired Sun in 2010, things got complicated. Oracle not only inherited ZFS, but also took a more closed, proprietary stance, ceasing public open-source development of ZFS and keeping further improvements behind closed doors. The company even went so far as to trademark "ZFS" and Linux creator, Linus Torvalds, recommends against using ZFS as a result.
With that said, the open-source community forked the last open code and created the OpenZFS project, ensuring ZFS development could continue outside Oracle’s control. This split means that "Oracle ZFS" and OpenZFS have diverged, and Oracle itself has little involvement with the community now. Oracle has largely disappeared from the open-source ZFS world. To make matters worse, the Linux kernel’s GPLv2 license is legally incompatible with ZFS’s CDDL license, meaning that it can’t be combined with the Linux kernel. Oracle’s licensing is the major bottleneck.
The practical upshot is that any Linux distro that wants ZFS must ship it as a separate component. Some, like Canonical’s Ubuntu, have done so by including OpenZFS packages that users can install, and Ubuntu even offers ZFS as an option for the root filesystem. But even in these cases, ZFS cannot be built directly into the Linux kernel, and it has to be an external module with its own licensing. Think of it as a bolt-on addition rather than a native part of Linux.
In other words, the approach is to essentially have ZFS and the kernel communicate through well-defined APIs as independent pieces, rather than include ZFS itself. This avoids any copyright difficulties, but it means whenever you use ZFS on Linux, you’re effectively running a third-party kernel module that isn’t maintained by the kernel developers. And that’s where the headaches come from.
Running ZFS on Linux can be messy
Dynamic Kernel Module Support (DKMS) introduces its own problems, too
Running ZFS on a vanilla Linux distribution introduces a new layer of responsibility on the user or admin. Because it’s not built-in, the onus of keeping ZFS working smoothly with your system lies largely on you, or the distro’s package maintainers. Most distros rely on DKMS or pre-built kernel modules, and DKMS will compile the ZFS kernel module on your machine for each new kernel version you install. It’s a clever solution to bridge the gap, but it’s not foolproof. If the OpenZFS project hasn’t updated its code to accommodate a change in the Linux kernel, the DKMS build can fail. Alternatively, it can succeed in building a module that doesn’t actually function correctly.
In fact, my recent experience with Rocky Linux on the HL15 Beast is what inspired this article. In attempting to configure ZFS, I discovered that the DKMS kernel module wouldn’t compile, and I couldn’t configure a storage pool that uses it. That’s why many users have to check ZFS compatibiltiy before updating their systems, as otherwise, they risk updating and not being able to access their data until a fix is released.
Even on distributions considered stable, these issues can still appear. If the ZFS DKMS module fails to build during an upgrade (perhaps due to changes in kernel internals or even something simple like missing compiler tools), you might not notice immediately. Instead, you’ll likely be surprised after rebooting when ZFS suddenly isn’t available. I even came across one user who could only get it work after uninstalling and reinstalling the ZFS DKMS, which isn’t exactly an ideal situation to be in if you rely on accessing that data reliably. Plus, Secure Boot adds more problems on top of that. You’ll either need to manage your own signing keys or just go without it.
The fundamental problem is that unless your OS vendor coordinates ZFS updates with kernel updates, the burden falls on you to keep things in sync. Even the DKMS automation can’t save you if the ZFS code simply doesn’t support a new kernel, and in those cases, the build will fail or the module will be unstable.
Plus, a lack of native integration means the OS might not automatically do things that are routine in ZFS-centric systems. ZFS benefits from periodic scrubbing, which is a maintenance task that checks all data against checksums, alongside monitoring of drive health. On a typical Linux install, you’ll have to set up your own cron jobs or systemd timers for zpool scrub, and you may need to automate SMART tests on top of that. Even when it comes to error reporting, you may need to configure it yourself, unless you’re using a distro geared for ZFS in the first place. This requires configuring the ZFS Event Daemon so that errors and logs can be sent to the system journal.
None of this is to say that ZFS on Linux is unusable; in fact, far from it. Many individuals run it successfully on Ubuntu, Debian, and other distributions, but it does mean that if you take the DIY route, you should be ready to commi to an extra bit of legwork and vigilance. Upgrading the kernel won’t be as carefree as you’re used to, for example, and you’ll need to keep an eye on what users say when they upgrade. Even then, you likely need to accept that an upgrade will require some fixing on your part to keep things running smoothly.
There are ways to use ZFS on Linux with ease
Some distros support it natively
So how do you get the benefits of ZFS without the headache of kernels? The answer is to use a distro that cares about integrating and maintaining ZFS support. There are a few different operating systems out there that bundle the support and, more or less, handle the headaches for you, such as TrueNAS and Proxmox. These aren’t the only options, of course, but they’re two great examples.
TrueNAS implements OpenZFS on Linux, in the same way that other distros can use it, but the team behind it curates the updates and ensures continued compatibility. This means that it takes full advantage of what ZFS can do, with a web UI that exposes almost every ZFS feature like pool creation, dataset management, snapshots, replication, scrubs, and more. It also schedules maintenance tasks automatically, and turns ZFS into an every-day experience without needing to jump through any hoops. The kernel version and ZFS version in each release are compatible and tested together, and as a user, you apply a TrueNAS update and get both a new kernel (if needed) and the corresponding ZFS module in one shot. This means that TrueNAS users rarely, if ever, have to worry about ZFS kernel module breakage.
Meanwhile, the Debian-based hypervisor Proxmox does things similarly from a user point of view. Proxmox lets you install the host with ZFS (and even supports ZFS on root) and allows the user to create storage pools for VMs and containers. The Proxmox team packages ZFS in a way that you never have to compile it yourself, or even be aware of its Linux-based drawbacks. The team builds and ships binary ZFS kernel modules that match their custom kernel. In fact, the Proxmox kernel already includes the ZFS driver (as a module) in its package, and there’s no DKMS to speak of. Proxmox doesn’t provide the same level of granular ZFS control over its web UI that TrueNAS does, but it’s pretty close. ZFS is still treated as a core component.
Beyond TrueNAS and Proxmox, there are other ZFS-friendly platforms. Ubuntu, for example, ships ZFS modules in its repositories and tends to keep an eye on ZFS compatibility, especially in its LTS releases. You still have to live with clicking the pieces together yourself, but it mostly just works.
ZFS is a fantastic piece of technology, but it needs an environment that actually suits it. You can run ZFS on any Linux distribution today, but how easy that is depends on the one you choose. In some cases, you’re effectively becoming part of the ZFS-on-Linux QA team with each update, or waiting for others to make that jump for you.
The safer route, especially for critical data, is to use a platform where the maintainers have done that integration work for you, where that may be a NAS-oriented system like TrueNAS, a virtualization platform like Proxmox VE, or a vendor-supported Linux distribution that includes ZFS. These make it possible to enjoy ZFS and its incredible features, like data integrity, snapshots, cloning, compression, and more, without needing to figure out whether an update will break your ZFS install before installing it... or worse, like putting you in a position where you’re waiting on a fix.