Several methods are available to apply the latest AIX technology level (TL) and service pack (SP) to AIX systems. My favorite has always been multibos, which allows you to update a second instance of AIX within a single root volume group (rootvg). Its advantage is you don’t need a second disk to perform the update. The downside is your rootvg logical volumes are renamed to “bos_.” This causes discomfort for some administrators.
Alternatively, you can use Network Install Manager (NIM) and alt_disk_install to install TL/SP updates. NIM provides a method for cloning your rootvg to an alternate disk and then installing the latest fixes to the alternate rootvg image. Potential advantages of nim_alt_clone (as opposed to multibos or alt_disk_install on its own) include:
- Your rootvg logical volumes aren’t renamed, and
- You can perform the update on a group of NIM clients
To perform this task on a single NIM client, start by verifying you’ve created a new NIM lpp_source for fixes on NIM master (nim1). The SP4 lpp_source resource (in bold) contains Service Pack 4 for AIX V7.1 TL1. This resource will be used to update the NIM client in this example.
root@nim1 : / # lsnim -t lpp_source | grep SP4 SP4 resources lpp_source
The NIM client (aix1) has a spare disk available (hdisk1). Use this for the alternate rootvg. This is where an image of the existing rootvg will be housed and the updates applied.
aix1 : /home # lspv hdisk1 00c342c637f21a59 None hdisk2 00c342c6161c6b47 rootvg active
Three log files will be created and referenced on the NIM client during the nim_alt_clone operation. If I’ve previously used this method to update a client, I prefer to clear these log files before I start a new update. This way I can review the log files without wading through many lines of old information.
aix1 : / # cd /var/adm/ras/ aix1 : /var/adm/ras # ls -ltr *alt* -rw-r--r-- 1 root system 0 Jul 02 14:14 altinst_rootvg.log -rw-r--r-- 1 root system 916402 Jul 02 15:06 nim.alt_disk_install -rw-r--r-- 1 root system 96997 Jul 02 15:06 alt_disk_inst.log aix1 : /var/adm/ras # for i in `ls *alt*` > do > >$i > done aix1 : /var/adm/ras # ls -ltr *alt* -rw-r--r-- 1 root system 0 Jul 02 15:08 nim.alt_disk_install -rw-r--r-- 1 root system 0 Jul 02 15:08 altinst_rootvg.log -rw-r--r-- 1 root system 0 Jul 02 15:08 alt_disk_inst.log
You can initiate the nim_alt_clone operation either from the command line or the System Management Interface Tool (SMIT). To start the update from the NIM master command line, enter:
nim -o alt_disk_install -a source=rootvg -a disk=hdisk1 -a fixes=update_all -a lpp_source=SP4 -a installp_flags="-acNgXY" aix1
This command indicates you wish to perform an alt_disk_install operation on the NIM client’s rootvg. It also specifies hdisk1 is the cloning target and that the file sets in the cloned rootvg will be updated (update_all) from the SP4 lpp_source. In this instance, I’ve specified a single NIM client (aix1). To perform the same operation on a group of NIM clients, specify a NIM machine group as the target instead.
Once this command has been executed, you’ll return to the command prompt almost immediately. All activity is now occurring on the NIM client. From the NIM master, you can check the current state of the NIM client with the lsnim command. The output indicates that the alt_disk_install operation is underway on the client; in particular, the process is backing up the client’s rootvg file systems and restoring them to the alternate (cloned) rootvg.
root@nim1 : / # lsnim -l aix1 aix1: class = machines type = standalone connect = shell platform = chrp netboot_kernel = 64 if1 = network1 aix1 0 cable_type1 = N/A Cstate = alt_disk_install operation is being performed prev_state = a client is being prepared for alt_disk_install Mstate = currently running info = Backing-up the rootvg files and restoring them to the alternate file system... lpp_source = SP4 cpuid = 00C342C64C00 control = master Cstate_result = success
If you prefer, you can use SMIT to perform this task (as shown in this SMIT panel):
root@nim1 : / # smit nim_alt_clone Clone the rootvg to an Alternate Disk Type or select values in entry fields. Press Enter AFTER making all desired changes. [Entry Fields] * Target Machine / Group to Install [aix1] + * Target Disk(s) to install [hdisk1] Phase to execute all + IMAGE_DATA resource [] +/ EXCLUDE_FILES resource [] +/ (leave blank to include all files in backup) BUNDLE to install [] + -OR- Fileset(s) to install [] FIX_BUNDLE to install [] + -OR- FIXES to install [update_all] LPP_SOURCE [SP4] + (required if filesets, bundles or fixes used) installp Flags COMMIT software updates? yes + SAVE replaced files? no + AUTOMATICALLY install requisite software? yes + EXTEND filesystems if space needed? yes + OVERWRITE same or newer versions? no + VERIFY install and check file sizes? no + ACCEPT new license agreements? yes + Customization SCRIPT resource [] +/ Set bootlist to boot from this disk on next reboot yes + Reboot when complete? no + Verbose output? no + Debug output? no + Group controls (only valid for group targets): Number of concurrent operations [] # Time limit (hours) [] #
On the client, you can review the nim.alt_disk_install log file to determine if the updates were installed successfully. In this example, the log file shows that the alt_disk_copy utility cloned rootvg to hdisk1 and then installed the updates.
aix1 : /var/adm/ras # ls -ltr *alt* -rw-r--r-- 1 root system 0 Jul 03 11:53 altinst_rootvg.log -rw-r--r-- 1 root system 271213 Jul 03 12:11 alt_disk_inst.log -rw-r--r-- 1 root system 907044 Jul 03 12:11 nim.alt_disk_install aix1 : /var/adm/ras # vi nim.alt_disk_install BEGIN:Tue Jul 3 11:53:35 2012:07030153352012 +---------------------------------------------------------------------+ ATTENTION: calling new module /usr/sbin/alt_disk_copy. Please see the alt_disk_copy man page and documentation for more details. Executing command: {/usr/sbin/alt_disk_copy -N -b "update_all" -I "-acNgXY" -l "/tmp/_nim_dir_7536682/lpp_source" -d "hdisk1"} +---------------------------------------------------------------------+ Calling mkszfile to create new /image.data file. Checking disk sizes. Creating cloned rootvg volume group and associated logical volumes. Creating logical volume alt_hd5 Creating logical volume alt_hd6 Creating logical volume alt_hd8 Creating logical volume alt_hd4 Creating logical volume alt_hd2 Creating logical volume alt_hd9var Creating logical volume alt_hd3 Creating logical volume alt_hd1 Creating logical volume alt_hd10opt Creating logical volume alt_local Creating logical volume alt_loglv Creating logical volume alt_hd7 Creating logical volume alt_hd71 Creating logical volume alt_hd11admin Creating /alt_inst/ file system. Creating /alt_inst/admin file system. Creating /alt_inst/home file system. Creating /alt_inst/opt file system. Creating /alt_inst/tmp file system. Creating /alt_inst/usr file system. Creating /alt_inst/usr/local file system. Creating /alt_inst/var file system. Creating /alt_inst/var/log file system. Creating /alt_inst/var/tsm/log file system. Generating a list of files for backup and restore into the alternate file system... Backing-up the rootvg files and restoring them to the alternate file system... Installing optional filesets or updates into alt_inst_rootvg... …etc… +---------------------------------------------------------------------+ BUILDDATE Verification ... +---------------------------------------------------------------------+ Verifying build dates...done FILESET STATISTICS ------------------ 221 Selected to be installed, of which: 221 Passed pre-installation verification ---- 221 Total to be installed +---------------------------------------------------------------------+ Installing Software... +---------------------------------------------------------------------+ installp: APPLYING software for: perl.man.en_US 5.10.1.100 …etc… rsct.core.utils 3.1.2.1 USR COMMIT SUCCESS rsct.core.utils 3.1.2.1 ROOT COMMIT SUCCESS rsct.core.rmc 3.1.2.1 USR COMMIT SUCCESS rsct.core.rmc 3.1.2.1 ROOT COMMIT SUCCESS installp: * * * A T T E N T I O N ! ! ! Software changes processed during this session require any diskless/dataless clients to which this SPOT is currently allocated to be rebooted. install_all_updates: Log file is /var/adm/ras/install_all_updates.log install_all_updates: Result = SUCCESS Modifying ODM on cloned disk. Building boot image on cloned disk. forced unmount of /alt_inst/var/tsm/log forced unmount of /alt_inst/var/log/audit forced unmount of /alt_inst/var/log forced unmount of /alt_inst/var forced unmount of /alt_inst/usr/local/chksys forced unmount of /alt_inst/usr/local forced unmount of /alt_inst/usr forced unmount of /alt_inst/tmp forced unmount of /alt_inst/opt/Symantec forced unmount of /alt_inst/opt/Symantec forced unmount of /alt_inst/opt forced unmount of /alt_inst/home/ncp forced unmount of /alt_inst/home forced unmount of /alt_inst/admin forced unmount of /alt_inst Changing logical volume names in volume group descriptor area. Fixing LV control blocks... Fixing file system superblocks... Bootlist is set to the boot disk: hdisk1 blv=hd5 END:Tue Jul 3 12:11:49 2012:07030211492012
You can also check the level of the cloned rootvg environment using the chroot command on the NIM client. First you must “wake up” the alternate rootvg.
aix1 : / # alt_rootvg_op -W -d hdisk1 Waking up altinst_rootvg volume group ... aix1 : / # df Filesystem 512-blocks Free %Used Iused %Iused Mounted on /dev/hd4 524288 380024 28% 3091 3% / /dev/hd2 3801088 396856 90% 34020 8% /usr /dev/hd9var 2621440 2279336 14% 3560 2% /var /dev/hd3 524288 499272 5% 105 1% /tmp /dev/hd1 524288 507336 4% 102 1% /home /proc - - - - - /proc /dev/hd10opt 524288 278872 47% 3370 6% /opt /dev/local 524288 480712 9% 262 1% /usr/local /dev/loglv 524288 506416 4% 62 1% /var/log /dev/hd11admin 262144 253816 4% 20 1% /admin /dev/alt_hd4 524288 365552 31% 3871 3% /alt_inst /dev/alt_hd11admin 262144 253808 4% 22 1% alt_inst/admin /dev/alt_hd1 524288 507336 4% 104 1% /alt_inst/home /dev/alt_hd10opt 1310720 562888 58% 5694 4% /alt_inst/opt /dev/alt_hd3 524288 499120 5% 116 1% /alt_inst/tmp /dev/alt_hd2 5636096 184120 97% 103336 15% /alt_inst/usr /dev/alt_local 524288 480712 9% 262 1% /alt_inst/usr/local /dev/alt_hd9var 2621440 1835656 30% 6632 3% /alt_inst/var /dev/alt_loglv 524288 506408 4% 63 1% /alt_inst/var/log
Next, start a (chroot) shell within the alternate rootvg and run the oslevel command to verify the updated TL/SP information.
aix1 : / # chroot /alt_inst /usr/bin/ksh aix1 : / # oslevel -s 7100-01-04-1216 aix1 : / # instfix -i | grep AIX All filesets for 7.1.0.0_AIX_ML were found. All filesets for 7100-00_AIX_ML were found. All filesets for 7100-01_AIX_ML were found. aix1 : / # instfix -i | grep SP All filesets for 71-00-011037_SP were found. All filesets for 71-00-021041_SP were found. All filesets for 71-00-031115_SP were found. All filesets for 71-01-011141_SP were found. All filesets for 71-00-041140_SP were found. All filesets for 71-01-021150_SP were found. All filesets for 71-01-031207_SP were found. All filesets for 71-00-051207_SP were found. All filesets for 71-01-041216_SP were found. aix1 : / # lppchk -m3 -v aix1 : / # exit
Once you exit the chroot shell, you’re returned to the existing rootvg environment. The oslevel command confirms that service pack 4 is not installed in the original rootvg (as expected).
aix1 : / # oslevel -s 7100-01-01-1141
Now that you’ve verified the correct AIX level, you can put the cloned rootvg back to “sleep.”
aix1 : / # alt_rootvg_op -S altinst_rootvg Putting volume group altinst_rootvg to sleep ... forced unmount of /alt_inst/var/log forced unmount of /alt_inst/var forced unmount of /alt_inst/usr/local forced unmount of /alt_inst/usr forced unmount of /alt_inst/tmp forced unmount of /alt_inst/opt forced unmount of /alt_inst/home forced unmount of /alt_inst/admin forced unmount of /alt_inst Fixing LV control blocks... Fixing file system superblocks...
The bootlist command confirms that you will reboot using the alternate rootvg disk (hdisk1).
aix1 : / # bootlist -m normal -o hdisk1 blv=hd5 pathid=0 hdisk1 blv=hd5 pathid=1 aix1 : / # lspv hdisk1 00c342c637f21a59 altinst_rootvg hdisk2 00c342c6161c6b47 rootvg active aix1 : / # shutdown -Fr ; The system reboots here… aix1 : / # uptime 02:54PM up 1 min, 1 user, load average: 1.23, 0.37, 0.13 aix1 : / # aix1 : / # oslevel -s 7100-01-04-1216 aix1 : / # df Filesystem 512-blocks Free %Used Iused %Iused Mounted on /dev/hd4 524288 365136 31% 3850 3% / /dev/hd2 5636096 184128 97% 103336 15% /usr /dev/hd9var 2621440 1829816 31% 6760 3% /var /dev/hd3 524288 498632 5% 128 1% /tmp /dev/hd1 524288 507336 4% 104 1% /home /proc - - - - - /proc /dev/hd10opt 1310720 523160 61% 10181 7% /opt /dev/local 524288 480712 9% 262 1% /usr/local /dev/loglv 524288 506392 4% 63 1% /var/log /dev/hd11admin 262144 253808 4% 22 1% /admin
If necessary, you can change the boot list to point at the old rootvg (hdisk2) and restart the system on the previous TL/SP. You might choose to do this if there’s a problem with the updates and you need to revert to the previously installed AIX SP level.
aix1 : / # lspv hdisk1 00c342c637f21a59 rootvg active hdisk2 00c342c6161c6b47 old_rootvg
Once you’re happy that the system is functioning as expected with the new updates, remove the old rootvg.
aix1 : / # alt_rootvg_op -X old_rootvg