ZFS/Features

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.