This section describes new ZFS features in the Solaris Express Developer Edition 5/07 release.
Recursively renaming ZFS snapshots – You can recursively rename all descendant ZFS snapshots by using the zfs rename -r command.
For example, snapshot a set of ZFS file systems called users/home@today. Then, rename all the snapshots in one command the next day, as users/home/@yesterday.
Snapshots are the only dataset that can be renamed recursively.
GZIP compression is available – You can set gzip compression on ZFS file systems in addition to lzjb compression. You can specify compression as gzip, the default, or gzip-N, where N equals 1 through 9. For example:
# zfs create -o compression=gzip users/home/snapshots # zfs get compression users/home/snapshots NAME PROPERTY VALUE SOURCE users/home/snapshots compression gzip local # zfs create -o compression=gzip-9 users/home/oldfiles # zfs get compression users/home/oldfiles NAME PROPERTY VALUE SOURCE users/home/oldfiles compression gzip-9 local |
Storing multiple copies of ZFS user data – As a reliability feature, ZFS file system metadata is automatically stored multiple times across different disks, if possible. This feature is known as ditto blocks.
Starting with this release, you can specify that multiple copies of user data is also stored per file system by using the zfs set copies command. For example:
# zfs set copies=2 users/home # zfs get copies users/home NAME PROPERTY VALUE SOURCE users/home copies 2 local |
Available values are 1, 2, or 3. The default value is 1. These copies are in addition to any pool-level redundancy, such as in a mirrored or RAID-Z configuration.
The benefits of storing multiple copies of ZFS user data are as follows:
Improves data retention by allowing recovery from unrecoverable block read faults, such as media faults (bit rot) for all ZFS configurations.
Provides data protection even in the case where only a single disk is available.
Allows you to select data protection policies on a per-file system basis, beyond the capabilities of the storage pool.
Improved storage pool status information (zpool status) – You can use the zpool status -v command to display a list of files with persistent errors. Previously, you had to use the find -inum command to identify the filenames from the list of displayed inodes.
Sharing ZFS file system enhancements – The process of sharing file systems has been improved. Although modifying system configuration files, such as /etc/dfs/dfstab, is unnecessary for sharing ZFS file systems, you can use the sharemgr command to manage ZFS share properties. The sharemgr command enables you to set and manage share properties on share groups. ZFS shares are automatically designated in the zfs share group.
As in previous releases, you can set the ZFS sharenfs property on a ZFS file system to share a ZFS file system. For example:
# zfs set sharenfs=on tank/home |
Or, you can use the new sharemgr add-share subcommand to share a ZFS file system in the zfs share group. For example:
# sharemgr add-share -s tank/data zfs # sharemgr show -vp zfs zfs nfs=() zfs/tank/data /tank/data /tank/data/1 /tank/data/2 /tank/data/3 |
Then, you can use the sharemgr command to manage ZFS shares. The following example shows how to use sharemgr to set the nosuid property on the shared ZFS file systems. You must preface ZFS share paths with /zfs designation.
# sharemgr set -P nfs -p nosuid=true zfs/tank/data # sharemgr show -vp zfs zfs nfs=() zfs/tank/data nfs=(nosuid="true") /tank/data /tank/data/1 /tank/data/2 /tank/data/3 |
ZFS and Solaris iSCSI improvements – You can create a ZFS volume as a Solaris iSCSI target device by setting the shareiscsi property on the ZFS volume. This method is a convenient way to quickly set up a Solaris iSCSI target. For example:
# zfs create -V 2g tank/volumes/v2 # zfs set shareiscsi=on tank/volumes/v2 # iscsitadm list target Target: tank/volumes/v2 iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a Connections: 0 |
After the iSCSI target is created, set up the iSCSI initiator. For information about setting up a Solaris iSCSI initiator, see Chapter 14, Configuring Solaris iSCSI Targets and Initiators (Tasks), in System Administration Guide: Devices and File Systems.
For more information about managing a ZFS volume as an iSCSI target, see the Solaris ZFS Administration Guide.
ZFS property improvements
ZFS xattr property – You can use the xattr property to disable or enable extended attributes for a specific ZFS file system. The default value is on.
ZFS canmount property – You use the canmount property to specify whether a dataset can be mounted by using the zfs mount command.
ZFS user properties – ZFS supports user properties, in addition to the standard native properties that can either export internal statistics or control ZFS file system behavior. User properties have no effect on ZFS behavior, but you can use them to annotate datasets with information that is meaningful in your environment.
Setting properties when creating ZFS file systems – You can set properties when you create a file system, in addition to setting properties after the file system is created.
The following examples illustrate equivalent syntax:
# zfs create tank/home # zfs set mountpoint=/export/zfs tank/home # zfs set sharenfs=on tank/home # zfs set compression=on tank/home |
# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home |
Display all ZFS file system information – You can use various forms of the zfs get command to display information about all datasets if you do not specify a dataset. In previous releases, all dataset information was not retrievable with the zfs get command. For example:
# zfs get -s local all tank/home atime off local tank/home/bonwick atime off local tank/home/marks quota 50G local |
New zfs receive -F option – You can use the new -F option to the zfs receive command to force a rollback of the file system to the most recent snapshot before doing the receive. Using this option might be necessary when the file system is modified between the time a rollback occurs and the receive is initiated.
Recursive ZFS snapshots – Recursive snapshots are available. When you use the zfs snapshot command to create a file system snapshot, you can use the -r option to recursively create snapshots for all descendant file systems. In addition, using the -r option recursively destroys all descendant snapshots when a snapshot is destroyed.
For more information about these enhancements, see the Solaris ZFS Administration Guide.