So, your root volume group is called old_rootvg not rootvg?

Waitwhat!?

aixlpar1 : # lspv

hdisk0 00c342c68dfcbdfb old_rootvg active < This is BAD!

hdisk1 00c342c6161c6b47 appvg active

How did you end up in this situation? Did you reinstall AIX with some strange incantation or did some alternate disk activity go horribly wrong? Not sure? Me neither!

Fortunately the following tech-note and associated script can help.

http://www-01.ibm.com/support/docview.wss?uid=isg3T1000119

Question

Rebuilding a Volume Group's Customized Device Database.

Answer

Run the script in this document when the ODM (Object Data Manager) entries for the root volume group are corrupted.

The script below assumes you are rebuilding the ODM definitions for the rootvg, which cannot be exported and then re-imported on a live system.

For most other volume groups, an export/import is the best way to clean up ODM problems.

If you need to rebuild ODM definitions for volume groups other than the rootvg, substitute appropriate values for PV and VG.

So heres the script:


#!/usr/bin/ksh
PV=`lslv -l hd5 | grep hdisk | head -1 | awk '{print $1}'`
VG=rootvg
lqueryvg -Lp $PV | awk '{ print $2 }' | while read LVname; do
odmdelete -q "name = $LVname" -o CuAt
odmdelete -q "name = $LVname" -o CuDv
odmdelete -q "value3 = $LVname" -o CuDvDr
odmdelete -q "dependency = $LVname" -o CuDep
done
odmdelete -q "name = $VG" -o CuAt
odmdelete -q "parent = $VG" -o CuDv
odmdelete -q "name = $VG" -o CuDv
odmdelete -q "name = $VG" -o CuDep
odmdelete -q "dependency = $VG" -o CuDep
if [ "$VG" = rootvg ]
then
odmdelete -q "value1 = 10" -o CuDvDr
else
odmdelete -q "value1 = $VG" -o CuDvDr
fi
odmdelete -q "value3 = $VG" -o CuDvDr
importvg -y $VG $PV # ignore lvaryoffvg errors
varyonvg $VG
synclvodm -Pv $VG # use -P only if running AIX V4.2.1 or later
savebase

Lets execute the script to resolve this problem.

Note: Try this on a crashnburn system before unleashing its fury on a real AIX system (i.e. one that has users that depend on it!). Always take a mksysb backup before performing this type of activity.

aixlpar1 : /tmp # ksh -x fixmyrootvg.ksh

+ + lslv -l hd5

+ grep hdisk

+ head -1

+ awk {print $1}

PV=hdisk0

+ VG=rootvg

+ lqueryvg -Lp hdisk0

+ awk { print $2 }

+ read LVname

+ odmdelete -q name = hd5 -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd5 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd5 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd5 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd6 -o CuAt

0518-307 odmdelete: 4 objects deleted.

+ odmdelete -q name = hd6 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd6 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd6 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd8 -o CuAt

0518-307 odmdelete: 3 objects deleted.

+ odmdelete -q name = hd8 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd8 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd8 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd4 -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd4 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd4 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd4 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd2 -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd2 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd2 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd2 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd9var -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd9var -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd9var -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd9var -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd3 -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd3 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd3 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd3 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd1 -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd1 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd1 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd1 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd10opt -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd10opt -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd10opt -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd10opt -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = local -o CuAt

0518-307 odmdelete: 4 objects deleted.

+ odmdelete -q name = local -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = local -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = local -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd7 -o CuAt

0518-307 odmdelete: 3 objects deleted.

+ odmdelete -q name = hd7 -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd7 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd7 -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = hd11admin -o CuAt

0518-307 odmdelete: 5 objects deleted.

+ odmdelete -q name = hd11admin -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = hd11admin -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q dependency = hd11admin -o CuDep

0518-307 odmdelete: 1 objects deleted.

+ read LVname

+ odmdelete -q name = rootvg -o CuAt

0518-307 odmdelete: 3 objects deleted.

+ odmdelete -q parent = rootvg -o CuDv

0518-307 odmdelete: 0 objects deleted.

+ odmdelete -q name = rootvg -o CuDv

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q name = rootvg -o CuDep

0518-307 odmdelete: 0 objects deleted.

+ odmdelete -q dependency = rootvg -o CuDep

0518-307 odmdelete: 0 objects deleted.

+ [ rootvg = rootvg ]

+ odmdelete -q value1 = 10 -o CuDvDr

0518-307 odmdelete: 1 objects deleted.

+ odmdelete -q value3 = rootvg -o CuDvDr

0518-307 odmdelete: 0 objects deleted.

+ importvg -y rootvg hdisk0

rootvg

0516-012 lvaryoffvg: Logical volume must be closed. If the logical

volume contains a filesystem, the umount command will close

the LV device.

0516-942 varyoffvg: Unable to vary off volume group rootvg.

+ varyonvg rootvg

+ synclvodm -Pv rootvg

synclvodm: Physical volume data updated.

synclvodm: Logical volume hd5 updated.

synclvodm: Logical volume hd6 updated.

synclvodm: Logical volume hd8 updated.

synclvodm: Logical volume hd4 updated.

synclvodm: Logical volume hd2 updated.

synclvodm: Logical volume hd9var updated.

synclvodm: Logical volume hd3 updated.

synclvodm: Logical volume hd1 updated.

synclvodm: Logical volume hd10opt updated.

synclvodm: Logical volume hd7 updated.

synclvodm: Logical volume hd11admin updated.

+ savebase

Hey Presto! The root volume group is now named rootvg just the way we like it!

aixlpar1 : # lspv

hdisk0 00c342c68dfcbdfb rootvg active

hdisk1 00c342c6161c6b47 appvg active