The Volume Manager
At the bottom of the ZFS stack is the pooled storage layer. This layer fulfills a similar role to that of the volume manager on existing systems. It takes various physical devices and combines them into virtual devices.
Each virtual device (vdev) is constructed by combining devices using either mirroring or RAID-Z. Once you’ve constructed vdevs, you combine them into a storage pool. This approach gives you some flexibility. If you have some data that needs to be fast and some that needs to be very safe, you can create a heavily mirrored pool and a RAID-Z pool, and create filesystems from whichever one suits your needs better. Note that filesystems don’t have to be allocated contiguously on a vdev; while they can appear to be contiguous blocks of storage space to the upper layers, they might not be contiguous at all.
One of the key design ideas behind ZFS was that creating a volume should be almost as easy as creating a directory. For example, it’s possible to implement quotas in ZFS by giving each user his or her own volume for a home directory, which will grow dynamically in the storage pool.
Unlike other volume managers, ZFS specifies I/O scheduling. Each transaction has an associated priority and deadline, with scheduling handled at the vdev layer of the system.