Creating a ZFS File System Hierarchy
After creating a storage pool to store your data, you can create
your file system hierarchy. Hierarchies are simple yet powerful mechanisms for organizing information. They
are also very familiar to anyone who has used a file system.
ZFS allows file systems to be organized into arbitrary hierarchies, where each file
system has only a single parent. The root of the hierarchy is always
the pool name. ZFS leverages this hierarchy by supporting property inheritance so that
common properties can be set quickly and easily on entire trees of file
systems.
How to Determine Your ZFS File System Hierarchy
- Pick the file system granularity.
ZFS file systems are the central point of administration. They are lightweight and
can be created easily. A good model to use is a file system
per user or project, as this model allows properties, snapshots, and backups to
be controlled on a per-user or per-project basis.
Two ZFS file systems, bonwick and billm, are created in How to Create ZFS File Systems.
For more information on managing file systems, see Chapter 5, Managing ZFS File Systems.
- Group similar file systems.
ZFS allows file systems to be organized into hierarchies so that similar file
systems can be grouped. This model provides a central point of administration for
controlling properties and administering file systems. Similar file systems should be created under a
common name.
For the example in How to Create ZFS File Systems, the two file systems are placed under a
file system named home.
- Choose the file system properties.
Most file system characteristics are controlled by using simple properties. These properties control a
variety of behavior, including where the file systems are mounted, how they are
shared, if they use compression, and if any quotas are in effect.
For the example in How to Create ZFS File Systems, all home directories are mounted at /export/zfs/user, are
shared by using NFS, and with compression enabled. In addition, a quota of
10 Gbytes on bonwick is enforced.
For more information about properties, see Introducing ZFS Properties.
How to Create ZFS File Systems
- Become root or assume an equivalent role with the appropriate ZFS rights profile.
For more information about the ZFS rights profiles, see ZFS Rights Profiles.
- Create the desired hierarchy.
In this example, a file system that acts as a container for individual
file systems is created.
# zfs create tank/home
Next, individual file systems are grouped under the home file system in the
pool tank.
- Set the inherited properties.
After the file system hierarchy is established, set up any properties that should
be shared among all users:
# zfs set mountpoint=/export/zfs tank/home
# zfs set sharenfs=on tank/home
# zfs set compression=on tank/home
# zfs get compression tank/home
NAME PROPERTY VALUE SOURCE
tank/home compression on local
A new feature is available that enables you to set file system
properties when the file system is created. For example:
# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home
For more information about properties and property inheritance, see Introducing ZFS Properties.
- Create the individual file systems.
Note that the file systems could have been created and then the properties
could have been changed at the home level. All properties can be changed dynamically
while file systems are in use.
# zfs create tank/home/bonwick
# zfs create tank/home/billm
These file systems inherit their property settings from their parent, so they are
automatically mounted at /export/zfs/user and are NFS shared. You do not need
to edit the /etc/vfstab or /etc/dfs/dfstab file.
For more information about creating file systems, see Creating a ZFS File System.
For more information about mounting and sharing file systems, see Mounting and Sharing ZFS File Systems.
- Set the file system-specific properties.
In this example, user bonwick is assigned a quota of 10 Gbytes. This
property places a limit on the amount of space he can consume, regardless
of how much space is available in the pool.
# zfs set quota=10G tank/home/bonwick
- View the results.
View available file system information by using the zfs list command:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 92.0K 67.0G 9.5K /tank
tank/home 24.0K 67.0G 8K /export/zfs
tank/home/billm 8K 67.0G 8K /export/zfs/billm
tank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick
Note that the user bonwick only has 10 Gbytes of space available, while
the user billm can use the full pool (67 Gbytes).
For more information about viewing file system status, see Querying ZFS File System Information.
For more information about how space is used and calculated, see ZFS Space Accounting.