Abstract

Dedicated to ZFS administration.

Zpool Administration

Basic Commands

zpool list
zpool list <name>
zpool list -v zroot
zpool status -x

Creating Pools and VDEVs

  • Make sure ashift is 4k, vfs.zfs.min_auto_ashift=12

alt text

  • Select disks (da1, da2, da3)
ls -al /dev/ | grep da

crw-r-----   1 root operator 0x5a Nov 14 02:51 da0
crw-r-----   1 root operator 0x5b Nov 14 02:51 da0p1
crw-r-----   1 root operator 0x5c Nov 14 02:51 da0p2
crw-r-----   1 root operator 0x5d Nov 14 02:51 da0p3
crw-r-----   1 root operator 0x6a Nov 15 18:46 da1
crw-r-----   1 root operator 0x6d Nov 15 18:46 da2
crw-r-----   1 root operator 0x70 Nov 15 18:46 da3
  • We can create a disk, provide it 1gb of swap, and label it.
  • The labels should correspond to device serial numbers and location in production so it’s easy to swap out.
GB swap partition and a large ZFS partition, created with gpart(8). 

 gpart create -s gpt da1
 gpart add -a 1m -s1g -l sw1 -t freebsd-swap da1
 gpart add -a 1m -l zfs1 -t freebsd-zfs da1

 gpart create -s gpt da2
 gpart add -a 1m -s1g -l sw2 -t freebsd-swap da2
 gpart add -a 1m -l zfs2 -t freebsd-zfs da2

 gpart create -s gpt da3
 gpart add -a 1m -s1g -l sw3 -t freebsd-swap da3
 gpart add -a 1m -l zfs3 -t freebsd-zfs da3
 
 gpart create -s gpt da4
 gpart add -a 1m -s1g -l sw4 -t freebsd-swap da4
 gpart add -a 1m -l zfs4 -t freebsd-zfs da4
 
 gpart create -s gpt da5
 gpart add -a 1m -s1g -l sw5 -t freebsd-swap da5
 gpart add -a 1m -l zfs5 -t freebsd-zfs da5
 
 gpart show -l <device>
 glabel status

zpool create <pool-name> /dev/label/zfs1 /dev/label/zfs2 /dev/label/zfs3

Fix Degraded Pool

  • Here we see the state is DEGRADED

alt text

  • You can swap the degraded disk with a new one
  • Remember that a pool is made by combining one or more vdevs; ZFS stripes data across the vdevs.
  • If any vdev fails, the entire pool fails.

alt text

Tuning

  • Remember, a pool splits all write requests between VDEVs in the pool.
  • A single small file might only go to one VDEV, but in aggregate, writes are split between VDEVs.
  • Using multiple VDEVs increases IOPS and throughput bandwidth.

Rolling Snapshot

# **zfs** **destroy** **-r** pool/users@7daysago
# **zfs** **rename** **-r** pool/users@6daysago @7daysago
# **zfs** **rename** **-r** pool/users@5daysago @6daysago
# **zfs** **rename** **-r** pool/users@4daysago @5daysago
# **zfs** **rename** **-r** pool/users@3daysago @4daysago
# **zfs** **rename** **-r** pool/users@2daysago @3daysago
# **zfs** **rename** **-r** pool/users@yesterday @2daysago
# **zfs** **rename** **-r** pool/users@today @yesterday
# **zfs** **snapshot** **-r** pool/users@today

ZPOOL History

alt text

Ref

  • Lucas, Michael W; Jude, Allan. FreeBSD Mastery: ZFS (IT Mastery) (p. 65). (Function). Kindle Edition.