ZFS combines all available storage devices and pools them together as a "zpool". Additional storage can be added as required. Inside the zpool are 1 or more "vdevs" which can be simply a single drive, or multiple drives in a stripe, mirror, or RAID-style configuration for data protection and/or performance.
ZFS is a 128-bit file system; the theoretical limit of which is 256 quadrillion zettabytes (a zettabyte is 1 billion terabytes). Practically speaking, this is larger than any storage system that can possibly be built in the foreseeable future.
Optional on-disk compression of data means you can fit more data on less disk, without your applications knowing any different. Compression can also be extended to the ARC so you can fit more cache in nice fast RAM.
ZFS stores a 256-bit checksum when it writes data to disk, and checksums the metadata itself. ZFS will verify the integrity of all data using its checksums when reading data from disk.
When the pool has sufficient redundancy (e.g. mirrored or RAID-type vdevs), ZFS can repair any corrupt data it detects. Any data corruption is logged, assiting the administrator to identify any defects in memory or other hardware.
Optionally, the administrator can "scrub" a pool to force ZFS to read and verify every block of data on disk to detect any silent data corruption in data that hasn't been accessed frequently. Unlike traditional RAID arrays, ZFS will only verify the parts of the storage system where data is stored., making the scrub process faster.
With Copy-on-Write (CoW), data is always written to a new block and checksums calculated before pointers to the data are changed. All writes are transactional, so either everything or nothing is written to disk, avoiding the need to fsck or replay journals in the event of unexpected reboot.
Because of Copy-on-Write (CoW) method of writing data, the old data is left intact on disk. This allows for snapshots without a performance impact like other systems.
ZFS agressively caches data using RAM in Most Recently Used (MRU) and Most Frequently Used (MFU) tables. Optionally, a L2ARC can be added to the pool using a fast SSD or NVMe device to expand the capacity of these caches.
All synchronous* writes to a ZFS zpool are first written to the ZFS Intent Log (ZIL) to allow the process writing the data to continue sooner. All data in the ZIL is later written out formally to the zpool.
In high-performance use-cases, a Separate ZFS Intent Log (SLOG) can be provisioned to the zpool using an SSD or NVMe device to allow very fast interactive writes.
* Synchronous writes are where the writing process waits for the write to complete before continuing. Common examples include database applications and virtualization platforms.