KB450120 – Creating ZFS snapshots

Last modified: February 26, 2019
You are here:
Estimated reading time: 2 min

Creating and Destroying a ZFS Snapshot

You can use the zfs snapshot command to create a snapshot, which takes as its only argument the name of the snapshot that you want to create. In the example below, you are creating a snapshot of datapool/home/user that is named friday.

# zfs snapshot datapool/home/user@friday
Note: To create a recursive snapshot, use zfs “snapshot -r” and the snapshot name (for example, zfs snapshot -r datapool/home@now).

To destroy a ZFS snapshot, use the zfs destroy command followed by the snapshot name. In the example below, you are destroying the snapshot named datapool/home/user@friday.

# zfs destroy datapool/home/user@friday

There are several things that you must keep in mind when attempting to destroy a ZFS snapshot.

  • A data set cannot be destroyed if snapshots of the data set exist.
  • If clones have been created from a snapshot, they must be destroyed before the snapshot can be destroyed.

Renaming a ZFS Snapshot

You can rename a snapshot by using the zfs rename command followed by the snapshot name. In the example below, the snapshot datapool/home/user@friday resides in hrpool/home is renamed to datapool/home/user@today.

# zfs rename datapool/home/user@friday datapool/home/user@today
Note: Snapshots must be renamed within the same pool and data set from which they were created.

To recursively rename snapshots, use zfs rename –r followed by the snapshot name. In the example in the slide, only those snapshots that are named @yesterday are renamed to @2daysago.

# zfs rename -r users/home@yesterday @2daysago

Displaying a ZFS Snapshot

You can use the zfs list -t snapshot command to display snapshots as shown in this example.

# zfs list -t snapshot
NAME                             USED  AVAIL  REFER  MOUNTPOINT
rpool/ROOT/solaris@install      55.0M      -  2.67G  -
rpool/ROOT/solaris/var@install  2.51M      -   220M  -
rpool/export/home@friday            0      -    32K  -

You can enable or disable the display of snapshot listings in the zfs list output by using the listsnapshots pool property. This property is disabled by default. To enable this property, use zpool set listsnapshots=on, followed by the pool name. For example :

# zpool set listsnapshots=on rpool
Note: If you disable this property, you must use the zfs list -t snapshot command to display snapshot information.

To list the snapshots created for a specific file system, enter zfs list -r -t snapshot followed by the file system name.

# zfs list -r -t snapshot rpool/export/home
NAME                          USED  AVAIL  REFER  MOUNTPOINT
rpool/export/home@friday         0      -    32K  -
rpool/export/home/geek@2days     0      -    34K  -

In the example above, the snapshots created for the file system rpool/export/home are listed. This information is displayed by using the name and creation properties.

Accessing the Snapshot files

The snapshots of file systems are accessible in the .zfs/snapshot directory within the root of the file system. For example, if rpool/export/home is mounted on /export/home, the rpool/export/home@friday snapshot data is accessible in the /export/home/.zfs/snapshot/friday directory, as shown in the example below.

# ls /export/home/.zfs/snapshot

Rolling Back a ZFS Snapshot

You can use the zfs rollback command followed by the snapshot name to discard all the changes made since a specific snapshot. The zfs rollback command causes the file system to revert to its state at the time the snapshot was taken. In the example below, the datapool/home/user file system is rolled back to the thursday snapshot.

# zfs rollback datapool/home/user@thursday

By default, the zfs rollback command cannot roll back to a snapshot other than the most recent snapshot. To roll back to an earlier snapshot, you must destroy all intermediate snapshots. To do this, you must specify the -r option with the zfs rollback command followed by the snapshot name, as shown in the example below.

# zfs rollback -r datapool/home/user@tuesday

Here, the datapool/home/user file system is rolled back to the tuesday snapshot. For this operation to take place, the wednesday and thursday snapshots must be destroyed.

Was this article helpful?
Dislike 0
Views: 410
Unboxing Racking Storage Drives Cable Setup Power UPS Sizing Remote Access