I briefly mentioned in the intro to this series that, as part of the transition to Windows, I recently built my most powerful home server ever. The server in question is a machine from 2011 so it’s not “powerful”, but it’s the best I have ever had as a home server! And it is running FreeBSD 13.
Wait, wait, wait. What does this have to do with Windows?
Well, networked file systems! I had previously tried to use remote storage from my Mac but macOS is pretty awful at accessing network shares:
SMB, to these days, is still slow and unstable. Is that FUD? Maybe, but I encountered issues just yesterday when backing up files from my wife’s 2-year old MacBook Pro.
NFS is… maybe better? I recall trying v3 and not being satisfied, and I have never bothered with v4.
I hear AppleTalk used to be great but it is not a thing anymore.
FUSE is a headache nowadays given the impeding removal of kernel extensions, and I’ll be forever bitter that this essentially killed sandboxfs as a real option to make Bazel sandboxing high-performance on macOS.
And so on.
Yet, from Windows, network shares seem to Just Work™️.
Want to connect to an SMB server? Trivial, fast, and stable. Want to connect to an iSCSI volume? Easy too. Do the connections cause system instability when they flake out? Uh, no. Do the connections vanish when you reboot? Heck no. I’m sure there are horror stories around this topic—like any other—but, for me, things have worked great and I haven’t experienced any random problems nor stability issues.
So how did Windows push me to experiment with networking file systems? It wasn’t Windows per se. It was me running Windows on an Optiplex 9020 with very limited SSD space. I wanted to see how some of my workflows worked on Windows as part of the adoption of the OS, and I needed extra disk space on that machine to make that possible.
At the time, my home server was a cool PowerMac G5. I upgraded its RAM, set up a one-drive 4TB ZFS “pool” to play around, and started using the pool lightly from Windows via Samba. Then I discovered ZFS volumes, trivially set up an iSCSI target to provide scratch space for my machine running Windows, and was marveled at how neat ZFS was.
The ZFS experiment proved successful: Windows as a client was great when compared to macOS and having my most precious data (photos) scrubbed and snapshotted by ZFS was too hard to pass on.
Unfortunately, it was clear that the PowerMac G5 was unfit to drive fast I/O. Furthermore, if I wanted to upgrade to a real multi-drive ZFS pool, I needed to fit extra drives into the machine somehow, and it only has two 3.5" drive bays. The real issues came when I upgraded my Internet connection to a Gigabit fiber line: the PowerMac seemed to reach its CPU limits just routing traffic.
And that’s when I got a slightly faster machine to act as a home server and why it’s running FreeBSD. I jumped from a machine from 2005 to a machine from 2011, which gave me a custom-built PC with an AMD FX-8120 CPU, 8GB of RAM, an SSD for the OS, and 2x 4TB Seagate 7200RPM drives—all for a little over $100. I now regret not buying something much more powerful to also run VMs on with bhyve…
Anyhow. The server is now exposing my photo collection via Samba and I can access it from Windows with Adobe Lightroom. That machine is also serving an iSCSI volume to offer scratch space for Windows. And I am still amazed at how frictionless the whole thing has been.
Tomorrow in this series: how Windows as a closed-source OS is highly-introspectable and debuggable. Come back for more!