Skip to content


Kopiowanie danych ze splitvg – część 3

To jest ostatni post opisujący proces kopiowania danych przy pomocy polecenia splitvg. Poprzedni post (część 2) pokazawała w jaki sposób należy łamać grupy dysków. Łamanie grup należy wykonać  po zatrzymaniu/zamrożeniu aplikacji, której dane chcemy przsłać do taśmy. Po egzekucji skryptu zawierającego polecenie splitvg, aplikacja jest startowana czy odmrożona i urzytkownicy mogą z niej ponownie korzystać. Skrypt pokazany poniżej jest egzekutowany w późniejszym czasie. Ten skrypt kopiuje (używając polecenie “dsmc” – aplikacja TSM/IBM) tylko foldery zawarte w odłamanych grupach dysków (vg00, vg01, itp). Nazwy tych “slajdów” mają  różnią się od ich originałów tym, że zaczynają się od “/fs”. Na przykład, originalny folder nazywa się “/mark” – jego slajd w odłamanej grupie nazywa się “/fs/mark”. Pamiętaj o tym gdyż w przeciwnym wypadku, nic nie będziesz mógł przenieść z taśmy do dysku! Liczba argumentów podanych poleceniu (ich całkowity rozmiar w kb) nie jest ograniczona, dotyczy to także polecenia “dsmc” .  W potrzebie, możesz  zwiększyć ten limit używając do tego celu polecenia “chdev -l sys0 -a ncargs=nowa_większa_wartość” lub możesz ograniczyć liczbę folderów dostarczanych poleceniu “dsmc”. Ostatnią metodę użyłem w tym skrypcie. Wartość zmiennej “$Increment” decyduje ile folderów będzie jednorazowo  dostarczonych do “dsmc”.  Poprzedni skrypt, kontroluje (egrep -v “vgxxx|vgyyy”), które grupy dysków będą łamane – to oferuje eliminacje grup i ich folderów z kopjowania do taśmy. Bardziej szczegółowa kontrola nad tym co “dsmc” będzie przerabiać jest osiągalana dzieki zawartości pliku “inclexcl”  znajdującego się w “/usr/tivoli/tsm/client/ba/bin”. Jeżeli używasz coś innego niż “dsmc” musisz odwołać się do odpowiedniej dokumentacji w tym zakresie.

#!/usr/bin/ksh93 -x
###
###
LOG='/var/SplitVg/logs'
TSMLOG=$LOG/tsmlog/tsmlog.log.`date | awk '{print $2$3}'`
MAIL='/usr/bin/mail'
WHEN=`date | awk '{print $2$3, "   " ,$6}'`
SUBJECT="`hostname` backup report for $WHEN"
DESTINATION='name@domain.xxx'

PREFIX='vg[0-9][0-9]'
MirrorSide=2
set -A SplitVGs
cntr=0

###
### functions follow
###
MOUNTFS () {
        for fs in `echo $@`
        do
          /etc/mount $fs
          if [[ $? -ne 0 ]]
           then
            LOGGER "Failed mounting $fs"
          else
            LOGGER "Mounted $fs"
          fi
        done
}
UMOUNTFS () {
        for fs in `echo $@`
        do
          /etc/umount $fs
          if [[ $? -ne 0 ]]
           then
            LOGGER "Failed un-mounting $fs"
          else
            LOGGER "un-mounted $fs"
          fi
        done
}
LOGGER(){
echo "`date` $@" >> $LOG/SplitVGs.log.`date | \
 awk '{print $2$3}'`
}
###
### Load split vgs (vg00, vg01, vg02, ...)
###
for vg in `lsvg -o | grep ^$PREFIX`
do
        SplitVGs[$cntr]=$vg
        cntr=$((cntr + 1))
done
###
###
###
Increment=10
sfFileSystems=""
cntr1=0
cntrFS=0

LOGGER "SplitVG Backup sessions starts now."
LOGGER "Processing vg: ${SplitVGs[$cntr1]}"

while (($cntr1 < $cntr))
do
        for fs in `lsvgfs ${SplitVGs[$cntr1]}`
        do
                sfFileSystems="$sfFileSystems $fs"
                cntrFS=$((cntrFS + 1))
                if (($cntrFS == $Increment))
                then
                        MOUNTFS $sfFileSystems
                        LOGGER "Backup starts for $sfFileSystems"
                        `/usr/bin/dsmc incr $sfFileSystems -subdir=yes >> $TSMLOG`
                        LOGGER "Finished backup of $sfFileSystems"
                        UMOUNTFS $sfFileSystems
                        sfFileSystems=""
                        cntrFS=0
                fi
        done
        ToBackupOrNot=`printf $sfFileSystems | wc -c`
        if (( $ToBackupOrNot > 0 ))
        then
                MOUNTFS $sfFileSystems
                LOGGER "Backup starts for $sfFileSystems."
                `/usr/bin/dsmc incr $sfFileSystems -subdir=yes >> $TSMLOG`
                LOGGER "Finished backup of $sfFileSystems"
                UMOUNTFS $sfFileSystems
                sfFileSystems=""
        fi
   PrimaryVg=`/etc/lsvg ${SplitVGs[$cntr1]} |\
              grep 'PRIMARY VG' | awk '{print $6}'`
   /usr/sbin/joinvg $PrimaryVg
   LOGGER "Finished processing vg: ${SplitVGs[$cntr1]} <-> $PrimaryVg"
   cntr1=$((cntr1 + 1))
   cntrFS=0
done

LOGGER "End of Backup Sessions."
$MAIL -s"$SUBJECT" name@domain.xxx < $TSMLOG
/usr/bin/compress $TSMLOG
/usr/bin/find $LOG/tsmlog -mtime 30 -type f -exec rm {} \;
/usr/bin/compress $LOG/SplitVGs.log.`date | awk '{print $2$3}'`
/usr/bin/find $LOG -name "SplitVGs.log*" -mtime 30 -type f -exec rm {} \;

Posted in Real life AIX, scripts.

Tagged with , , , , , , , , , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.

WordPress Anti Spam by WP-SpamShield



Copyright © 2015 - 2016 Waldemar Mark Duszyk. - best viewed with your eyes.. Created by Blog Copyright.