Zfs

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