TSM
From rb's Wiki
Datensicheung
Ein gut strukturierter und kompakter Artikel zum Thema Datensicherung bei Wikipedia.de
TSM Online Documentation
- IBM Tivoli Storage Manager 5.5 Documentation
- IBM Tivoli Storage Manager 6.1 Documentation
- Tivoli Technical Field Guides - IBM Tivoli Storage Manager
- Overview - Tivoli Storage Manager Supported Operating Systems
- IBM Tivoli Storage Manager Supported Devices for AIX HPUX SUN WIN
- IBM Tivoli Storage Manager Supported Devices for Linux
- IBM Tivoli Storage Manager: Problem Determination Guide
- LasCon Storage - TSM Database and Recovery Log
- Tivoli Field Guide - Tivoli Storage Manager Recovery Techniques Using Windows Preinstallation Environment (Windows PE)
- TSM SQL Hints
- TSM 6.1 Capacity planning
Linux Debian Installationspakete
DEBIAN TSM CLIENT IS NOT SUPPORTED BY IBM - THEREFORE USE AT YOUR OWN RISK
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.
TSM SQL Queries
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
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
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
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'
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||'%'
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
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'))
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
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
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
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
Q_PIM_GB (GB logical in PrimaryPools)
select - sum(logical_mb)/1024 as GB - from - occupancy - where - stgpool_name in (select stgpool_name from stgpools where pooltype='PRIMARY')
Q_NODE (Nodeübersicht für Lizenzaudit))
select - tcp_name AS hostname, - tcp_address as IP_ADDR, - node_name as NODENAME,- platform_name as OS, - client_os_level AS OS_LEVEL, - varchar(client_version)||'.'||varchar(client_release)||'.'||varchar(client_level)||'.'||varchar(CLIENT_SUBLEVEL) AS TSM_CLI, - date(LASTACC_TIME) as LASTACC - from nodes
Library Delete / Define
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
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
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
Linux init.d skripts
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
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
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]#
Microsoft Cluster Server
Manual steps to install the TSM server in a Microsoft Cluster environment
Microsoft Cluster Client
local node
dsm.opt:
comming soon
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"
VMware 3.x
IBM Links:
- TSM 6.1 Client VCB Integration
- TSM VMware Field Guide
- IBM Tivoli Storage Manager (TSM) supported Virtual Machines
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
TSM Client Options (/opt/tivoli/tsm/client/ba/bin/dsm.opt)
servername TSM1 followsymbolic yes
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
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”
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
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
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
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
VSS Technote
DRM Scripts
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
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
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
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
NDMP NetApp / N-Series
Grober Ablauf
- NDMP LAN Less für K-Vorsorge (wenige Versionen)
- CIFS INCR für raschen Einzelfilerestore (Achtung, Fileattribute können verloren gehen)
- "Archive" via Backupset aus Einzelfilesicherung (um TSM DB nicht zu belasten)
Siehe dazu:
- Tivoli Storage Manager (TSM) Backup Considerations with Nseries
- Tivoli Field Guide - Backing up Network Appliance Network Attached File Servers with Tivoli Storage Manager
LTO4 Tuning
dsm.opt
- TxnByteLimit = 2 097 152
dsmserv.opt
- TxnGroupMax = 8192
- MoveBatchSize = 1000
- MoveSizeThresh = 2048
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...
EMULEX HBAAPI.DLL
Download http://www.emulex.com/files/downloads/windows/tools/windows_tools.html
