ZFS on older hardware

What is the oldest / least powerful hardware that is practical to run ZFS on? I am looking to build a basic NAS to serve as an offsite backup target (that I would deploy in a family member’s basement). But there is no way that I can afford the components to build a new, 2026-vintage box - not at today’s prices. So I am wondering if I could re-purpose one of the machines that I built 5-10 years ago that are gathering dust in my basement.

What would be regarded as minimal in terms of CPU generation, amount of RAM, etc?

Thanks

If you can install a modern version of Linux or FreeBSD on it, it’s modern enough for ZFS. Any x86_64 CPU I’m aware of is fine. I’ve very happily run ZFS even on the old AMD Kabini tinkertoy CPUs.

I’d recommend a minimum 4GiB total system RAM for a system running ZFS, with expectation that 2GiB of it will be available for the ARC. You can run with less RAM, and you can manually configure the ARC max to less than half the physical RAM in the system, but you’ll start seeing decreased performance if you do.

If the decreased performance doesn’t bother you, then that’s not a problem either.

As a data point, I’m happily using zfs on headless core2duo machines with 4gig of ram. Go for it, you’ll be surprised.

Thanks very much. The machine I am looking at is one I built in 2014 with an AMD FX-4130 CPU, ASUS M5A78L-M/USB3 Socket AM3+ motherboard, and 6 GB DDR3 RAM. Based on what you are saying, it should be fine (though certainly no barn-burner).

Looks like a no-brainer, yeah.

I used an AMD A4-5050 (Kabini) CPU in a microbudget KVM host, running a single Windows 10 virtual machine, using ZFS (with LZ4 compression) as the underlying storage for several years, QUITE happily, to support my local barbershop (which ran their niche business application on that Windows 10 VM as a “server”).

Here’s the comparison between that A4-5050 and your FX-4130:

TL;DR your FX-4130, as antiquated as it is, is way brawnier than my little Kabini was. And you’re not even asking about running Windows in a VM on top of it! :slight_smile:

As a small word of caution: some of the newest Linux distributions (notably clones of RHEL 10) now target x86-64-v3 and you have a x86-64-v2 CPU. FreeBSD, Debian and Ubuntu still target x86-64-v1, and I believe Fedora targets x86-64-v2.

I hope I can rely on Ubuntu LTS to stay on x86-64-v1 or -v2 for a good long while. Ubuntu server is my OS of choice (for servers, at least) precisely because of its ZFS support.

I have to admit that this is the first that I have heard of the x86-64-v1, -v2, -v3 distinction. Can anyone point me to a good, concise discussion of what this means?

Wikipedia has a good summary of them; the ‘versions’ represent sets of microarchitectural changes over the years. This is useful so that compilers can safely target various CPU instructions across a wide range of processors.

You will probably be fine for a good while; in a professional context I’ve hit issues with the v3 baseline being too new for some older systems.

I have run TrueNAS on a 2-core celeron and got great performance.

IMO the key things you need are:

  1. Enough memory to run all services and still have a decent sized ARC.
  2. Enough SATA ports for your needs.

Agreed on both counts, with a follow-up note: TrueNAS requires significantly more RAM to operate well than a vanilla ZFS system does. I don’t think that’s a result of its… uniquely blended…? ZFS stack itself; I think the webGUI itself is just surprisingly hungry.

But I’ve definitely observed TrueNAS systems still bogging down on well more than enough RAM for a simple Samba + sFTP + OpenZFS combo on vanilla FreeBSD or Ubuntu, so that’s something to keep in mind if you need to run really lean.

IIRC TrueNAS uses c. 3-4GB for itself, and I with a total of 10GB I had c. 5-6GB for ARC which for my use case gave me a 99% cache hit rate.

As you say, a raw Linux system (e.g. Ubuntu) would have a much smaller O/S footprint, though you have the complication of e.g. integrating ZFS into the kernel etc. whereas with TrueNAS all the integration is done for you and you have a nice UI. As a backup server, you can probably also make do with a significantly smaller ARC than 5-6GB. Since this is going to be predominantly write-only, you might also benefit from increasing the amount of ARC that can be used for pending writes, so long as you don’t evict too much metadata by doing so.

Yeah, even on struggling freenas/truenas systems, the issues I saw were more with the interface crashing or getting unusably slow than with ZFS itself getting crashy or unusably slow.

I have found TrueNAS to be pretty stable and relatively bug free if you stick to .1 or .2 releases.

And unless you want virtualisation (which seems to chop and change underlying technologies regularly), the basic NAS functionality is extremely stable.

I use ZFS on an USB3 HDD on a Raspberry Pi 4 (4 GB RAM) as an offsite backup server, and that works fine. The RPi is really poor at handling random disk access, in the sense that system load and %iowait increases a lot during scrubs (especially if doing something else at the same time), but I don’t think that has anything to do with ZFS itself.

While not a NAS, the Netgate 4200 running pfSense with an Atom C1110 and 4 GiB RAM as a router/firewall handles ZFS without issue.

Oldest CPU I’ve run ZFS on was an Intel N3530 with 4GiB of RAM. Ran fine without encryption. With encryption (LUKS), it was noticeably slower due to the CPU not having AES-NI instructions.