Chapter 5. Managing ZFS File Systems

Table of Contents

Creating and Destroying ZFS File Systems
Creating a ZFS File System
Destroying a ZFS File System
Renaming a ZFS File System
ZFS Properties
Read-Only ZFS Properties
Settable ZFS Properties
Querying ZFS File System Information
Listing Basic ZFS Information
Creating Complex ZFS Queries
Managing ZFS Properties
Setting ZFS Properties
Inheriting ZFS Properties
Querying ZFS Properties
Querying ZFS Properties for Scripting
Mounting and Sharing ZFS File Systems
Managing ZFS Mount Points
Mounting ZFS File Systems
Temporary Mount Properties
Unmounting ZFS File Systems
Sharing ZFS File Systems
ZFS Quotas and Reservations
Setting Quotas on ZFS File Systems
Setting Reservations on ZFS File Systems

Creating and Destroying ZFS File Systems

ZFS file systems can be created and destroyed by using the zfs create and zfs destroy commands.

Creating a ZFS File System

ZFS file systems are created by using the zfs create command. The create subcommand takes a single argument: the name of the file system to create. The file system name is specified as a path name starting from the name of the pool:


The pool name and initial file system names in the path identify the location in the hierarchy where the new file system will be created. All the intermediate file system names must already exist in the pool. The last name in the path identifies the name of the file system to be created. The file system name must satisfy the naming conventions defined in ZFS Component Naming Requirements.

In the following example, a file system named bonwick is created in the tank/home file system.

# zfs create tank/home/bonwick

ZFS automatically mounts the newly created file system if it is created successfully. By default, file systems are mounted as /dataset, using the path provided for the file system name in the create subcommand. In this example, the newly created bonwick file system is at /tank/home/bonwick. For more information about automanaged mount points, see Managing ZFS Mount Points.

For more information about the zfs create command, see zfs ( 1M ) .

Destroying a ZFS File System

To destroy a ZFS file system, use the zfs destroy command. The destroyed file system is automatically unmounted and unshared. For more information about automanaged mounts or automanaged shares, see Automatic Mount Points.

In the following example, the tabriz file system is destroyed.

# zfs destroy tank/home/tabriz


No confirmation prompt appears with the destroy subcommand. Use it with extreme caution.

If the file system to be destroyed is busy and so cannot be unmounted, the zfs destroy command fails. To destroy an active file system, use the f option. Use this option with caution as it can unmount, unshare, and destroy active file systems, causing unexpected application behavior.

# zfs destroy tank/home/ahrens
cannot unmount 'tank/home/ahrens': Device busy

# zfs destroy -f tank/home/ahrens

The zfs destroy command also fails if a file system has children. To recursively destroy a file system and all its descendants, use the r option. Note that a recursive destroy also destroys snapshots so use this option with caution.

# zfs destroy tank/ws
cannot destroy 'tank/ws': filesystem has children
use '-r' to destroy the following datasets:

# zfs destroy -r tank/ws

If the file system to be destroyed has indirect dependents, even the recursive destroy command described above fails. To force the destruction of all dependents, including cloned file systems outside the target hierarchy, the R option must be used. Use extreme caution with this option.

# zfs destroy -r tank/home/schrock
cannot destroy 'tank/home/schrock': filesystem has dependent clones
use '-R' to destroy the following datasets:

# zfs destroy -R tank/home/schrock


No confirmation prompt appears with the f, r, or R options so use these options carefully.

For more information about snapshots and clones, see Chapter 6, Working With ZFS Snapshots and Clones.

Renaming a ZFS File System

File systems can be renamed by using the zfs rename command. Using the rename subcommand can perform the following operations:

  • Change the name of a file system

  • Relocate the file system to a new location within the ZFS hierarchy

  • Change the name of a file system and relocate it with the ZFS hierarchy

The following example uses the rename subcommand to do a simple rename of a file system:

# zfs rename tank/home/kustarz tank/home/kustarz_old

This example renames the kustarz file system to kustarz_old.

The following example shows how to use zfs rename to relocate a file system.

# zfs rename tank/home/maybee tank/ws/maybee

In this example, the maybee file system is relocated from tank/home to tank/ws. When you relocate a file system through rename, the new location must be within the same pool and it must have enough space to hold this new file system. If the new location does not have enough space, possibly because it has reached its quota, the rename will fail.

For more information about quotas, see ZFS Quotas and Reservations.

The rename operation attempts an unmount/remount sequence for the file system and any descendant file systems. The rename fails if the operation is unable to unmount an active file system. If this problem occurs, you will need to force unmount the file system.

For information about renaming snapshots, see Renaming ZFS Snapshots.