Top
ETERNUS SF AdvancedCopy Manager 14.1 Operator's Guide

C.2.3 Post-processing when replication is executed

The replication source volume script (RepSrcPost.js) and the replication destination volume script (RepDstPost.js) are prepared for a post-processing script, which is stored in the following subdirectory. This script must be customized according to the processing requirements.

In the case of non-cluster operation
/etc/opt/FJSVswsrp/sh directory subordinate
In the case of cluster operation
/etc/opt/FJSVswsrp/<logic node name>/sh directory subordinate

C.2.3.1 replication source volume post-processing sample script (RepSrcPost.js)

  1: #!/bin/sh
  2:
  3: # AdvancedCopy Manager
  4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2009
  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

C.2.3.2 replication destination volume post-processing sample script (RepDstPost.js)

  1: #!/bin/sh
  2:
  3: # AdvancedCopy Manager
  4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2009
  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