Table of Contents
Title Page
Acknowledgements
Chapter 0: Introduction
Chapter 1: Boot Environments
Chapter 2: Delegation and Jails
Chapter 3: Sharing Datasets
Chapter 4: Replication
Chapter 5: ZFS Volumes
Chapter 6: Advanced Hardware
Chapter 7: Caches
Chapter 8: Performance
Chapter 9: Tuning
Chapter 10: ZFS Potpourri
Afterword
Sponsors
About the Authors
Publishing Information
Acknowledgements
Our gratitude goes to the people who offered feedback on the manuscript that became this
book: Will Andrews, Marie Helene Kvello-Aune, Josh Paetzel, Benedict Reuschling, Alan
Somers, Matthew Seaman, and Wim Wauters.
Lucas’ portions of this book were largely written on hardware from iX Systems
(http://www.ixsystems.com).
The authors would like to thank the FreeBSD Project and the FreeBSD Foundation for
providing access to NVMe devices in the NetPerf cluster, and to Sentex Data
Communications for hosting said cluster. Lucas would like to thank Jude for somehow
convincing these folks to grant Jude cluster access, because there’s no way they’d give it
to Lucas. Also because it means that Lucas didn’t have to write that part of the book.
Chapter 0: Introduction
The Z File System, or ZFS, is a complicated beast, but it is also the most powerful tool in
a sysadmin’s Batman-esque utility belt. This book tries to demystify some of the magic
that makes ZFS such a powerhouse, and give you solid, actionable intel as you battle your
storage dragons.
ZFS contains over 100 “engineering years” of effort from some of the best minds in the
industry. While it has competitors, such as B-Tree File System (BTRFS), those
competitors have a lot of catching up to do. And ZFS races further ahead every day.
This book takes you into some of the more complicated and esoteric parts of managing
ZFS. If you want to know why a single gigabyte of data fills your 2 GB drive, if you want
to automatically update your disaster recovery facility, or if you just want to use boot
environments on your laptop, FreeBSD Mastery: Advanced ZFS is for you.
Just about everything in this book applies in general to OpenZFS. We use FreeBSD as
the reference platform, but the mechanics of using OpenZFS don’t change much among
platforms.
Prerequisites
The title of the book includes the word “Advanced.” We expect you to know a couple
things before you can use this. The easy answer would be that you should read and
assimilate two earlier FreeBSD Mastery titles: Storage Essentials and ZFS. But you might
already know what’s in those books, so here are some details on what you need to bring
with you.
You’ll need familiarity with FreeBSD’s storage management layer, GEOM. On non-
FreeBSD platforms you can use disks and partition devices for ZFS. Always use ZFS on
disk or partition devices, not on RAID or other software devices.
We assume you’re familiar with ZFS pools and datasets. You know how to add VDEVs
to a pool, and understand why you can’t add a lone disk to your RAID-Z. You can take
snapshots and create clones.
If you want to use FreeBSD’s encrypted ZFS support, you must understand FreeBSD’s
GELI encryption. (You could use GBDE if you’re relying on the encryption to preserve
human life, but the built-in GELI support suffices for most of us. Also, GELI takes
advantage of the AES-NI hardware crypto acceleration in modern CPUs.)