Details:
If 5.0MP3-RP2 is installed on an alternate bootdisk using "patchadd -R <rootpath>" then the CVMTypes.cf file of the current bootdisk is updated instead of the one from the alternate bootdisk.
This is due to the postpatch script that comes with patch 139755-02:
node1:# more postpatch
#!/usr/bin/ksh
# Postpatch script for CAVF
CVMTYPESFILE=/etc/VRTSvcs/conf/config/CVMTypes.cf
TMPCVMTYPESFILE=/tmp/CVMTypes.cf
[ -f $CVMTYPESFILE ] &&
sed 's/static keylist RegList = { CVMActivation }/static keylist RegList = { CVMActivation, CVMVolume }/' $CVMTYPESF
ILE > $TMPCVMTYPESFILE &&
mv $TMPCVMTYPESFILE $CVMTYPESFILE
# Add additional argument to ArgList of CFSMount resource type
#
CFSTYPESFILE=/etc/VRTSvcs/conf/config/CFSTypes.cf <<<<<<<<<<<<<<<<<<<<<<<<
TMPCFSTYPESFILE=/tmp/CFSTypes.cf
[ -f $CFSTYPESFILE ] &&
sed 's/static str ArgList\[\] = { MountPoint, BlockDevice, MountOpt }/static str ArgList\[\] = { MountPoint, BlockDe
vice, MountOpt, Primary }/' $CFSTYPESFILE > $TMPCFSTYPESFILE &&
mv $TMPCFSTYPESFILE $CFSTYPESFILE
exit 0
node1:#
In this scenario c0t2d0s0 is the bootdisk and c0t1d0s0 is the alternate bootdisk that we have cloned.
node1:# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t2d0s0 15345315 11340126 3851736 75% /
/dev/dsk/c0t1d0s0 15345315 9921967 5269895 66% /mnt
node1:#
Now we perform the installation of the "VERITAS Cluster Server Agents for Storage Foundation Cluster File System" RP2 patch, 139755-02, on the alternate bootdisk.
node1:# patchadd -R /mnt 139755-02
Validating patches...
Loading patches installed on the system...
Done!
Loading patches requested to install.
Done!
Checking patches that you specified for installation.
Done!
Approved patches will be installed in this order:
139755-02
Checking installed patches...
Executing prepatch script...
Verifying sufficient filesystem capacity (dry run method)...
Installing patch packages...
Patch 139755-02 has been successfully installed.
See /mnt/var/sadm/patch/139755-02/log for details
Executing postpatch script...
Patch packages installed:
VRTScavf
node1:#
We verify the patch has been installed on the alternate bootdisk:
node1:# showrev -p |grep 139755-02
node1:# showrev -R /mnt -p |grep 139755-02
Patch: 139755-02 Obsoletes: Requires: 127319-02 Incompatibles: Packages: VRTScavf
node1:#
But the CVMTypes.cf has been updated in the current bootdisk instead of the one in the alternate bootdisk.
node1:# ls -l /mnt/etc/VRTSvcs/conf/config/CVMTypes*
-rw------- 2 root root 749 Jun 20 2009 /mnt/etc/VRTSvcs/conf/config/CVMTypes.cf
-rw------- 2 root root 720 Jun 18 2009 /mnt/etc/VRTSvcs/conf/config/CVMTypes.cf.18Jun2009.12.08.03
-rw------- 2 root root 749 Jun 20 2009 /mnt/etc/VRTSvcs/conf/config/CVMTypes.cf.18Jun2009.12.08.08
-rw------- 1 root root 749 Jun 20 2009 /mnt/etc/VRTSvcs/conf/config/CVMTypes.cf.20Jun2009.19.55.10
-rw------- 1 root root 749 Jun 20 2009 /mnt/etc/VRTSvcs/conf/config/CVMTypes.cf.20Jun2009.21.00.09
-rw------- 2 root root 720 Jun 18 2009 /mnt/etc/VRTSvcs/conf/config/CVMTypes.cf.previous
node1:#
node1:# ls -l /etc/VRTSvcs/conf/config/CVMTypes*
-rw-r--r-- 1 root root 760 Mar 30 14:44 /etc/VRTSvcs/conf/config/CVMTypes.cf <<<<<<<<<<<<<<<<<<<<<<<<
-rw------- 2 root root 720 Jun 18 2009 /etc/VRTSvcs/conf/config/CVMTypes.cf.18Jun2009.12.08.03
-rw------- 1 root root 749 Jun 20 2009 /etc/VRTSvcs/conf/config/CVMTypes.cf.18Jun2009.12.08.08
-rw------- 1 root root 749 Jun 20 2009 /etc/VRTSvcs/conf/config/CVMTypes.cf.20Jun2009.19.55.10
-rw------- 1 root root 749 Jun 20 2009 /etc/VRTSvcs/conf/config/CVMTypes.cf.20Jun2009.21.00.09
-rw------- 2 root root 720 Jun 18 2009 /etc/VRTSvcs/conf/config/CVMTypes.cf.previous
node1:#
So when booting up from the cloned disk the CVMVolDg type will be:
type CVMVolDg (
static keylist RegList = { CVMActivation }
static str ArgList[] = { CVMDiskGroup, CVMVolume, CVMActivation }
str CVMDiskGroup
keylist CVMVolume
str CVMActivation
temp int voldg_stat
)
Instead of:
type CVMVolDg (
static keylist RegList = { CVMActivation, CVMVolume } <<<<<<<<<<<<<<<<<<<<<<
static str ArgList[] = { CVMDiskGroup, CVMVolume, CVMActivation }
str CVMDiskGroup
keylist CVMVolume
str CVMActivation
temp int voldg_stat
)
And therefore adding a volume to an existing CVMVolDg resource will cause the resource to fail.
Workaround
1) freeze all service groups
2) haconf -dump -makero to close configuration
3) hastop -all -force to stop the cluster daemon without stopping applications
4) update the CVMTypes.cf file with the CVMVolume value in the RegList
5) hastart on each cluster node
6) if nothing is marked as faulted then unfreeze everything
Reference: verisearch.ges.symantec.com/tnotes/all_docs/348242.htm