A dataset refers to any form of ZFS filesystem data : filesystems, volumes...
Datasets have a name in the ZFS namespace that looks like this:
Listing datasets :
BSDroot is the name of the root dataset pool.
The REFER column contains the space used by the dataset without including the space occupied by the children in the hierarchy of the dataset.
For example the BSDroot/ROOT dataset is a child of the BSDroot dataset.
The MOUNTPOINT refers to where the dataset is mounted, for example in FreeBSD the root filesystem is mounted on the root directory : "/" , (none) means that the filesystem is not mounted as you can see in the example above.
A mount point can only hold one data set.
ZFS filesystem boot environments:
FreeBSD ZFS has multiple boot environments, the example above has the below boot environments:
We can have different boot environments with different settings.
to check all the subdirectories of BSDroot/root dataset to know which one of the root datasets in mounted and hence can used as a boot environment to start the machine:
-r flag: to go recursively in all the subfolders of the ROOT dataset. (BSDroot/ROOT).
We can see that the BSD/root/ROOT/default is the only one mounted, it is the boot environment.
To set attributes the ZFS dataset we use the below command (to get the quota attribute for example):
Sub-datasets inherit some properties from the parent dataset. Mount points for example can't be inherited for obvious reasons, quotas and compression on the other hand can be inherited.