blob: 792edbe91af8677d2f8d035a96e3f560ebf4bc44 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
#!/bin/bash
# catch errors
set -e
set -E
trap 'es=$?;
echo ERROR: failed in function \"${FUNCNAME}\" at line ${LINENO} of ${BASH_SOURCE[0]} with code $es;
exit $es' ERR
# Setup things up so that TSM_SERVER is the first tsm_server node and
# any nas nodes are listed in the TSM server configuration as clients.
NODES="@@NODES@@"
TSM_SERVER=""
TSM_CLIENTS=""
for n in $NODES ; do
case "$n" in
nas:*)
t="${n%:*}"
# comma separated
TSM_CLIENTS="${TSM_CLIENTS}${TSM_CLIENTS:+,}${t##*:}"
;;
tsm_server:*)
[ -n "$TSM_SERVER" ] && continue
t="${n%:*}"
TSM_SERVER="${t##*:}"
esac
done
if [ -z "$TSM_SERVER" ] ; then
echo "ERROR: No tsm_server nodes in this cluster!"
exit 1
fi
################################
mmgetstate | grep active > /dev/null || {
echo "GPFS must be running to setup TSM client"
exit 1
}
################################
# wait for GPFS to become active
gpfs_wait_active() {
echo "Waiting for gpfs to become active"
while ! mmgetstate | grep active > /dev/null; do
echo -n ".";
sleep 1;
done
echo
}
########################
# wait for GPFS to mount
gpfs_wait_mount() {
gpfs_wait_active
echo "Waiting for gpfs to mount (can take a while)"
while ! mount | grep /dev/gpfs0 > /dev/null; do
sleep 2;
mmmount gpfs0 -a 2> /dev/null || true
done
}
######################################
# run the given command on all of the $TSM_CLIENTS
run_on_client_nodes() {
onnode -n -qp "$TSM_CLIENTS" "$@"
}
# install the SoFS toolset first so that gpfsready is put into place
# and the HSM packages will not touch it any more
run_on_client_nodes yum -y install sofs-toolset
run_on_client_nodes yum -y install TIVsm-BA TIVsm-HSM TIVsm-API expect
echo "Setting up dsm.sys"
cat <<EOF > /opt/tivoli/tsm/client/ba/bin/dsm.sys
SErvername $TSM_SERVER
COMMMethod TCPip
TCPPort 1500
TCPServeraddress $TSM_SERVER
PASSWORDACCESS generate
EXCLUDE.DIR /.../.snapshots
EXCLUDE /.../.snapshots/*
EXCLUDE.DIR /.../.SpaceMan
EXCLUDE /.../.SpaceMan/*
EXCLUDE.DIR /.../.ctdb
EXCLUDE /.../.ctdb/*
ERRORLOGName /var/log/dsmerror.log
ASNODENAME @@TSMNAME@@
EOF
run_on_client_nodes rsync $HOSTNAME:/opt/tivoli/tsm/client/ba/bin/dsm.sys /opt/tivoli/tsm/client/ba/bin
echo "Setting up dsm.opt"
cat <<EOF > /opt/tivoli/tsm/client/ba/bin/dsm.opt
servername $TSM_SERVER
dateformat 2
EOF
run_on_client_nodes rsync $HOSTNAME:/opt/tivoli/tsm/client/ba/bin/dsm.opt /opt/tivoli/tsm/client/ba/bin
run_on_client_nodes "preprpnode `hostname -s`"
mkrpdomain -F /etc/ctdb/nodes SoFS
echo "Setting TSM password"
cat <<EOF > /tmp/tsmpwd
spawn dsmsetpw
expect "enter password"
send "admin
"
sleep 2
EOF
run_on_client_nodes "rsync $HOSTNAME:/tmp/tsmpwd /tmp/; expect /tmp/tsmpwd"
run_on_client_nodes rm -f /tmp/tsmpwd
# we have to use a rather torturous procedure ...
echo "Killing ctdb"
run_on_client_nodes killall ctdbd || true
echo "temporarily disabling automount of gpfs0"
mmchfs gpfs0 -A no
echo "Shutting down gpfs"
mmshutdown -a
echo "Starting up gpfs again"
mmstartup -a
gpfs_wait_active
echo "Enabling DMAPI in gpfs"
mmchfs gpfs0 -z yes
echo "Enabling LOWSPACE events in GPFS"
mmchconfig enableLowspaceEvents=yes
echo "enabling automount of gpfs0"
mmchfs gpfs0 -A yes
echo "Restarting GPFS"
mmshutdown -a
mmstartup -a
gpfs_wait_mount
echo "Adding space management to /gpfs"
dsmmigfs add /gpfs -LT=100 -HT=100
echo "Enabling failover"
run_on_client_nodes dsmmigfs ENABLEFailover
echo "Restarting gpfs"
mmshutdown -a
mmstartup -a
gpfs_wait_mount
cat <<EOF
TSM client setup complete on $TSM_CLIENTS
You should reboot the nodes before using HSM
EOF
|