|Skip Navigation Links|
|Exit Print View|
|Oracle Solaris Administration: ZFS File Systems Oracle Solaris 11 Information Library|
This section summarizes new features in the ZFS file system.
Oracle Solaris 11: The zfs.1m manual page has been revised so that core ZFS file system features remain in the zfs.1m page, but delegated administration, encryption, and share syntax and examples are covered in the following pages:
Oracle Solaris 11: The aclmode property modifies Access Control List (ACL) behavior when a file is initially created or whenever controls how an ACL is modified during a chmod operation. The aclmode property has been reintroduced with the following property values:
discard – A file system with an aclmode property of discard deletes all ACL entries that do not represent the mode of the file. This is the default value.
mask – A file system with an aclmode property of mask reduces user or group permissions. The permissions are reduced, such that they are no greater than the group permission bits, unless it is a user entry that has the same UID as the owner of the file or directory. In this case, the ACL permissions are reduced so that they are no greater than owner permission bits. The mask value also preserves the ACL across mode changes, provided an explicit ACL set operation has not been performed.
passthrough – A file system with an aclmode property of passthrough indicates that no changes are made to the ACL other than generating the necessary ACL entries to represent the new mode of the file or directory.
For more information, see Example 8-14.
Oracle Solaris 11: In this Solaris release, use the zpool status -l command to display physical disk location information for pool devices that is available from the /dev/chassis directory. This directory contains chassis, receptacle, and occupant values for the devices on your system.
In addition, you can use the fmadm add-alias command to include a disk alias name that helps you identify the physical location of disks in your environment. For example:
# fmadm add-alias SUN-Storage-J4400.0912QAJ001 SUN-Storage-J4400.rack22
% zpool status -l export pool: export state: ONLINE scan: resilvered 379G in 8h31m with 0 errors on Thu Jan 27 23:10:20 2011 config: NAME STATE READ WRITE CKSUM export ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__2/disk ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__3/disk ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__4/disk ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__5/disk ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__6/disk ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__7/disk ONLINE 0 0 0 mirror-3 ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__8/disk ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__9/disk ONLINE 0 0 0 mirror-4 ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__10/disk ONLINE 0 0 0 /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__11/disk ONLINE 0 0 0 spares /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__0/disk AVAIL /dev/chassis/SUN-Storage-J4400.rack22/SCSI_Device__1/disk AVAIL errors: No known data errors
The zpool iostat command has also been updated to provide physical location information for a pool's devices. For example:
# zpool iostat -lv capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- export 2.39T 2.14T 13 27 42.7K 300K mirror 490G 438G 2 5 8.53K 60.3K /dev/chassis/...rack22/SCSI_Device__2/disk - - 1 0 4.47K 60.3K /dev/chassis/...rack22/SCSI_Device__3/disk - - 1 0 4.45K 60.3K mirror 490G 438G 2 5 8.62K 59.9K /dev/chassis/...rack22/SCSI_Device__4/disk - - 1 0 4.52K 59.9K /dev/chassis/...rack22/SCSI_Device__5/disk - - 1 0 4.48K 59.9K mirror 490G 438G 2 5 8.60K 60.2K /dev/chassis/...rack22/SCSI_Device__6/disk - - 1 0 4.50K 60.2K /dev/chassis/...rack22/SCSI_Device__7/disk - - 1 0 4.49K 60.2K mirror 490G 438G 2 5 8.47K 60.1K . . .
In addition, the croinfo, diskinfo, format, and prtconf commands also provide physical disk location information. For more information, see Identifying Devices by Physical Locations in Oracle Solaris Administration: Devices and File Systems.
Oracle Solaris 11: In this release, you can migrate data from an old file system to a new file system while simultaneously allowing access and modification of the new file system during the migration process.
Setting the shadow property on a new ZFS file system triggers the migration of the older data. The shadow property can be set to migrate data from the local system or a remote system with either of the following values:
For more information, see Migrating ZFS File Systems.
Oracle Solaris 11: In this Solaris release, ZFS file systems are shared in a two-step process so that the share properties are set with one command and the NFS or SMB share is published in another step.
You create the NFS or SMB share of a ZFS file system and identify the file sharing properties by using the zfs set share command.
The NFS or SMB shares are published by setting the sharenfs or sharesmb property to on.
For more information, see Sharing and Unsharing ZFS File Systems .
Oracle Solaris 11: In this release, you can encrypt a ZFS file system.
For example, the tank/cindy file system is created with the encryption property enabled. The default encryption policy is to prompt for a passphrase, which must be a minimum of 8 characters in length.
# zfs create -o encryption=on tank/cindy Enter passphrase for 'tank/cindy': xxx Enter again: xxx
An encryption policy is set when a ZFS file system is created. A file system's encryption policy is inherited by descendent file systems and cannot be removed.
For more information, see Encrypting ZFS File Systems.
Oracle Solaris 11: In this release, you can set file system properties that are sent and received in a snapshot stream. These enhancements provide flexibility in applying file system properties in a send stream to the receiving file system or in determining whether the local file system properties, such as the mountpoint property value, should be ignored when received.
For more information, see Applying Different Property Values to a ZFS Snapshot Stream.
Oracle Solaris 11: In this release, you can determine ZFS snapshot differences by using the zfs diff command.
For example, assume that the following two snapshots are created:
$ ls /tank/cindy fileA $ zfs snapshot tank/cindy@0913 $ ls /tank/cindy fileA fileB $ zfs snapshot tank/cindy@0914
For example, to identify the differences between two snapshots, use syntax similar to the following:
$ zfs diff tank/cindy@0913 tank/cindy@0914 M /tank/cindy/ + /tank/cindy/fileB
In the output, the M indicates that the directory has been modified. The + indicates that fileB exists in the later snapshot.
For more information, see Identifying ZFS Snapshot Differences (zfs diff).
Oracle Solaris 11: In this release, the following new ZFS storage pool features are provided:
You can import a pool with a missing log by using the zpool import -m command. For more information, see Importing a Pool With a Missing Log Device.
You can import a pool in read-only mode. This feature is primarily for pool recovery. If a damaged pool cannot be accessed because the underlying devices are damaged, you can import the pool read-only to recover the data. For more information, see Importing a Pool in Read-Only Mode.
A RAID-Z (raidz1, raidz2, or raidz3) storage pool that is created in this release and upgraded to at least pool version 29 will have some latency-sensitive metadata automatically mirrored to improve read I/O throughput performance. For existing RAID-Z pools that are upgraded to at least pool version 29, some metadata will be mirrored for all newly written data.
Mirrored metadata in a RAID-Z pool does not provide additional protection against hardware failures, similar to what a mirrored storage pool provides. Additional space is consumed by mirrored metadata, but the RAID-Z protection remains the same as in previous releases. This enhancement is for performance purposes only.
Oracle Solaris 11: In this release, you can determine a ZFS file system's synchronous behavior by using the sync property.
The default synchronous behavior is to write all synchronous file system transactions to the intent log and to flush all devices to ensure that the data is stable. Disabling the default synchronous behavior is not recommended. Applications that depend on synchronous support might be affected, and data loss could occur.
The sync property can be set before or after the file system is created. In either case, the property value takes effect immediately. For example:
# zfs set sync=always tank/neil
The zil_disable parameter is no longer available in Oracle Solaris releases that include the sync property.
For more information, see Table 6-1.
Oracle Solaris 11: In this release, you can use the -T option to provide an interval and count value for the zpool list and zpool status commands to display additional information.
In addition, more pool scrub and resilver information is provided by the zpool status command as follows:
Resilver in-progress report. For example:
scan: resilver in progress since Thu May 26 11:26:32 2011 1.26G scanned out of 2.40G at 6.15M/s, 0h3m to go 1.26G resilvered, 56.3% done
Scrub in-progress report. For example:
scan: scrub in progress since Fri May 27 08:24:17 2011 18.0M scanned out of 2.35G at 8.99M/s, 0h4m to go 0 repaired, 0.75% done
Resilver completion message. For example:
scan: resilvered 2.34G in 1h2m with 0 errors on Thu May 26 11:56:40 2011
Scrub completion message. For example:
scan: scrub repaired 512B in 1h2m with 0 errors on Fri May 27 08:54:50 2011
Ongoing scrub cancellation message. For example:
scan: scrub canceled on Wed Fri Jun 10 09:06:24 2011
Scrub and resilver completion messages persist across system reboots
The following syntax uses the interval and count option to display ongoing pool resilvering information. You can use the -T d value to display the information in standard date format or -T u to display the information in an internal format.
# zpool status -T d tank 3 2 Wed Jun 22 14:35:40 GMT 2011 pool: tank state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Jun 22 14:33:29 2011 3.42G scanned out of 7.75G at 28.2M/s, 0h2m to go 3.39G resilvered, 44.13% done config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t4d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c2t7d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 (resilvering) errors: No known data errors
Oracle Solaris 11: In this release, the following ACL enhancements are provided:
Trivial ACLs do not require deny Access control entries (ACEs) except for unusual permissions. For example, a mode of 0644, 0755, or 0664 does not require deny ACEs, but a mode, such as 0705, 0060, and so on, does require deny ACEs.
The old behavior includes deny ACEs in a trivial ACL like 644. For example:
# ls -v file.1 -rw-r--r-- 1 root root 206663 Jun 14 11:52 file.1 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data/write_xattr/write_attributes /write_acl/write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr/execute/write_attributes /write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
The new behavior for a trivial ACL like 644 does not include the deny ACEs. For example:
# ls -v file.1 -rw-r--r-- 1 root root 206663 Jun 22 14:30 file.1 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
ACLs are no longer split into multiple ACEs during inheritance to try to preserve the original unmodified permission. Instead, the permissions are modified as necessary to enforce the file creation mode.
The aclinherit property behavior includes a reduction in permissions when the property is set to restricted, which means that ACLs are no longer split into multiple ACEs during inheritance.
An existing ACL is discarded during chmod(2) operations by default. This change means that the ZFS aclmode property is no longer available.
A new permission mode calculation rule specifies that if an ACL has a user ACE that is also the file owner, then those permissions are included in the permission mode computation. The same rule applies if a group ACE is the group owner of the file.
For more information, see Chapter 8, Using ACLs and Attributes to Protect Oracle Solaris ZFS Files.
Oracle Solaris 11: In this release, you can use the zpool split command to split a mirrored storage pool, which detaches a disk or disks in the original mirrored pool to create another identical pool.
For more information, see Creating a New Pool By Splitting a Mirrored ZFS Storage Pool.
Oracle Solaris 11: In this release, the iSCSI target daemon is replaced by using the Common Multiprotocol SCSI Target (COMSTAR) target daemon. This change also means that the shareiscsi property that was used to share a ZFS volume as an iSCSI LUN is no longer available. Use the stmfadm command to configure and share a ZFS volume as an iSCSI LUN.
For more information, see Using a ZFS Volume as an iSCSI LUN.
Oracle Solaris 11: In this release, each ZFS storage pool has an associated process, zpool-poolname. The threads in this process are the pool's I/O processing threads to handle I/O tasks, such as compression and checksum validation, that are associated with the pool. The purpose of this process is to provide visibility into each storage pool's CPU utilization.
Information about these running processes can be reviewed by using the ps and prstat commands. These processes are only available in the global zone. For more information, see SDC(7).
Oracle Solaris 11: In this release, you can use the deduplication (dedup) property to remove redundant data from your ZFS file systems. If a file system has the dedup property enabled, duplicate data blocks are removed synchronously. The result is that only unique data is stored, and common components are shared between files.
You can enable this property as follows:
# zfs set dedup=on tank/home
Although deduplication is set as a file system property, the scope is pool-wide. For example, you can identify the deduplication ratio as follows:
# zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 55.2G 80.8G 40% 2.30x ONLINE -
The zpool list output has been updated to support the deduplication property.
For more information about setting the deduplication property, see The dedup Property.
Do not enable the dedup property on file systems that reside on production systems until you review the following considerations:
Determine if your data would benefit from deduplication space savings
Determine whether your system has enough physical memory to support deduplication
Potential system performance impacts
For more information about these considerations, see The dedup Property.