The replication source volume script (RepSrc.post) and the replication destination volume script (RepDst.post) are prepared for a post-processing script, which is stored in the following directory. This script must be customized according to the processing requirements.
/etc/opt/FJSVswsrp/sh
/etc/opt/FJSVswsrp/<logical node name>/sh
1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # Copyright FUJITSU LIMITED, 2002-2012
5:
6: #
7: # Postprocessing of Replication(Source) processing
8: #
9: # Argument: $1 Device name of Source disk
10: #
11: # Error number
12: # 2: Argument error
13: # 11: mount error
14:
15: # Argument check
16: case $# in
17: 1)
18: ;;
19: *)
20: exit 2
21: ;;
22: esac
23:
24: device=$1
25:
26: # Determination of postprocessing file name
27: if [ "`echo $device | /bin/grep "/dev/sd"`" != "" ]
28: then
29: # /dev/sd? -> sd?
30: dev="`echo $device | /bin/sed "s/\/dev\///"`"
31: elif [ "`echo $device | /bin/grep "/dev/vd"`" != "" ]
32: then
33: # /dev/vd? -> vd?
34: dev="`echo $device | /bin/sed "s/\/dev\///"`"
35: elif [ "`echo $device | /bin/grep "/dev/FJSV"`" != "" ]
36: then
37: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
38: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
39: dev="`echo $device | /bin/cut -d/ -f5`"
40: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
41: then
42: if [ "`echo $device | /bin/grep ":"`" != "" ]
43: then
44: devnam="`echo $device | /bin/cut -d: -f2-`"
45: # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
46: dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
47: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
48: dev="`echo $dev | /bin/sed "s/:/_/"`"
49: device="`echo $device | /bin/cut -d: -f1`"
50: if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
51: then
52: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
53: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
54: elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
55: then
56: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
57: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
58: fi
59: else
60: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
61: dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
62: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
63: fi
64: elif [ "`echo $device | /bin/grep "/dev/vx/dmp/"`" != "" ]
65: then
66: # /dev/vx/dmp/device -> _vx_pv_device
67: dev="_vx_pv_`echo $device | /bin/sed "s/\/dev\/vx\/dmp\///"`"
68: elif [ "`echo $device | /bin/grep "/dev/mapper/"`" != "" ]
69: then
70: # "/dev/mapper/<device>" -> "_mapper_<device>"
71: dev="_mapper_`echo $device | /bin/sed "s/\/dev\/mapper\///"`"
72: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
73: then
74: # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
75: dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
76: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
77: then
78: # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
79: dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
80: else
81: exit 0
82: fi
83: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".spre"
84: fstype_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".sfstype"
85:
86: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
87:
88: # Confirmation of postprocessing
89: if [ ! -r $post_file ]
90: then
91: exit 0
92: fi
93: post="`/bin/cat $post_file | /bin/cut -d',' -f1`"
94: mount_point="`/bin/cat $post_file | /bin/cut -d',' -f2`"
95:
96: # Confirmation of FStype
97: if [ ! -r $fstype_file ]
98: then
99: fs=""
100: else
101: fs="`/bin/cat $fstype_file`"
102: fi
103:
104: # No processing
105: if [ "$post" = "none" ]
106: then
107: /bin/rm -rf $post_file 2> /dev/null
108: /bin/rm -rf $fstype_file 2> /dev/null
109: exit 0
110: fi
111:
112: # mount processing
113: if [ "$post" = "mount" ]
114: then
115: if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
116: -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
117: then
118: cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
119: Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
120: else
121: Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
122: fi
123: if [ "$Result" != "1" ]
124: then
125: if [ ! -r $fstype_file ]
126: then
127: /bin/mount $device $mount_point 2> /dev/null
128: else
129: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
130: if [ "$Result1" != "1" ]
131: then
132: /bin/mount $device $mount_point 2> /dev/null
133: else
134: /bin/mount -t $fs $device $mount_point 2> /dev/null
135: fi
136: fi
137: if [ $? != 0 ]
138: then
139: retry_count=3
140: sleep_time=1
141: result_flag=1
142:
143: while [ $retry_count -gt 0 ]
144: do
145: if [ ! -r $fstype_file ]
146: then
147: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
148: else
149: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
150: if [ "$Result1" != "1" ]
151: then
152: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
153: else
154: /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
155: fi
156: fi
157: if [ $? != 0 ]
158: then
159: retry_count=`expr $retry_count - 1`
160: /bin/sleep $sleep_time
161: else
162: /bin/rm -f $err_log_path/$dev.mount
163: result_flag=0
164: break
165: fi
166: done
167:
168: if [ $result_flag != 0 ]
169: then
170: exit 11
171: fi
172: fi
173: fi
174: /bin/rm -rf $post_file 2> /dev/null
175: /bin/rm -rf $fstype_file 2> /dev/null
176: exit 0
177: fi
178:
179: exit 0 1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # Copyright FUJITSU LIMITED, 2002-2012
5:
6: #
7: # Postprocessing of Replication(Destination) processing
8: #
9: # Argument: $1 Device name of Destination disk
10: #
11: # Error number
12: # 2: Argument error
13: # 11 mount error
14:
15: # Argument check
16: case $# in
17: 1)
18: ;;
19: *)
20: exit 2
21: ;;
22: esac
23:
24: device=$1
25:
26: # Determination of postprocessing file name
27: if [ "`echo $device | /bin/grep "/dev/sd"`" != "" ]
28: then
29: # /dev/sd? -> sd?
30: dev="`echo $device | /bin/sed "s/\/dev\///"`"
31: elif [ "`echo $device | /bin/grep "/dev/vd"`" != "" ]
32: then
33: # /dev/vd? -> vd?
34: dev="`echo $device | /bin/sed "s/\/dev\///"`"
35: elif [ "`echo $device | /bin/grep "/dev/FJSV"`" != "" ]
36: then
37: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
38: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
39: dev="`echo $device | /bin/cut -d/ -f5`"
40: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
41: then
42: if [ "`echo $device | /bin/grep ":"`" != "" ]
43: then
44: devnam="`echo $device | /bin/cut -d: -f2-`"
45: # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
46: dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
47: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
48: dev="`echo $dev | /bin/sed "s/:/_/"`"
49: device="`echo $device | /bin/cut -d: -f1`"
50: if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
51: then
52: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
53: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
54: elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
55: then
56: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
57: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
58: fi
59: else
60: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
61: dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
62: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
63: fi
64: elif [ "`echo $device | /bin/grep "/dev/vx/dmp/"`" != "" ]
65: then
66: # /dev/vx/dmp/device -> _vx_pv_device
67: dev="_vx_pv_`echo $device | /bin/sed "s/\/dev\/vx\/dmp\///"`"
68: elif [ "`echo $device | /bin/grep "/dev/mapper/"`" != "" ]
69: then
70: # "/dev/mapper/<device>" -> "_mapper_<device>"
71: dev="_mapper_`echo $device | /bin/sed "s/\/dev\/mapper\///"`"
72: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
73: then
74: # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
75: dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
76: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
77: then
78: # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
79: dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
80: else
81: exit 0
82: fi
83: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre"
84: fstype_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dfstype"
85:
86: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
87:
88: # Confirmation of postprocessing
89: if [ ! -r $post_file ]
90: then
91: exit 0
92: fi
93: post="`/bin/cat $post_file | /bin/cut -d',' -f1`"
94: mount_point="`/bin/cat $post_file | /bin/cut -d',' -f2`"
95:
96: # Confirmation of FStype
97: if [ ! -r $fstype_file ]
98: then
99: fs=""
100: else
101: fs="`/bin/cat $fstype_file`"
102: fi
103:
104: # No processing
105: if [ "$post" = "none" ]
106: then
107: /bin/rm -rf $post_file 2> /dev/null
108: /bin/rm -rf $fstype_file 2> /dev/null
109: exit 0
110: fi
111:
112: # mount processing
113: if [ "$post" = "mount" ]
114: then
115: # df -l $device > /dev/null 2>&1
116: # if [ $? != 0 ]
117: if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
118: -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
119: then
120: cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
121: Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
122: else
123: Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
124: fi
125: if [ "$Result" != "1" ]
126: then
127: if [ ! -r $fstype_file ]
128: then
129: /bin/mount $device $mount_point 2> /dev/null
130: else
131: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
132: if [ "$Result1" != "1" ]
133: then
134: /bin/mount $device $mount_point 2> /dev/null
135: else
136: /bin/mount -t $fs $device $mount_point 2> /dev/null
137: fi
138: fi
139: if [ $? != 0 ]
140: then
141: retry_count=3
142: sleep_time=1
143: result_flag=1
144:
145: while [ $retry_count -gt 0 ]
146: do
147: if [ ! -r $fstype_file ]
148: then
149: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
150: else
151: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
152: if [ "$Result1" != "1" ]
153: then
154: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
155: else
156: /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
157: fi
158: fi
159: if [ $? != 0 ]
160: then
161: retry_count=`expr $retry_count - 1`
162: /bin/sleep $sleep_time
163: else
164: /bin/rm -f $err_log_path/$dev.mount
165: result_flag=0
166: break
167: fi
168: done
169:
170: if [ $result_flag != 0 ]
171: then
172: exit 11
173: fi
174: fi
175: fi
176: /bin/rm -rf $post_file 2> /dev/null
177: /bin/rm -rf $fstype_file 2> /dev/null
178: exit 0
179: fi
180:
181: exit 0