リストア実行時の前処理のシェルスクリプト名は、以下のとおりです。
クラスタ運用でない場合
/etc/opt/FJSVswsts/sh/OpcRestore.pre
クラスタ運用の場合
/etc/opt/FJSVswsts/logicalNodeName/sh/OpcRestore.preシェルスクリプトの内容は、以下のとおりです。
1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2021
5:
6: #
7: # Pre-processing of restoration processing
8: #
9: # Argument: $1 Device name of transaction disk
10: # $2 Mount point of transaction disk
11: #
12: # Error number
13: # 2: Argument error
14: # 10: umount error
15:
16:
17: # Argument check
18: case $# in
19: 1)
20: ;;
21: 2)
22: ;;
23: *)
24: exit 2
25: ;;
26: esac
27:
28: device="`echo $1`"
29: mount_point="`echo $2`"
30: cyclemax=3
31: unmount_cyclenumfile="unmount.cyclenum"
32:
33: # Determination of postprocessing file name
34:
35: if [ "$SWSTGNODE" != "" ]
36: then
37: swstg_node="/`echo $SWSTGNODE`"
38: else
39: swstg_node=""
40: fi
41:
42: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log"
43:
44: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ]
45: then
46: # /dev/dsk/c?t?d?s? -> c?t?d?s?
47: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`"
48: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ]
49: then
50: # /dev/FJSVmphd/dsk/mplb?s? -> /dev/FJSVmphd/dsk/mplb?s?
51: # /dev/FJSVmphd/dsk/mphd?s? -> /dev/FJSVmphd/dsk/mphd?s?
52: dev="`echo $device | /usr/bin/cut -d/ -f5`"
53: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ]
54: then
55: if [ "`echo $device | /usr/bin/grep ":"`" != "" ]
56: then
57: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d?
58: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
59: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
60: dev="`echo $dev | /usr/bin/sed "s/:/_/"`"
61: device="`echo $device | /usr/bin/cut -d: -f1`"
62: else
63: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
64: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
65: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
66: fi
67: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
68: then
69: # /dev/vx/dsk/volume -> _vx_rootdg_volume
70: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
71: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
72: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
73: then
74: # /dev/vx/dmp/device -> _vx_pv_device
75: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
76: else
77: exit 0
78: fi
79: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
80: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype"
81: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd"
82:
83: if [ "$mount_point" != "" ]
84: then
85:
86: # When device can be unmounted
87: #
88: /usr/bin/df -ln $mount_point | /usr/bin/cut -f2 -d: | /usr/bin/cut -f2 -d' ' > $fstype_file
89: /usr/sbin/umount $mount_point 2> /dev/null
90: if [ $? != 0 ]
91: then
92: retry_count=3
93: retry_def=$retry_count
94: sleep_time=1
95: result_flag=1
96:
97: while [ $retry_count -gt 0 ]
98: do
99: /usr/sbin/umount $mount_point > $err_log_path/$dev.umount 2>&1
100: if [ $? != 0 ]
101: then
102: if [ $retry_count -eq $retry_def ]
103: then
104: if [ -f $err_log_path/$unmount_cyclenumfile ]
105: then
106: cyclenum=`/usr/bin/cut -c 1 $err_log_path/$unmount_cyclenumfile`
107: cyclenum=`expr $cyclenum + 1 2>/dev/null`
108: if [ $? != 0 ]; then
109: cyclenum='1'
110: fi
111: if [ $cyclenum -gt $cyclemax ]; then
112: cyclenum='1'
113: fi
114: else
115: cyclenum='1'
116: fi
117: echo $cyclenum > $err_log_path/$unmount_cyclenumfile
118: : > $err_log_path/"$dev"_$cyclenum.umount
119: : > $err_log_path/"$dev"_$cyclenum.fuser
120: : > $err_log_path/"$dev"_$cyclenum.ps
121: fi
122:
123: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.umount
124: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.fuser
125: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.ps
126: /usr/bin/cat $err_log_path/$dev.umount >> $err_log_path/"$dev"_$cyclenum.umount 2>&1
127: /usr/sbin/fuser -cu $mount_point >> $err_log_path/"$dev"_$cyclenum.fuser 2>&1
128: /usr/bin/ps -ef >> $err_log_path/"$dev"_$cyclenum.ps 2>&1
129: echo "" >> $err_log_path/"$dev"_$cyclenum.umount
130: echo "" >> $err_log_path/"$dev"_$cyclenum.fuser
131: echo "" >> $err_log_path/"$dev"_$cyclenum.ps
132:
133: retry_count=`expr $retry_count - 1`
134: /usr/bin/sleep $sleep_time
135: else
136: /usr/bin/rm -f $err_log_path/$dev.umount
137: result_flag=0
138: break
139: fi
140: done
141:
142: if [ $result_flag != 0 ]
143: then
144: exit 10
145: fi
146: fi
147: echo "mount" > $post_file
148:
149: # When device was not mounted
150: #
151: else
152: echo "none" > $post_file
153: fi
154:
155: exit 0マウントされているがアンマウントできない業務ボリュームに対しては、リストアできません。リストア先のデバイスを指示してください。