http://www-01.ibm.com/support/docview.wss?uid=swg21681523
Journal Based Backup is a daemon which create a DB file to store all changes in a directory, to prevent from scanning all subdirectories to do a backup. It's currently supported on AIX, Windows, and Linux (min TSM client 6.3)
To use Journal based backup on Linux, or AIX, you have to install filepath and jbb packages:
CFS-CLU01-H:/media/nss/DATA/tsm # rpm -qa | grep TIV TIVsm-filepath-6.3.0-0 TIVsm-BA-6.3.0-0 TIVsm-API64-6.3.0-0 TIVsm-msg.FR_FR-6.3.0-0 TIVsm-JBB-6.3.0-0
Journal Based Backup module must match de kernel version :
CFS-CLU01-R:/opt/filepath # ls -l total 480 -rwx------ 1 root root 998 Nov 18 09:07 filepath -rw------- 1 root root 481997 Nov 18 09:07 filepath.ko CFS-CLU01-R:/opt/filepath # modinfo filepath.ko filename: filepath.ko license: GPL srcversion: A3571F12B3F2003E63EA799 depends: vermagic: 2.6.16.60-0.83.2-smp SMP gcc-4.1 CFS-CLU01-R:/opt/filepath # uname -a Linux CFS-CLU01-R 2.6.16.60-0.83.2-smp #1 SMP Fri Sep 2 13:49:16 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
If the versions do not match, it must be recompiled from sources:
CFS-CLU01-H:~/tsm/jbb_gpl # make Make Module:filepath Version:6.3.0.0 make -C /lib/modules/2.6.16.60-0.83.2-smp/build M=/root/tsm/jbb_gpl modules make[1]: Entering directory `/usr/src/linux-2.6.16.60-0.83.2-obj/x86_64/smp' make -C ../../../linux-2.6.16.60-0.83.2 O=../linux-2.6.16.60-0.83.2-obj/x86_64/smp modules CC [M] /root/tsm/jbb_gpl/audit.o CC [M] /root/tsm/jbb_gpl/error.o CC [M] /root/tsm/jbb_gpl/hook.o CC [M] /root/tsm/jbb_gpl/hash.o CC [M] /root/tsm/jbb_gpl/ir.o CC [M] /root/tsm/jbb_gpl/jbb.o CC [M] /root/tsm/jbb_gpl/log.o CC [M] /root/tsm/jbb_gpl/mem.o CC [M] /root/tsm/jbb_gpl/pf.o CC [M] /root/tsm/jbb_gpl/str.o CC [M] /root/tsm/jbb_gpl/str_supp.o CC [M] /root/tsm/jbb_gpl/trace.o CC [M] /root/tsm/jbb_gpl/watch.o CC [M] /root/tsm/jbb_gpl/xml.o LD [M] /root/tsm/jbb_gpl/filepath.o Building modules, stage 2. MODPOST CC /root/tsm/jbb_gpl/filepath.mod.o LD [M] /root/tsm/jbb_gpl/filepath.ko make[1]: Leaving directory `/usr/src/linux-2.6.16.60-0.83.2-obj/x86_64/smp' TIVsm-filepath-6.3.0-0.x86_64.rpm created
Create a tsmjbbd.ini file (samples avalaible in /opt/tivoli/tsm/client/ba/bin/tsmjbbd.ini.smp)
CFS-CLU01-H:/media/nss/DATA/tsm # cat tsmjbbd.ini [JournalSettings] Errorlog=/media/nss/DATA/tsm/myJbberror.log Journaldir=/media/nss/DATA/tsm/journaldbs [JournalExcludeList] ; Note that this list contains the journal database files. *.jdb.jbbdb *.jdbInc.jbbdb [JournaledFileSystemSettings] JournaledFileSystems=/media/nss/DATA JournalDBSize=0x00000000 NotifyFilter=0x00000117 NotifyBufferSize=0x00400000 DirNotifyBufferSize=0x00200000 ; Override stanza for /media/nss/DATA file system [JournaledFileSystemSettings./media/nss/DATA] PreserveDBOnExit=1 DeferFsMonStart=1 DeferRetryInterval=120 logFsErrors=0
Journaldir: directory for journal DB PreserveDBOnExit: set it to 1 to prevent to rescan all the directory to populate the DB, else you loose the DB at process restart
Basic start of JBB process:
# /opt/tivoli/tsm/client/ba/bin/tsmjbbd -f /media/nss/DATA/tsm/tsmjbbd.ini
Steps to initilize the journal
# dsmc -optfile=/media/nss/DATA/tsm/dsm.opt incr '/media/nss/DATA' -nojournal
Example of start script for linux (sudo is used in case of use Novell ressource else no process is found), client acceptor is started and JBB:
CFS-CLU01-H:/media/nss/DATA/tsm # cat rc.tsm #!/bin/bash ### BEGIN INIT INFO # Provides: dsm # Required-Start: $network $syslog $remote_fs # Required-Stop: $network $syslog $remote_fs # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: Tivoli Storage Manager client acceptor daemon ### END INIT INFO # Check for existence of Binaries DSM_DIR=/opt/tivoli/tsm/client/ba/bin DSMCAD_BIN=$DSM_DIR/dsmcad DSMC_BIN=$DSM_DIR/dsmc DSMJBB_BIN=$DSM_DIR/tsmjbbd # This directory is specific for each ressource export PATH=/bin:/usr/bin:/sbin:/usr/sbin export RES_DIR=/media/nss/DATA/tsm export DSM_CONFIG=$RES_DIR/dsm.opt export DSMJBB_CONFIG=$RES_DIR/tsmjbbd.ini test -x $DSMC_BIN || { echo "$DSMC_BIN not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } prog1="dsmcad" prog2="dsmc sched" prog3="tsmjbbd" cmd1="$DSMCAD_BIN -optfile=$DSM_CONFIG" cmd2="$DSMC_BIN sched -optfile=$DSM_CONFIG" cmd3="$DSMJBB_BIN -f $DSMJBB_CONFIG" OK="OK" NOK="Not Running" case "$1" in start) echo -n $"Starting $prog3: " echo if [ $(sudo /bin/ps -ef | grep $DSMJBB_CONFIG | grep $DSMJBB_BIN | grep -v grep > /dev/null 2>&1; echo $?) -eq 1 ] then $cmd3 & > /dev/null 2>&1 fi #echo -n $"Starting $prog2: " #echo #if [ $(sudo /bin/ps -ef | grep $DSM_CONFIG | grep $DSMC_BIN | grep -v $prog1 | grep -v grep > /dev/null 2>&1; echo $?) -eq 1 ] #then # $cmd2 & > /dev/null 2>&1 #fi echo -n $"Starting $prog1: " echo if [ $(sudo /bin/ps -ef | grep $DSM_CONFIG | grep $DSMCAD_BIN | grep -v grep > /dev/null 2>&1; echo $?) -eq 1 ] then $cmd1 > /dev/null 2>&1 fi ;; stop) echo -n $"Stopping $prog1: " echo #echo -n $"Stopping $prog2: " #echo echo -n $"Stopping $prog3: " echo for pid_dsm in $(sudo /bin/ps -ef | egrep "$DSMJBB_CONFIG|$DSM_CONFIG" | grep -v grep | awk '{print $2}') do kill $pid_dsm done ;; restart) $0 stop sleep 2 $0 start ;; status) echo -n "Checking for $prog1" if [ $(ps -ef | grep $DSM_CONFIG | grep $DSMCAD_BIN | grep -v grep > /dev/null 2>&1; echo $?) -eq 0 ] then echo " ${OK}" else echo " ${NOK}" fi #echo -n "Checking for DSMC" #if [ $(ps -ef | grep $DSM_CONFIG | grep $DSMC_BIN | grep -v $prog1 | grep -v grep > /dev/null 2>&1; echo $?) -eq 0 ] #then # echo " ${OK}" #else # echo " ${NOK}" #fi echo -n "Checking for DSMjbb (journal)" if [ $(ps -ef | grep $DSMJBB_CONFIG | grep $DSMJBB_BIN | grep -v grep > /dev/null 2>&1; echo $?) -eq 0 ] then echo " ${OK}" else echo " ${NOK}" fi ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac
Samples configuration files:
- dsm.opt
CFS-CLU01-H:/media/nss/DATA/tsm # cat dsm.opt ************************************************************************ * Tivoli Storage Manager * * * * Sample Client User Options file for AIX and SunOS (dsm.opt.smp) * ************************************************************************ * This file contains an option you can use to specify the TSM * server to contact if more than one is defined in your client * system options file (dsm.sys). Copy dsm.opt.smp to dsm.opt. * If you enter a server name for the option below, remove the * leading asterisk (*). ************************************************************************ SErvername tsmh_bldata01 * SErvername tsmr * set name to tsmh or tsmr Subdir yes *traceflag service *traceflag verbinfo *tracefile /tmp/tsm.trc DOMAIN /media/nss/DATA quiet
- dsm.sys
CFS-CLU01-H:/opt/tivoli/tsm/client/ba/bin # cat dsm.sys ************************************************************************ * Tivoli Storage Manager * * * * Sample Client System Options file for AIX and SunOS (dsm.sys.smp) * ************************************************************************ * This file contains the minimum options required to get started * using TSM. Copy dsm.sys.smp to dsm.sys. In the dsm.sys file, * enter the appropriate values for each option listed below and * remove the leading asterisk (*) for each one. * If your client node communicates with multiple TSM servers, be * sure to add a stanza, beginning with the SERVERNAME option, for * each additional server. ************************************************************************ SErvername tsmh_local COMMMethod TCPip TCPServeraddress tsmh.bl.lu nodename CFS-CLU01-H Compression no TCPPort 1500 httpport 1581 WebPorts 1582 1583 MANAGEDServices webclient schedule Schedmode prompted Errorlogname /opt/tivoli/tsm/client/ba/bin/dsmerror.log Errorlogret 7 SChedlogname /opt/tivoli/tsm/client/ba/bin/dsmsched.log Schedlogret 7 INCLexcl /opt/tivoli/tsm/client/ba/bin/inclexcl.lst PasswordAccess generate SErvername tsmr_local COMMMethod TCPip TCPServeraddress tsmr.bl.lu nodename CFS-CLU01-R Compression no TCPPort 1600 httpport 1681 WebPorts 1682 1683 MANAGEDServices webclient schedule Schedmode prompted Errorlogname /usr/tivoli/tsm/client/ba/bin/dsmerror.log Errorlogret 7 SChedlogname /usr/tivoli/tsm/client/ba/bin/dsmsched.log Schedlogret 7 INCLexcl /usr/tivoli/tsm/client/ba/bin/inclexcl.lst PasswordAccess generate * * Entry for Cluster Resources * * Entry for the Backup-Archive Cluster Resources (BLDATA01) SErvername tsmh_bldata01 COMMMethod TCPip TCPServeraddress tsmh.bl.lu TCPPort 1500 * ClusterNode Yes Nodename bldata01 *TCPClientAddress 172.19.28.203 TCPClientPort 1701 httpport 1781 WebPorts 1782 1783 MANAGEDServices webclient schedule Compression no Schedmode prompted SChedlogname /media/nss/DATA/tsm/dsmsched.log Schedlogret 7 Errorlogname /media/nss/DATA/tsm/dsmerror.log Errorlogret 7 INCLexcl /media/nss/DATA/tsm/inclexcl.lst PasswordAccess generate PasswordDir /media/nss/DATA/tsm
Start/Stop scripts of the ressource (Please don't edit, update with Novell interface):
CFS-CLU01-H:/var/opt/novell/ncs # ll -rwxr-xr-x 1 root root 621 Nov 9 11:46 BLDATA_SERVER.load -rwxr-xr-x 1 root root 221 Nov 9 11:46 BLDATA_SERVER.monitor -rwxr-xr-x 1 root root 490 Nov 9 11:46 BLDATA_SERVER.unload
Logs for Start/stop scripts for Novell resource:
CFS-CLU01-H:/var/opt/novell/log/ncs # ll -rw-r--r-- 1 root root 354246 Nov 9 11:12 BLDATA_SERVER.load.out -rw-r--r-- 1 root root 209144 Nov 9 10:54 BLDATA_SERVER.unload.out