In our previous article “ZFS: Snapshot Management” we learned about the many methods of using snapshots to give you a shorter path to recovery as well as reduce the time needed to revert changes that need to be reversed. Today we will discuss clones, which are essentially a copy-on-write duplicate of an existing snapshot, which unlike snapshots can be written to, can have snapshots taken against them, and can be promoted into a file system (which would then revert to the original file system as the clone).
Creating a clone is a two-part process. Clones cannot be directly created from a file system, they need to be created from a snapshot of a file system (which quiets the disk).
Configure Test Environment
mkfile 2g /export/vdisk01.img /export/vdisk02.img /export/vdisk03.img /export/vdisk04.imgzpool create tank raidz /export/vdisk01.img /export/vdisk02.img /export/vdisk03.img /export/vdisk04.imgzfs create tank/testCreate a Snapshot of the File System to be Cloned
zfs snapshot tank/test@nowClone the Snapshot you Created
zfs clone tank/test@now tank/testcloneView Details of the File Systems
zfs list -r tank
NAME USED AVAIL REFER MOUNTPOINT
tank 21.1M 5.82G 46.4K /tank
tank/test 21.0M 5.82G 21.0M /tank/test
tank/testclone 1.50K 5.82G 21.0M /tank/testclonePromote the Clone to a File System
zfs promote tank/testcloneView Details of the File Systems
zfs list -r tank
NAME USED AVAIL REFER MOUNTPOINT
tank 21.1M 5.82G 47.9K /tank
tank/test 0 5.82G 21.0M /tank/test
tank/testclone 21.0M 5.82G 21.0M /tank/testclonePerform a Rename Operation of the Newly Promoted File System
zfs rename tank/testclone tank/promotedNow you will notice that the snapshot which was used to create the clone has been converted to be a child of the clone. This is a result of the promotion of the clone.
zfs list -t snapshot -r tank
NAME USED AVAIL REFER MOUNTPOINT
tank/promoted@now 1.50K - 21.0M -Destroy the Original File System
zfs destroy tank/test