Skip to main content

ZFS

File System Management

Command Description
zfs list List ZFS file systems
zfs create <pool>/<filesystem> Create a ZFS file system
zfs set <property>=<value> <pool>/<filesystem> Set ZFS file system properties
zfs get <property> <pool>/<filesystem> Get ZFS file system properties
zfs destroy <pool>/<filesystem> Destroy a ZFS file system

Pool Management

Command Description
zpool list List ZFS pools
zpool create <pool> <device> Create a ZFS pool
zpool destroy <pool> Destroy a ZFS pool (deletes files metadata)
zpool iostat Display ZFS pool I/O statistics
zpool status Display ZFS pool status
zpool history Display ZFS pool history
zpool events Display ZFS pool events
zpool scrub <pool> Scrub a ZFS pool
zpool clear <pool> Clear ZFS pool errors
zpool trim <pool> Trim a ZFS pool
zpool add <pool> <device> Add a device to a ZFS pool
zpool remove <pool> <device> Remove a device from a ZFS pool
zpool replace <pool> <device> Replace a device in a ZFS pool
zpool offline <pool> <device> Offline a device in a ZFS pool

Volumes & Datasets

Command Description
zfs create -V <size> <pool>/<volume> Create a ZFS volume (block device)
zfs list -t volume List ZFS volumes
zfs set volblocksize=<size> <pool>/<volume> Set volume block size
zfs destroy <pool>/<volume> Destroy a ZFS volume
zfs create <pool>/<dataset> Create a ZFS dataset (filesystem)
zfs list -t filesystem List ZFS datasets
zfs rename <pool>/<dataset> <pool>/<newdataset> Rename dataset or volume
zfs set quota=<size> <pool>/<dataset> Set quota on a dataset
zfs set reservation=<size> <pool>/<dataset> Reserve space for a dataset

Snapshots

Command Description
zfs list -t snapshot List ZFS snapshots
zfs snapshot <pool>/<filesystem>@<snapshot> Create a ZFS snapshot
zfs rollback <pool>/<filesystem>@<snapshot> Rollback a ZFS snapshot
zfs diff <pool>/<filesystem>@<snapshot_1> <pool>/<filesystem>@<snapshot_2> Compare ZFS snapshots
zfs send <pool>/<filesystem>@<snapshot> Send ZFS snapshots
zfs receive <pool>/<filesystem> Receive ZFS snapshots

Clones

Command Description
zfs clone <pool>/<filesystem>@<snapshot> <pool>/<filesystem> Create a ZFS clone
zfs promote <pool>/<filesystem> Promote a ZFS clone
zfs rollback <pool>/<filesystem> Rollback a ZFS clone
zfs destroy <pool>/<filesystem> Destroy a ZFS clone


Install ZFS (Debian/Ubuntu)

apt update
apt install zfsutils-linux

Create ZFS Pool

Single disk:

zpool create mypool /dev/sdX

Adding disk as mirror to existing disk

zpool attach mypool /dev/sdb /dev/sda
  • sdb existing disk
  • sda new disk

Adding read cache to pool

zpool add mypool cache /dev/sdb

Adding write cache to pool

zpool add mypool log /dev/sdc

Adding spare disk

disk will automaticaly replace any failed disk in pool

zpool add mypool spare /dev/sdX

Mirror (2+ disks):

zpool create mypool mirror /dev/sdb /dev/sdc

RAIDZ1 (3+ disks):

zpool create mypool raidz /dev/sdb /dev/sdc /dev/sdd

RAIDZ2 (4+ disks):

zpool create mypool raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

RAID10 (two mirrors):

zpool create mypool \
  mirror /dev/sdb /dev/sdc \
  mirror /dev/sdd /dev/sde

Create Datasets

zfs create mypool/data

Set Features

Mount point:

zfs set mountpoint=/data mypool/data/

Compression:

zfs set compression=lz4 mypool/data

Quota:

zfs set quota=10G mypool/data/db

Reservation:

zfs set reservation=2G mypool/data/db

Readonly:

zfs set readonly=on mypool/data/www

Snapshots

Create:

zfs snapshot mypool/data/db@snap1

Rollback:

zfs rollback mypool/data/db@snap1

View Status

zpool status
zfs list

Export/Import (optional)

zpool export mypool
zpool import mypool