ZFS

From dankwiki

zpools

A ZFS storage pool (zpool) is a collection of devices (vdevs) that provides physical storage and data replication for ZFS datasets.

zpool vdevs

Only disks, partitions, and files can be used as "base vdevs" suitable for aggregation into mirrors and raidzs.

  • Entire disks
    • Partitions (not recommended)
      • Files (strongly not recommended -- only as reliable as underlying filesystem)
  • Mirrors (n-way replication)
  • Raidz{1, 2, 3} (n-way parity)
  • "spare" -- a pseudo-vdev which tracks spare disks
  • Log -- separate-intent log device(s) supporting round-robining and mirroring, but not parity
  • Cache -- a cache device

datasets

A more general concept than filesystems, a dataset is contained within a pool, and bound to a unique path in the ZFS namespace.

  • Filesystems (not quite POSIX)
  • Volume (exported block device)
  • Snapshot (readonly copy of filesystem from some point at time)
    • Available in .zfs/snapshot in the root of the associated filesystem

udev

  • ZFS generates subsystem "bdi" udev events, pointing to devices/virtual/bdi in sysfs

Basic tuning

  • zfs set atime=no
  • zfs set xattr=sa
  • ashift will generally be handled properly, assuming your disk properly exposes its true sector size (check sysfs)

See also

  • The growlight system installation tool supports ZFS