====== Recover from a broken VIO Server Update ======
If you're -- like me -- running Ganglia to monitor the performance metrics of your AIX and VIOS systems, it can make sense to disable the, now kind of redundant, default collection method for performance metrics in order not to waste recources and to prevent unnecessary cluttering of the local VIOS filesystem. This can be done via the "''xmdaily''" entry in ''/etc/inittab'':
:xmdaily:2:once:/usr/bin/topasrec -L -s 300 -R 1 -r 6 -o /home/ios/perf/topas/ -ypersistent=1 2>&1 >/dev/null
$ lsitab xmdaily; echo $?
1
Unfortunately this breaks the VIOS upgrade process, since the good folks at IBM insist on the "''xmdaily''" inittab entry being vital for a properly functioning VIOS system. Specifically, this is caused by the ''/usr/lpp/ios.cli/ios.cli.rte//inst_root/ios.cli.rte.post_u'' script in the ''ios.cli.rte'' package. E.g.:
507 rt=`/usr/sbin/lsitab xmdaily`
508 if [[ $rt != "" ]]
[...]
528 else
529 echo "Warning: lsitab failed..."
530 exit 1
531 fi
I beg to differ on the whole subject of "''xmdaily''" being necessary at all, but one could file this under the category of "philosophical differences". To fail the whole package update with the "''exit 1''" in line 530 of the above code sample seems to be a bit too harsh though.
So normally i would just put the "''xmdaily''" entry back into the inittab right before an VIOS update. Unfortunately on the update to 2.2.3.1-FP27 and subsequently to 2.2.3.2-FP27-SP02 i forgot to do that on a few VIOS systems. The result of this negligence were failure messages during the update process (RBAC output omitted for better readability!):
[...]
installp: APPLYING software for:
ios.cli.rte 6.1.9.2
. . . . . << Copyright notice for ios.cli >> . . . . . . .
Licensed Materials - Property of IBM
5765G3400
Copyright International Business Machines Corp. 2004, 2014.
All rights reserved.
US Government Users Restricted Rights - Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.
. . . . . << End of copyright notice for ios.cli >>. . . .
sysck: 3001-022 The file
/usr/ios/utils/part
was not found.
Start Creating VIOS Authorizations
Completed Creating VIOS Authorizations
Warning: lsitab failed...
update: Failed while executing the ios.cli.rte.post_u script.
0503-464 installp: The installation has FAILED for the "root" part
ios.cli.rte 6.1.9.2
installp: Cleaning up software for:
ios.cli.rte 6.1.9.2
[...]
as well as at the end of the update process:
[...]
Installation Summary
--------------------
Name Level Part Event Result
-------------------------------------------------------------------------------
ios.cli.rte 6.1.9.2 USR APPLY SUCCESS
ios.cli.rte 6.1.9.2 ROOT APPLY FAILED
ios.cli.rte 6.1.9.2 ROOT CLEANUP SUCCESS
devices.vtdev.scsi.rte 6.1.9.2 USR APPLY SUCCESS
devices.vtdev.scsi.rte 6.1.9.2 ROOT APPLY SUCCESS
[...]
This would manifest through the fact that no IOS command would work properly anymore:
IBM Virtual I/O Server
login: padmin
padmin's Password:
Last login: Sun Apr 27 11:40:41 DFT 2014 on /dev/vty0
Access to run command is not valid.
[vios1-p550-b1] /home/padmin $ license -accept
Access to run command is not valid.
[vios2-p550-b1] /home/padmin $ lsmap -all
Access to run command is not valid.
[vios2-p550-b1] /home/padmin $
A quick check with a login to the VIOS as ''root'' via SSH confirmed that the "root" part of the package ''ios.cli.rte'' had been rolled back entirely:
root@vios2-p550-b1:/$ lppchk -v
lppchk: The following filesets need to be installed or corrected to bring
the system to a consistent state:
ios.cli.rte 6.1.9.2 (usr: APPLIED, root: not installed)
To fix this issue, it worked for me to just run the "''ios.cli.rte.pre_u''" script of the ''ios.cli.rte'' package manually to redefine the now rolled back RBAC authorizations:
root@vios2-p550-b1:/$ SAVEDIR=/tmp/ /usr/lpp/ios.cli/ios.cli.rte/6.1.9.2/inst_root/ios.cli.rte.pre_u
root@vios2-p550-b1:/$ rm /tmp/org_*
For future reference, make sure you have a valid "''xmdaily''" entry in ''/etc/inittab'' before attempting to update any VIOS system:
$ lsitab xmdaily; echo $?
xmdaily:2:once:/usr/bin/topasrec -L -s 300 -R 1 -r 6 -o /home/ios/perf/topas/ -ypersistent=1 2>&1 >/dev/null
0