BigAdmin System Administration Portal
New ZFS Features in the Solaris 10 10/09 Release
Begin Tab Sub Links Active SubSolaris 10
  • Solaris 10 10/09
* - Third Party Resource (will leave sun.com)

New ZFS Features in the Solaris 10 10/09 Release

last updated 2009-10-07

There are many new ZFS features in the Solaris 10 10/09 release. These are the three primary ones:

We provide an overview of these three features here. For a complete list of all the new ZFS features, see What's New in ZFS? in the Solaris ZFS Administration Guide.

ZFS Flash Archive

Starting with the Solaris 10 10/09 release, you can create a Flash archive of a ZFS root file system on one system and install it as the boot environment on other systems. Previously, you could only create a Flash archive of a UFS root file system.

A Flash archive of a ZFS file system clones an entire root pool hierarchy. It does not contain the swap and dump volumes. Those are created when you install the Flash archive. You can exclude individual datasets from the archive by using the -D option to the flarcreate command.

Note: The workaround documented in this blog by Scott Dickson is no longer necessary.

Limitations

  • You must use JumpStart to install the ZFS Flash archive. You cannot use Solaris Live Upgrade or the interactive installation option of a Flash archive that you normally use with UFS.
  • The architecture of the archive and install systems must match. For instance, if you create an archive on a sun4u system, you cannot install the archive on a sun4v system.
  • You must install the full ZFS archive. You cannot install a differential Flash archive of a ZFS system, and you cannot install a hybrid UFS/ZFS archive.
  • If you created a UFS Flash archive, you cannot install it on a ZFS file system. You can install a ZFS Flash archive only on a ZFS file system.
  • Although the entire root pool, minus any explicitly excluded datasets, is archived and installed, only the ZFS boot environment that is booted when the archive is created is usable after the Flash archive is installed.
  • You cannot change the root pool name.
  • You cannot use the flarcreate and flar command options to include or exclude individual files. You can only exclude entire datasets from a ZFS Flash archive by using the flarcreate -D [dataset] command.
  • The info option to the flar command does not work on a ZFS Flash archive.

What's Involved for Creating and Installing a ZFS Flash Archive

Here are the general steps for creating and installing a ZFS Flash archive. For detailed instructions, see the Solaris ZFS Administration Guide.

1. Upgrade your master system to the Solaris 10 10/09 release.

Note: You can download Solaris 10 10/09 here.

2. Use the flarcreate command to create the ZFS Flash archive of the ZFS root pool on the master system. Use the -D option to exclude one or more datasets from the archive.

3. On the system that will be used as the installation server, create a JumpStart profile, as you would for installing any system.

4. Install the ZFS Flash archive on the target system.

Cache Devices for ZFS Storage Pools

In the Solaris 10 10/09 release, you can now include cache devices in a ZFS storage pool. Cache devices provide an additional layer of caching between main memory and disk, and they provide the greatest performance improvement for random-read workloads of mostly static content.

Here's an overview of adding, monitoring, and removing cache devices. For more details, see Using Cache Devices in Your ZFS Storage Pool in the Solaris ZFS Administration Guide.

Limitations

  • Cache devices cannot be mirrored or be part of a RAID-Z configuration.
  • If a read error is encountered on a cache device, that read I/O is reissued to the original storage pool device, which might be part of a mirrored or RAID-Z configuration. The content of the cache devices is considered volatile, as is the case with other system caches.

What's Involved for Adding, Monitoring, and Removing Cache Devices

One or more cache devices can be added when a pool is created. Cache devices can be also added after a pool is created, and cache devices can be removed after a pool is created.

Here's an example of adding a cache device during pool creation:

# zpool create pool mirror c0t2d0 c0t4d0 cache c0t0d0
# zpool status pool
   pool: pool
  state: ONLINE
  scrub: none requested
config:

         NAME        STATE     READ WRITE CKSUM
         pool        ONLINE       0     0     0
           mirror    ONLINE       0     0     0
             c0t2d0  ONLINE       0     0     0
             c0t4d0  ONLINE       0     0     0
         cache
           c0t0d0    ONLINE       0     0     0

errors: No known data errors

After a cache device is added, it is gradually filled with content from main memory. Depending on the size of your cache device, it could take over an hour for the device to be filled.

Cache capacity and reads can be monitored by using the zpool iostat command, as follows:

# zpool iostat -v pool 5

Use the zpool remove command to remove cache devices.

For more information, see Using Cache Devices in Your ZFS Storage Pool in the Solaris ZFS Administration Guide.

ZFS User and Group Quotas

In previous Solaris releases, you could apply quotas and reservations to ZFS file systems to manage and reserve space.

In the Solaris 10 10/09 release, you can set a quota on the amount of space consumed by files that are owned by a particular user or group. You might consider setting user and group quotas in an environment that has a large number of users or groups.

Here's an overview of setting user and group quotas for ZFS file systems and displaying the current user and group quota settings. For more details, see ZFS User and Group Quotas in the Solaris ZFS Administration Guide.

Limitations

  • User and group quotas provide a way to more easily manage disk space in an environment that has many user accounts, such as in a university environment.
  • ZFS user and group quotas can be set and displayed by using the zfs set and zfs get commands.
  • ZFS quotas impact the output of the zfs list and df commands.
  • You cannot set a quota to an amount less than is currently being used by a dataset.
  • When set on a file system, a user or group quota that is set on a parent file system is not automatically inherited by a descendent file system. However, the user or group quota is applied when a clone or a snapshot is created from a file system that has a user or group quota. Likewise, a user or group quota is included with the file system when a stream is created by using the zfs send command, even without -R option.
  • Unprivileged users can access usage information only for their own space. The root user or a user who has been granted the userused or groupused privilege, can access usage information for everyone's user or group space.

What's Involved for Setting and Removing User or Group Quotas

You can set user or group quotas by using the zfs set userquota@user and zfs set groupquota commands, as follows.

Note: The userquota and groupquota properties cannot be set on ZFS volumes, on a file system prior to file system version 4, or on a pool prior to pool version 15.

# zfs set userquota@user1=5G tank/data
# zfs set groupquota@staff=10G tank/staff/admins

You can remove a user or group quota, as follows:

# zfs set userquota@user1=none tank/data
# zfs set groupquota@staff=none tank/staff/admins

What's Involved for Displaying User and Group Quota Settings and Used Space

You can display a user's or group's current quota setting by using the zfs get userquota@user and zfs get groupquota@group commands, as follows:

# zfs get userquota@user1 tank/data
NAME       PROPERTY         VALUE            SOURCE
tank/data  userquota@user1  5G               local

# zfs get groupquota@staff tank/staff/admins
NAME               PROPERTY          VALUE             SOURCE
tank/staff/admins  groupquota@staff  10G               local

To display general quota information, use the zfs userspace and zfs groupspace commands, for example:

# zfs userspace tank/data
TYPE        NAME   USED  QUOTA
POSIX User  root     3K   none
POSIX User  user1     0    5G

# zfs groupspace tank/staff/admins
TYPE         NAME   USED  QUOTA
POSIX Group  root     3K   none
POSIX Group  staff     0    10G

You can display individual user or group space usage by using the zfs get userused@user and zfs get groupused@group commands, as follows:

# zfs get userused@user1 tank/staff
NAME        PROPERTY        VALUE           SOURCE
tank/staff  userused@user1  213M            local

# zfs get groupused@staff tank/staff
NAME        PROPERTY         VALUE            SOURCE
tank/staff  groupused@staff  213M             local

For more information, see ZFS User and Group Quotas in the Solaris ZFS Administration Guide.


Comments (latest comments first)

Discuss and comment on this resource in the BigAdmin Wiki
BigAdmin
  
 
BigAdmin Upgrade Hub