ZFS - Structure - Sectors

A sector is the smallest physical unit that can be written to or read from its underlying device.


ashift

Somewhat confusingly, ashift is actually the binary exponent which represents sector size.

ZFS queries the operating system for details about each block device as it is added to a new vdev.

In real world terms, this amplification penalty hits a Samsung EVO SSD, which should have ashift=13, but lies about its sector size and therefore defaults to ashift=9 if not overridden by a savvy admin—hard enough to make it appear slower than a conventional rust disk.

By contrast, there is virtually no penalty to setting ashift too high.

WARNING: The ashift property is per-vdev, not per pool, as is commonly and mistakenly thought!

  • And it is immutable, once set.
  • If you accidentally flub ashift when adding a new vdev to a pool, you have irrevocably contaminated that pool with a drastically under-performing vdev, and generally have no recourse but to destroy the pool and start over.
  • Even vdev removal cannot save you from a flubbed ashift setting!