ZFS/Features
From Gentoo Wiki
< ZFS
Jump to:navigation
Jump to: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.
- L2ARC devices that act as an extension of the system's main memory.
- 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)
- NFS/SMB sharing
- 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.