The FreeNAS Box: 10 Years of Spinning Rust
The SuperMicro FreeNAS box is the oldest continuously running piece of infrastructure in the lab. It predates the FortiGate, the k8s cluster, the Proxmox hypervisor, and every automation tool I’ve ever set up. It just sits there, serves NFS, and doesn’t complain.
Contents#
- What It Does
- The Hardware
- Drive Inventory
- ZFS Configuration
- NFS Exports
- Upcoming: 16TB Drive Swap
- Why Not Upgrade
What It Does#
Every service in the k8s cluster that needs shared data mounts NFS volumes from this box. Movies, TV, anime, music, audiobooks, downloads. The static PVs in heezy-k8s/base/nfs-media-static-pvs.yaml all point back here over NFSv3 with hard mounts.
It also handles SMB shares for direct access from desktops and laptops on the USERS VLAN.
The Hardware#
SuperMicro chassis with a server-grade motherboard, ECC RAM, and hot-swap drive bays. Came from a vendor POC that didn’t close at a previous job. The vendor told us to dispose of it however we wanted because shipping it back cost more than it was worth. More on that in Vendor Relationships and Free Enterprise Gear.
The onboard HBA is flashed to IT mode so drives pass directly to ZFS instead of going through a hardware RAID controller. Boot drive is a 32GB KingDian SSD (ada0) that just runs the OS.
Drive Inventory#
| Drive | Model | Size | Type | Notes |
|---|---|---|---|---|
| ada0 | KingDian S100 32GB | 29.5 GiB | SSD | Boot drive |
| da0 | HGST HDN726050AL | 4.55 TiB | HDD | |
| da1 | HGST HDS724040AL | 3.64 TiB | HDD | |
| da2 | WDC WD40EFRX-68N | 3.64 TiB | HDD | Being replaced with 16TB |
| da3 | WDC WD4000F9YZ-0 | 3.64 TiB | HDD | Being replaced with 16TB |
| da4 | Seagate ST14000VN0008 | 12.73 TiB | HDD | |
| da5 | Seagate ST14000VN0008 | 12.73 TiB | HDD | |
| da6 | WDC WD201KFGX-68 | 18.19 TiB | HDD | |
| da7 | WDC WD201KFGX-68 | 18.19 TiB | HDD |
A mix of everything. HGST, WD Red, Seagate IronWolf, WD Gold. Different sizes, different ages. The two 20TB WD Golds (da6, da7) are the newest. The two 4TB WDs (da2, da3) are the oldest data drives and are getting swapped out for 16TB drives soon.
ZFS Configuration#
Single pool, lz4 compression, no dedup.
| Pool | Total | Used | Free | Compression | Dedup |
|---|---|---|---|---|---|
| Arr1 | ~37 TiB | 81% | 6.98 TiB | lz4 | off |
Datasets:
| Dataset | Size | Notes |
|---|---|---|
| Arr1/SMB | 29.9 TiB | All media lives here |
| Arr1/iocage | 8.13 MiB | Legacy, basically empty |
The SMB dataset holds everything under /mnt/Arr1/SMB/Media/: movies, tv, anime, music, audiobooks.
NFS Exports#
All mounted by the k8s cluster as static PVs:
| Export Path | K8s PV | Used By |
|---|---|---|
| /mnt/Arr1/SMB/Media/movies | nfs-media-movies | Radarr, Plex |
| /mnt/Arr1/SMB/Media/tv | nfs-media-tv | Sonarr, Plex |
| /mnt/Arr1/SMB/Media/anime | nfs-media-anime | Sonarr, Plex |
| /mnt/Arr1/SMB/Media/music | nfs-media-music | Lidarr, Navidrome, Slskd |
| /mnt/Arr1/SMB/Media/audiobooks | nfs-media-audiobooks | LazyLibrarian, Plex |
Upcoming: 16TB Drive Swap#
The pool is at 81% and the two oldest data drives (da2 and da3, both 4TB WDs) are getting replaced with 16TB drives. That’s roughly 24TB of additional usable capacity depending on the vdev layout, which should buy plenty of runway.
Why Not Upgrade#
The box itself works. The drives are healthy. ZFS scrubs come back clean. NFS performance is fine for streaming and bulk reads.
The one thing I’d change is managing it with Ansible. Right now it’s the only manually configured box in the lab alongside the Cisco switch. FreeNAS has an API that could be automated, but the effort-to-payoff ratio for something that changes once a year isn’t there. Can’t even SSH to it from the MCP server because the key exchange algorithms are too old.