ZFS is a combined file system and logical volume manager designed by Sun Microsystems. ZFS is scalable, and includes extensive protection against data corruptionsupport for high storage capacities, efficient data compression, integration of the concepts of filesystem and volume "Hp ux vxfs fragmentation asexual reproduction"snapshots and copy-on-write clones, continuous integrity checking and automatic repair, RAID-Znative NFSv4 ACLsand can be very
Hp ux vxfs fragmentation asexual reproduction configured.
The ZFS name stands for nothing - briefly assigned the backronym " Zettabyte File System ", it is no longer considered an initialism. ZFS became a standard feature of Solaris 10 in June In response, the illumos project was founded, to maintain and enhance the existing open source Solaris, and in OpenZFS was founded to coordinate the development of open source ZFS.
OpenZFS is widely used in Unix-like systems. The management of stored data generally involves two aspects: ZFS is unusual, because unlike most other storage systems, it unifies both of these roles and acts as both the volume manager and the file system. Therefore, it has complete knowledge of both the physical disks and volumes including their condition and status, their logical arrangement into volumes, and also of all the files stored on them.
ZFS is designed to ensure subject to suitable hardware that data stored on disks cannot be lost due to physical errors or misprocessing by the hardware or operating systemor bit rot events and data corruption which may happen over time, and 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 storage controller cards and separate volume and file managers cannot achieve.
ZFS also includes a mechanism for snapshots and replicationincluding snapshot cloning ; the former is described by the FreeBSD documentation as one of its "most powerful features", having features that "even other file systems with snapshot functionality lack". Snapshots can be rolled back "live" or previous file system states can be viewed, even on very large file systems, leading to savings in comparison to formal backup and restore processes.
Unlike many file systems, ZFS is intended to work towards specific aims. Its primary targets are enterprise data management and commercial environments. Because ZFS acts as both volume manager and file systemthe terminology and layout of ZFS storage covers two aspects:. ZFS commands allow examination of the physical storage in terms of devices, vdevs they are organized into, data pools stored across those vdevs, and in various other ways.
The vdev is a fundamental part of ZFS, and the main method by which ZFS ensures redundancy against physical device failure. ZFS stores the data in a pool striped across all the vdevs allocated to that pool, for efficiency, and each vdev must have sufficient disks to maintain the integrity of the data stored on that vdev.
If a vdev were to become unreadable due to disk errors or otherwise then the entire pool will also fail. Therefore, it is easiest to describe ZFS physical storage by looking at vdevs. Each vdev can be one of:. Each vdev acts as an independent unit of redundant storage. Devices might not be in a vdev if they are unused spare disks, disks formatted with non-ZFS filing systems, offline disks, or cache devices. The physical structure of a pool is defined by configuring as many vdevs of any type, and adding them to the pool.
ZFS exposes and manages the individual disks within the system, as well as the vdevs, pools, datasets and volumes into which they are organized.
Within any pool, data is automatically distributed by ZFS across all vdevs making up the pool. Each vdev that the user defines, is completely independent from every other vdev, so different types of vdev can be mixed arbitrarily in a single ZFS system. If data redundancy is required so that data is protected against physical device failurethen this is ensured by the user when they organize devices into vdevs, either by using a mirrored vdev or a RaidZ vdev.
Data on a single device vdev may be lost Hp ux vxfs fragmentation asexual reproduction the device develops a fault. Data on a mirrored or RaidZ vdev will only be lost if enough disks fail at the Hp ux vxfs fragmentation asexual reproduction time or before the system has resilvered any replacements due to recent disk failures.
A ZFS vdev will continue to function in service if it is capable of providing at least one copy of the data stored on it, although it may become slower due to error fixing and resilvering, as part of its self-repair and data integrity processes.
However ZFS is designed to not become unreasonably slow due to self-repair unless directed to do so by an administrator since one of its goals is to be capable of uninterrupted continual use even during self checking and self repair. Since ZFS device redundancy is at vdev level, this also means that if a pool is stored across several vdevs, and one of these vdevs completely fails, then the entire pool content will be lost. This is similar to other RAID and redundancy systems, which require the data to be stored or capable of reconstruction from enough other devices to ensure data is unlikely to be lost due to physical devices failing.
Therefore, it is Hp ux vxfs fragmentation asexual reproduction that vdevs should be made of either mirrored devices or a RaidZ array of devices, with sufficient redundancy, for important data, so that ZFS can automatically limit and where possible avoid data loss if a device fails. Backups and replication are also an expected part of data protection. Vdevs can Hp ux vxfs fragmentation asexual reproduction manipulated while in active use.
A single disk can have additional devices added to create a mirrored vdev, and a mirrored vdev can have physical devices added or removed to leave Hp ux vxfs fragmentation asexual reproduction larger or smaller number of mirrored devices, or a single device.
A RaidZ vdev cannot be converted to or from a mirror, although additional vdevs can always be added to expand storage capacity which can be any kind including RaidZ.
A device in any vdev can be marked for removal, and ZFS will de-allocate data from it to allow it to be removed or replaced. Of note, the devices in a vdev do not have to be the same size, but ZFS may not use the full capacity of all disks in a vdev, if some are larger than other.
This only applies to devices within a single vdev.
As vdevs are independent, ZFS does not care if different vdevs have different sizes or are built from different devices. Also as a vdev cannot be Hp ux vxfs fragmentation asexual reproduction in size, it is common to set aside a small amount of unused space for
Hp ux vxfs fragmentation asexual reproduction GB on a multi-TB diskso that if a disk needs replacing, it is possible to allow for slight manufacturing variances and replace it with another disk of the same nominal capacity but slightly smaller actual capacity.
In addition to devices used for main data storage, ZFS also allows and manages devices used for caching purposes. These can be single devices or multiple mirrored devices, and are fully dedicated to the type of cache designated. Cache usage and its detailed settings can be fully deleted, created and modified without limit during live use. A list of ZFS cache types is given later in this article.
ZFS can handle devices formatted into partitions for certain purposes, but this is not common use. Generally caches and data pools are given complete devices or multiple complete devices. The top level of data management is a ZFS pool or zpool. A ZFS system can have multiple pools defined. The vdevs to be used for a pool are specified when the pool is created others can be added laterand ZFS will use all of the specified vdevs to maximize performance when storing data — a form of striping across the vdevs.
Therefore, it is important to ensure that each vdev is sufficiently redundantas loss of any vdev in a pool would cause loss of the pool, as with any other striping. A ZFS pool can be expanded at any time by adding new vdevs, including when the system is 'live'. However, as explained above, the individual vdevs can each be modified at any time within stated limitsand new vdevs added at any time, since the addition or removal of mirrors, or marking of a redundant disk as offline, do not affect the ability of that vdev to store data.
Since volumes are presented as block devices, they can also be formatted with any other file system, to add ZFS features to that file system, although this is not usual practice. For example, Hp ux vxfs fragmentation asexual reproduction ZFS volume can be created, and then the block device it presents can be partitioned and formatted with a file system such as ext4 or NTFS. This can be done either locally or over a network using iSCSI or similar.
Snapshots are an integral feature of ZFS.
They provide immutable read only copies of the file system at a single point in time, and even very large file systems can be snapshotted many times every hour, or sustain tens of thousands of snapshots. Snapshot versions of individual files, or an entire dataset or pool, can easily be accessed, searched and restored. An entire snapshot can be cloned to create a new "copy", copied to a separate server as a replicated backupor the pool or dataset can quickly be rolled back to any specific snapshot.
Snapshots can also be compared to each other, or to the current data, to check for modified data.
Snapshots do not take much disk space, but when data is deleted, the space will not be marked as free until any data is no longer referenced by the current system or any snapshot. As such, snapshots are also an easy way to avoid the impact of ransomware. Generally ZFS does not expect to reduce the size of a pool, and does not have tools to reduce the set of vdevs that a pool is stored on. Additional capacity can be added to a pool at any time, simply by adding more devices if needed, defining the unused devices into vdevs and adding the new vdevs to the pool.
The capacity of an individual vdev is generally fixed when it is defined. There is one exception to this rule: A pool can be expanded into unused space, and the datasets and volumes within a pool can be likewise expanded to use any unused pool space. Datasets do not need a fixed size and can dynamically grow as data is stored, but volumes, being block devices, need to have their size defined by the user, and must be manually resized as required which can be done 'live'.
Next, the "Hp ux vxfs fragmentation asexual reproduction" pointer is checksummed, with the value being saved at its pointer. This checksumming continues all the way up the file system's data hierarchy to the root node, which is also checksummed, thus creating a Merkle tree. ZFS stores the checksum of each block in its parent block pointer so the entire pool self-validates.
When a block is accessed, regardless of whether it is data or meta-data, its checksum is calculated and compared with the stored checksum value of what it "should" be. If the checksums match, the data are passed up the programming stack to the process that asked for it; if the values do not match, then ZFS can heal the data if the storage pool provides data redundancy such as with internal mirroringassuming that the copy of data is undamaged and with matching checksums.
If other copies of the damaged data exist or can be reconstructed from checksums and parity data, ZFS will use a copy of the data or recreate it via a RAID recovery mechanismand recalculate the checksum—ideally resulting in the reproduction Hp ux vxfs fragmentation asexual reproduction the originally expected value.
If the data passes this integrity check, the system can then update all faulty copies with known-good data and redundancy will be restored. For ZFS to be able to guarantee data integrity, it needs copies of the data, usually spread across multiple disks. This is because ZFS relies on the disk for an honest view, to determine the moment data is confirmed as safely written, and it has numerous algorithms designed to optimize its use of cachingcache flushingand disk handling.
If a third-party device performs caching or presents drives to ZFS as a single system, or without the low level view ZFS relies upon, there is a much greater chance that the system will perform less optimally, and that a failure will not be preventable by ZFS or as quickly or fully recovered by ZFS. For example, if a hardware RAID card is used, ZFS may not be able to determine the condition of disks or whether the Hp ux vxfs fragmentation asexual reproduction array is degraded or rebuilding, it may not know of all data corruption, and it cannot place data optimally across the disks, make selective repairs only, control how repairs are balanced with ongoing use, and may not be able to make repairs even if it could usually do so, as the hardware RAID card will interfere.
While it is possible to read the data with a compatible hardware RAID controller, this isn't always possible, and if the controller card develops a fault then a replacement may not be available, and other cards may not understand the manufacturer's custom data which is needed to manage and restore an array on a new card.
Therefore, unlike most other systems, where RAID cards or similar are used to offload resources and processing and enhance performance and reliability, with ZFS it is strongly recommended these methods not be used as they typically reduce the system's performance and reliability. The schemes are highly flexible. This, when combined with the Hp ux vxfs fragmentation asexual reproduction transactional semantics of ZFS, eliminates the write hole error.
This would be impossible if the filesystem and Hp ux vxfs fragmentation asexual reproduction 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 bit checksum as it goes, whereas traditional RAID products usually cannot do this. In addition to handling whole-disk failures, RAID-Z can also detect and correct silent data corruptionoffering "self-healing data": Then, it repairs the damaged data and returns good data to the requestor.
RAID-Z and mirroring do not require any special hardware: During those weeks, the rest of the disks in the RAID are stressed more because of the additional intensive repair process and might subsequently fail, too. ZFS has no tool equivalent to fsck the standard Unix and Linux data checking and repair tool for file systems.
ZFS is a bit file system,   so it can address 1. The maximum limits of ZFS are designed to be so large that they should never be encountered in practice. During writes, a block may be compressed, encrypted, checksummed and then deduplicated, in that order.
The policy for encryption is set at the dataset level when datasets file systems or ZVOLs are created.