can be properly allocated. Very frequently, however, disk use and requirements
change over time.
Even if the storage array allowed the entire set of twenty disks to be created as one large RAID set, other issues could arise.
Several volumes of various sizes could be built on the set. .
But some volume managers do not allow us to change a volume’s size.
In that case, we would be left with the same issue described above—mismatched file-system sizes.
Some volume managers allow size changes, but some file systems do not allow for file-system growth or shrinkage.
The volumes could change sizes, but the file systems would need to be recreated to take advantage of those changes.
ZFS combines file-system management and volume management into a unit providing greater functionality than the traditional separation of those functions allows.
Disks, or partitions of disks, are gathered together via RAID sets into pools of storage.
A pool can hold one or more ZFS file systems. The entire pool’s free space is available to all file systems within that pool. ZFS uses
the memory model of malloc() and free() to allocate and release storage for each file system as blocks are used and freed within the file system.
As a result, there are no artificial limits on storage use and no need to relocate file systems between volumes or resize volumes.
ZFS provides quotas to limit the size of a file system and reservations to assure that a file system can grow by a specified amount, but those variables can be changed by the file-system owner at any time.
Figure 10.14(a) depicts traditional volumes and file systems, and Figure 10.14(b) shows the ZFS model.