Problem Summary: Following a live upgrade from Sun Cluster version 3.1 on Solaris 9 to version 3.2 on Solaris 10, zones cannot be used properly with the cluster software. The problem is that the pspool data is not created for the Sun Cluster packages. So those packages that must be propagated to the non-global zones, such as SUNWsczu, are not propagated correctly.
Workaround: After the Sun Cluster packages have been upgraded by using the scinstall -R command but before the cluster has booted into cluster mode, run the following script twice:
Once for the Sun Cluster framework packages
Once for the Sun Cluster data-service packages
Prepare and run this script in one of the following ways:
Set up the variables for the Sun Cluster framework packages and run the script. Then modify the PATHNAME variable for the data service packages and rerun the script.
Create two scripts, one with variables set in the script for the framework packages and one with variables set for the data service packages. Then run both scripts.
Become superuser.
Create a script with the following content.
#!/bin/ksh typeset PLATFORM=${PLATFORM:-`uname -p`} typeset PATHNAME=${PATHNAME:-/cdrom/cdrom0/Solaris_${PLATFORM}/Product/sun_cluster/Solaris_10/Packages} typeset BASEDIR=${BASEDIR:-/} cd $PATHNAME for i in * do if pkginfo -R ${BASEDIR} $i >/dev/null 2>&1 then mkdir -p ${BASEDIR}/var/sadm/pkg/$i/save/pspool pkgadd -d . -R ${BASEDIR} -s ${BASEDIR}/var/sadm/pkg/$i/save/pspool $i fi done
Set the variables PLATFORM, PATHNAME, and BASEDIR.
Either set these variables as environment variables or modify the values in the script directly.
The name of the platform. For example, it could be sparc or x86. By default, the PLATFORM variable is set to the output of the uname -p command.
A path to the device from where the Sun Cluster framework or data-service packages can be installed. This value corresponds to the -d option in the pkgadd command.
As an example, for Sun Cluster framework packages, this value would be of the following form:
/cdrom/cdrom0/Solaris_${PLATFORM}/Product/sun_cluster/Solaris_10/Packages |
For the data services packages, this value would be of the following form:
/cdrom/cdrom0/Solaris_${PLATFORM}/Product/sun_cluster_agents/Solaris_10/Packages |
The full path name of a directory to use as the root path and corresponds to the -R option in the pkgadd command. For live upgrade, set this value to the root path that is used with the -R option in the scinstall command. By default, the BASEDIR variable is set to the root (/) file system.
Run the script, once for the Sun Cluster framework packages and once for the data-service packages.
After the script is run, you should see the following message at the command prompt for each package:
Transferring pkgname package instance |
If the pspool directory already exists for a package or if the script is run twice for the same set of packages, the following error is displayed at the command prompt:
Transferring pkgname package instance pkgadd: ERROR: unable to complete package transfer - identical version of pkgname already exists on destination device |
This is a harmless message and can be safely ignored.
After you run the script for both framework packages and data-service packages, boot your nodes into cluster mode.