I'm using ZFS as part of my server management for multiple reasons :

  • abstraction over disk storage (pools, datasets)
  • redundancy and data loss protection
  • To learn about it since it's among sysadmin technologies a lot of people really like.
  • snapshotting/CoW support

There are a couple of downsides to this technology that I don't much care about

  • performance loss (within reason)
  • complexity (the goal is to learn so complexity is kinda something I want)

Introduction

ZFS atoms

The basic concepts and building blocks that are needed to understand how ZFS work. The two main ones are pools and datasets. Disks are placed in a pool and you can create dataset in a pool. You can mount datasets individually as well as apply some properties to each of them.

If you want redundancy, you need to add several disks (for example in a mirror fashion) in a pool.

Managing pools

To interact with the pools you can use zpool command.

The main interesting ones are :

  • status
  • list
  • add/remove create/destroy

Managing datasets

To interact with the datasets you can use zfs command.

Increasing dataset quota size

I have a Kubernetes cluster and I use openebs-zfs to provide storage. ZFS is not a networking storage but since I only have one node, this is very much okay to only have local storage! There seems to be a bug with quota increase on OpenEBS-ZFS so I had to edit the quota by hand.

zfs set quota=1300G $POOL/$DATASET