I was contacted recently by a customer who was attempting to restore an AIX 5.3 Versioned WPAR (VWPAR) from backup using NIM. The restore worked OK but the data was restored to the wrong volume group!
When the VWPAR was created, the –g option was specified with mkwpar to force the creation of the VWPAR file systems in a separate volume group (named wparvg) rather than the default location of the Global root volume group (rootvg).
# mkwpar -g wparvg -n p8vw2 -B /cg/53gibbo.mksysb -C -O
Running lsvg against wparvg confirmed the file systems were in the right location after creation.
# lsvg -l wparvg
wparvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv00 jfs2log 1 1 1 open/syncd N/A
fslv02 jfs2 4 4 1 open/syncd /wpars/p8vw2
fslv03 jfs2 2 2 1 open/syncd /wpars/p8vw2/home
fslv04 jfs2 12 12 1 open/syncd /wpars/p8vw2/opt
fslv05 jfs2 6 6 1 open/syncd /wpars/p8vw2/tmp
fslv06 jfs2 56 56 1 open/syncd /wpars/p8vw2/usr
fslv07 jfs2 12 12 1 open/syncd /wpars/p8vw2/var
Before handing the VWPAR over for production use, the customer wanted to ensure they could successfully backup and recover the VWPAR using NIM. First they took a backup of the VWPAR using NIM. From the NIM master, they created a “savewpar backup image”, as shown below.
Note: The WPAR was already defined as a NIM client. Refer to section “12.2 Adding a System WPAR to NIM” in the “Exploiting IBM AIX Workload Partitions (SG24-7955-00)” Redbook for information on how to perform this task.
# smit nim_mkres
savewpar = a workload partition backup image
Define a Resource
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Resource Name [p8vw2-backup]
* Resource Type savewpar
* Server of Resource [master] +
* Location of Resource [/export/vwpar/p8vw2-backup] /
NFS Client Security Method [] +
NFS Version Access [] +
Comments []
Source for Replication [] +
-OR-
System Backup Image Creation Options:
CREATE system backup image? yes +
WPAR to backup [p8vw2] +
....
# lsnim -l p8vw2
p8vw2:
class = machines
type = wpar
connect = shell
platform = chrp
if1 = 10_1_50 p8vw2 0
mgmt_profile1 = gibopvc1 p8vw2
Cstate = ready for a NIM operation
prev_state = not running
Mstate = currently running
cpuid = 00F94F584C00
Cstate_result = success
# lsnim -t savewpar
p8vw2-backup resources savewpar
In the Global environment, we then stopped and removed the VWPAR (p8vw2).
# stopwpar -F p8vw2
# rmwpar -F p8vw2
Back on the NIM master, we attempted to restore the VWPAR from the recently created backup image (p8vw2-backup).
# smit nim_wpar_create
p8vw2
Create a Managed Workload Partition
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Target Name [p8vw2]
Remain NIM client after install? [yes] +
Specification Resource [] +
WPAR Options
WPAR Name p8vw2
Resource for WPAR Backup Image [p8vw2-backup] +
Resource for System Backup Image [] +
Alternate DEVEXPORTS for installation [] +
Alternate SECATTRS for installation [] +
The restore completed successfully but to our surprise, the VWPAR file systems were in the Global rootvg not wparvg.
# lsvg –l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 1 closed/syncd N/A
hd6 paging 8 8 1 open/syncd N/A
hd8 jfs2log 1 1 1 open/syncd N/A
hd4 jfs2 6 6 1 open/syncd /
hd2 jfs2 35 35 1 open/syncd /usr
hd9var jfs2 7 7 1 open/syncd /var
hd3 jfs2 2 2 1 open/syncd /tmp
hd1 jfs2 1 1 1 open/syncd /home
hd10opt jfs2 5 5 1 open/syncd /opt
hd11admin jfs2 2 2 1 open/syncd /admin
lg_dumplv sysdump 16 16 1 closed/syncd N/A
livedump jfs2 4 4 1 open/syncd /var/adm/ras/livedump
cglv jfs2 100 100 1 open/syncd /cg
fslv02 jfs2 2 2 1 open/syncd /wpars/p8vw2
fslv03 jfs2 1 1 1 open/syncd /wpars/p8vw2/home
fslv04 jfs2 6 6 1 open/syncd /wpars/p8vw2/opt
fslv05 jfs2 3 3 1 open/syncd /wpars/p8vw2/tmp
fslv06 jfs2 28 28 1 open/syncd /wpars/p8vw2/usr
fslv07 jfs2 6 6 1 open/syncd /wpars/p8vw2/var
# lsvg -l wparvg
wparvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv00 jfs2log 1 1 1 closed/syncd N/A
We attempted the restore again but this time we explicitly included a WPAR “Specification Resource”. We did this to ensure that the restwpar process was using the correct specification file.
# smit nim_wpar_create
p8vw2
Create a Managed Workload Partition
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Target Name [p8vw2]
Remain NIM client after install? [yes] +
Specification Resource [p8vw2-spec] +
WPAR Options
WPAR Name p8vw2
Resource for WPAR Backup Image [p8vw2-backup] +
Resource for System Backup Image [] +
Alternate DEVEXPORTS for installation [] +
Alternate SECATTRS for installation [] +
We created a WPAR Specification NIM resource. The file was created in the Global environment, using the mkwpar command to write out the VWPAR specification details to a text file. This file was then copied to the NIM master to be used to create the NIM resource.
# mkwpar -e p8vw2 -w -o /tmp/cg/p8vw2_cg.cf
# lsnim -l p8vw2-spec
p8vw2-spec:
class = resources
type = wpar_spec
Rstate = ready for use
prev_state = unavailable for use
location = /tmp/cg/p8vw2_cg.cf
alloc_count = 1
server = master
# lsnim -t wpar_spec
p8vw2-spec resources wpar_spec
The specification file contained the volume group name (wparvg) where each of the VWPAR file systems where located.
# grep vg /tmp/cg/p8vw2_cg.cf
rootvgwpar = "no"
vg = "wparvg"
vg = "wparvg"
vg = "wparvg"
vg = "wparvg"
vg = "wparvg"
vg = "wparvg"
# grep -p vg /tmp/cg/p8vw2_cg.cf
general:
version = "1"
name = "p8vw2"
hostname = "p8vw2"
checkpointable = "no"
directory = "/wpars/p8vw2"
privateusr = "yes"
uuid = "3e7a2bfb-6060-4770-ad7e-4d6b2a84f657"
devices = "/etc/wpars/devexports"
architecture = "none"
ostype = "1024"
xwparipc = "no"
auto = "no"
rootvgwpar = "no"
preserve = "no"
routing = "no"
mount:
logname = "/dev/loglv00"
directory = "/home"
vfs = "jfs2"
vg = "wparvg"
size = "131072"
mount:
logname = "/dev/loglv00"
mountopts = "rw"
directory = "/opt"
vfs = "jfs2"
vg = "wparvg"
size = "786432"
mount:
logname = "/dev/loglv00"
directory = "/var"
vfs = "jfs2"
vg = "wparvg"
size = "786432"
mount:
logname = "/dev/loglv00"
directory = "/tmp"
vfs = "jfs2"
vg = "wparvg"
size = "393216"
mount:
logname = "/dev/loglv00"
directory = "/"
vfs = "jfs2"
vg = "wparvg"
size = "262144"
mount:
logname = "/dev/loglv00"
mountopts = "rw"
directory = "/usr"
vfs = "jfs2"
vg = "wparvg"
size = "3670016"
However, even with the specification file in place, the result was the same and the VWPAR file systems were created in rootvg rather than wparvg.
We eventually discovered that this behaviour was a bug.
IV68299: RESTWPAR OF VWPAR IS CREATED IN ROOTVG
http://www-01.ibm.com/support/docview.wss?uid=isg1IV68299
Error description
When restoring a backup of a VWPAR that resided in a
non-root volume group, the WPAR is created in rootvg,
even though the image.data file in the backup indicates the
desired volume group.
Local fix
Specify an alternate default volume group using the -M
flag of the restvg command. For example:
# restwpar -f backup_location -M "-g wparvg" -n wpar_name
Problem summary
When restoring a backup of a VWPAR that resided in a
non-root volume group, the WPAR is created in rootvg,
even though the image.data file in the backup indicates the
desired volume group.
Problem conclusion
Added flag in restwpar to call mkwpar with ignore_lvs=no by
default.
Note: Both the Global environment and the NIM master were running AIX 7100-03-04-1441.
We were able to request in ifix from AIX support. Once we installed the ifix, in the Global environment, the restore process via NIM worked as expected and the VWPAR file systems were recovered in wparvg. We did not need to use the WPAR specification NIM resource.
# emgr -l
ID STATE LABEL INSTALL TIME UPDATED BY ABSTRACT
=== ===== ========== ================= ========== ======================================
1 S IV68299s4a 04/20/15 01:08:20 RESTWPAR VWPAR CREATED IN ROOTVG
STATE codes:
S = STABLE
M = MOUNTED
U = UNMOUNTED
Q = REBOOT REQUIRED
B = BROKEN
I = INSTALLING
R = REMOVING
T = TESTED
P = PATCHED
N = NOT PATCHED
SP = STABLE + PATCHED
SN = STABLE + NOT PATCHED
QP = BOOT IMAGE MODIFIED + PATCHED
QN = BOOT IMAGE MODIFIED + NOT PATCHED
RQ = REMOVING + REBOOT REQUIRED
# diff /usr/emgrdata/efixdata/IV68299s4a/save/EFSAVE1 /usr/sbin/restwpar
459a460
> IGNORE_LVS="ignore_lvs=no"
660a662
> IGNORE_LVS=
664c666
< IMAGE_DATA_SETUP="$IMAGE_DATA_SETUP $SHRINK $IGNORE_MAPS"
---
> IMAGE_DATA_SETUP="$IMAGE_DATA_SETUP $SHRINK $IGNORE_MAPS $IGNORE_LVS"
# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 1 closed/syncd N/A
hd6 paging 8 8 1 open/syncd N/A
hd8 jfs2log 1 1 1 open/syncd N/A
hd4 jfs2 6 6 1 open/syncd /
hd2 jfs2 35 35 1 open/syncd /usr
hd9var jfs2 7 7 1 open/syncd /var
hd3 jfs2 2 2 1 open/syncd /tmp
hd1 jfs2 1 1 1 open/syncd /home
hd10opt jfs2 5 5 1 open/syncd /opt
hd11admin jfs2 2 2 1 open/syncd /admin
lg_dumplv sysdump 16 16 1 closed/syncd N/A
livedump jfs2 4 4 1 open/syncd /var/adm/ras/livedump
cglv jfs2 100 100 1 open/syncd /cg
# lsvg -l wparvg
wparvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv00 jfs2log 1 1 1 open/syncd N/A
fslv02 jfs2 4 4 1 open/syncd /wpars/p8wpar2
fslv03 jfs2 2 2 1 open/syncd /wpars/p8wpar2/home
fslv04 jfs2 12 12 1 open/syncd /wpars/p8wpar2/opt
fslv05 jfs2 6 6 1 open/syncd /wpars/p8wpar2/tmp
fslv06 jfs2 56 56 1 open/syncd /wpars/p8wpar2/usr
fslv07 jfs2 12 12 1 open/syncd /wpars/p8wpar2/var
# uname -W
0
# lswpar
Name State Type Hostname Directory RootVG WPAR
------------------------------------------------------------
p8vw2 A S p8wpar2 /wpars/p8wpar2 no
# clogin p8vw2
*******************************************************************************
* *
* Welcome to AIX Version 5.3! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
*******************************************************************************
# oslevel -s
5300-12-09-1341