One of the interface layers available in the ZFS on Linux port
is the ZVOL. The ZVOL layer allows you to create a virtual block
device in a ZFS storage pool. While this may not immediately
seem like a big deal it does open up some interesting possibilities.
For example, your virtual block device is now backed by whatever
level of ZFS data replication you like (mirror, raidz,
raidz2, etc) all with online scrubbing. Your
virtual block device also has fast snapshots due to ZFS’s
copy on write transaction model. This allows you do some interesting
things like format an ext2 file system which uses a ZVOL based block
device and mount it on your system. Here’s an example how.

Create the tank zpool containing a raidz vdev spread
over 3 devices. It is recommended that you use the persistent
/dev/disk/by-id/* device names when creating your pool to avoid
any device reordering issues latter. Your device names will of
course be different.

Each ZVOL block device will appear as a zd device in /dev/, a
symlink with the pool and dataset name will be automatically created
under /dev/zvol/. This behavior should be familiar because the
standard Linux /dev/disk/ symlinks are managed in fundamentally the
same way. Next we can partition the new /dev/zvol/tank/fish
block device.