During 2005 to 2010, the open source version of ZFS was ported to Linux, Mac OS X (continued as MacZFS) and FreeBSD.
Its complete control of the storage system is used to ensure that every step, whether related to file management or disk management, is verified, confirmed, corrected if needed, and optimized, in a way that the storage controller cards and separate volume and file systems cannot achieve.
[12] ZFS was designed and implemented by a team at Sun led by Jeff Bonwick, Bill Moore,[13] and Matthew Ahrens.
[17] Solaris was originally developed as proprietary software, but Sun Microsystems was an early commercial proponent of open source software and in June 2005 released most of the Solaris codebase under the CDDL license and founded the OpenSolaris open-source project.
ZFS was ported to Linux, Mac OS X (continued as MacZFS), and FreeBSD, under this open source license.
Within ZFS, data integrity is achieved by using a Fletcher-based checksum or a SHA-256 hash throughout the file system tree.
Disks connected to the system using a hardware, firmware, other "soft" RAID, or any other controller that modifies the ZFS-to-disk I/O path will affect ZFS performance and data integrity.
Alternate hardware RAID controllers may not understand the original manufacturer's custom data required to manage and restore an array.
If disks must be attached through a RAID or other controller, it is recommended to minimize the amount of processing done in the controller by using a plain HBA (host adapter), a simple fanout card, or configure the card in JBOD mode (i.e. turn off RAID and caching functions), to allow devices to be attached with minimal changes in the ZFS-to-disk I/O pathway.
This would be impossible if the filesystem and the RAID array were separate products, whereas it becomes feasible when there is an integrated view of the logical and physical structure of the data.
Going through the metadata means that ZFS can validate every block against its 256-bit checksum as it goes, whereas traditional RAID products usually cannot do this.
With RAID-Z, ZFS provides fast, reliable storage using cheap, commodity disks.[promotion?
[38] During this time, the older disks in the array will be stressed by the additional workload, which could result in data corruption or drive failure.
[41] Instead, ZFS has a built-in scrub function which regularly examines all data and repairs silent corruption and other problems.
For instance, fully populating a single zpool with 2128 bits of data would require 3×1024 TB hard disk drives.
As of 2019[update] the encryption feature is also fully integrated into OpenZFS 0.8.0 available for Debian and Ubuntu Linux distributions.
This helps to ensure that as the pool becomes more used, the situation does not develop that some vdevs become full, forcing writes to occur on a limited number of devices.
There are anecdotal end-user reports of diminished performance when high free-space fragmentation is coupled with disk space over-utilization.
Storage pool composition is not limited to similar devices, but can consist of ad-hoc, heterogeneous collections of devices, which ZFS seamlessly pools together, subsequently doling out space to datasets (file system instances or ZVOLs) as needed.
Therefore, data is automatically cached in a hierarchy to optimize performance versus cost;[55] these are often called "hybrid storage pools".
Snapshots are inherently read-only, ensuring they will not be modified after creation, although they should not be relied on as a sole means of backup.
Writeable snapshots ("clones") can also be created, resulting in two independent file systems that share a set of blocks.
Computing the delta stream is very efficient, and its size depends on the number of blocks changed between the snapshots.
This provides an efficient strategy, e.g., for synchronizing offsite backups or high availability mirrors of a pool.
[63][64][65] An accurate assessment of the memory required for deduplication is made by referring to the number of unique blocks in the pool, and the number of bytes on disk and in RAM ("core") required to store each record—these figures are reported by inbuilt commands such as zpool and zdb.
Other storage vendors use modified versions of ZFS to achieve very high data compression ratios.
[68] As described above, deduplication is usually not recommended due to its heavy resource requirements (especially RAM) and impact on performance (especially when writing), other than in specific circumstances where the system and data are well-suited to this space-saving technique.
[87] In January 2010, Oracle Corporation acquired Sun Microsystems, and quickly discontinued the OpenSolaris distribution and the open source development model.
However, after Oracle announced discontinuing OpenSolaris, plans were made to fork the final version of the Solaris ON, allowing illumos to evolve into an operating system of its own.
Therefore, in 2013, the co-ordination of development work on the open source version of ZFS was passed to an umbrella project, OpenZFS.