| ETERNUS SF AdvancedCopy Manager 運用手引書 13.3 -Solaris- |
目次
索引
![]()
|
| 付録C レプリケーションの前後処理 | > C.2 レプリケーションの前後処理 |
前処理のシェルスクリプトには複写元ボリューム(RepSrc.Pre)と複写先ボリューム(RepDst.Pre)を用意し、以下のディレクトリ配下に格納されています。処理の必要性に応じてシェルスクリプトをカスタマイズしてください。
非クラスタ運用の場合
/etc/opt/FJSVswsrp/shディレクトリ配下 |
クラスタ運用の場合
/etc/opt/FJSVswsrp/<論理ノード名>/shディレクトリ配下 |
RepSrc.pre(複写元ボリューム前処理のシェルスクリプト)
1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2007
5:
6: #
7: # Preprocessing of Replication(Source) processing
8: #
9: # Argument: $1 Device name of Source disk
10: # $2 Mount point of Source disk
11: #
12: #Error number
13: # 2: Argument error
14: #10: umount error
15:
16: # Argument check
17: case $# in
18: 2)
19: ;;
20: *)
21: exit 2
22: ;;
23: esac
24:
25: device=$1
26: mount_point=$2
27:
28: # Determination postprocessing file name
29: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ]
30: then
31: # /dev/dsk/c?t?d?s? -> c?t?d?s?
32: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`"
33: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ]
34: then
35: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
36: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
37: dev="`echo $device | /usr/bin/cut -d/ -f5`"
38: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ]
39: then
40: if [ "`echo $device | /usr/bin/grep ":"`" != "" ]
41: then
42: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d?
43: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
44: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
45: dev="`echo $dev | /usr/bin/sed "s/:/_/"`"
46: device="`echo $device | /usr/bin/cut -d: -f1`"
47: else
48: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
49: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
50: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
51: fi
52: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
53: then
54: # /dev/vx/dsk/volume -> _vx_rootdg_volume
55: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
56: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
57: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
58: then
59: # /dev/vx/dmp/device -> _vx_pv_device
60: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
61: else
62: exit 0
63: fi
64: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".spre"
65: fstype_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".sfstype"
66:
67: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
68:
69: if [ "$mount_point" != "" ]
70: # When device was mounted
71: #
72: then
73:
74: # When device cannot be unmounted
75: #
76: #if [ "$device" = "/dev/dsk/cXtXdXsX" -o "$device" = "/dev/dsk/cYtYdYsY" ]
77: #then
78: #/usr/sbin/lockfs -w $mount_point > /dev/null 2>&1
79: #sync
80: #sync
81: #echo "lockfs,$mount_point" > $post_file
82: #
83: # When device can be unmounted
84: #
85: #else
86: #
87: /usr/bin/df -ln $mount_point | /usr/bin/cut -f2 -d: | /usr/bin/cut -f2 -d' ' > $fstype_file
88:
89: /usr/sbin/umount $mount_point 2>/dev/null
90:
91: if [ $? != 0 ]
92: then
93: retry_count=3
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: retry_count=`expr $retry_count - 1`
103: /usr/bin/sleep $sleep_time
104: else
105: /usr/bin/rm -f $err_log_path/$dev.umount
106: result_flag=0
107: break
108: fi
109: done
110:
111: if [ $result_flag != 0 ]
112: then
113: /usr/sbin/fuser -cu $mount_point> $err_log_path/$dev.fuser 2>&1
114: /usr/bin/ps -ef > $err_log_path/$dev.ps 2>&1
115: exit 10
116: fi
117: fi
118:
119: echo "mount,$mount_point" > $post_file
120:
121: #fi
122:
123: # When device was not mounted
124: #
125: else
126: echo "none" > $post_file
127: fi
128:
129: exit 0 |
RepDst.pre(複写先ボリューム前処理のシェルスクリプト)
1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2006
5:
6: #
7: # Preprocessing of Replication(Destination) processing
8: #
9: # Argument: $1 Device name of Destination disk
10: # $2 Mount point of Destination disk
11: #
12: # Error number
13: # 2: Argument error(system error)
14: # 10: umount error
15:
16: # Argument check
17: case $# in
18: 2)
19: ;;
20: *)
21: exit 2
22: ;;
23: esac
24:
25: device=$1
26: mount_point=$2
27:
28: # Determination postprocessing file name
29: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ]
30: then
31: # /dev/dsk/c?t?d?s? -> c?t?d?s?
32: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`"
33: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ]
34: then
35: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
36: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
37: dev="`echo $device | /usr/bin/cut -d/ -f5`"
38: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ]
39: then
40: if [ "`echo $device | /usr/bin/grep ":"`" != "" ]
41: then
42: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d?
43: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
44: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
45: dev="`echo $dev | /usr/bin/sed "s/:/_/"`"
46: device="`echo $device | /usr/bin/cut -d: -f1`"
47: else
48: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
49: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
50: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
51: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre"
52: fi
53: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
54: then
55: # /dev/vx/dsk/volume -> _vx_rootdg_volume
56: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
57: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
58: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
59: then
60: # /dev/vx/dmp/device -> _vx_pv_device
61: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
62: else
63: exit 0
64: fi
65: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre"
66:
67: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
68:
69: if [ "$mount_point" != "" ]
70: # When device was mounted
71: #
72: then
73:
74: /usr/sbin/umount $mount_point 2>/dev/null
75:
76: if [ $? != 0 ]
77: then
78: retry_count=3
79: sleep_time=1
80: result_flag=1
81:
82: while [ $retry_count -gt 0 ]
83: do
84: /usr/sbin/umount $mount_point > $err_log_path/$dev.umount 2>&1
85: if [ $? != 0 ]
86: then
87: retry_count=`expr $retry_count - 1`
88: /usr/bin/sleep $sleep_time
89: else
90: /usr/bin/rm -f $err_log_path/$dev.umount
91: result_flag=0
92: break
93: fi
94: done
95:
96: if [ $result_flag != 0 ]
97: then
98: /usr/sbin/fuser -cu $mount_point> $err_log_path/$dev.fuser 2>&1
99: /usr/bin/ps -ef > $err_log_path/$dev.ps 2>&1
100: exit 10
101: fi
102: fi
103:
104: echo "mount,$mount_point" > $post_file
105:
106: # When device was not mounted
107: #
108: else
109: echo "none" > $post_file
110: fi
111:
112: exit 0 |
目次
索引
![]()
|