Friday, December 13, 2013

lucreate(1M) May Fail on Solaris 10 with ZFS Root Configuration and a Separate /var File System

Description
Solaris 10 patches 141721-03 or 141444-09 (SPARC) and 141722-03 or 141445-09 (x86) may cause live upgrade (lucreate(1M)) to fail on a system configured with ZFS root and a separate /var file system. On these systems with these patches installed, lucreate(1M) will only fail after certain patching activities have occurred which cause the erroneous creation of a /var/tmp directory located under the root file system.

Occurrence
This issue can occur in the following releases:

SPARC Platform


•Solaris 10 with patch 141721-03 or 141444-09 and without both patches 121430-51 and 141508-02
x86 Platform

•Solaris 10 with patch 141722-03 or 141445-09 and without both patches 121431-52 and 145108-03
Note: Solaris 8, Solaris 9 and Solaris 11 are not affected by this issue.

This issue only occurs on systems that meet all the following criteria:

1. The system has a ZFS root configuration.
The root file system type can be determined by executing the following command :

    # df -n /
    /  : zfsThe above output shows the response if root is a zfs(1M) file system.

2. The system has a separate /var file system.
The following command can be used to determine if /var is a separate file system:

    # zfs list | grep "/var"
    rpool/ROOT/s10u8BE_001/var  67.5M  23.9G  67.5M  /var/var in the last column of the above output shows that /var is a separate file system.

3. The system has the /var/tmp directory under the root file system.
The following commands can be used to determine this:

    # mount -F lofs -o nosub / /mnt
    # ls /mnt/var
    tmpThe above output for ls(1M) shows the response if /var/tmp directory has been created under the root file system.

Symptoms
If the described issue occurs, output similar to the following will be seen when lucreate(1M) is executed.

    # lucreate -n BE3
    ......
    Creating clone for <rpool/ROOT/s10u8BE_001/var@BE3> on <rpool/ROOT/BE3/var>.
    Setting canmount=noauto for </var> in zone <global> on <rpool/ROOT/BE3/var>.
    ERROR: cannot mount '/.alt.tmp.b-1G.mnt/var': directory is not empty
    ERROR: cannot mount mount point </.alt.tmp.b-1G.mnt/var> device <rpool/ROOT/BE3/var>
    ERROR: failed to mount file system <rpool/ROOT/BE3/var> on </.alt.tmp.b-1G.mnt/var>
    ERROR: unmounting partially mounted boot environment file systems
    ERROR: cannot mount boot environment by icf file </etc/lu/ICF.3>
    ERROR: Unable to mount ABE <BE3>
    ERROR: Unable to clone the existing file systems from boot environment <s10u8BE_001> to create boot environment <BE3>.
    ERROR: Cannot make file systems for boot environment <BE3>.Workaround
To workaround this issue, perform the following steps to remove the /var/tmp directory under the root file system prior to running lucreate(1M).

    # mount -F lofs -o nosub / /mnt
    # ls -la /mnt/var/tmp     # to make sure it is empty
    # rmdir /mnt/var/tmp
    # ls -la /mnt/var         # this should now be empty, too
    # umount /mntThis issue is addressed in the following releases:

SPARC Platform

•Solaris 10 with both patches 121430-51 or later and 141508-02 or later
x86 Platform

•Solaris 10 with both patches 121431-52 or later and 145108-03 or later

No comments:

Post a Comment