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