What's New in Solaris 10 10/09
By user12611829 on Oct 09, 2009
Solaris 10 10/09 (u8) is now available for download at http://sun.com/solaris/get.jsp. DVD ISO images (full and segments that can be reassembled after download) are available for both SPARC and x86.
Here are a few of the new features in this release that caught my attention.
Packaging and PatchingImproved performance of SVR4 package commands: Improvements have been made in the SVR4 package commands (pkgadd, pkgrm, pkginfo et al). The impact of these can be seen in drastically reduced zone installation time. How much of an improvement you ask (and you know I have to answer with some data, right) ?
# cat /etc/release; uname -a Solaris 10 5/09 s10x_u7wos_08 X86 Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 30 March 2009 SunOS chapterhouse 5.10 Generic_141415-09 i86pc i386 i86pc # time zoneadm -z zone1 install Preparing to install zone
. Creating list of files to copy from the global zone. Copying <2905> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1453> packages on the zone. Initialized <1453> packages on zone. Zone is initialized. Installation of these packages generated errors: The file contains a log of the zone installation. real 5m48.476s user 0m45.538s sys 2m9.222s
# cat /etc/release; uname -a Solaris 10 10/09 s10x_u8wos_08a X86 Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 16 September 2009 SunOS corrin 5.10 Generic_141445-09 i86pc i386 i86pc # time zoneadm -z zone1 install Preparing to install zoneOK, that's pretty impressive. A zone installation on Solaris 10 10/09 takes about half of the time as it does on Solaris 10 5/09. It is also worth noting the rather large reduction in the amount of system time (48 seconds vs 129 seconds) too.
. Creating list of files to copy from the global zone. Copying <2915> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1432> packages on the zone. Initialized <1432> packages on zone. Zone is initialized. Installation of these packages generated errors: The file contains a log of the zone installation. real 3m4.677s user 0m44.593s sys 0m48.003s
Zones parallel patching: Before Solaris 10 10/09 the patching process was single threaded which could lead to prolonged patching time on a system with several nonglobal zones. Starting with this update you can specify the number of threads to be used to patch a system with zones. Enable this feature by assigning a value to num_proc in /etc/patch/pdo.conf. The maximum value is capped at 1.5 times the number of on-line CPUs, but can be limited by a lower value of num_proc.
This feature is also available by applying Solaris patches 119254-66 (SPARC) or 119255-66 (x86).
For more information on the effects of zone parallel patching, see Container Guru Jeff Victor's excellent Patching Zones Goes Zoom.
ZFS EnhancementsFlash archive install into a ZFS root filesystem: ZFS support for the root file system was introduced in Solaris 10 10/08 but the install tools did not work with flash archives. Solaris 10 10/09 provides the ability to install a flash archive created from an existing ZFS root system. This capability is also provided by patches 119534-15 + 124630-26 (SPARC) or 119535-15 + 124631-27 (x86) that can be applied to a Solaris 10 10/08 or later system. There are still a few limitations such as the the flash source must be from a ZFS root system and you cannot use differential archives. More information can be found in Installing a ZFS Root File System (Flash Archive Installation).
Set ZFS properties on the initial zpool file system: Prior to Solaris 10 10/09, ZFS file system properties could only be set once the initial file system was created. This would make it impossible to create a pool with same name as an existing mounted file system or to be able to have replication or compression from the time the pool is created. In Solaris 10 10/09 you can specify any ZFS file system property using zpool -O.
zpool create -O mountpoint=/data,copies=3,compression=on datapool c1t1d0 c1t2d0ZFS Read Cache (L2ARC): You now have the ability to add persistent read ahead caches to a ZFS zpool. This can improve the read performance of ZFS as well as reducing the ZFS memory footprint.
L2ARC devices are added as cache vdevs to a pool. In the following example we will create a pool of 2 mirrored devices, 2 cache devices and a spare.
# zpool create datapool mirror c1t1d0 c1t2d0 cache c1t3d0 c1t4d0 spare c1t5d0 # zpool status datapool pool: datapool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM datapool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 cache c1t3d0 ONLINE 0 0 0 c1t4d0 ONLINE 0 0 0 spares c1t5d0 AVAIL errors: No known data errorsSo what do ZFS cache devices do ? Rather than go into a lengthy explanation of the L2ARC, I would rather refer you to Fishworks developer Brendan Gregg's excellent treatment of the subject.
Unlike the intent log (ZIL), L2ARC cache devices can be added and removed dynamically.
# zpool remove datapool c1t3d0 # zpool remove datapool c1t4d0 # zpool status datapool pool: datapool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM datapool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spares c1t5d0 AVAIL errors: No known data errors # zpool add datapool cache c1t3d0 # zpool status datapool pool: datapool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM datapool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 cache c1t3d0 ONLINE 0 0 0 spares c1t5d0 AVAIL errors: No known data errorsNew cache control properties: Two new ZFS properties are introduced with Solaris 10 10/09. These control what what is stored (nothing, data + metadata, or metadata only) in the ARC (memory) and L2ARC (external) caches. These new properties are
- primarycache - controls what is stored in the memory resident ARC cache
- secondarycache - controls what is stored in the L2ARC
- none - the caches are not used
- metadata - only file system metadata is cached
- all - both file system data and the metadata is stored in the associated cache
# zpool create -O primarycache=metadata -O secondarycache=all datapool c1t1d0 c1t2d0 cache c1t3d0There are workloads such as databases that perform better or make more efficient use of memory if the system is not competing with the caches that the applications are maintaining themselves.
User and group quotas:ZFS has always had quotas and reservations but they were applied at the file system level. To achieve user or group quotas would require creating additional file systems which might make administration more complex. Starting with Solaris 10 10/09 you can apply both user and group quotas to a file system much like you would with UFS. The ZFS file system must be at version 15 or later and the zpool must be at version 4 or later.
Let's create a file system and see if we are at the proper versions to set quotas.
# zfs create rpool/newdata # chown bobn:local /rpool/newdata # zpool get version rpool NAME PROPERTY VALUE SOURCE rpool version 18 default # zpool upgrade -v This system is currently running ZFS pool version 18. The following versions are supported: VER DESCRIPTION --- -------------------------------------------------------- 1 Initial ZFS version 2 Ditto blocks (replicated metadata) 3 Hot spares and double parity RAID-Z 4 zpool history 5 Compression using the gzip algorithm 6 bootfs pool property 7 Separate intent log devices 8 Delegated administration 9 refquota and refreservation properties 10 Cache devices 11 Improved scrub performance 12 Snapshot properties 13 snapused property 14 passthrough-x aclinherit 15 user/group space accounting 16 stmf property support 17 Triple-parity RAID-Z 18 snapshot user holds For more information on a particular version, including supported releases, see: http://www.opensolaris.org/os/community/zfs/version/N Where 'N' is the version number. # zfs get version rpool/newdata NAME PROPERTY VALUE SOURCE rpool/newdata version 4 # zfs upgrade -v The following filesystem versions are supported: VER DESCRIPTION --- -------------------------------------------------------- 1 Initial ZFS filesystem version 2 Enhanced directory entries 3 Case insensitive and File system unique identifier (FUID) 4 userquota, groupquota properties For more information on a particular version, including supported releases, see: http://www.opensolaris.org/os/community/zfs/version/zpl/N Where 'N' is the version number.Excellent. Now let's set a user and group quota and see what happens. We'll set a group quota of 1GB and a user quota at 2GB.
# zfs set groupquota@local=1g rpool/newdata # zfs set userquota@bobn=2g rpool/newdata # su - bobn % mkfile 500M /rpool/newdata/file1 % mkfile 500M /rpool/newdata/file2 % mkfile 500M /rpool/newdata/file3 file3: initialized 40370176 of 524288000 bytes: Disc quota exceededAs expected, we have exceeded our group quota. Let's change the group of the existing files and see if we can proceed to our user quota.
% rm /rpool/newdata/file3 % chgrp sales /rpool/newdata/file1 /rpool/newdata/file2 % mkfile 500m /rpool/newdata/file3 Could not open /rpool/newdata/disk3: Disc quota exceededWhoa! What's going on here ? Relax - ZFS does things asynchronously unless told otherwise. And we should have noticed this when the mkfile for file3 actually started. ZFS wasn't quite caught up with the current usage. A good sync should do the trick.
% sync % mkfile 500M /rpool/newdata/file3 % mkfile 500M /rpool/newdata/file4 % mkfile 500M /rpool/newdata/file5 /rpool/newdata/disk5: initialized 140247040 of 524288000 bytes: Disc quota exceededGreat. We now have user and group quotas. How can I find out what I have used against my quota ? There are two new ZFS properties, userused and groupused that will show what the group or user is currently consuming.
% zfs get userquota@bobn,userused@bobn rpool/newdata NAME PROPERTY VALUE SOURCE rpool/newdata userquota@bobn 2G local rpool/newdata userused@bobn 1.95G local % zfs get groupquota@local,groupused@local rpool/newdata NAME PROPERTY VALUE SOURCE rpool/newdata groupquota@local 1G local rpool/newdata groupused@local 1000M local % zfs get groupquota@sales,groupused@sales rpool/newdata NAME PROPERTY VALUE SOURCE rpool/newdata groupquota@sales none local rpool/newdata groupused@sales 1000M local % zfs get groupquota@scooby,groupused@scooby rpool/newdata NAME PROPERTY VALUE SOURCE rpool/newdata groupquota@scooby - - rpool/newdata groupused@scooby -New space usage properties: Four new usage properties have been added to ZFS file systems.
- usedbychildren (usedchild) - this is the amount of space that is used by all of the children of the specified dataset
- usedbydataset (usedds) - this is the total amount of space that would be freed if this dataset and it's snapshots and reservations were destroyed
- usedbyrefreservation (usedrefreserv) - this is the amount of space that would be freed if the dataset's reservations were to be removed
- usertbysnapshots (usedsnap) - the total amount of space that would be freed if all of the snapshots of this dataset were deleted.
# zfs get all datapool | grep used datapool used 5.39G - datapool usedbysnapshots 19K - datapool usedbydataset 26K - datapool usedbychildren 5.39G - datapool usedbyrefreservation 0 -
These new properties can also be viewed in a nice tabular form using zfs list -o space.
# zfs list -r -o space datapool NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD datapool 480M 5.39G 19K 26K 0 5.39G datapool@now - 19K - - - - datapool/fs1 480M 400M 0 400M 0 0 datapool/fs2 1.47G 1.00G 0 1.00G 0 0 datapool/fs3 480M 21K 0 21K 0 0 datapool/fs4 2.47G 0 0 0 0 0 datapool/vol1 1.47G 1G 0 16K 1024M 0
MiscellaneousSupport for 2TB boot disks: Solaris 10 10/09 supports a disk Volume Table of Contents (VTOC) of up to 2TB in size. The previous maximum VTOC size was 1TB. On x86 systems you must be running Solaris with a 64bit kernel and have at least 1GB of memory to use a VTOC larger that 1TB.
pcitool: A new command for Solaris that can assign interrupts to specific threads or display the current interrupt routing. This command is available for both SPARC and x86.
New iSCSI initiator SMF service: svc:/network/iscsi/initiator:default is a new Service Management Facility (SMF) service to control discovery and enumeration of iSCSI devices early in the boot process. Other boot services that may require iSCSI services can add dependencies to insure that the devices are available before being needed.
Device DriversThe following device drivers are either new to Solaris or have had some new features or chipsets added.
- MPxIO support for the LSI 6180 Controller
- LSI MPT 2.0 SAS 2.0 controllers (mpt_sas)
- Broadcom NetXTreme II gigabit Ethernet (bcm5716c and bcm5716s) controllers
- Interrupt remapping for Intel VT-x enabled processors
- Support for SATA AHCI tape
- Sun StorageTek 6Gb/s SAS RAID controller and LSI MegaRAID 92xx (mt_sas)
- Intel 82598 and 82599 10Gb/s PCIe Ethernet controller
Open Source Software UpdatesThe following open source packages have been updated for Solaris 10 10/09.
- NTP 4.2.5
- PostgreSQL versions 8.1.17, 8.2.13 and 8.3.7
- Samba 3.0.35
For more informationA complete list of new features and changes can be found in the Solaris 10 10/09 Release Notes and the What's New in Solaris 10 10/09 documentation at docs.sun.com.
Technocrati Tags: Sun Solaris patching zfs