common commands
| command | description | 
|---|---|
zfs list | 
view existing datasets | 
zfs load-key | 
load encryption key | 
zfs create | 
create new mount point | 
zfs history | 
show complete history of pool | 
zpool scrub -p <pool> | 
pause scrub | 
freebsd
- 
zfsinstalled as part of base from 13.0 
my custom setup
- 4x10T disks, one pool with two mirrors
- gives ~20T usable storage
 
 - prep disks
wipefs -a /dev/<disk> parted /dev/<disk> mklabel gpt parted /dev/<disk> mkpart "<custom id>" zfs 0% 100% 
The custom id shows in ZFS, i use a location identifier as below
- 2 character server prefix, 
kkforkinakuta - 2 character enclosure identifier, 
e0,e1, etc. - 2 character disk positon (in my case top to bottom), 
d0,d1, etc. - serial number of the physical disk, taken from the label
 
For example
root@kinakuta:~# zpool status                                                                                                                                                                                                         ~
  pool: crypt.kk
 state: ONLINE
  scan: scrub repaired 0B in 16:50:21 with 0 errors on Tue Apr 15 07:57:21 2025
config:
        NAME                 STATE     READ WRITE CKSUM
        crypt.kk             ONLINE       0     0     0
          mirror-0           ONLINE       0     0     0
            kke0d0-ZS518A9F  ONLINE       0     0     0
            kke0d1-ZS518A21  ONLINE       0     0     0
          mirror-1           ONLINE       0     0     0
            kke1d0-ZS518A9D  ONLINE       0     0     0
            kke1d1-ZS518A76  ONLINE       0     0     0
errors: No known data errors
Create zpool
zpool create -f -o ashift=12 -o feature@encryption=enabled -O encryption=on -O keylocation=prompt -O keyformat=passphrase -m /path/to/mountpoint <zpool name> mirror /dev/disk/by-partlabel/kke0d0-ZS518A9F /dev/disk/by-partlabel/
kke0d1-ZS518A21 mirror /dev/disk/by-partlabel/kke1d0-ZS518A9D /dev/disk/by-partlabel/kke1d1-ZS518A76
To add spares after pool creation prep them as before then incant
zpool add <zpool name> spare /dev/disk/by-partlabel/<part id>