Skip to content

Instantly share code, notes, and snippets.

@natanlao
Created October 23, 2020 07:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save natanlao/c8259f91a8f8650b933ef4d313cec60c to your computer and use it in GitHub Desktop.
Save natanlao/c8259f91a8f8650b933ef4d313cec60c to your computer and use it in GitHub Desktop.
Cross-platform filesystem

I spent some time recently looking for a cross-platform filesystem to store some personal data. After some deliberation, I settled on a single-volume ZFS "pool" and I'm pretty happy with it. Here's why:

  • Strong cross platform support. Works natively on Linux, macOS, and Windows.

  • Native encryption. ZFS supports encryption out of the box. It would have been possible to use something like VeraCrypt to encrypt a container, but I wasn't able to get VeraCrypt working reliably on macOS.

  • Deduplication. I periodically export and retain large backups through services like Google Takeout. Deduplication is particularly helpful in this scenario.

  • Copy-on-write, snapshots, scrubs, etc.

Of course, if you don't need a filesystem you can use on more than one platform, your math will probably be a little different.

Some caveats:

  • Cross-platform support isn't flawless; I actually didn't have a lot of success using ZFSin on my Windows machine. That being said, it was trivial to spin up an Ubunutu VM and interface with my volume using ZFS on Linux. (I've had good experiences with OpenZFS on OS X and ZFS on Linux.)

  • There's a learning curve to using ZFS. I'm using a very small subset of its features, and it still took me a decent amount of reading to orient myself and to understand what was happening.

@lrvl
Copy link

lrvl commented Nov 23, 2020

Also FreeBSD and NetBSD have great ZFS support. Send and receive capabilities could mentioned and classified as enterprise features.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment