I replaced NFS with a FUSE filesystem on my homelab, and macOS ate three working days
I run an always-on homelab, a Mac mini, a Dell server on the LAN, a gaming PC, a UPS on every box. Files move between all three constantly, so the hot tier of the Dell used to be a Nextcloud mount over NFS. It worked, it was just slow, a 1 GiB copy from the Mac topped out around 33 MB/s write and 66 read. I wanted faster, and I wanted it gone from Nextcloud's DB, so I put JuiceFS on the Dell…
I replaced Nextcloud's NFS mount with a FUSE filesystem (JuiceFS) on my homelab Mac mini, and macOS took three days to fully function. My Dell server on the LAN was used as the hot storage tier, and I wanted to eliminate the Nextcloud DB dependency while increasing speed. I installed JuiceFS in a Docker compose stack with a Redis container for metadata, a one-shot format, and a privileged FUSE mount container exporting to the host.
Initially, I used Minio as the storage backend, but it was removed from public registries, and JuiceFS has a more straightforward native --storage file mode. After the switch, the Mac mini experienced a significant performance boost, writing and reading 225 MB/s and 618 MB/s, respectively, compared to NFS's 115 MB/s and 97 MB/s.
However, the transition wasn't without hiccups. The JuiceFS Hub tags on Docker Hub are Docker plugin manifests, and the proper image is juicedata/mount. I also encountered an issue with Samba serving the share read-only by default, and macOS authentication to the SMB share was problematic. Additionally, deleting files over SMB threw a "Operation not supported" error, and unmounting the old NFS tier left two references alive, causing a kernel error and CPU spike.
To avoid issues, I recommend benchmarking before choosing the backend, testing the mount as the session user, and ensuring the composition file reflects the correct configuration.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.