ZFS cheatsheet
create zfs pool create disk encryptiong using geli
# create gpt partition table
gpart create -s gpt da0
gpart create -s gpt da1
gpart create -s gpt da2
# add zfs parition to partitioning scheme
gpart add -t freebsd-zfs -l disk0 da0
gpart add -t freebsd-zfs -l disk1 da1
gpart add -t freebsd-zfs -l disk2 da2
# create key file
dd if=/dev/random of=enc.key bs=64 count=1
# init geli
geli init -l 256 -s 4096 -K enc.key -B none /dev/gpt/disk0
geli init -l 256 -s 4096 -K enc.key -B none /dev/gpt/disk1
geli init -l 256 -s 4096 -K enc.key -B none /dev/gpt/disk2
# attach geli
geli attach -k enc.key /dev/gpt/disk1
geli attach -k enc.key /dev/gpt/disk2
geli attach -k enc.key /dev/gpt/disk3
# check geli status
geli status
# create zfs pool
zpool create tank raidz1 /dev/gpt/disk0.eli /dev/gpt/disk1.eli /dev/gpt/disk2.eli
zfs send/receive non-root
# sender side permission
zfs allow -u user1 send,snapshot,hold tank
# receiver side permission
zfs allow -u user1 compression,mountpoint,create,mount,receive tank
zfs over ssh
zfs send tank/some@20210211 | pv | ssh [email protected] zfs receive -dvu tank
zfs over netcat
#receiver side
nc -w 120 -l 9999 | zfs receive trank/some
#sender side
zfs send -v tank/some@20210211 | pv | nc -w 20 1.2.3.4 9999
zfs over network with buffer (best approach)
#receiver
mbuffer -4 -s 128k -m 1G -I 9090 | zfs receive -Fd sas/archive
#sender
zfs send -Rv hgst/archive@manual-2021-12-30_23-17 | mbuffer -s 128k -m 1G -O 10.2.90.16:9090