TSM

From rb's Wiki

Jump to: navigation, search

Contents

Datensicheung

Ein gut strukturierter und kompakter Artikel zum Thema Datensicherung bei Wikipedia.de

top

TSM Online Documentation

top

Linux Debian Installationspakete

DEBIAN TSM CLIENT IS NOT SUPPORTED BY IBM - THEREFORE USE AT YOUR OWN RISK

top

ADSM/TSM QuickFacts

ADSM/TSM QuickFacts

in alphabetical order, supplemented thereafter by topic discussions

as compiled by Richard Sims (r b s @ b u . e d u),

Boston University (www.bu.edu), Office of Information Technology

On the web at http://people.bu.edu/rbs/ADSM.QuickFacts


Last update: 2008/06/02

This reference was originally created for my own use as a systems programmer's "survival tool", to accumulate essential information and references that I knew I would have to refer to again, and quickly re-find it. In participating in the ADSM-L mailing list, it became apparent that others had a similar need, and so it made sense to share the information. The information herein derives from many sources, including submissions from other TSM customers. This, the information is that which everyone involved with TSM has contributed to a common knowledge base, and this reference serves as an accumulation of that knowledge, largely reflective of the reality of working with the TSM product as an administrator. I serve as a compiler and contributor. This informal, "real-world" reference is intended to augment the formal, authoritative documentation provided by Tivoli and allied vendors, as frequently referenced herein. See the REFERENCES area at the bottom of this document for pointers to salient publications.

Command syntax is included for the convenience of a roaming techie carrying a printed copy of this document, and thus is not to be considered definitive or inclusive of all levels for all platforms: refer to manuals for the syntax specific to your environment. Upper case characters shown in command syntax indicates that at least those characters are required, not that they have to be entered in upper case. I realize that I need to better "webify" this reference, and intend to do so in the future. (TSM administration is just a tiny portion of my work, and many other things demand my time.)

In dealing with the product, one essential principle must be kept in mind, which governs the way the product operates and restricts the server administrator's control of that data: the data which the client sends to a server storage pool will always belong to the client - not the server. There is no provision on the server for inspecting or manipulating file system objects sent by the client. Filespaces are the property of the client, and if the client decides not to do another backup, that is the client's business: the server shall take no action on the Active, non-expiring files therein. It is incumbent upon the server administrator, therefore, to maintain a relationship with client administrators for information to be passed when a filespace is obsolete and discardable, when it has fallen into disuse.


top

TSM SQL Queries

top

Q_OCC_SUM (Occupancy gesamt pro Node)

 select NODE_NAME, cast(sum(PHYSICAL_MB)/1024 as dec(8,2)) as GB, sum (NUM_FILES) as FILES from occupancy group by NODE_NAME order by GB desc

top

Q_SUMMARY (Backup und Archive Aufkommen)

 select -
   Start_time, -
   end_time-start_time as dauer, -
   activity, -
   entity, -
   cast(bytes/1024/1024/1024 as dec(8,2)) as GB -
 from -
   summary -
 where -
   activity in ('BACKUP','ARCHIVE') -
 order by -
   activity, -
   start_time


top

Q_SCHED (Schedules und Association)

 select -
   DOMAIN_NAME, -
   SCHEDULE_NAME, -
   ACTION, -
   OPTIONS, -
   OBJECTS, -
   STARTDATE, -
   STARTTIME, -
   DURATION, -
   DURUNITS, -
   PERIOD, -
   PERUNITS, -
   DAYOFWEEK, -
   SCHED_STYLE, -
   ENH_MONTH, -
   DAYOFMONTH, -
   WEEKOFMONTH -
 from -
   client_schedules -
 order by -
   ACTION, -
   SCHEDULE_NAME
   
 *
 q ASSOC


top

Q_MC (alle Managementclassen nach BACKUP und ARCH)

select -
  cast(DOMAIN_NAME  as char(9)) as PD, -
  cast(DEFMGMTCLASS as char(9)) as DEF_MC -
from -
  policysets -
where -
  SET_NAME='ACTIVE'
*
select -
  cast(DOMAIN_NAME as char(9))      AS PD, -
  cast(CLASS_NAME  as char(9))      AS BACK, -
  cast(VEREXISTS   as decimal(3,0)) as EXIST, -
  cast(VERDELETED  as decimal(3,0)) as DEL, -
  cast(RETEXTRA    as decimal(3,0)) as EXTRA, -
  cast(RETONLY     as decimal(3,0)) as ONLY, -
  cast(DESTINATION as char(9))      as DEST -
from -
  BU_COPYGROUPS -
where -
  SET_NAME='ACTIVE'
*
*
*
select -
  cast(DOMAIN_NAME as char(9))      AS PD, -
  cast(CLASS_NAME  as char(9))      AS ARCH, -
  cast(RETVER      as decimal(5,0)) as Tage, -
  cast(DESTINATION as char(9))      as DEST -
  from AR_COPYGROUPS -
where -
  SET_NAME='ACTIVE'


top

Q_BS (Backupset zu Band)

 q backupset
 q volhist t=backupset
 
 select -
   NODE_NAME, BACKUPSET_NAME, description, VOLUME_NAME -
 from -
   volhistory, backupsets -
 where -
   type = 'BACKUPSET' and COMMAND like '%'||NODE_NAME||'%'


top

Q_TAPES (Übersicht Bandbelegung)

select library_name,status,count(*) as tapes from libvolumes group by library_name,status
*
select access as AccessStatus,count(*) as tapes from volumes where DEVCLASS_NAME!='DISK' group by access
*
select status, count(*) as tapes from volumes where DEVCLASS_NAME!='DISK' group by status
*
select stgpool_name,maxscratch,numscratchused, (maxscratch - numscratchused) as reserve  from stgpools where devclass !='DISK' order by reserve
*
select stgpool_name,volume_name, status,pct_utilized from volumes where devclass_name!='DISK' order by STGPOOL_NAME,PCT_UTILIZED desc
*
select stgpool_name, status,cast( mean(pct_utilized)as decimal(5,2)) as avg_pctu , cast( mean(pct_utilized*EST_CAPACITY_MB/100/1024)as decimal(5,2)) as avg_gb from volumes where devclass_name != 'DISK' group by stgpool_name, status

top

Q_DEAD (Verwaiste Bänder)

 select -
	volume_name, owner  -
 from -
 	libvolumes -
 where -
 		status='Private' -
 	and -
 		volume_name not in (select volume_name from volumes) -
 	and -
 		volume_name not in (select volume_name from volhistory where (type='BACKUPFULL' or type='BACKUPSET'))


top

Q_NODE_DISK (installierter Plattenplatz der Nodes)

 select -
     cast(sum(capacity*pct_util/100/1024)as decimal(8,2)) as GB_used, -
     cast(sum(capacity/1024) as decimal(8,2)) as GB_install  -
 from filespaces
 *
 select -
     node_name, -
     cast(sum(capacity*pct_util/100/1024)as decimal(8,2)) as GB_used, -
     cast(sum(capacity/1024) as decimal(8,2)) as GB_install  -
 from filespaces -
 group by node_name -
 order by gb_used desc


top

Q_NOCOLLOC (Nodes ohne Collocationgroup)

select node_name from nodes where node_name not in (select node_name from collocgroup)

Definitionen

update stg ltopool col=GR
define collocgroup GRUPPE desc="Kommentar"
define collocmember GRUPPE node1,node2,node3,node4


top

Q_OCC_POOLTYPE

Summe Occupancy gruppiert nach STGPOOL und POOLTYPE

select -
     occupancy.stgpool_name, -
     pooltype, sum(logical_mb) as logical_MB -
from -
     occupancy,stgpools -
where -
     stgpools.stgpool_name=occupancy.stgpool_name -
group by -
     occupancy.stgpool_name, -
     pooltype  -
order by -
     pooltype desc


top

Q_MIGR_PERF (Transferraten der Diskmigrationen)

select -
	START_TIME, -
	END_TIME-START_TIME AS DAUER, -
	entity, -
	cast(bytes/1024/1024/1024 as decimal(7,2)) as GB, -
	cast((end_time-start_time)seconds as decimal(18,0)) as SECs, -
	cast((cast(bytes/1024/1024 as decimal(18,0)) / cast((end_time-start_time)seconds as decimal(18,0))) as decimal(5,2)) as mb_per_sec -
from -
	summary -
where -
	activity='MIGRATION' -
and -
	entity='DISKPOOL' -
and -
	cast((END_TIME-START_TIME)seconds as decimal(18,0))> 0 -
order by -
	mb_per_sec desc

top

Library Delete / Define

top

Delete

Vorher Q LIBVOL sichern !!!

 DELETE PATH SATURN DR_4560SX_0 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX
 DELETE PATH SATURN DR_4560SX_1 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX
 DELETE PATH SATURN DR_4560SX_2 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX
 DELETE PATH SATURN DR_4560SX_3 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX
 DELETE PATH SATURN LB_4560SX SRCTYPE=SERVER DESTTYPE=LIBRARY
 DELETE DRIVE LB_4560SX DR_4560SX_0
 DELETE DRIVE LB_4560SX DR_4560SX_1
 DELETE DRIVE LB_4560SX DR_4560SX_2
 DELETE DRIVE LB_4560SX DR_4560SX_3
 DELETE LIBRARY LB_4560SX
 *# Vorsicht !!! DELETE DEVCLASS CL_4560SX

top

Define

 DEFINE LIBRARY LB_4560SX LIBTYPE=SCSI SERIAL="2B3252302227" SHARED=NO AUTOLABEL=NO RESETDRIVE=NO
 DEFINE PATH SATURN LB_4560SX SRCTYPE=SERVER DESTTYPE=LIBRARY DEVICE=lb0.4.0.2 ONLINE=YES
 *# Vorsicht DEFINE DEVCLASS CL_4560SX DEVTYPE=LTO FORMAT=DRIVE MOUNTLIMIT=DRIVES MOUNTWAIT=60 MOUNTRETENTION=5 PREFIX=ADSM LIBRARY=LB_4560SX WORM=NO
 DEFINE DRIVE LB_4560SX DR_4560SX_0 ELEMENT=480 ONLINE=Yes
 q libvol
 DEFINE DRIVE LB_4560SX DR_4560SX_1 ELEMENT=481 ONLINE=Yes
 DEFINE DRIVE LB_4560SX DR_4560SX_2 ELEMENT=482 ONLINE=Yes
 DEFINE DRIVE LB_4560SX DR_4560SX_3 ELEMENT=483 ONLINE=Yes
 DEFINE PATH SATURN DR_4560SX_0 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX DEVICE=mt0.0.0.2 ONLINE=YES
 DEFINE PATH SATURN DR_4560SX_1 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX DEVICE=mt0.1.0.2 ONLINE=YES
 DEFINE PATH SATURN DR_4560SX_2 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX DEVICE=mt0.2.0.2 ONLINE=YES
 DEFINE PATH SATURN DR_4560SX_3 SRCTYPE=SERVER DESTTYPE=DRIVE LIBRARY=LB_4560SX DEVICE=mt0.3.0.2 ONLINE=YES
 *# DEFINE STA Path ....
 *# Vorsicht CHECKIN LIBVOLUME LB_4560SX STATUS=SCRATCH CHECKLABEL=BARCODE SWAP=NO MOUNTWAIT=60 SEARCH=YES
 *# Vorsicht CHECKIN LIBVOLUME LB_4560SX STATUS=PRIVATE CHECKLABEL=BARCODE SWAP=NO MOUNTWAIT=60 SEARCH=YES
 *# UPDATE LIBVOL OWNER= ... laut Q LIBVOL Liste

top

TSM Server MASTER Skript

 expire inv                         wait=yes
 backup stg backup_disk  copy_lto   wait=yes
 backup stg backup_lto   copy_lto   wait=yes
 *#rb backup stg hsm_lto copy_lto   wait=yes
 migrate stg backup_disk            wait=yes
 backup db t=full devc=cl_ts3310_01 wait=yes
 backup volhist
 backup devconfig
 del volh t=dbb todate=-3

top

Linux init.d skripts

top

TSM Client Linux: /etc/init.d/dsmc.rc

dsmc.rc

#!/bin/sh
#
# chkconfig: - 91 35
# description: Starts and stops TSM client daemon
#
#Source function library.
. /etc/rc.d/init.d/functions

[ -f /opt/tivoli/tsm/client/ba/bin/dsmc ] || exit 0

prog="dsmc"

export DSM_DIR=/opt/tivoli/tsm/client/ba/bin
export DSM_CONFIG=/opt/tivoli/tsm/client/ba/bin/dsm.opt

start() {
  echo -n $"Starting $prog: "
  cd $DSM_DIR
  $DSM_DIR/$prog sched 2> /dev/null 1> /dev/null &
  touch /var/lock/subsys/$prog
  echo "[OK]"
  return 0
  }

stop() {
  if test "x`pidof dsmc`" != x; then
  echo -n $"Stopping $prog: "
  killproc dsmc
  echo
  fi
  RETVAL=$?
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dsmc
  return $RETVAL
  }

case "$1" in
start)
start
;;

stop)
stop
;;

status)
status dsmc
;;
restart)
stop
start
;;
condrestart)
if test "x`pidof dsmc`" != x; then
stop
start
fi
;;

*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1

esac

exit 0


  • Service montieren
chkconfig --level 345 dsmc.rc on
chkconfig --add dsmc.rc
  • Service manuell starten/stoppen
service dsmc.rc start
service dsmc.rc stop

top

TSM Server Linux: /etc/init.d/dsmserv.rc

  #!/bin/bash
  #
  # dsmserv       Start/Stop IBM Tivoli Storage Manager
  #
  # chkconfig: - 90 10
  # description: Starts/Stops the IBM Tivoli Storage Manager Server
  # processname: dsmserv
  # pidfile: /var/run/dsmserv.pid  
  
  #***********************************************************************
  # Distributed Storage Manager (ADSM)                                   *
  # Server Component                                                     *
  #                                                                      *
  # IBM Confidential                                                     *
  # (IBM Confidential-Restricted when combined with the Aggregated OCO   *
  # Source Modules for this Program)                                     *
  #                                                                      *
  # OCO Source Materials                                                 *
  #                                                                      *
  # 5765-303 (C) Copyright IBM Corporation 1990, 2003                    *
  #***********************************************************************   
  
  # First of all, check for syntax
  if [[ $# != 1 ]]
  then
    echo $"Usage: $0 {start|stop|status|restart}"
    exit 1
  fi 

  prog="dsmserv"
  # determine which version of the server is installed
  server_version=`rpm -q TIVsm-server`
  # determine where the server is installed
  # if string server_version is not NULL, it means we got something
  if [[ -n "$server_version" ]]
  then
    prefix=`rpm -q --queryformat %'{INSTALLPREFIX}' $server_version`
  else
    echo "IBM Tivoli Storage Manager Server not found on this system"
    exit -1
  fi  

  PATH=/sbin:/bin:/usr/bin:/usr/sbin:$prefix/tivoli/tsm/server/bin
  
  if [[ ! -e $prefix/tivoli/tsm/server/bin/$prog ]]
  then
     echo "IBM Tivoli Storage Manager Server not found on this system"
     exit 0
  fi
  rc=0
  
  start() {
  # make sure that the server CAN create a core dump in the event of an error
          ulimit -c unlimited
   
          echo -n "Starting $prog ... "
          DSMSERV_DIR=$prefix/tivoli/tsm/server/bin
          export DSMSERV_DIR
          cd $DSMSERV_DIR
          #if we're already running, say so
          status 0
          if [[ $g_status == "running" ]]
          then
             echo "$prog already running..."
             exit 0
          else
             nohup ./$prog quiet >/dev/null 2>&1 &
             # give enough time to server to start
             sleep 5
             # if the lock file got created, we did ok
             if [[ -f $prefix/tivoli/tsm/server/bin/dsmserv.lock ]]
             then
                gawk --source '{print $4}' $prefix/tivoli/tsm/server/bin/dsmserv.lock>/var/run/$prog.pid
                [ $? = 0 ] && echo "Succeeded :-)" || echo "Failed :-("
                rc=$?
                echo
                [ $rc -eq 0 ] && touch /var/lock/subsys/dsmserv
                return $rc
             else
                echo "Failed :-("
                return 1
             fi
         fi
  }
  
  stop() {
          echo -n "Stopping $prog..."
          if [[ -e /var/run/$prog.pid ]]
          then
             # make sure someone else didn't kill us already
             progpid=`cat /var/run/$prog.pid`
             running=`ps -ef | grep $progpid | grep -v grep`
             if [[ -n $running ]]
             then
              #echo "executing cmd kill `cat /var/run/$prog.pid`"
                kill `cat /var/run/$prog.pid`
                if [[ $? == 0 ]]
                then
                  echo "$prog stopped Successfully :-)"
                else
                  echo "$Unable to stop $prog"
                  exit 1
                fi
             fi
             # remove the pid file so that we don't try to kill same pid again
             rm /var/run/$prog.pid
             if [[ $? != 0 ]]
             then
               echo "Process $prog stopped, but unable to remove /var/run/$prog.pid"
               echo "Be sure to remove /var/run/$prog.pid."
               exit 1
             fi
          else
             echo "$prog not running."
          fi
          rc=$?
          echo
          [ $rc -eq 0 ] && rm -f /var/lock/subsys/dsmserv
          return $rc
  }
  
  status() {
        # check usage
        if [[ $# != 1 ]]
        then
           echo "$0: Invalid call to status routine. Expected argument: <display_to_screen>"
           echo "where display_to_screen is 0 or 1 and indicates whether output will be sent to screen."
           exit 1
        fi
        #see if file /var/run/$prog.pid exists
        # if it does, see if process is running
        # if it doesn't, it's not running - or at least was not started by dsmserv.rc
        if [[ -e /var/run/$prog.pid ]]
        then
           progpid=`cat /var/run/$prog.pid`
           running=`ps -ef | grep $progpid | grep -v grep`
           if [[ -n $running ]]
           then
              g_status="running"
           else
              g_status="stopped"
           fi
        else
          g_status="stopped"
        fi
        if [[ $1 == 1 ]]
        then
              echo "Status of $prog: $g_status"
        fi
  }
  
  restart() {
          stop
          start
  }
  
  case "$1" in
    start)
          start
          ;;
    stop)
          stop
          ;;
    status)
          status 1
          ;;
    restart|reload)
          restart
          ;;
    *)
          echo $"Usage: $0 {start|stop|status|restart}"
          exit 1
  esac
  
  exit $?

 
  • Service montieren
chkconfig --level 345 dsmserv.rc on
chkconfig --add dsmserv.rc
  • Service manuell starten/stoppen
service dsmserv.rc start
service dsmserv.rc stop

top

TSM TDP Oracle Linux 64 bit

  • install BA client
   rpm -i TIVsm-API.i386.rpm
   rpm -i TIVsm-API64.i386.rpm
   rpm -i TIVsm-BA.i386.rpm
  • install TDP Ora
   export PATH=$PATH:/opt/db/oracle/10g/jre/1.4.2/bin/
   cd /tmp/TDP/LK4T-2453-00/oracle/linux86_64
   ./5.4.1.0-TIV-TSMORA-LinuxX64.bin -console
  • config anpassen

/opt/tivoli/tsm/client/oracle/bin64/tdpo.opt

 /opt/tivoli/tsm/client/oracle/bin64/dsm.opt

/opt/tivoli/tsm/client/api/bin64/dsm.sys

 /opt/tivoli/tsm/client/oracle/bin64/dsm.incl
 [root@dbbox bin64]# find / -name "libobk*"
 /usr/lib64/libobk.so
 /opt/db/oracle/10g/lib/libobk.so
 /opt/tivoli/tsm/client/oracle/bin64/libobk.so
 /etc/ld.so.conf.d/libobk-oracle-tsm.conf


  • RMAN script

/home/oracle/tsm.rman

 run
 {
         allocate channel t1 type 'sbt_tape' parms
                 'ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
 #       allocate channel t2 type 'sbt_tape' parms
 #               'ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
         backup
                 filesperset 5
                 format 'df_%t_%s_%p'
                 (database);
}

Aufruf

 rman catalog rman/cat target / cmdfile tsm.rman


[root@dbbox bin64]# cat tdpo.opt
 *********************************************************************
 * IBM Tivoli Storage Manager for Databases
 *    Data Protection for Oracle
 *
 * Sample tdpo.opt for the LinuxAMD64 Data Protection for Oracle
 *********************************************************************
 
 *DSMI_ORC_CONFIG    /opt/tivoli/tsm/client/oracle/bin64/dsm.opt
 DSMI_ORC_CONFIG    /opt/tivoli/tsm/client/oracle/bin64/dsm.opt
 *DSMI_LOG           /home/<oracle>
 DSMI_LOG           /home/oracle
 
 *TDPO_FS            adsmorc
 *TDPO_NODE          <hostname>
 TDPO_NODE           DBBOX_ORA
 *TDPO_OWNER         <username>
 *TDPO_PSWDPATH      /opt/tivoli/tsm/client/oracle/bin64
 TDPO_PSWDPATH      /opt/tivoli/tsm/client/oracle/bin64
 
 *TDPO_DATE_FMT      1
 *TDPO_NUM_FMT       1
 *TDPO_TIME_FMT      1
 
 *TDPO_MGMT_CLASS_2   mgmtclass2
 *TDPO_MGMT_CLASS_3   mgmtclass3
 *TDPO_MGMT_CLASS_4   mgmtclass4
 
 *#rb traceflags
 *tdpo_trace_flags orclevel0 orclevel1 orclevel2
 *tdpo_trace_file /home/oracle/tdpo.trace
 [root@dbbox bin64]#

top

Microsoft Cluster Client

local node

dsm.opt:

comming soon

top

Cluster Resource mit NTFS mountpoints

s:\TSM_cluster_config\dsm_file.opt

TCPSERVERADDRESS	tsmservername
PASSWORDACCESS		GENERATE
NODENAME		clusterresourcename

CLUSTERNODE		YES
*# ntfsmountpoints !!!
CLUSTERDISKSONLY	NO 

TCPNODELAY		YES
RESOURCEUTIL		10
DATEFORMAT		3
NUMBERFORMAT		6

ERRORLOGNAME		s:\TSM_cluster_cfg\dsmerrorlog_file.log
SCHEDLOGNAME		s:\TSM_cluster_cfg\dsmschedlog_file.log

ERRORLOGRETENTION 	14
SCHEDLOGRETENTION 	14
QUIET			

SCHEDMODE		PROMPTED

DIRMC			MC_DIR

*# NTFS mountpoints
DOMAIN	"\\clustername\s$\archive\groups"
DOMAIN	"\\clustername\s$\archive\projects" 
DOMAIN	"\\clustername\s$\archive\users"
DOMAIN	"\\clustername\s$\data\groups"
DOMAIN	"\\clustername\s$\data\projects"
DOMAIN	"\\clustername\s$\data\users"
*# Restliche Clusterdisken
DOMAIN	H:
DOMAIN	I:
DOMAIN	P:
DOMAIN	W: 
DOMAIN	S: 
*# Q gehört nicht zur fileserver_group 

EXCLUDE.DIR "*:\Recycled" 
EXCLUDE.DIR "*:\Recycler" 

top

VMware 3.x

IBM Links:

top

TSM Client Installation

  • Check old installation
rpm –q –-all | grep TIV
  • Remove old Installation
rpm –e package_name
  • Install packages
rpm –ivh /tmp/TIVsm-API-i386.rpm
rpm –ivh /tmp/TIVsm-BA-i386.rpm
  • Check installation again
rpm –q –-all | grep TIV


top

TSM Client Options (/opt/tivoli/tsm/client/ba/bin/dsm.opt)

servername      TSM1
followsymbolic  yes

top

TSM Client Options (/opt/tivoli/tsm/client/ba/bin/dsm.sys)

  SErvername  TSM1
         * Communication Settings
         NODENAME                VMWARENODE
         COMMMethod              TCPip
         TCPPort                 1500
         TCPServeraddress        TSM1.domain.local
         PASSWORDACCESS          generate

         * Logfiles
         ERRORLOGRETENTION       14
         SCHEDLOGRETENTION       14
         ERRORLOGNAME            /opt/tivoli/tsm/client/ba/bin/dsmerror.log
         SCHEDLOGNAME            /opt/tivoli/tsm/client/ba/bin/dsmsched.log

         * Performace tuning
         largecom                yes
         txnbytelimit            25600
         tcpnodelay              yes
         tcpbuffsize             32
         tcpwin                  64
         
         * dsmcad communication controls
         httpport 1581
         webports 1582 1583

         * VMFS mount point definition
         virtualmountpoint       /vmfs
 
         * INCLUDE/EXCLUDE
         include                 /vmfs/.../*/*  MC_VMWARE_IMAGE
         exclude                 /vmfs/.../*-delta.vmdk
         exclude                 /vmfs/.../*-rdmp.vmdk
         exclude                 /vmfs/.../*.vswp
         exclude                 /vmfs/.../*.REDO

top

ESX Firewall

  • Enable in VMware Virtual Infrastructure Client --> Configuration --> Security Profile
Incoming: Tivoli Storage Manager Agent 1500 (TCP)
Outgoing: Tivoli Storage Manager Agent 1500 (TCP)
  • on the ESX console
esxcfg-firewall -openPort 1581,tcp,in, "TSM CAD Daemon(dsmcad) Inbound"
esxcfg-firewall -openPort 1581,tcp,out,"TSM CAD Daemon(dsmcad)Outbound"
esxcfg-firewall -openPort 1582,tcp,in, "TSM Agent (dsmagent) Inbound"
esxcfg-firewall -openPort 1582,tcp,out,"TSM Agent (dsmagent) Outbound”
esxcfg-firewall -openPort 1583,tcp,in, "TSM Agent2 (dsmagent) Inbound"
esxcfg-firewall -openPort 1583,tcp,out,"TSM Agent2 (dsmagent) Outbound”

top

Backup snapshot images (unfertig)

Achtung: funktioniert NICHT mit rawdevice mapping im physical mode!

  • List
vmware-cmd –l
  • Create snapshot
vmware-cmd /vmfs/volumes/ds1/machine1/machine1.vmx createsnapshot backup1
  • Backup
dsmc ... !!!!
  • Remove snapshot
vmware-cmd /vmfs/volumes/ds1/machine1/machine1.vmx removesnapshots


  • Backupscript create_tsmimage.sh
 #!/bin/bash
 #######################################
 
 VMWARECMD="/usr/bin/vmware-cmd"
 DSMC="/usr/bin/dsmc"
 DSMHOME="/opt/tivoli/tsm/client/ba/bin"
 SSH="/usr/bin/ssh"
 ECHO="/bin/echo"
 CUT="/bin/cut"
 AWK="/bin/awk"
 GREP="/bin/grep"
 CAT="/bin/cat"
 clientfile="$PWD/tsmclientlist.cfg"
 hostfile="$PWD/tsmhostlist.cfg"
 $ECHO $hostfile
 localhosts=`$VMWARECMD -l | $AWK '{ string=substr($0,51); print string }' | $AWK '{ string=substr($0,0,index($0,"/")-1); print string }'`
 localhost=`hostname`
 hosts=`$CAT $hostfile`
 
 
 for i in `$CAT $clientfile | $GREP -v "#"`
 do
    $ECHO "machine to backup: " $i
         for host in $hosts
         do
             if [[ $host = $localhost ]]; then
             for j in $localhosts
             do
                 if [ $i = $j ]; then
                     if [[ -n $j ]]; then
                         $ECHO "create snapshot of local machine: " $j
                         v=`$VMWARECMD -l | $GREP "/"$j"/"`
                         #$ECHO "create snapshot of local machine (long name): " $v
                         $VMWARECMD $v createsnapshot tsmbackup
                         dsmc i -optfile=$DSMHOME/dsm_vm.opt \"`echo $v | cut -d "/" -f -5`/*\"
                         $VMWARECMD $v removesnapshots
                     fi
                 fi
             done
             else
                 remotehosts=`$SSH $host $VMWARECMD -l | $AWK '{ string=substr($0,51); print string }' | $AWK '{ string=substr($0,0,index($0,"/")-1); print string }'`
                 for r in $remotehosts
             do
                 if [ $i = $r ]; then
                     if [[ -n $r ]]; then
                         $ECHO "create snapshot of remote machine: " $r
                         v=`$SSH $host $VMWARECMD -l | $GREP "/"$r"/"`
                         #$ECHO "create snapshot of local machine (long name): " $v
                         $SSH $host $VMWARECMD $v createsnapshot tsmbackup
                         $SSH $host dsmc i -optfile=$DSMHOME/dsm_vm.opt \"`echo $v | cut -d "/" -f -5`/*\"
                         $SSH $host $VMWARECMD $v removesnapshots
                     fi
                 fi
             done
             fi 
 
      done
 done
  
 exit 0
   
 
  • inputfile tsmclientlist.cfg
# Kommentar
vminstanzname
  • inputfile tsmhostlist.cfg
# Kommentar
vmclusternodename

top

TSM Autoreplay für DOS

 @echo off
 cd C:\Programme\tivoli\tsm\baclient
 
 @echo . > c:\temp\t.log
 @echo . > c:\temp\t1.log
 
 dsmadmc -id=drm_operator -pass=******* q req | find "ANR8373I" >c:\temp\t.log
 
 for /f "delims=: tokens=1" %%G in (c:\temp\t.log) do @echo %%G >c:\temp\t1.log
 for /f "tokens=2" %%G in (c:\temp\t1.log) do dsmadmc -id=drm_operator -pass=******** repl %%G
 
 del c:\temp\t.log
 del c:\temp\t1.log


top

Microsoft Registry

DRM (Digital Rights Management) Fehler

reg add HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToBackup /v DRM /t REG_MULTI_SZ /d "C:\Documents and Settings\All Users\DRM\* /s" /f

top

TCP-WAN Optimierung (hohe Latency plus hohe Sessionanzahl)

Microsoft TechNet:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"tcp1323Opts"=dword:00000003
"TcpWindowSize"=dword:001fffe0
?? "MaxUserPort"=dword:00008000
"TcpTimedWaitDelay"=dword:0000001e

top

VSS Technote

top

DRM Scripts

top

von Library zum Safe

  • DRM_CHECKOUT

checkt alle DRM Bänder aus, wenn Bulk voll, kommt "remove from bulk" Meldung, mit REPLY bestätigen

 MOVE DRMEDIA * WHERESTATE=MOUNTABLE TOSTATE=VAULT REMOVE=YES 

top

vom Safe zur Library

  • DRM_CHECKIN_01

zeigt alle Bänder, die vom Save zur Library gebracht werden sollen

 q drmedia wherestate=vaultretrieve
  • DRM_CHECKIN_02

Bänder in Bulk laden, sollte zu wenig Platz im Bulk sein, solange wiederholen, bis alle Bänder eingecheckt sind, mit REPLY bestätigen

 checkin libvolume lb_3582_1 search=bulk status=private checklabel=barcode
  • DRM_CHECKIN_03

eingecheckte Bänder werden wieder frei zur allgemeinen Verwendung

 move drmedia * wherestate=VAULTRetrieve tostate=ONSITERetrieve


top

TSM Novell Client Parameter (dsmsys.opt)

Recommended Options

 tcpwindowsize    64
 tcpbufsize       32
 largecommbuffers no
 txnbytelimit     25600

Quelle: IBM Tivoli Storage Manager Performance Tuning Guide SC32-9101-01


top

Brocade Silkworm Startup

  • seriell mit mitgeliefertem Kabel
 9600, 8, n, 1, no flow
  • oder via eth default
 10.77.77.77
 admin | password
 
 ipAddrSet
 
 tsclockserver
 
 tstimezone +2


top

NDMP NetApp / N-Series

Grober Ablauf

  1. NDMP LAN Less für K-Vorsorge (wenige Versionen)
  2. CIFS INCR für raschen Einzelfilerestore (Achtung, Fileattribute können verloren gehen)
  3. "Archive" via Backupset aus Einzelfilesicherung (um TSM DB nicht zu belasten)

Siehe dazu:

top

LTO4 Tuning

dsm.opt

  • TxnByteLimit = 2 097 152

dsmserv.opt

  • TxnGroupMax = 8192
  • MoveBatchSize = 1000
  • MoveSizeThresh = 2048

top

REPAIR ORPHANS

REPAIR ORPHANS SCAN|REPAIR|RESET|END

  • SCAN - only scan and report orphaned entries
  • REPAIR - scan and repair any tables with orphaned entries
  • RESET - reset control information, useful if needing to run REPAIR after running SCAN.
  • END - cancel SCAN or REPAIR

This utility must be run as user "SERVER_CONSOLE" or "IBM_SERVICE" with the system quiesced.


The following steps must be performed prior to running this utility:

1. Full database backup must be performed.

2. The following must be added to the server options file:

  • NOMIGRRECL
  • EXPINTERVAL 0
  • DISABLESCHED YES

3. Sessions must be disabled with the DISABLE SESSIONS command once the server has been started

Quelle: ADSM.ORG - How to get rid of some "storage pool id not found" errors...


top

EMULEX HBAAPI.DLL

Download http://www.emulex.com/files/downloads/windows/tools/windows_tools.html


top

Personal tools