This process uses the savevg command to backup the VG structure information. I used to to this by first excluding any filesystems from the backup by populating the /etc/exclude.vg files with all the filesystems, but IBM introducted the “-r” flag that does the same thing. We purposely exclude rootvg from this because all the rootvg filesysetems will be in the mksysb backup.
#!/bin/perl
#
# Author: Patrick Vaughan - http://patrickv.info
#
# Purpose:
# Saves VG structure to files for easy recovery
#
# Restore with:
# restvg -f /vgdata/savevg.VGNAME DISKNAME
#
$test=1;
$DEBUG=0;
$" = "";
$GREP = "/usr/bin/grep";
$LSVG = "/usr/sbin/lsvg";
$EXCLUDE_VGS = "rootvg"; # VGs to exclude in a REGEXP
$VGDATA_DIR = "/vgdata";
if ( ! -d "$VGDATA_DIR" ) {
mkdir("$VGDATA_DIR") || die("Could not create directory $VGDATA_DIR: $@ \n");
}
@VGS = grep(!/$EXCLUDE_VGS/, `$LSVG -o`);
for ( @VGS ) {
chomp;
$vg = $_;
# exclude files are no longer necessary since the -r flag was introduced
# if ( -f "/etc/exclude.$vg" ) {
# unlink("/etc/exclude.$vg") || die("Could not remove file /etc/exclude.$vg: $@\n");
# }
# (@LVs) = grep(/^\//, split(/\s+/, `$LSVG -l $vg`, -1 ) );
# open(EXCLUDE_VG, ">/etc/exclude.$vg") or die("Could not create file /etc/exclude.$vg: $@\n");
# for (@LVs) {
# # populate /etc/exclude.vg with ^./filesystem/ because we don't want the data
# print EXCLUDE_VG ("^.$_/\n");
# }
# close(EXCLUDE_VG);
# undef(@LVs);
print "savevg of $vg to $VGDATA_DIR/savevg.$vg starting.\n";
system(`savevg -irf $VGDATA_DIR/savevg.$vg $vg`);
print "savevg of $vg to $VGDATA_DIR/savevg.$vg complete.\n";
# We're done with the exclude files, lets delete them
# unlink("/etc/exclude.$vg") || die("Could not remove file /etc/exclude.$vg: $@\n");
}
This will create one file in the directory /vgdata for each volume group on the system. You can then use the restvg -f /vgdata/savevg.xxx to restore the VG data. Check the restvg man page for more information.
To get information about the backup run:
restvg -l -f savevg.X
VOLUME GROUP: sharedGvg
BACKUP DATE/TIME: Tue May 29 09:33:56 EDT 2007
UNAME INFO: AIX cnpg 3 5 002680EF4C00
BACKUP OSLEVEL: 5.3.0.50
MAINTENANCE LEVEL: 5300-05
BACKUP SIZE (MB): 15008
SHRINK SIZE (MB): 1727
VG DATA ONLY: no
sharedGvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
shareGlv jfs2 938 938 1 open/syncd /shared
You can see the VG size and LV info to make decisions on restoring the VG.