ページの先頭行へ戻る
ETERNUS SF AdvancedCopy Manager 14.2 運用手引書

C.2.3 レプリケーション実行時の後処理

後処理のシェルスクリプトには複写元ボリューム(RepSrc.Post)と複写先ボリューム(RepDst.Post)を用意し、以下のディレクトリ配下に格納されています。処理の必要性に応じてシェルスクリプトをカスタマイズしてください。

RepSrc.post(複写元ボリューム後処理のシェルスクリプト)

  1: #!/bin/sh
  2:
  3: # AdvancedCopy Manager
  4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2008
  5:
  6: #
  7: #   Post-processing 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/FJSV"`" != "" ]
 32: then
 33:    # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
 34:    # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
 35:    dev="`echo $device | /bin/cut -d/ -f5`"
 36: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
 37: then
 38:    if [ "`echo $device | /bin/grep ":"`" != ""   ]
 39:    then
 40:            devnam="`echo $device | /bin/cut -d: -f2-`"
 41:            # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
 42:            dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
 43:            dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
 44:            dev="`echo $dev | /bin/sed "s/:/_/"`"
 45:            device="`echo $device | /bin/cut -d: -f1`"
 46:            if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
 47:            then
 48:                    # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
 49:                    dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
 50:            elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
 51:            then
 52:                    # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
 53:                    dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
 54:            fi
 55:    else
 56:            # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
 57:            dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
 58:            dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
 59:    fi
 60: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
 61: then
 62:    # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
 63:    dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
 64: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
 65: then
 66:    # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
 67:    dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
 68: else
 69:    exit 0
 70: fi
 71: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".spre"
 72: fstype_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".sfstype"
 73:
 74: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
 75:
 76: # Confirmation of postprocessing
 77: if [ ! -r $post_file ]
 78: then
 79:    exit 0
 80: fi
 81: post="`/bin/cat $post_file | /bin/cut -d',' -f1`"
 82: mount_point="`/bin/cat $post_file | /bin/cut -d',' -f2`"
 83:
 84: # Confirmation of FStype
 85: if [ ! -r $fstype_file ]
 86: then
 87:    fs=""
 88: else
 89:    fs="`/bin/cat $fstype_file`"
 90: fi
 91:
 92: # No processing
 93: if [ "$post" = "none" ]
 94: then
 95:    /bin/rm -rf $post_file 2> /dev/null
 96:    /bin/rm -rf $fstype_file 2> /dev/null
 97:    exit 0
 98: fi
 99:
100: # mount processing
101: if [ "$post" = "mount" ]
102: then
103:    if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
104:            -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
105:    then
106:            cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
107:            Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
108:    else
109:            Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
110:    fi
111:         if [ "$Result" != "1" ]
112:    then
113:            if [ ! -r $fstype_file ]
114:            then
115:                    /bin/mount $device $mount_point 2> /dev/null
116:            else
117:                    Result1="`echo $fs | /bin/awk 'END {print NR}'`"
118:                    if [ "$Result1" != "1" ]
119:                    then
120:                            /bin/mount $device $mount_point 2> /dev/null
121:                    else
122:                            /bin/mount -t $fs $device $mount_point 2> /dev/null
123:                    fi
124:            fi
125:            if [ $? != 0 ]
126:            then
127:                    retry_count=3
128:                    sleep_time=1
129:                    result_flag=1
130:
131:                    while [ $retry_count -gt 0 ]
132:                    do
133:                            if [ ! -r $fstype_file ]
134:                            then
135:                                    /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
136:                            else
137:                                    Result1="`echo $fs | /bin/awk 'END {print NR}'`"
138:                                    if [ "$Result1" != "1" ]
139:                                    then
140:                                            /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
141:                                    else
142:                                            /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
143:                                    fi
144:                            fi
145:                            if [ $? != 0 ]
146:                            then
147:                                    retry_count=`expr $retry_count - 1`
148:                                    /bin/sleep $sleep_time
149:                            else
150:                                    /bin/rm -f $err_log_path/$dev.mount
151:                                    result_flag=0
152:                                    break
153:                            fi
154:                    done
155:
156:                    if [ $result_flag != 0 ]
157:                    then
158:                            exit 11
159:                    fi
160:            fi
161:    fi
162:    /bin/rm -rf $post_file 2> /dev/null
163:    /bin/rm -rf $fstype_file 2> /dev/null
164:    exit 0
165: fi
166:
167: exit 0

RepDst.post(複写先ボリューム後処理のシェルスクリプト)

  1: #!/bin/sh
  2:
  3: # AdvancedCopy Manager
  4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2008
  5:
  6: #
  7: #   Post-processing 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/FJSV"`" != "" ]
 32: then
 33:    # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
 34:    # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
 35:    dev="`echo $device | /bin/cut -d/ -f5`"
 36: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
 37: then
 38:    if [ "`echo $device | /bin/grep ":"`" != ""   ]
 39:    then
 40:            devnam="`echo $device | /bin/cut -d: -f2-`"
 41:            # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
 42:            dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
 43:            dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
 44:            dev="`echo $dev | /bin/sed "s/:/_/"`"
 45:            device="`echo $device | /bin/cut -d: -f1`"
 46:            if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
 47:            then
 48:                    # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
 49:                    dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
 50:            elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
 51:            then
 52:                    # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
 53:                    dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
 54:            fi
 55:    else
 56:            # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
 57:            dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
 58:            dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
 59:    fi
 60: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
 61: then
 62:    # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
 63:    dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
 64: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
 65: then
 66:    # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
 67:    dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
 68: else
 69:    exit 0
 70: fi
 71: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre"
 72: fstype_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dfstype"
 73:
 74: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
 75:
 76: # Confirmation of postprocessing
 77: if [ ! -r $post_file ]
 78: then
 79:    exit 0
 80: fi
 81: post="`/bin/cat $post_file | /bin/cut -d',' -f1`"
 82: mount_point="`/bin/cat $post_file | /bin/cut -d',' -f2`"
 83:
 84: # Confirmation of FStype
 85: if [ ! -r $fstype_file ]
 86: then
 87:    fs=""
 88: else
 89:    fs="`/bin/cat $fstype_file`"
 90: fi
 91:
 92: # No processing
 93: if [ "$post" = "none" ]
 94: then
 95:    /bin/rm -rf $post_file 2> /dev/null
 96:    /bin/rm -rf $fstype_file 2> /dev/null
 97:    exit 0
 98: fi
 99:
100: # mount processing
101: if [ "$post" = "mount" ]
102: then
103: #  df -l $device > /dev/null 2>&1
104: #  if [ $? != 0 ]
105:    if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
106:            -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
107:    then
108:            cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
109:            Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
110:    else
111:            Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
112:    fi
113:      if [ "$Result" != "1" ]
114:    then
115:            if [ ! -r $fstype_file ]
116:            then
117:                    /bin/mount $device $mount_point 2> /dev/null
118:            else
119:                    Result1="`echo $fs | /bin/awk 'END {print NR}'`"
120:                    if [ "$Result1" != "1" ]
121:                    then
122:                            /bin/mount $device $mount_point 2> /dev/null
123:                    else
124:                            /bin/mount -t $fs $device $mount_point 2> /dev/null
125:                    fi
126:            fi
127:            if [ $? != 0 ]
128:            then
129:                    retry_count=3
130:                    sleep_time=1
131:                    result_flag=1
132:
133:                    while [ $retry_count -gt 0 ]
134:                    do
135:                            if [ ! -r $fstype_file ]
136:                            then
137:                                    /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
138:                            else
139:                                    Result1="`echo $fs | /bin/awk 'END {print NR}'`"
140:                                    if [ "$Result1" != "1" ]
141:                                    then
142:                                            /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
143:                                    else
144:                                            /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
145:                                    fi
146:                            fi
147:                            if [ $? != 0 ]
148:                            then
149:                                    retry_count=`expr $retry_count - 1`
150:                                    /bin/sleep $sleep_time
151:                            else
152:                                    /bin/rm -f $err_log_path/$dev.mount
153:                                    result_flag=0
154:                                    break
155:                            fi
156:                    done
157:
158:                    if [ $result_flag != 0 ]
159:                    then
160:                            exit 11
161:                    fi
162:            fi
163:    fi
164:    /bin/rm -rf $post_file 2> /dev/null
165:    /bin/rm -rf $fstype_file 2> /dev/null
166:    exit 0
167: fi
168:
169: exit 0