In computing, ZFS is a file system designed by Sun Microsystems for the Solaris Operating System. The features of ZFS include support for high storage capacities, integration of the concepts of filesystem and volume management, snapshots and copy-on-write clones, on-line integrity checking and repair, and RAID-Z. ZFS is implemented as open-source software, licensed under the Common Development and Distribution License (CDDL).
ZFS was designed and implemented by a team at Sun led by Jeff Bonwick. It was announced on September 14, 2004. Source code for ZFS was integrated into the main trunk of Solaris development on October 31, 2005 and released as part of build 27 of OpenSolaris on November 16, 2005. Sun announced that ZFS was included in the 6/06 update to Solaris 10 in June 2006, one year after the opening of the OpenSolaris community.
Unlike traditional file systems, which reside on single devices and thus require a volume manager to use more than one device, ZFS filesystems are built on top of virtual storage pools called zpools. A zpool is constructed of virtual devices (vdevs), which are themselves constructed of block devices: files, hard drive partitions, or entire drives, with the last being the recommended usage. Block devices within a vdev may be configured in different ways, depending on needs and space available: non-redundantly (similar to RAID 0), as a mirror (RAID 1) of two or more devices, as a RAID-Z group of three or more devices, or as a RAID-Z2 group of four or more devices. The storage capacity of all vdevs is available to all of the file system instances in the zpool.
A quota can be set to limit the amount of space a file system instance can occupy, and a reservation can be set to guarantee that space will be available to a file system instance.
ZFS is a 128-bit file system, so it can store 18 billion billion (1.84 × 1019) times more data than current 64-bit systems. The limitations of ZFS are designed to be so large that they will not be encountered in practice for some time. Some theoretical limits in ZFS are:
* 264 — Number of snapshots of any file system
* 248 — Number of entries in any individual directory
* 16 EiB (264 bytes) — Maximum size of a file system
* 16 EiB — Maximum size of a single file
* 16 EiB — Maximum size of any attribute
* 256 ZiB (278 bytes) — Maximum size of any zpool
* 256 — Number of attributes of a file (actually constrained to 248 for the number of files in a ZFS file system)
* 256 — Number of files in a directory (actually constrained to 248 for the number of files in a ZFS file system)
* 264 — Number of devices in any zpool
* 264 — Number of zpools in a system
* 264 — Number of file systems in a zpool