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.



Copyright © 2016 Waldemar Mark Duszyk. All Rights Reserved. Created by Blog Copyright.