ZFS/Features

From Gentoo Wiki
< ZFS
Jump to: navigation, search

The following is a near-exhaustive list of features that ZFS offers:

  • Simplified administration (two main administration tools, zpool and zfs)
  • A hierarchical namespace for management of all mountpoints (datasets) and block devices (zvols).
  • Online management (no downtime required for routine administrative tasks)
  • Partitioning is replaced by ZFS storage pools that span multiple disks
  • Dynamic allocation of storage across mountpoints (no need to repartition)
  • Integrated Volume management (zvol block devices like LVM logical volumes)
    • Supports thin provisioning of storage
  • Snapshots (maintains a copy of data as it was at a specific point in time)
  • Clones (write-able copies of snapshots that store only changes from the original)
  • Special .zfs directory for viewing contents of snapshots.
  • ZFS Send/Recv of snapshots (online backup without the consistency issues of rsync)
  • Incremental Send/Recv of snapshots (reads list of changes between snapshots and transmits only them; asymptotically faster than rsync)
  • Integrated RAID with support for N-way mirrors and up to three levels of parity-based RAID (RAID-Z) similar to RAID 5, RAID 6 and an additional level beyond that.
  • Variable stripe (no RAID write-hole)
  • Abstraction of all storage into a vdev (virtual device) tree.
  • Scaling of IOPS across top level vdevs in a pool
    • e.g. If two RAID-Z2 vdevs are in a pool, objects are written to one or another, such that IOPS are more intelligently distributed than traditional striped storage.
  • ARC page replacement algorithm
    • Higher hit rate than commonly used LRU page replacement algorithm increases IOPS performance
  • ZFS Intent Log (ZIL)
    • Sequentially write intent records of pending small synchronous writes to safely reduce latencies to levels of asynchronous IO
  • Tiered storage
    • L2ARC devices that act as an extension of the system's main memory.
      • Supports LZ4 compression for increased cache as of ZFSOnLinux 0.6.2
    • SLOG devices that permit ZIL to be written to a dedicated hardware.
  • Data deduplication
  • Data compression with zle (zero-length encoding — fast, but only compresses sequences of zeros), LZJB or its replacement LZ4, or gzip (higher compression, but slower)
  • Endian Independence (different machine designs do not prevent ZFS formatted disks from being read)
  • Easy disk format upgrades
  • Persistent pool settings
    • Failure mode configuration
    • bootfs (used by GRUB2 to find binaries)
    • Ability to annotate pool with a comment
    • Other miscellaneous settings, especially readonly settings
  • Persistent configuration for mountpoints (datasets) and block devices (zvols)
    • Uses inheritance in the hierarchical namespace
    • Dataset Specific Options
      • NFS/SMB sharing
        • Automates configuration of NFS and SMB servers, but original manual way is optional
      • Case sensitivity/insensitivity
      • Unicode normalization
      • Quotas (limit to how much storage can be allocated from the pool)
      • Multiple copies of data (transparent)
      • Atime Updates
      • Xattr
      • setuid
      • Mountpoints
        • Depreciates fstab (although still an option with mountpoint=legacy)
        • Makes it easy to have thousands of datasets, including one per home directory
      • Control visibility of .zfs directory
      • Recordsize (tunable that controls internal CoW granularity)
    • Zvol Specific options
      • volblocksize (tunable that controls internal CoW granularity)
      • volsize (allows online resizing of zvol)
      • Control visibility of snapshots in /dev (Linux-specific)
    • Options common to both
      • Compression (already mentioned)
      • Deduplication (already mentioned)
      • Cache control (great for software that implements its own cache in userland)
      • Control of synchronous IO (whether ZIL is used)
      • Reservations (storage reserved for use by a zvol/dataset)
        • This permits thin provisioning on zvols
      • Many other miscellaneous settings, especially readonly settings
      • User defined settings (for use by scripts)

Features in Illumos/Solaris that have yet to be implemented in ZFSOnLinux are:

  • On-access virus scanner integration (ClamAV)
  • iSCSI integration
  • NFSv4 ACLs
    • Does not prevent NFS from being used with ZFS
  • Delegated administration
    • Allows system administrator to give ownership of datasets to users (e.g. their home directories) so that they can manage snapshots, configure compression, etcetera.